code: @SuppressWarnings({ "rawtypes", "unchecked" })
    static boolean evalComparable(CompareOperator comparator, Comparable arg1, Comparable arg2) {
  
      int delta;
      try {
        delta = signum(arg1.compareTo(arg2));
      } catch (ClassCastException e) {
        // delta = -arg2.compareTo(arg1);
  
        // incompatible comparables
        return ((arg1.equals(arg2)) == comparator.isTrueIfEquals());
      }
      return comparator.eval(delta);
    }
docs: Logic for {@link CompareOperator#eval(Object, Object)} with {@link Comparable} arguments.
  
  @param comparator is the {@link CompareOperator}.
  @param arg1 is the first argument.
  @param arg2 is the second argument.
  @return the result of the {@link Comparator} applied to the given arguments.