### Question:
Pair { public static <A, B> Pair<A, B> of(@Nullable A a, @Nullable B b) { return new Pair<A, B>(a, b); } Pair(@Nullable A first, @Nullable B second); @Nullable A getFirst(); @Nullable B getSecond(); @Override boolean equals(Object o); @Override String toString(); @Override int hashCode(); static Function<Pair<S, T>, S> first(); static Function<Pair<S, T>, T> second(); static Pair<A, B> of(@Nullable A a, @Nullable B b);  }### Answer:
@Test public void testValueEquals() { assertEquals(new Pair<Integer, String>(1, "a"), Pair.of(1, "a")); assertEquals(new Pair<Integer, String>(null, "a"), Pair.<Integer, String>of(null, "a")); assertEquals(new Pair<Integer, String>(1, null), Pair.<Integer, String>of(1, null)); }