code: @NotNull
      public static <T> Comparator<T> thenComparing(
              @NotNull final Comparator<? super T> c1,
              @NotNull final Comparator<? super T> c2) {
          Objects.requireNonNull(c1);
          Objects.requireNonNull(c2);
          return new Comparator<T>() {
  
              @Override
              public int compare(T t1, T t2) {
                  final int result = c1.compare(t1, t2);
                  return (result != 0) ? result : c2.compare(t1, t2);
              }
          };
      }
docs: Returns a comparator that uses {@code c2} comparator
  if {@code c1} comparator considers two elements equal.
  
  @param <T> the type of the objects compared by the comparators
  @param c1  a first comparator
  @param c2  a second comparator
  @return a comparator
  @throws NullPointerException if {@code c1} or {@code c2} is null