anchor.diff:  throwStatement : 'throw' ';' ;
   variableDefinition : variableDeclaration ( '=' expression )? ';';
   
  -elementaryTypename
  +elementaryTypeName
       : 'address' | 'bool' | 'string' | 'var'
       | Int | Uint | Byte | Fixed | Ufixed
       ;
  
positive.code:     | elementaryTypeNameExpression
      ;
  
  functionCall : ( Identifier | newExpression | typename ) ( ( '.' Identifier ) | ( '[' expression ']' ) )* '(' expression? ( ',' expression )* ')' ;
  newExpression : 'new' (typename | Identifier) ;
  
  inlineAssemblyBlock : '{' assemblyItem* '}' ;
  
  
negative.code: functionalAssemblyExpression : Identifier '(' assemblyItem? ( ',' assemblyItem )* ')' ;
  
  arrayLiteral : '[' expression? ( ',' expression )* ']' ;
  elementaryTypeNameExpression : elementaryTypeName '(' expression ')' ;
  numberLiteral : (DecimalNumber | HexNumber) NumberUnit? ;
  
  BooleanLiteral : 'true' | 'false' ;
  