anchor.diff:      options {memoize=true;}
       : compilerAnnotations
         (
  -        (destructureStart) => d1=destructure
  -        { $d1.destructure.setToplevel(true);
  -          $statement=$d1.destructure; }
  -      | (annotatedDeclarationStart) => d3=declaration
  -        { $statement=$d3.declaration; }
  +        (destructureStart) => destructure
  +        { $destructure.destructure.setToplevel(true);
  +          $statement=$destructure.destructure; }
  +      | (annotatedDeclarationStart) => d1=declaration
  +        { $statement=$d1.declaration; }
         | (annotatedAssertionStart) => assertion
           { $statement = $assertion.assertion; }
  -      | (annotationListStart) => d4=declaration
  -        { $statement=$d4.declaration; }
  +      | (annotationListStart) => d2=declaration
  +        { $statement=$d2.declaration; }
         | s=statement
           { $statement=$s.statement; }
         )
  
positive.code:       )?
      ;
  
  keyValueStart
      : compilerAnnotations 
        (LIDENTIFIER ENTRY_OP|UIDENTIFIER|VALUE_MODIFIER|VOID_MODIFIER|FUNCTION_MODIFIER)
      ;
  
negative.code:         $destructure = new Destructure(null);
          $destructure.setType(vm); }
        (
          (variableKeyItemStart) => variableKeyItem
          { $destructure.setDestructuredVariables($variableKeyItem.keyValue); }
        |
          variableTuple
          { $destructure.setDestructuredVariables($variableTuple.variableTuple); }
  