in core/src/main/scala/com/spotify/featran/FeatureSpec.scala [259:282]
def unsafePresent(b: Option[Any]): Option[C] =
b.asInstanceOf[Option[B]].map(transformer.aggregator.present)
// Option[C] => Int
def unsafeFeatureDimension(c: Option[Any]): Int =
transformer.optFeatureDimension(c.asInstanceOf[Option[C]])
// Option[C] => Array[String]
def unsafeFeatureNames(c: Option[Any]): Seq[String] =
transformer.optFeatureNames(c.asInstanceOf[Option[C]])
// (Option[A], Option[C], FeatureBuilder[F])
def unsafeBuildFeatures(a: Option[Any], c: Option[Any], fb: FeatureBuilder[_]): Unit =
transformer.optBuildFeatures(a.asInstanceOf[Option[A]], c.asInstanceOf[Option[C]], fb)
// Option[C]
def unsafeSettings(c: Option[Any]): Settings =
transformer.settings(c.asInstanceOf[Option[C]])
}
private class FeatureSet[T](
private[featran] val features: Array[Feature[T, _, _, _]],
private[featran] val crossings: Crossings
) extends Serializable {