Inline payload for Value::Closure, boxed out of the enum so the
Value discriminant width is governed by the cheap variants. The
closure body (Node) plus captured scope dwarf the other variants
by tens of bytes — keeping them inline widens every Value on the
stack, every HashMap bucket holding Value, and every list slot.
Inline payload for Value::EnumSchema, refcounted for the same
reason: the nested HashMap<String, HashMap<String, SchemaField>>
is the largest variant we hold today, and Arc indirection
collapses it to a single pointer in the enum layout while keeping
clones O(1).
Inline payload for Value::Schema, refcounted out of the enum for
the same width rationale as ClosureData: the inner
HashMap<String, SchemaField> keeps a raw-table header that pushes
the enum width into the >100-byte range when stored inline. The
payload rides an Arc (P2-5) so cloning a Value::Schema — which
check_type does on every typed-field access — only bumps a
refcount instead of deep-cloning the field map.