anchor.diff:    | 'import' ('*' | identifier) ('as' identifier)? 'from' StringLiteral ';'
     | 'import' '{' importDeclaration ( ',' importDeclaration )* '}' 'from' StringLiteral ';' ;
   
  +NatSpecSingleLine
  +  : ('///' .*? [\r\n]) + ;
  +
  +NatSpecMultiLine
  +  : '/**' .*? '*/' ;
  +
  +natSpec
  +  : NatSpecSingleLine
  +  | NatSpecMultiLine ;
  +
   contractDefinition
  -  : ( 'contract' | 'interface' | 'library' ) identifier
  +  : natSpec? ( 'contract' | 'interface' | 'library' ) identifier
       ( 'is' inheritanceSpecifier (',' inheritanceSpecifier )* )?
       '{' contractPart* '}' ;
   
  
positive.code:   : identifier ( '(' expressionList? ')' )? ;
  
  functionDefinition
    : 'function' identifier? parameterList modifierList returnParameters? ( ';' | block ) ;
  
  returnParameters
    : 'returns' parameterList ;
  
negative.code:     | PublicKeyword | InternalKeyword | PrivateKeyword )* ;
  
  eventDefinition
    : natSpec? 'event' identifier eventParameterList AnonymousKeyword? ';' ;
  
  enumValue
    : identifier ;
  