### Question:
Tuples { public static <T> Iterable<T> eighths(Iterable<? extends Eighth<T>> eighthables) { return Lazily.map(eighthables, Tuples.<T>toEighth()); }  static Mapper<Pair<K, V>, Map.Entry<K, V>> toMapEntry(); static Iterable<T> firsts(Iterable<? extends First<T>> firstables); static Iterable<T> seconds(Iterable<? extends Second<T>> secondables); static Iterable<T> thirds(Iterable<? extends Third<T>> thirdables); static Iterable<T> fourths(Iterable<? extends Fourth<T>> fourthables); static Iterable<T> fifths(Iterable<? extends Fifth<T>> fifthables); static Iterable<T> sixths(Iterable<? extends Sixth<T>> sixthable); static Iterable<T> sevenths(Iterable<? extends Seventh<T>> seventhable); static Iterable<T> eighths(Iterable<? extends Eighth<T>> eighthables); static Iterable<T> ninths(Iterable<? extends Ninth<T>> ninthables); static Mapper<? super First<T>, T> toFirst(); static Mapper<? super Second<T>, T> toSecond(); static Mapper<? super Third<T>, T> toThird(); static Mapper<? super Fourth<T>, T> toFourth(); static Mapper<? super Fifth<T>, T> toFifth(); static Mapper<? super Sixth<T>, T> toSixth(); static Mapper<? super Seventh<T>, T> toSeventh(); static Mapper<? super Eighth<T>, T> toEighth(); static Mapper<? super Ninth<T>, T> toNinth();  }### Answer:
@Test public void shouldGetEighthsFromIterableOfEighthables() throws Exception { Iterable<? extends Eighth<Age>> eighthables = iterableWith( tuple(false, 1.25, 'a', 0L, name("Bill"), "1", 2, age(50)), tuple(3, 'a', 2.5, 27L, 5.4, 'b', name("Betty"), age(60)), tuple(6.2, 7, false, 4.75, 54L, name("Beatrice"), 'c', age(70))); Iterable<Age> expected = iterableWith(age(50), age(60), age(70)); Iterable<Age> actual = Tuples.eighths(eighthables); assertThat(actual, hasOnlyItemsInOrder(expected)); }
@Test(expected = NullPointerException.class) public void shouldThrowANullPointerExceptionIfIterablePassedToEighthsIsNull() throws Exception { Iterable<? extends Eighth<Integer>> input = null; Tuples.eighths(input); }