@Override public <A, B, C> F1<T2<C, A>, T2<C, B>> second(__<F1.µ, A, B> arrow) { final F1<A, B> fn = F1.narrow(arrow); return pair -> T2.of(pair._1(), fn.apply(pair._2())); }
@Override public <A, B, C> F1<T2<A, C>, T2<B, C>> first(__<F1.µ, A, B> arrow) { final F1<A, B> fn = F1.narrow(arrow); return pair -> T2.of(fn.apply(pair._1()), pair._2()); }