### Question:
Tuple5 extends Tuple4<T1, T2, T3, T4> implements Tuple { public static <T1, T2, T3, T4, T5> Tuple5<T1, T2, T3, T4, T5> of(T1 a, T2 b, T3 c, T4 d, T5 e) { return new Tuple5<>(a, b, c, d, e); } Tuple5(T1 a, T2 b, T3 c, T4 d, T5 e); static Tuple5<T1, T2, T3, T4, T5> of(T1 a, T2 b, T3 c, T4 d, T5 e); T5 getItem5(); @Override Tuple5<T, T2, T3, T4, T5> mapItem1(Function<T1, T> mapper); @Override Tuple5<T1, T, T3, T4, T5> mapItem2(Function<T2, T> mapper); @Override Tuple5<T1, T2, T, T4, T5> mapItem3(Function<T3, T> mapper); @Override Tuple5<T1, T2, T3, T, T5> mapItem4(Function<T4, T> mapper); Tuple5<T1, T2, T3, T4, T> mapItem5(Function<T5, T> mapper); @Override Object nth(int index); @Override List<Object> asList(); @Override int size(); @Override String toString(); @Override boolean equals(Object o); @Override int hashCode();  }### Answer:
@Test public void assertNullValues() { assertThat(Tuple5.of(null, 1, 2, 3, 4)).containsExactly(null, 1, 2, 3, 4); assertThat(Tuple5.of(1, null, 2, 3, 4)).containsExactly(1, null, 2, 3, 4); assertThat(Tuple5.of(1, 2, null, 3, 4)).containsExactly(1, 2, null, 3, 4); assertThat(Tuple5.of(1, 2, 3, null, 4)).containsExactly(1, 2, 3, null, 4); assertThat(Tuple5.of(1, 2, 3, null, 4)).containsExactly(1, 2, 3, null, 4); assertThat(Tuple5.of(1, 2, 3, 4, null)).containsExactly(1, 2, 3, 4, null); assertThat(Tuple5.of(null, null, null, null, null)).containsExactly(null, null, null, null, null); }
@Test public void testEquality() { assertThat(someTuple).isEqualTo(someTuple); assertThat(someTuple).isNotEqualTo(Tuple5.of(1, 2, 4, 5, 10)); assertThat(someTuple).isNotEqualTo("not a tuple"); assertThat(someTuple).isEqualTo(Tuple5.of(1, 2, 3, 4, 5)); }