### Question:
Octuple extends Septuple<R, S, T, U, V, W, X> implements Eighth<Y>,
                   MappableEighth<Y, Octuple<R, S, T, U, V, W, X, ?>> { public static <R, S, T, U, V, W, X, Y> Octuple<R, S, T, U, V, W, X, Y> octuple( R first, S second, T third, U fourth, V fifth, W sixth, X seventh, Y eighth) { return new Octuple<R, S, T, U, V, W, X, Y>(first, second, third, fourth, fifth, sixth, seventh, eighth); } Octuple(R first, S second, T third, U fourth, V fifth, W sixth, X seventh, Y eighth); static Octuple<R, S, T, U, V, W, X, Y> octuple(
            R first, S second, T third, U fourth, V fifth, W sixth, X seventh, Y eighth); @Override Y getEighth(); @Override Octuple<A, S, T, U, V, W, X, Y> mapFirst(UnaryFunction<R, A> function); @Override Octuple<R, A, T, U, V, W, X, Y> mapSecond(UnaryFunction<S, A> function); @Override Octuple<R, S, A, U, V, W, X, Y> mapThird(UnaryFunction<T, A> function); @Override Octuple<R, S, T, A, V, W, X, Y> mapFourth(UnaryFunction<U, A> function); @Override Octuple<R, S, T, U, A, W, X, Y> mapFifth(UnaryFunction<V, A> function); @Override Octuple<R, S, T, U, V, A, X, Y> mapSixth(UnaryFunction<W, A> function); @Override Octuple<R, S, T, U, V, W, A, Y> mapSeventh(UnaryFunction<X, A> function); @Override Octuple<R, S, T, U, V, W, X, A> mapEighth(UnaryFunction<Y, A> function); @Override Iterable<Object> getValues();  }### Answer:
@Test public void shouldConstructAOctupleWithTheSpecifiedValues() throws Exception { String first = "5"; Integer second = 4; Long third = 5L; Character fourth = 'a'; Boolean fifth = true; Double sixth = 3.6; Name seventh = name("Anna"); Age eighth = age(20); Octuple<String, Integer, Long, Character, Boolean, Double, Name, Age> expected = new Octuple<String, Integer, Long, Character, Boolean, Double, Name, Age>( first, second, third, fourth, fifth, sixth, seventh, eighth); Octuple<String, Integer, Long, Character, Boolean, Double, Name, Age> actual = octuple(first, second, third, fourth, fifth, sixth, seventh, eighth); assertThat(actual, is(expected)); }