anchor.diff:        { $declaration=$aliasDeclaration.declaration; }
       | objectDeclaration
         { $declaration=$objectDeclaration.declaration; }
  -    | (VALUE_MODIFIER LBRACKET) => d1=destructure
  -      { $declaration = $d1.destructure; }
  -    | (VALUE_MODIFIER var ENTRY_OP) => d2=destructure
  -      { $declaration = $d2.destructure; }
       | setterDeclaration
         { $declaration=$setterDeclaration.declaration; }
       | voidOrInferredMethodDeclaration
  
positive.code:     options {memoize=true;}
      : compilerAnnotations
        ( 
          (annotatedDeclarationStart) => d=declaration
          { $statement=$d.declaration; }
        | (annotatedAssertionStart) => assertion
          { $statement = $assertion.assertion; }
        | (annotationListStart) => d1=declaration
          { $statement=$d1.declaration; }
        | s=statement
          { $statement=$s.statement; }
        )
  
negative.code:             $statement.getCompilerAnnotations().addAll($compilerAnnotations.annotations); }
      ;
  
  declaration returns [Declaration declaration]
      @init { MissingDeclaration md = new MissingDeclaration(null); 
              $declaration = md; }
      : annotations
  