anchor.diff:  
   triplesSameSubjectPath
       : varOrTerm propertyListNotEmptyPath[(CommonTree) $varOrTerm.tree] -> ^(TRIPLE propertyListNotEmptyPath)
  -    | (t=triplesNode -> $t) (p=propertyListNotEmpty[(CommonTree) $triplesNode.tree]? -> ^(TRIPLE $triplesSameSubjectPath $p?))
  +    | (t=triplesNode -> $t) (p=propertyListNotEmpty[(CommonTree) $t.tree]? -> ^(TRIPLE $triplesSameSubjectPath $p?))
       ;
     
   propertyListNotEmptyPath[CommonTree subject]
  
positive.code: PROLOGUE;
  MODIFY;
  SUBSELECT;
  SELECTCLAUSE;
  WHERE_CLAUSE;
  VAR;
  GROUPBY;
  ORDERBY;
  ORDERCONDITION;
  BINDINGVALUE;
  TRIPLESTEMPLATE;
  GROUPGRAPHPATTERN;
  ARGLIST;
  EXPRESSIONLIST;
  CONSTRUCTTRIPLES;
  PROPERTYLIST;
  COLLECTION;
  TRIPLE;
  SUBJECT;
  PREDICATE;
  OBJECT;
  NOTEXISTS;
  FUNCTION;
  PATH_NEGATED;
  }
  
negative.code:     ;
      	
  selectClause
      : SELECT ( DISTINCT | REDUCED )? ASTERISK -> ^(SELECT_CLAUSE DISTINCT* REDUCED* ASTERISK)
      | SELECT ( DISTINCT | REDUCED )? (v+=selectVariables)+ -> ^(SELECT_CLAUSE DISTINCT* REDUCED* $v*)
      ;
  
  selectVariables
  