anchor.diff:      : memberName '='
       ;
   
  -//special rule for syntactic predicates
  -expressionStatementStart
  -    : expression ';'
  -    ;
  -
   //we don't need to distinguish methods from attributes
   //in the grammar
  -declaration
  +annotatedDeclaration
       :
       annotations?
       ( 
  
positive.code:     ;
      
  block
      : '{' declarationsAndStatements (directiveStatement | expressions)? '}'
      -> ^(BLOCK declarationsAndStatements? directiveStatement? expressions?) //note: the first ? is needed here!
      ;
  
  declarationsAndStatements
      : 
      (
          controlStructure
        | (specificationStatementStart) => specificationStatement
        | (expressionStatementStart) => expressionStatement
        | (annotatedDeclarationStart) => declaration
      )*
      ;
  
  
negative.code:     ;
  
  classBody
      : '{' classDeclarationsAndStatements '}'
      -> ^(CLASS_BODY classDeclarationsAndStatements?) //note: the ? is needed here!
      ;
  
  extendedType
  