override def newConverter()

in parquet/src/main/scala/magnolify/parquet/ParquetField.scala [159:185]


        override def newConverter(writerSchema: Type): TypeConverter[T] =
          new GroupConverter with TypeConverter.Buffered[T] {
            private val fieldConverters =
              caseClass.parameters.map(_.typeclass.newConverter(writerSchema))

            override def isPrimitive: Boolean = false

            override def getConverter(fieldIndex: Int): Converter = fieldConverters(fieldIndex)

            override def start(): Unit = ()

            override def end(): Unit = {
              val value = caseClass.construct { p =>
                try {
                  fieldConverters(p.index).get
                } catch {
                  case e: IllegalArgumentException =>
                    val field = s"${caseClass.typeName.full}#${p.label}"
                    throw new ParquetDecodingException(
                      s"Failed to decode $field: ${e.getMessage}",
                      e
                    )
                }
              }
              addValue(value)
            }
          }