import java.util.Comparator; class NullComparator<T> { private final Comparator<T> real = null; private Comparator<? super T> other; private Comparator<T> another; NullComparator(Comparator<? super T> real) { } public NullComparator<T> thenComparing() { return new NullComparator<>(real == null ? other : another); } Comparator<T> a() { return null; } Comparator<? super T> b() { return null; } public NullComparator<T> thenComparing1() { return new NullComparator<>(real == null ? a() : b()); } }