of
The signature of value, or null if it does not have one.
null is returned for a JSON null and for containers, and the two are null for different reasons. A null is present, not absent — PathSketch.nullObservations already says so — and counting it as a distinct value would make a column of nothing but nulls look worth indexing. A container is a place to look inside: hashing a subtree would cost the whole subtree per document, and the paths within it are being considered in their own right anyway.
Exhaustive with no else, so a kind added to VariantKind must be given a signature here rather than silently inheriting one.