anchor.diff:  ;
   
   interfaceMember
  +    : partialInterfaceMember
  +    | constructor
  +;
  +
  +partialInterfaceMembers
  +    : extendedAttributeList partialInterfaceMember partialInterfaceMembers
  +    | /* empty */
  +;
  +
  +partialInterfaceMember
   	: const_
   	| operation
  -	| serializer
   	| stringifier
   	| staticMember
   	| iterable
  +	| asyncIterable
   	| readonlyMember
   	| readWriteAttribute
   	| readWriteMaplike
   	| readWriteSetlike
  -;
  -
  -dictionary
  -	: 'dictionary' IDENTIFIER_WEBIDL inheritance '{' dictionaryMembers '}' ';'
  -;
  -
  -dictionaryMembers
  -	: extendedAttributeList dictionaryMember dictionaryMembers
  -	| /* empty */
  -;
  -
  -dictionaryMember
  -	: required_ type_ IDENTIFIER_WEBIDL default_ ';'
  -;
  -
  -required_
  -	: 'required'
  -	| /* empty */
  -;
  -
  -partialDictionary
  -	: 'dictionary' IDENTIFIER_WEBIDL '{' dictionaryMembers '}' ';'
  -;
  -
  -default_
  -	: '=' defaultValue
  -	| /* empty */
  +	| inheritAttribute
  +;
  +
  +inheritance
  +	: ':' IDENTIFIER_WEBIDL
  +	| /* empty */
  +;
  +
  +mixinRest
  +    : 'mixin' IDENTIFIER_WEBIDL '{' mixinMembers '}' ';'
  +;
  +
  +mixinMembers
  +    : extendedAttributeList mixinMember mixinMembers
  +    | /* empty */
  +;
  +
  +mixinMember
  +    : const_
  +    | regularOperation
  +    | stringifier
  +    | optionalReadOnly attributeRest
  +;
  +
  +includesStatement
  +	: IDENTIFIER_WEBIDL 'includes' IDENTIFIER_WEBIDL ';'
  +;
  +
  +callbackRestOrInterface
  +	: callbackRest
  +	| 'interface' IDENTIFIER_WEBIDL '{' callbackInterfaceMembers '}' ';'
  +;
  +
  +callbackInterfaceMembers
  +    : extendedAttributeList callbackInterfaceMember callbackInterfaceMembers
  +    | /* empty */
  +;
  +
  +callbackInterfaceMember
  +    : const_
  +    | regularOperation
  +;
  +
  +const_
  +	: 'const' constType IDENTIFIER_WEBIDL '=' constValue ';'
  +;
  +
  +constValue
  +	: booleanLiteral
  +	| floatLiteral
  +	| INTEGER_WEBIDL
  +	| 'null'    //TODO: webidl grammar doesn't include null in constValue, but
  +	            // the docs seem to imply that its valid
  +;
  +
  +booleanLiteral
  +	: 'true'
  +	| 'false'
  +;
  +
  +floatLiteral
  +	: DECIMAL_WEBIDL
  +	| '-Infinity'
  +	| 'Infinity'
  +	| 'NaN'
  +;
  +
  +constType
  +	: primitiveType
  +	| IDENTIFIER_WEBIDL
  +;
  +
  +readonlyMember
  +	: 'readonly' readonlyMemberRest
  +;
  +
  +readonlyMemberRest
  +	: attributeRest
  +	| maplikeRest
  +	| setlikeRest
  +;
  +
  +readWriteAttribute
  +	: attributeRest
  +;
  +
  +inheritAttribute
  +    : 'inherit' attributeRest
  +;
  +
  +attributeRest
  +	: 'attribute' typeWithExtendedAttributes attributeName ';'
  +;
  +
  +attributeName
  +	: attributeNameKeyword
  +	| IDENTIFIER_WEBIDL
  +;
  +
  +attributeNameKeyword
  +	: 'async'
  +	| 'required'
  +;
  +
  +optionalReadOnly
  +    : 'readonly'
  +    | /* empty */
   ;
   
   defaultValue
   	: constValue
   	| STRING_WEBIDL
   	| '[' ']'
  -;
  -
  -inheritance
  -	: ':' IDENTIFIER_WEBIDL
  -	| /* empty */
  -;
  -
  -extension_
  -    : 'extends' IDENTIFIER_WEBIDL
  -    | /* empty */
  -;
  -
  -enum_
  -	: 'enum' IDENTIFIER_WEBIDL '{' enumValueList '}' ';'
  -;
  -
  -enumValueList
  -	: STRING_WEBIDL enumValueListComma
  -;
  -
  -enumValueListComma
  -	: ',' enumValueListString
  -	| /* empty */
  -;
  -
  -enumValueListString
  -	: STRING_WEBIDL enumValueListComma
  -	| /* empty */
  -;
  -
  -callbackRest
  -	: IDENTIFIER_WEBIDL '=' returnType '(' argumentList ')' ';'
  -;
  -
  -typedef_
  -	: 'typedef' type_ IDENTIFIER_WEBIDL ';'
  -;
  -
  -implementsStatement
  -	: IDENTIFIER_WEBIDL 'implements' IDENTIFIER_WEBIDL ';'
  -;
  -
  -const_
  -	: 'const' constType IDENTIFIER_WEBIDL '=' constValue ';'
  -;
  -
  -constValue
  -	: booleanLiteral
  -	| floatLiteral
  -	| INTEGER_WEBIDL
  +	| '{' '}'
   	| 'null'
   ;
   
  -booleanLiteral
  -	: 'true'
  -	| 'false'
  -;
  -
  -floatLiteral
  -	: FLOAT_WEBIDL
  -	| '-Infinity'
  -	| 'Infinity'
  -	| 'NaN'
  -;
  -
  -serializer
  -	: 'serializer' serializerRest
  -;
  -
  -serializerRest
  -	: operationRest
  -	| '=' serializationPattern ';'
  -	| ';'
  -;
  -
  -serializationPattern
  -	: '{' serializationPatternMap '}'
  -	| '[' serializationPatternList ']'
  -	| IDENTIFIER_WEBIDL
  -;
  -
  -serializationPatternMap
  -	: 'getter'
  -	| 'inherit' identifiers
  -	| IDENTIFIER_WEBIDL identifiers
  -	| /* empty */
  -;
  -
  -serializationPatternList
  -	: 'getter'
  -	| IDENTIFIER_WEBIDL identifiers
  -	| /* empty */
  -;
  -
  -stringifier
  -	: 'stringifier' stringifierRest
  -;
  -
  -stringifierRest
  -	: readOnly attributeRest
  -	| returnType operationRest
  -	| ';'
  -;
  -
  -staticMember
  -	: 'static' staticMemberRest
  -;
  -
  -staticMemberRest
  -	: readOnly attributeRest
  -	| returnType operationRest
  -;
  -
  -readonlyMember
  -	: 'readonly' readonlyMemberRest
  -;
  -
  -readonlyMemberRest
  -	: attributeRest
  -	| readWriteMaplike
  -	| readWriteSetlike
  -;
  -
  -readWriteAttribute
  -	: 'inherit' readOnly attributeRest
  -	| attributeRest
  -;
  -
  -attributeRest
  -	: 'attribute' type_ attributeName ';'
  -;
  -
  -attributeName
  -	: attributeNameKeyword
  -	| IDENTIFIER_WEBIDL
  -;
  -
  -attributeNameKeyword
  -	: 'required'
  -;
  -
  -inherit
  -	: 'inherit'
  -	| /* empty */
  -;
  -
  -readOnly
  -	: 'readonly'
  -	| /* empty */
  -;
  -
   operation
  -	: returnType operationRest
  +	: regularOperation
   	| specialOperation
   ;
   
  +regularOperation
  +    : type_ operationRest
  +;
  +
   specialOperation
  -	: special specials returnType operationRest
  -;
  -
  -specials
  -	: special specials
  -	| /* empty */
  +	: special regularOperation
   ;
   
   special
   	: 'getter'
   	| 'setter'
   	| 'deleter'
  -	| 'legacycaller'
   ;
   
   operationRest
  -	: optionalIdentifier '(' argumentList ')' ';'
  -;
  -
  -optionalIdentifier
  -	: IDENTIFIER_WEBIDL
  -	| /* empty */
  +	: optionalOperationName '(' argumentList ')' ';'
  +;
  +
  +optionalOperationName
  +	: operationName
  +	| /* empty */
  +;
  +
  +operationName
  +    : operationNameKeyword
  +    | IDENTIFIER_WEBIDL
  +;
  +
  +operationNameKeyword
  +    : 'includes'
   ;
   
   argumentList
  
positive.code:     http://heycam.github.io/webidl/
  
      Web IDL (Second Edition)
      W3C Editor's Draft 17 November 2015
   */
  grammar WebIDL;
  
  
negative.code: 	| 'octet'
  	| 'or'
  	| 'optional'
  	| 'record'
  	| 'sequence'
  	| 'short'
  	| 'symbol'
  	| 'true'
  	| 'unsigned'
  	| 'undefined'
  	| argumentNameKeyword
  	| bufferRelatedType
  ;
  
  otherOrComma
  