Tuple4 { public static <A, B, C, D> Tuple4<A, B, C, D> of(A a, B b, C c, D d) { return new Tuple4<>(a, b, c, d); } private  Tuple4(A _1, B _2, C _3, D _4); static Tuple4<A, B, C, D> of(A a, B b, C c, D d); Tuple5<T, A, B, C, D> prepend(T t); Tuple5<A, B, C, D, T> extend(Function4<A, B, C, D, T> mapping); Tuple4<A1, B1, C1, D1> map(Function<A, A1> fa,
      Function<B, B1> fb, Function<C, C1> fc, Function<D, D1> fd); @Override String toString(); @Override int hashCode(); @Override boolean equals(Object obj); final A _1; final B _2; final C _3; final D _4; }
@Test public void shouldNotBeEqualToUnrelatedClass() { assertThat(Tuple4.of(1, 2, 3, 4)).isNotEqualTo(""); }