private Comparator<ENTITY> then(Comparator<? super ENTITY> other) {
        if (other instanceof FieldComparator) {
            @SuppressWarnings("unchecked")
            final FieldComparator<? super ENTITY> fc =
                (FieldComparator<? super ENTITY>) other;

            final List<FieldComparator<? super ENTITY>> copy =
                new ArrayList<>(comparators);

            copy.add(fc);

            return new CombinedComparatorImpl<>(copy);
        } else if (other instanceof CombinedComparator) {
            @SuppressWarnings("unchecked")
            final CombinedComparator<? super ENTITY> cc =
                (CombinedComparator<? super ENTITY>) other;

            final List<FieldComparator<? super ENTITY>> copy =
                new ArrayList<>(comparators);

            cc.stream().forEachOrdered(copy::add);

            return new CombinedComparatorImpl<>(copy);
        } else {
            return (a, b) -> {
                final int c = compare(a, b);
                return c == 0 ? other.compare(a, b) : c;
            };
        }
    }
Default implementation of the {@link CombinedComparator}-interface.

@author Emil Forslund
@since  3.0.11
runtime-parent/runtime-field/src/main/java/com/speedment/runtime/field/internal/comparator/CombinedComparatorImpl.java