anchor.diff:      ;
       
   type returns [StaticType type]
  +    : unionType 
  +      { $type=$unionType.type; }
  +    ;
  +    
  +entryType returns [StaticType type]
       @init { BaseType bt=null; 
               TypeArgumentList tal=null; }
  -    : ut1=unionType
  +    : ut1=abbreviatedType
         { $type=$ut1.type; 
           bt = new BaseType(null); 
           tal = new TypeArgumentList(null); 
  
positive.code:           i=INTERSECTION_OP
            { it.setEndToken($i); }
            (
              at2=abbreviatedType
              { it.addStaticType($at2.type);
                it.setEndToken(null); }
            | { displayRecognitionError(getTokenNames(), 
  
negative.code: 
  intersectionType returns [StaticType type]
      @init { IntersectionType it=null; }
      : at1=entryType
        { $type = $at1.type;
          it = new IntersectionType(null);
          it.addStaticType($type); }
  