anchor.diff:      : 
       (
           controlStructure
  -      | (specificationStatementStart) => specificationStatement
  +      | (specificationStart) => specificationStatement
         | (annotatedDeclarationStart) => annotatedDeclaration
         | expressionStatement
       )*
       ;
   
   //special rule for syntactic predicates
  -specificationStatementStart
  -    : memberName '='
  +specificationStart
  +    : LIDENTIFIER '='
       ;
   
   //we don't need to distinguish methods from attributes
  
positive.code:     ;
  
  namedArgumentStart
      : LIDENTIFIER '=' 
      | declarationStart
      ;
  
  
negative.code:     -> ^(BLOCK blockDeclarationsAndStatements?) //note: the first ? is needed here!
      ;
  
  //This rule accounts for the problem that we
  //can't tell whether a member body is a block
  //or a named argument list until after we
  //finish parsing it
  blockDeclarationsAndStatements
      : 
      (
          controlStructure
        | (specificationStart) => specificationStatement
        | (annotatedDeclarationStart) => annotatedDeclaration
        | (expressionStatement) => expressionStatement
      )*
  