Lenient Field Type Adapter Factory
Degrades a field with the wrong JSON type to null instead of failing the whole object, matching iOS's @Lenient property wrapper. A field whose Kotlin-declared type cannot hold null still throws, since there is nothing safe to degrade it to.
field.type.isPrimitive alone is not enough to detect that: it is true only for JVM primitives (int, boolean, …), not for a Kotlin non-null reference type like String or List<T> — those are reference types at the JVM level, so a naive check would silently null out a field Kotlin's type system promises can never be null, surfacing as an unrelated NPE far from this deserialization site whenever the field is later read. Kotlin's own nullability annotations use class-file (not runtime) retention, so distinguishing the two requires kotlin-reflect's KProperty.returnType.isMarkedNullable rather than plain Field reflection.
Registered once on FrameNetworking.gson rather than applied per field.