### Question:
CollectionFunctionals { public static <T> Function<Iterable<? extends T>, T> firstElement() { return new FirstElementFunction<T>(); }  static Supplier<Integer> sizeSupplier(final Iterable<?> collection); static Function<Iterable<?>, Integer> sizeFunction(); static Function<Iterable<?>, Integer> sizeFunction(final Integer valueIfInputNull); static Function<Iterable<? extends T>, T> firstElement(); static Function<Map<K,?>,Set<K>> keys(); static Function<Map<K, ?>, Integer> mapSize(); static Function<Map<K, ?>, Integer> mapSize(Integer valueIfNull); static Predicate<Iterable<?>> equalsSetOf(Object... target); static Predicate<Iterable<?>> equalsSet(final Iterable<?> target); static Predicate<Iterable<?>> sizeEquals(int targetSize); static Predicate<Iterable<?>> empty(); static Predicate<Iterable<?>> notEmpty(); static Predicate<Map<K,?>> mapSizeEquals(int targetSize); static Function<I, List<T>> limit(final int max); static Predicate<T> contains(I item); static Predicate<TT> all(Predicate<T> attributeSatisfies); static Predicate<TT> any(Predicate<T> attributeSatisfies); static Predicate<TT> quorum(QuorumCheck quorumCheck, Predicate<T> attributeSatisfies);  }### Answer:
@Test public void testFirstElement() { Assert.assertEquals(CollectionFunctionals.firstElement().apply(null), null); Assert.assertEquals(CollectionFunctionals.firstElement().apply(ImmutableList.of("a")), "a"); Assert.assertEquals(CollectionFunctionals.firstElement().apply(ImmutableList.of("a", "b", "c")), "a"); }