in bijection-core/src/main/scala-2.13+/com/twitter/bijection/Bijection.scala [136:148]
implicit def fn2Bijection[A, B, C, D, E, F](implicit
bab: ImplicitBijection[A, B],
bcd: ImplicitBijection[C, D],
bef: ImplicitBijection[E, F]
): Bijection[(A, C) => E, (B, D) => F] =
new AbstractBijection[(A, C) => E, (B, D) => F] {
def apply(fn: (A, C) => E) = { (b, d) =>
bef.apply(fn(bab.invert(b), bcd.invert(d)))
}
override def invert(fn: (B, D) => F) = { (a, c) =>
bef.invert(fn(bab.apply(a), bcd.apply(c)))
}
}