ManifestTree
The JSON shape of a Manifest, as a tree of plain values: a JSON object is a Map<String, Any?> (insertion ordered when written), an array a List<Any?>, and a scalar a String, Number, Boolean or null. Any JSON library writes and reads such a tree, so the Manifest's field names are defined here once and wow-manifest needs none.
Absent optional values (a null description, unknown produces, derives, schedules or transformsTo, a fragment's service, a subscription's retry or job) are left out, not written as null, and so are a subscription source's nullableState and a command's mounted, system and internal when false, an aggregate's ownership when it is OWNER, the default, its idSource when it is ASSIGNED, the default, its retired events and its access attributes when it has none, an access attribute's multiple when false, and the Manifest's requires when it has none.
Functions
Reads tree, the JSON object of a Manifest; fails on a missing field, another Manifest.FORMAT, a marker of requires this reader does not understand (ManifestFeatures), a context whose name breaks ContextName, or an access attribute whose name breaks AccessAttributeName.