def writableValue()

in core/src/main/scala/com/gu/marley/AvroSerialisable.scala [138:156]


        def writableValue(t: $typ) = valueMap(t)

        val readMap = Map($listMethod.map(x =>
          com.gu.marley.enumsymbols.SnakesOnACamel.toSnake(x.name) -> x
        ): _*)

        def read(x: Any) = readMap(x.toString)
      }
    """
  }

  def structMacro[T: c.WeakTypeTag]: Tree = {
    val typ = weakTypeOf[T]

    val apply = typ.dealias.companion.decls.find(_.name == TermName("apply")).getOrElse(
      c.abort(c.enclosingPosition, s"Expected the companion object of ${typ.dealias} to have an 'apply' method")
    )

    val fields = for {