@Override
  public int compareTo(Cut<C> that) {
    if (that == belowAll()) {
      return 1;
    }
    if (that == aboveAll()) {
      return -1;
    }
    int result = Range.compareOrThrow(endpoint, that.endpoint);
    if (result != 0) {
      return result;
    }
    // same value. below comes before above
    return Booleans.compare(this instanceof AboveValue, that instanceof AboveValue);
  }
@Override
  public int compareTo(Cut<C> that) {
    if (that == belowAll()) {
      return 1;
    }
    if (that == aboveAll()) {
      return -1;
    }
    int result = Range.compareOrThrow(endpoint, that.endpoint);
    if (result != 0) {
      return result;
    }
    
    return Booleans.compare(this instanceof AboveValue, that instanceof AboveValue);
  }
@ Override public int compareTo ( Cut < C > that ) { if ( that == belowAll ( ) ) { return 1 ; } if ( that == aboveAll ( ) ) { return - 1 ; } int result = Range . compareOrThrow ( endpoint , that . endpoint ) ; if ( result != 0 ) { return result ; } // same value. below comes before above return Booleans . compare ( this instanceof AboveValue , that instanceof AboveValue ) ; }
note: overridden by {BELOW,ABOVE}_ALL
note : overridden by { BELOW ABOVE } _ALL