anchor.diff:  enumDefinition
     : 'enum' identifier '{' enumValue? (',' enumValue)* '}' ;
   
  -indexedParameterList
  -  : '(' ( indexedParameter (',' indexedParameter)* )? ')' ;
  -
  -indexedParameter
  -  : typeName ( storageLocation | IndexedKeyword )* identifier? ;
  -
   parameterList
     : '(' ( parameter (',' parameter)* )? ')' ;
   
   parameter
     : typeName storageLocation? identifier? ;
   
  -typeNameList
  -  : '(' ( unnamedParameter (',' unnamedParameter)* )? ')' ;
  -
  -unnamedParameter
  +eventParameterList
  +  : '(' ( eventParameter (',' eventParameter)* )? ')' ;
  +
  +eventParameter
  +  : typeName IndexedKeyword? identifier? ;
  +
  +functionTypeParameterList
  +  : '(' ( functionTypeParameter (',' functionTypeParameter)* )? ')' ;
  +
  +functionTypeParameter
     : typeName storageLocation? ;
   
   variableDeclaration
  
positive.code:     | PublicKeyword | InternalKeyword | PrivateKeyword )* ;
  
  eventDefinition
    : 'event' identifier indexedParameterList AnonymousKeyword? ';' ;
  
  enumValue
    : identifier ;
  
negative.code:   : 'mapping' '(' elementaryTypeName '=>' typeName ')' ;
  
  functionTypeName
    : 'function' functionTypeParameterList
      ( InternalKeyword | ExternalKeyword | stateMutability )*
      ( 'returns' functionTypeParameterList )? ;
  
  storageLocation
    : 'memory' | 'storage' ;
  