anchor.diff:        { $type=$t.type; }
         (
           DEFAULT_OP 
  -        { UnionType ot = new UnionType($DEFAULT_OP);
  -          ot.addStaticType($type);
  +        { UnionType ot = new UnionType(null);
             CommonToken tok = new CommonToken($DEFAULT_OP);
             tok.setText("Nothing");
             BaseType bt = new BaseType($DEFAULT_OP);
             bt.setIdentifier( new Identifier(tok) );
             ot.addStaticType(bt);
  +          ot.addStaticType($type);
             $type=ot; }
         | ARRAY 
  -        { UnionType ot = new UnionType($ARRAY);
  +        { UnionType ot = new UnionType(null);
             CommonToken tok = new CommonToken($ARRAY);
             tok.setText("Empty");
             BaseType bt = new BaseType($ARRAY);
  
positive.code:     ;
  
  intersectionType returns [StaticType type]
      @init { IntersectionType it = new IntersectionType(null); 
              it.addStaticType($type); }
      : at1=abbreviatedType
        { $type = $at1.type; }
        ( 
          (
            INTERSECTION_OP
  
negative.code:         bme.setTypeArguments( new InferredTypeArguments(null) );
          bme.setPrimary($primary);
          bme.setIdentifier($qualifiedMemberReference.identifier);
          bme.setMemberOperator($qualifiedMemberReference.operator);
          if ($qualifiedMemberReference.typeArgumentList!=null) {
              bme.setTypeArguments($qualifiedMemberReference.typeArgumentList);
          }
  