in elitzur-avro/src/main/scala/com/spotify/elitzur/converters/avro/AvroConverter.scala [317:338]
override def toAvro(v: T, schema: Schema): Any = {
val ps = caseClass.parameters
var i = 0
val builder = new GenericRecordBuilder(schema)
while (i < ps.length) {
val p = ps(i)
val deref = p.dereference(v)
val fieldName = if (schema.getField(p.label) == null) {
SharedUtils.camelToSnake(p.label)
} else {
p.label
}
builder.set(
fieldName,
p.typeclass.toAvro(deref, schema.getField(fieldName).schema()))
i += 1
}
builder.build()
}