anchor.diff:       lit=literal {retval.element = lit.element;}
      ;
   
  -moreIdentifierSuffixRubbish returns [Expression element]
  +moreidentifierRuleSuffixRubbish returns [Expression element]
   scope TargetScope;
   @init{
   Token stop = null;
  
positive.code:         }
      |   nt=nonTargetPrimary {retval.element=nt.element;}
      |   nkw='new' {start=nkw;} cr=creator {retval.element = cr.element;setKeyword(retval.element,nkw);}
      |   morerubex=moreIdentifierSuffixRubbish {retval.element = morerubex.element;}
      |   vt=voidType '.' clkw='class' {retval.element = new ClassLiteral(vt.element); start=vt.start;stop=clkw; setLocation(retval.element,start,stop);}
      |   tref=type '.' clkww='class' {retval.element = new ClassLiteral(tref.element);start=tref.start;stop=clkww; setLocation(retval.element,start,stop);}
      ;
  
negative.code:     ;
      
  annotationTypeDeclaration returns [TypeWithBody element]
      :   '@' 'interface' name=identifierRule 
               {
                 retval.element = (TypeWithBody)createType(new SimpleNameSignature($name.text));
                 retval.element.addModifier(new AnnotationType());
                 setLocation(retval.element,name.start,"__NAME");
               } 
               body=annotationTypeBody {retval.element.setBody(body.element);}
      ;
  