Pair { public static <S, T> DRes<Pair<S, T>> lazy(S first, T second) { return () -> new Pair<>(first, second); } Pair(S first, T second); static DRes<Pair<S, T>> lazy(S first, T second); S getFirst(); T getSecond(); @Override boolean equals(Object obj); @Override String toString(); @Override int hashCode();  }
@Test public void testLazy() { Pair<String, Integer> pair = Pair.lazy("Test", 5).out(); assertEquals("Test", pair.getFirst()); assertEquals(5, pair.getSecond().intValue()); }