anchor.diff:          // since the bracket operator is transformed into a method call.
           ipa:indexPropertyArgs[prefix]!
           {   #pathElement = #ipa;  }
  -/*    |
  -        (DOT nls "this") => DOT! nls! thisPart:"this"!
  -        { #pathElement = #(create(operator.getType(),operator.getText(),prefix,LT(1)),prefix,thisPart); }
  -/*NYI*
  -    |   DOT^ nls! "this"
  -
  -    |   DOT^ nls! "super"
  -        (   // (new Outer()).super()  (create enclosing instance)
  -            lp3:LPAREN^ argList RPAREN!
  -            {#lp3.setType(SUPER_CTOR_CALL);}
  -        |   DOT^ IDENT
  -            (   lps:LPAREN^ {#lps.setType(METHOD_CALL);}
  -                argList
  -                RPAREN!
  -            )?
  -        )
  -    |   DOT^ nls! newExpression
  -*NYI*/
       ;
   
   pathElementStart!
  
positive.code:     ;
  *OBS*/
  
  /*OBS???
  // This is the header of a method. It includes the name and parameters
  // for the method.
  // This also watches for a list of exception classes in a "throws" clause.
  ctorHead
      :   IDENT // the name of the method
  
          // parse the formal parameter declarations.
          LPAREN! parameterDeclarationList RPAREN!
  
          // get the list of exceptions that this method is declared to throw
          (throwsClause)?
      ;
  *OBS*/
  
  // This is a list of exception classes that the method is declared to throw
  throwsClause
      :   nls! "throws"^ nls! identifier ( COMMA! nls! identifier )*
  
negative.code: // the basic element of an expression
  primaryExpression {Token first = LT(1);}
      :   IDENT
      |   constant
      |   newExpression
      |   "this"
  