anchor.diff:  
   // GRAMMAR OF A GENERIC PARAMETER CLAUSE
   
  -generic_parameter_clause : '<' generic_parameter_list requirement_clause? '>'  ;
  -generic_parameter_list : generic_parameter (',' generic_parameter)*  ;
  +generic_parameter_clause : '<' generic_parameter_list '>' ;
  +generic_parameter_list : generic_parameter (',' generic_parameter)* ;
   generic_parameter
    : type_name
    | type_name ':' type_identifier
    | type_name ':' protocol_composition_type
    ;
   
  -requirement_clause : 'where' requirement_list  ;
  -requirement_list : requirement | requirement ',' requirement_list  ;
  -requirement : conformance_requirement | same_type_requirement  ;
  -
  -conformance_requirement : type_identifier ':' type_identifier | type_identifier ':' protocol_composition_type  ;
  -same_type_requirement : type_identifier same_type_equals type  ;
  +generic_where_clause : 'where' requirement_list ;
  +requirement_list : requirement | requirement ',' requirement_list ;
  +requirement : conformance_requirement | same_type_requirement ;
  +
  +conformance_requirement
  + : type_identifier ':' type_identifier
  + | type_identifier ':' protocol_composition_type
  + ;
  +same_type_requirement : type_identifier same_type_equals type ;
   
   // GRAMMAR OF A GENERIC ARGUMENT CLAUSE
   
  -generic_argument_clause : '<' generic_argument_list '>'  ;
  +generic_argument_clause : '<' generic_argument_list '>' ;
   generic_argument_list : generic_argument (',' generic_argument)* ;
   generic_argument : type ;
   
  
positive.code:  | protocol_initializer_declaration
   | protocol_subscript_declaration
   | protocol_associated_type_declaration
   | type_alias_declaration
   ;
  
  // GRAMMAR OF A PROTOCOL PROPERTY DECLARATION
  
negative.code:  | subscript_head subscript_result getter_setter_keyword_block
   ;
  
  subscript_head : attributes? declaration_modifiers? 'subscript' parameter_clause ;
  subscript_result : arrow_operator attributes? type ;
  
  // GRAMMAR OF AN OPERATOR DECLARATION
  
  operator_declaration : prefix_operator_declaration | postfix_operator_declaration | infix_operator_declaration  ;
  
  prefix_operator_declaration : 'prefix' 'operator' operator ;
  postfix_operator_declaration : 'postfix' 'operator' operator ;
  infix_operator_declaration : 'infix' 'operator' operator infix_operator_group? ;
  
  infix_operator_group : precedence_group_name ;
  
  // GRAMMAR OF A PRECEDENCE GROUP DECLARATION
  
  precedence_group_declaration : 'precedencegroup' precedence_group_name '{' precedence_group_attributes? '}' ;
  
  precedence_group_attributes : precedence_group_attribute precedence_group_attributes? ;
  precedence_group_attribute
   : precedence_group_relation
   | precedence_group_assignment
   | precedence_group_associativity
   ;
  
  precedence_group_relation
   : 'higherThan' ':' precedence_group_names
   | 'lowerThan' ':' precedence_group_names
   ;
  
  precedence_group_assignment : 'assignment' ':' boolean_literal ;
  
  precedence_group_associativity
   : 'associativity' ':' 'left'
   | 'associativity' ':' 'right'
   | 'associativity' ':' 'none'
   ;
  
  precedence_group_names : precedence_group_name | precedence_group_name ',' precedence_group_names ;
  precedence_group_name : identifier ;
  
  // GRAMMAR OF A DECLARATION MODIFIER
  
  declaration_modifier
   : 'class' | 'convenience' | 'dynamic' | 'final' | 'infix' | 'lazy' | 'optional' | 'override' | 'postfix' | 'prefix' | 'required' | 'static' | 'unowned' | 'unowned' '(' 'safe' ')' | 'unowned' '(' 'unsafe' ')' | 'weak'
   | access_level_modifier
   | mutation_modifier
   ;
  declaration_modifiers : declaration_modifier declaration_modifiers? ;
  
  access_level_modifier
   : 'internal' | 'internal' '(' 'set' ')'
   | 'private' | 'private' '(' 'set' ')'
   | 'fileprivate' | 'fileprivate' '(' 'set' ')'
   | 'public' | 'public' '(' 'set' ')'
   | 'open' | 'open' '(' 'set' ')'
   ;
  
  mutation_modifier
   : 'mutating'
   | 'nonmutating'
   ;
  
  // Patterns
  