anchor.diff:        )?
       ;
   
  -keyValueStart
  +variableKeyItemStart
       : compilerAnnotations 
         (LIDENTIFIER ENTRY_OP|UIDENTIFIER|VALUE_MODIFIER|VOID_MODIFIER|FUNCTION_MODIFIER)
       ;
  
positive.code:       { $variableTuple.setEndToken($RBRACKET); }
      ;
  
  keyValue returns [KeyValue keyValue]
      : v1=variableOrVariableTuple
        { $keyValue = new KeyValue(null);
          $keyValue.setKey($v1.statement); }
  
negative.code:         $destructure = new Destructure(null);
          $destructure.setType(vm); }
        (
          (variableKeyItemStart) => variableKeyItem
          { $destructure.setDestructuredVariables($variableKeyItem.keyValue); }
        |
          variableTuple
          { $destructure.setDestructuredVariables($variableTuple.variableTuple); }
  