anchor.diff:        { $variableTuple.setEndToken($RBRACKET); }
       ;
   
  -keyValue returns [KeyValue keyValue]
  +variableKeyItem returns [KeyValue keyValue]
       : v1=variableOrVariableTuple
         { $keyValue = new KeyValue(null);
           $keyValue.setKey($v1.statement); }
  
positive.code:     options {memoize=true;}
      : compilerAnnotations
        (
          (destructureStart) => d1=destructure
          { $d1.destructure.setToplevel(true);
            $statement=$d1.destructure; }
        | (annotatedDeclarationStart) => d3=declaration
          { $statement=$d3.declaration; }
        | (annotatedAssertionStart) => assertion
          { $statement = $assertion.assertion; }
        | (annotationListStart) => d4=declaration
          { $statement=$d4.declaration; }
        | s=statement
          { $statement=$s.statement; }
        )
  
negative.code:         $destructure = new Destructure(null);
          $destructure.setType(vm); }
        (
          (variableKeyItemStart) => variableKeyItem
          { $destructure.setDestructuredVariables($variableKeyItem.keyValue); }
        |
          variableTuple
          { $destructure.setDestructuredVariables($variableTuple.variableTuple); }
  