anchor.diff:      ;
   
   setOrMapLiteral
  -    : CONST? typeArguments? LBRACE elements? RBRACE
  +    :    CONST? typeArguments? LBRACE elements? RBRACE
       ;
   
   listLiteral
  -    : CONST? typeArguments? '[' elements? ']'
  +    :    CONST? typeArguments? '[' elements? ']'
  +    ;
  +
  +recordLiteral
  +    :    CONST? recordLiteralNoConst
  +    ;
  +
  +recordLiteralNoConst
  +    :    '(' expression ',' ')'
  +    |    '(' label expression ','? ')'
  +    |    '(' recordField ',' recordField (',' recordField)* ','? ')'
  +    ;
  +
  +recordField
  +    :    label? expression
       ;
   
   elements
  
positive.code: // BSD-style license that can be found in the LICENSE file.
  
  // CHANGES:
  //
  // v0.18 Add support for enhanced `enum` declarations.
  //
  
negative.code: 
  typeList
      :    type (',' type)*
      ;
  
  recordType
      :    '(' recordTypeFields ',' recordTypeNamedFields ')'
      |    '(' recordTypeFields ','? ')'
      |    '(' recordTypeNamedFields? ')'
      ;
  
  recordTypeFields
      :    recordTypeField (',' recordTypeField)*
      ;
  
  recordTypeField
      :    metadata type identifier?
      ;
  
  recordTypeNamedFields
      :    LBRACE recordTypeNamedField (',' recordTypeNamedField)* ','? RBRACE
      ;
  
  recordTypeNamedField
      :    metadata typedIdentifier
      ;
  
  typeNotVoidNotFunctionList
  