anchor.diff:      ;
       
   pathMod
  -    : ASTERISK 
  -    | QUESTION_MARK 
  -    | PLUS 
  -    | OPEN_CURLY_BRACE ( INTEGER ( COMMA ( CLOSE_CURLY_BRACE | INTEGER CLOSE_CURLY_BRACE ) | CLOSE_CURLY_BRACE ) | COMMA INTEGER CLOSE_CURLY_BRACE ) 
  +    : ( ASTERISK | QUESTION_MARK | PLUS | OPEN_CURLY_BRACE ( INTEGER ( COMMA ( CLOSE_CURLY_BRACE | INTEGER CLOSE_CURLY_BRACE ) | CLOSE_CURLY_BRACE ) | COMMA INTEGER CLOSE_CURLY_BRACE ) )
       ;
   
   pathPrimary
  -    : iriRef 
  -    | A 
  -    | NEGATION pathNegatedPropertySet 
  -    | OPEN_BRACE! path CLOSE_BRACE!
  +    : ( iriRef | A | NEGATION pathNegatedPropertySet | OPEN_BRACE path CLOSE_BRACE )
       ;
   
   pathNegatedPropertySet
  
positive.code:     ;
      
  groupGraphPatternSub
      : triplesBlock? (graphPatternNotTriples DOT? triplesBlock?)* -> triplesBlock? (graphPatternNotTriples triplesBlock?)*
      ; 	
  
  triplesBlock
  
negative.code: 
  triplesSameSubjectPath
      : varOrTerm propertyListNotEmptyPath[(CommonTree) $varOrTerm.tree] -> ^(TRIPLE propertyListNotEmptyPath)
      | triplesNode propertyListNotEmpty[(CommonTree) $triplesNode.tree]? -> ^(TRIPLE triplesNode* propertyListNotEmpty*)
      ;
    
  propertyListNotEmptyPath[CommonTree subject]
  