fieldOr
name's value on this written Metadata, or fallback where the write left the declared default — which means it does not model that field. Arrays come back as List, ready for an ASM visitArray.
The emit rule both sides share: a rewrite RE-ENCODES, it does not restructure, so emit exactly the fields the original carried. One added reads as "there is data here" (see MetaCapture); one dropped is worse — a missing k makes the whole class read as Java, taking every Kotlin member with it. Where write() left a field at its default it does not model that field at all (it passes neither xs nor pn for k=1/2), so the original's value stands.