anchor.diff:        entryType
         { ct.setType($entryType.type); }
         (
  -        SMALLER_OP
  -        typeConstraints
  -        { ct.setTypeConstraintList($typeConstraints.typeConstraintList); }
  -        LARGER_OP
  +        anonymousTypeConstraints
  +        { ct.setTypeConstraintList($anonymousTypeConstraints.typeConstraintList); }
         )?
       | entryType
         { $type=$entryType.type; }
  
positive.code:       )?
      ;
  
  typeConstraints returns [TypeConstraintList typeConstraintList]
      : { $typeConstraintList=new TypeConstraintList(null); }
        (
          typeConstraint
          { if ($typeConstraint.typeConstraint!=null)
              $typeConstraintList.addTypeConstraint($typeConstraint.typeConstraint); }
        )+
      ;
  
  
negative.code:           i=INTERSECTION_OP
            { $satisfiedTypes.setEndToken($i); }
          | 
            UNION_OP
            { displayRecognitionError(getTokenNames(), 
                new MismatchedTokenException(INTERSECTION_OP, input)); }
          )
  