ConstraintOperator
The ConstraintOperator class is used internally by a
             ConstraintBuilder to represent an operator that
             modifies or combines constraints.
            
             Constraint operators use left and right precedence
             values to determine whether the top operator on the
             stack should be reduced before pushing a new operator.
             
                
The precedence value used when the operator
            is about to be pushed to the stack.
            
The precedence value used when the operator
            is on the top of the stack.
            
The syntax element preceding this operator
            
The precedence value used when the operator
            is about to be pushed to the stack.
            
The syntax element following this operator
            
The precedence value used when the operator
            is on the top of the stack.
            
protected ConstraintOperator()
Reduce produces a constraint from the operator and
            any arguments. It takes the arguments from the constraint
            stack and pushes the resulting constraint on it.