anchor.diff:  directives:  directive+;
   
   directive:
  -	'@' NAME ':' valueOrVariable
  -	| '@' NAME
  -	| '@' NAME '(' argument ')';
  +	'@' NAME arguments?;
   
   typeCondition: typeName;
   
  -variableDefinitions:
  -	'(' variableDefinition (',' variableDefinition)* ')';
  +variableDefinitions: '(' variableDefinition+ ')';
   
   variableDefinition: variable ':' type_ defaultValue?;
   
  
positive.code: 
  ID: STRING;
  
  
  fragment ESC: '\\' ( ["\\/bfnrt] | UNICODE);
  
  fragment UNICODE: 'u' HEX HEX HEX HEX;
  
negative.code: 
  defaultValue: '=' value;
  
  value:
  	 variable           # variableValue
  	| NUMBER	        # numberValue
  	| String_	        # stringValue
  	| BooleanLiteral	# booleanValue
  	| 'null'            # nullValue
  	| enumValue         # constValue
  	| array		        # arrayValue
  	| object            # objectValue
     ;
  
  object: '{' '}'
      | '{' objectField '}'
      ;
  
  objectField: NAME ':' value;
  
  BooleanLiteral
  	:	'true'
  	|	'false'
  	;
  
  type_: typeName nonNull? | listType nonNull?;
  
  typeName: NAME;
  
  listType: '[' type_ ']';
  
  nonNull: '!';
  
  array: '[' value+ ']'
      | '[' ']'
      ;
  
  NAME: [_A-Za-z] [_0-9A-Za-z]*;
  
  