### Question:
ImmutableList implements FuncList<DATA> { @SafeVarargs public static <T> ImmutableList<T> of(T ... data) { return new ImmutableList<>(Arrays.asList(data)); } ImmutableList(Collection<DATA> data);  ImmutableList(Collection<DATA> data, boolean isLazy); @SuppressWarnings("unchecked") static final ImmutableList<T> empty(); static ImmutableList<T> from(Collection<T> data); @SafeVarargs static ImmutableList<T> of(T ... data); static ImmutableList<T> from(T[] datas); static ImmutableList<T> from(Streamable<T> streamable); static ImmutableList<T> from(Stream<T> stream); static ImmutableList<T> from(ReadOnlyList<T> readOnlyList); static ImmutableList<T> from(FuncList<T> funcList); @SafeVarargs static ImmutableList<T> listOf(T ... data); @Override StreamPlus<DATA> stream(); boolean isLazy(); boolean isEager(); FuncList<DATA> lazy(); FuncList<DATA> eager(); @Override ImmutableList<DATA> toImmutableList(); @Override int size(); @Override boolean isEmpty(); @Override TARGET[] toArray(TARGET[] seed); @Override DATA get(int index); @Override int indexOf(Object o); @Override int lastIndexOf(Object o); @Override ListIterator<DATA> listIterator(); @Override ListIterator<DATA> listIterator(int index); @Override String toString(); @Override boolean equals(Object o); @Override int hashCode();  }### Answer:
@Test public void testSorted() { assertEquals("[1, 2, One, Two]", "" + ImmutableList.of("1", "One", "2", "Two").sorted()); assertEquals("[1, 2, One, Two]", "" + ImmutableList.of("2", "Two", "1", "One").sorted()); }