in bijection-core/src/main/scala-2.13+/com/twitter/bijection/CollectionBijections.scala [145:161]
def toContainer[A, B, C <: IterableOnce[A], D <: IterableOnce[B]](implicit
bij: ImplicitBijection[A, B],
cd: Factory[B, D],
dc: Factory[A, C]
): Bijection[C, D] =
new AbstractBijection[C, D] {
def apply(c: C) = {
val builder = cd.newBuilder
c.iterator.foreach { builder += bij(_) }
builder.result()
}
override def invert(d: D) = {
val builder = dc.newBuilder
d.iterator.foreach { builder += bij.invert(_) }
builder.result()
}
}