in core/src/main/scala/com/gu/marley/AvroSerialisable.scala [18:31]
def value[T](t: T)(implicit lw: AvroSerialisable[T]): Any = lw.writableValue(t)
def read[T](x: Any)(implicit lw: AvroSerialisable[T]): T = lw.read(x)
def schema[T](implicit lw: AvroSerialisable[T]): AvroSchema = lw.schema
implicit val booleanSerialisable: SimpleSerialisable[Boolean] = SimpleSerialisable[Boolean](Schema.Type.BOOLEAN)
implicit val intSerialisable: SimpleSerialisable[Int] = SimpleSerialisable[Int](Schema.Type.INT)
implicit val longSerialisable: SimpleSerialisable[Long] = SimpleSerialisable[Long](Schema.Type.LONG)
implicit val doubleSerialisable: SimpleSerialisable[Double] = SimpleSerialisable[Double](Schema.Type.DOUBLE)
case class SimpleSerialisable[T](typ: Type) extends AvroSerialisable[T] {
override val schema = SimpleAvroSchema(typ)
override def writableValue(t: T) = t
override def read(x: Any): T = x.asInstanceOf[T]
}