def multiFeatureNames()

in core/src/main/scala/com/spotify/featran/FeatureSpec.scala [440:470]


  def multiFeatureNames(c: ARRAY): Seq[Seq[String]] = {
    require(n == c.length)
    val bs = (0 until dims).map(_ => Seq.newBuilder[String])
    var i = 0
    val maps = Array.fill(dims)(mutable.Map.empty[String, Seq[String]])
    while (i < n) {
      val f = features(i)
      val names = f.unsafeFeatureNames(c(i))
      val tName = f.transformer.name
      val idx = mapping(tName)
      names.foreach(bs(idx) += _)
      if (crossings.keys.contains(tName)) {
        maps(idx)(tName) = names
      }
      i += 1
    }
    var idx = 0
    while (idx < dims) {
      val m = maps(idx).withDefaultValue(Nil)
      crossings.map.keys.foreach { case (n1, n2) =>
        for {
          x <- m(n1)
          y <- m(n2)
        } {
          bs(idx) += Crossings.name(x, y)
        }
      }
      idx += 1
    }
    bs.map(_.result())
  }