anchor.diff:   | protocol_initializer_declaration
    | protocol_subscript_declaration
    | protocol_associated_type_declaration
  - | type_alias_declaration
  + | typealias_declaration
    ;
   
   // GRAMMAR OF A PROTOCOL PROPERTY DECLARATION
  
positive.code: 
  // GRAMMAR OF A GENERIC PARAMETER CLAUSE
  
  generic_parameter_clause : '<' generic_parameter_list requirement_clause? '>'  ;
  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  ;
  
  // GRAMMAR OF A GENERIC ARGUMENT CLAUSE
  
  generic_argument_clause : '<' generic_argument_list '>'  ;
  generic_argument_list : generic_argument (',' generic_argument)* ;
  generic_argument : type ;
  
  
negative.code: 
  // GRAMMAR OF AN ATTRIBUTE
  
  attribute : '@' attribute_name attribute_argument_clause? ;
  attribute_name : identifier  ;
  attribute_argument_clause : '('  balanced_tokens?  ')'  ;
  attributes : attribute+ ;
  
  balanced_tokens : balanced_token+ ;
  balanced_token
   : '('  balanced_tokens? ')'
   | '[' balanced_tokens? ']'
   | '{' balanced_tokens? '}'
   | identifier | context_sensitive_keyword | literal | operator
   // TODO: | Any punctuation except ( ,  ')' , '[' , ']' , { , or }
   ;
  
  // Expressions
  