anchor.diff:  unionStyleEnumCase : enumCaseName tupleType? ;
   enumName : identifier  ;
   enumCaseName : identifier  ;
  -rawValueStyleEnum : enumName genericParameterClause? ':' typeIdentifier '{' rawValueStyleEnumMembers?'}'  ;
  +rawValueStyleEnum : enumName genericParameterClause? typeInheritanceClause? '{' rawValueStyleEnumMembers?'}'  ;
   rawValueStyleEnumMembers : rawValueStyleEnumMember rawValueStyleEnumMembers? ;
   rawValueStyleEnumMember : declaration | rawValueStyleEnumCaseClause  ;
   rawValueStyleEnumCaseClause : attributes? 'case' rawValueStyleEnumCaseList  ;
   rawValueStyleEnumCaseList : rawValueStyleEnumCase | rawValueStyleEnumCase ',' rawValueStyleEnumCaseList  ;
   rawValueStyleEnumCase : enumCaseName rawValueAssignment? ;
  -rawValueAssignment : AssignmentOperator literal  ;
  +rawValueAssignment : '=' literal  ;
   
   // GRAMMAR OF A STRUCTURE DECLARATION
   
  -structDeclaration : attributes? 'struct' structName genericParameterClause? typeInheritanceClause? structBody  ;
  +structDeclaration : attributes? accessLevelModifier? 'struct' structName genericParameterClause? typeInheritanceClause? structBody  ;
   structName : identifier  ;
   structBody : '{' declarations?'}'  ;
   
   // GRAMMAR OF A CLASS DECLARATION
   
  -classDeclaration : attributes? 'class' className genericParameterClause? typeInheritanceClause? classBody  ;
  +classDeclaration : attributes? accessLevelModifier? 'class' className genericParameterClause? typeInheritanceClause? classBody  ;
   className : identifier ;
   classBody : '{' declarations? '}'  ;
   
   // GRAMMAR OF A PROTOCOL DECLARATION
   
  -protocolDeclaration : attributes? 'protocol' protocolName typeInheritanceClause? protocolBody  ;
  +protocolDeclaration : attributes? accessLevelModifier? 'protocol' protocolName typeInheritanceClause? protocolBody  ;
   protocolName : identifier  ;
   protocolBody : '{' protocolMemberDeclarations?'}'  ;
   protocolMemberDeclaration : protocolPropertyDeclaration ';'?
  
positive.code: fragment FloatingPointP : [pP] ;
  fragment Sign : [+\-] ;
  
  // GRAMMAR OF A STRING LITERAL
  
  StringLiteral : '"' QuotedText? '"' ;
  
negative.code: 
  returnStatement : 'return' expression? ;
  
  // GRAMMAR OF A THROW STATEMENT
  
  throwStatement : 'throw' expression ;
  
  // GRAMMAR OF A DEFER STATEMENT
  
  deferStatement: 'defer' codeBlock ;
  
  // GRAMMAR OF A DO STATEMENT
  
  doStatement: 'do' codeBlock catchClauses? ;
  catchClauses: catchClause catchClauses? ;
  catchClause: 'catch' pattern? whereClause? codeBlock ;
  
  // GRAMMAR FOR CONDITION CLAUSES
  
  conditionClause : expression
   | expression ',' conditionList
   | conditionList
   | availabilityCondition ',' expression
   ;
  
  conditionList : condition | condition ',' conditionList ;
  condition: availabilityCondition | caseCondition | optionalBindingCondition ;
  caseCondition: 'case' pattern initializer whereClause? ;
  optionalBindingCondition: optionalBindingHead optionalBindingContinuationList? whereClause? ;
  optionalBindingHead: 'let' pattern initializer | 'var' pattern initializer ;
  optionalBindingContinuationList: optionalBindingContinuation (',' optionalBindingContinuationList)? ;
  optionalBindingContinuation: pattern initializer | optionalBindingHead ;
  
  whereClause: 'where' whereExpression ;
  whereExpression: expression ;
  
  // GRAMMAR OF AN AVAILABILITY CONDITION
  
  availabilityCondition: '#available' '(' availabilityArguments ')' ;
  availabilityArguments: availabilityArgument (',' availabilityArguments)? ;
  availabilityArgument: platformName platformVersion | '*' ; // Not sure what * meant in the Swift Language Reference
  platformName: 'iOS' | 'iOSApplicationExtension' | 'OSX' | 'OSXApplicationExtension­' | 'watchOS' ;
  platformVersion: VersionLiteral | DecimalLiteral | FloatingPointLiteral ; // TODO: Find a way to make this only VersionLiteral
  
  // Generic Parameters and Arguments
  
  // GRAMMAR OF A GENERIC PARAMETER CLAUSE
  
  genericParameterClause : '<' genericParameterList requirementClause? '>'  ;
  genericParameterList : genericParameter | genericParameter ',' genericParameterList  ;
  genericParameter : typeName | typeName ':' typeIdentifier | typeName ':' protocolCompositionType  ;
  requirementClause : 'where' requirementList  ;
  requirementList : requirement | requirement ',' requirementList  ;
  requirement : conformanceRequirement | sameTypeRequirement  ;
  conformanceRequirement : typeIdentifier ':' typeIdentifier | typeIdentifier ':' protocolCompositionType  ;
  sameTypeRequirement : typeIdentifier '==' typeIdentifier  ;
  
  // GRAMMAR OF A GENERIC ARGUMENT CLAUSE
  
  genericArgumentClause : '<' genericArgumentList '>'  ;
  genericArgumentList : genericArgument (',' genericArgument)* ;
  genericArgument : sType  ;
  
  