ResponseModelGenerator
Generates response model data classes from a normalized ResponseSelectionSet produced by co.anitrend.retrofit.graphql.codegen.parser.ResponseSelectionParser.
The generator uses three phases:
Projection: For each concrete runtime path, a selection set is projected to produce a ProjectedSelectionSet where each JSON response key maps to exactly one projected field.
Collection: All projected selection sets are collected into a map keyed by ResponseModelIdentity.
Generation: KotlinPoet types are generated from the collected projected selection sets.
Property resolution uses exact ResponseModelIdentity matching via the child's response path and runtime path derived from the current identity. No heuristic fallback searches are used.
The backend controls which serialization annotations are emitted: SerializationBackend.NONE emits plain Kotlin structures (including plain sealed interfaces for abstract types), SerializationBackend.KOTLINX emits kotlinx.serialization annotations, and SerializationBackend.GSON emits Gson annotations on properties.