public Operator getNegatedComparisonOperator() 
    {
        if ( ! isComparisonOperator() ) {
            throw new UnsupportedOperationException("Cannot negate, not a comparison operator: "+this);
        }          
        
        switch( this ) {
            case EQUALS:
                return NOT_EQUAL;
            case NOT_EQUAL:
                return EQUALS;
            case GREATER_THAN:
                return LESS_THAN_EQUAL;
            case LESS_THAN:
                return GREATER_THAN_EQUAL;
            case LESS_THAN_EQUAL:
                return GREATER_THAN;
            case GREATER_THAN_EQUAL:
                return LESS_THAN;
            default:
                throw new RuntimeException("Internal error,unhandled comparison operator "+this);
        }
    }