anchor.diff:      -> ^(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
  -      | (specificationStatementStart) => specificationStatement
  +      | (specificationStart) => specificationStatement
         | (annotatedDeclarationStart) => annotatedDeclaration
         | (expressionStatement) => expressionStatement
       )*
  
positive.code:     ;
  
  namedArgumentStart
      : LIDENTIFIER '=' 
      | declarationStart
      ;
  
  
negative.code:     : 
      (
          controlStructure
        | (specificationStart) => specificationStatement
        | (annotatedDeclarationStart) => annotatedDeclaration
        | expressionStatement
      )*
      ;
  
  //special rule for syntactic predicates
  specificationStart
      : LIDENTIFIER '='
      ;
  
  //we don't need to distinguish methods from attributes
  