type Shape
A field-by-field description of an object to decode.
Exported because decodeObject names it in its own signature. A type that
appears in a public signature is public whether or not it is exported — the
only thing withholding the name changes is that a caller cannot write it
down, and the API reference has to render it as an opaque word rather than
as a link.