anchor.diff:        { $primary=$selfReference.atom; }
       | typeReference
         { BaseTypeExpression bte = new BaseTypeExpression(null);
  +        bte.setIdentifier($typeReference.identifier);
           bte.setTypeArguments( new InferredTypeArguments(null) );
  -        bte.setIdentifier($typeReference.identifier);
           if ($typeReference.typeArgumentList!=null)
               bte.setTypeArguments($typeReference.typeArgumentList);
           $primary=bte; }
       | memberReference
         { BaseMemberExpression bme = new BaseMemberExpression(null);
  +        bme.setIdentifier($memberReference.identifier);
           bme.setTypeArguments( new InferredTypeArguments(null) );
  -        bme.setIdentifier($memberReference.identifier);
           if ($memberReference.typeArgumentList!=null)
               bme.setTypeArguments($memberReference.typeArgumentList);
           $primary=bme; }
  
positive.code:       { $type=$t.type;}
      | memberName //-> ^(BASE_MEMBER_EXPRESSION memberName)
        { $instance = new BaseMemberExpression(null);
          $instance.setTypeArguments( new InferredTypeArguments(null) );
          $instance.setIdentifier($memberName.identifier); }
      ;
  
  //Support for metatypes
  
negative.code:     : annotationName
        { $annotation = new Annotation(null);
          BaseMemberExpression bme = new BaseMemberExpression(null);
          bme.setIdentifier($annotationName.identifier);
          bme.setTypeArguments( new InferredTypeArguments(null) );
          $annotation.setPrimary(bme); }
        annotationArguments
        { if ($annotationArguments.argumentList instanceof PositionalArgumentList)
  