anchor.diff:      | modifiers? 'set' NL* '(' (annotation | parameterModifier)* setterParameter ')' (NL* ':' NL* type)? NL* functionBody
       ;
   
  -typeAlias
  -    : modifiers? 'typealias' NL* simpleIdentifier (NL* typeParameters)? NL* '=' NL* type
  -    ;
  -
  -typeParameters
  -    : '<' NL* typeParameter (NL* ',' NL* typeParameter)* NL* '>'
  -    ;
  -
  -typeParameter
  -    : typeParameterModifiers? NL* simpleIdentifier (NL* ':' NL* type)?
  -    ;
  -
  -typeParameterModifiers
  -    : typeParameterModifier+
  -    ;
  -
  -typeParameterModifier
  -    : reificationModifier NL*
  -    | varianceModifier NL*
  -    | annotation
  -    ;
  +setterParameter
  +    : simpleIdentifier NL* (':' NL* type)?
  +    ;
  +
  +parameter
  +    : simpleIdentifier NL* ':' NL* type
  +    ;
  +
  +objectDeclaration
  +    : modifiers? 'object'
  +    NL* simpleIdentifier
  +    (NL* ':' NL* delegationSpecifiers)?
  +    (NL* classBody)?
  +    ;
  +
  +secondaryConstructor
  +    : modifiers? 'constructor' NL* functionValueParameters (NL* ':' NL* constructorDelegationCall)? NL* block?
  +    ;
  +
  +constructorDelegationCall
  +    : 'this' NL* valueArguments
  +    | 'super' NL* valueArguments
  +    ;
  +
  +// SECTION: enumClasses
  +
  +enumClassBody
  +    : '{' NL* enumEntries? (NL* ';' NL* classMemberDeclarations)? NL* '}'
  +    ;
  +
  +enumEntries
  +    : enumEntry (NL* ',' NL* enumEntry)* NL* ','?
  +    ;
  +
  +enumEntry
  +    : (modifiers NL*)? simpleIdentifier (NL* valueArguments)? (NL* classBody)?
  +    ;
  +
  +// SECTION: types
   
   type
       : typeModifiers?
  
positive.code:     ;
  
  catchBlock
      : 'catch' NL* '(' annotation* simpleIdentifier ':' userType ')' NL* block
      ;
  
  finallyBlock
      : 'finally' NL* block
      ;
  
  loopStatement
      : forStatement
      | whileStatement
      | doWhileStatement
      ;
  
  forStatement
      : 'for' NL* '(' annotation* (variableDeclaration | multiVariableDeclaration) 'in' expression ')' NL* controlStructureBody?
      ;
  
  whileStatement
      : 'while' NL* '(' expression ')' NL* controlStructureBody
      | 'while' NL* '(' expression ')' NL* ';'
      ;
  
  doWhileStatement
      : 'do' NL* controlStructureBody? NL* 'while' NL* '(' expression ')'
      ;
  
  jumpExpression
  
negative.code:     : annotation* label? NL* lambdaLiteral
      ;
  
  typeArguments
      : '<' NL* typeProjection (NL* ',' NL* typeProjection)* NL* '>'
      ;
  
  valueArguments
      : '(' NL* ')'
      | '(' NL* valueArgument (NL* ',' NL* valueArgument)* NL* ')'
      ;
  
  valueArgument
      : annotation? NL* (simpleIdentifier NL* '=' NL*)? '*'? NL* expression
      ;
  
  primaryExpression
      : parenthesizedExpression
      | simpleIdentifier
      | literalConstant
      | stringLiteral
      | callableReference
      | functionLiteral
      | objectLiteral
  