public IPair <S1, S2> Forms(IPair <S1, S2> l, IPair <S1, S2> r) { return(new Pair <S1, S2>(Factory1.Forms(l.Item1, r.Item1), Factory2.Forms(l.Item2, r.Item2))); }