in chill-scala/src/main/scala/com/twitter/chill/Externalizer.scala [132:149]
private def fromBytes(b: Array[Byte], kryo: KryoInstantiator): Option[T] =
KryoPool
.withByteArrayOutputStream(1, kryo)
.fromBytes(b)
.asInstanceOf[Option[T]]
override def readExternal(in: ObjectInput): Unit = maybeReadJavaKryo(in, kryo)
private def maybeReadJavaKryo(in: ObjectInput, kryo: KryoInstantiator): Unit =
in.read match {
case JAVA =>
item = Right(in.readObject.asInstanceOf[Option[T]])
case KRYO =>
val sz = in.readInt
val buf = new Array[Byte](sz)
in.readFully(buf)
item = Right(fromBytes(buf, kryo))
}