in core/src/main/scala/com/spotify/featran/FeatureSpec.scala [242:256]
def get(t: T): Option[A] = f(t).orElse(default)
// Option[A] => Option[B]
def unsafePrepare(a: Option[Any]): Option[B] =
a.asInstanceOf[Option[A]].map(transformer.aggregator.prepare)
// (Option[B], Option[B]) => Option[B]
def unsafeSum(x: Option[Any], y: Option[Any]): Option[Any] =
(x.asInstanceOf[Option[B]], y.asInstanceOf[Option[B]]) match {
case (Some(a), Some(b)) =>
Some(transformer.aggregator.semigroup.plus(a, b))
case (Some(a), None) => Some(a)
case (None, Some(b)) => Some(b)
case _ => None
}