anchor.diff:   | debuggerStatement
    | importStatement
    | exportStatement
  - ;
  + | lexicalStatement
  + ;
  +
  +lexicalStatement
  +  : 'let' bindingList
  +  | 'const' bindingList
  +;
  +
  +bindingList
  +  : lexicalBinding
  +  | bindingList ',' lexicalBinding
  +;
  +
  +lexicalBinding
  +  : Identifier initialiser
  +  | bindingPattern initialiser
  +;
  +
  +bindingPattern
  +  : objectBindingPattern
  +  | arrayBindingPattern
  +;
  +
  +//{ }
  +//{ BindingPropertyList [?Yield] }
  +//{ BindingPropertyList [?Yield] , }
  +
  +objectBindingPattern
  +  : '{' '}'
  +  | '{' bindingPropertyList '}'
  +  | '{' bindingPropertyList ',' '}'
  +;
  +
  +bindingPropertyList
  +  : bindingProperty
  +  | bindingPropertyList ',' bindingProperty
  +;
  +
  +bindingProperty
  +  : Identifier initialiser
  +  | propertyName ':' bindingElement
  +;
  +
  +bindingElement
  +  : Identifier initialiser
  +  | bindingPattern initialiser?
  +;
  +
  +//ArrayBindingPattern [Yield] :
  +//[ Elision opt BindingRestElement [?Yield]opt ]
  +//[ BindingElementList [?Yield] ]
  +//[ BindingElementList [?Yield] , Elision opt BindingRestElement [?Yield]opt ]
  +
  +arrayBindingPattern
  +  : '[' elision? bindingRestElement ']'
  +  | '[' bindingElementList ']'
  +  | '[' bindingElementList ',' elision? bindingRestElement ']'
  +;
  +
  +bindingElementList
  +  : elision? bindingElement
  +  | bindingElementList ',' elision? bindingElementList
  +;
  +
  +bindingRestElement
  +  : '...' Identifier
  +;
   
   importStatement
    : 'import' importClause fromClause ';'?
  
positive.code:   | 'export' namedImports fromClause? ';'?
    | 'export' variableStatement
    | 'export' functionDeclaration
    | 'export' 'default' functionDeclaration
    | 'export' 'default' singleExpression ';'?
  ;
  
negative.code: ///     ThrowStatement
  ///     TryStatement
  ///     DebuggerStatement
  ///     TODO: remove import, export and lexical from statements
  statement
   : block
   | variableStatement
  