anchor.diff:            {_Name, Value} = A <- Attributes,
             test_node(NodeTest, A, Context)];
   axis('namespace', _Test, _Ctx) ->
  -    error({not_implemented, "namespace axis"});
  +    erlang:error({not_implemented, "namespace axis"});
   axis('ancestor_or_self', _Test, _Ctx) ->
  -    error({not_implemented, "ancestor-or-self axis"}).
  +    erlang:error({not_implemented, "ancestor-or-self axis"}).
   
   
   descendant_or_self(Nodes, NodeTest, Acc, Ctx) ->
  
positive.code:                end,
            test_node(NodeTest, N, Context)];
  axis('following', _Test, _Ctx) ->
      error({not_implemented, "following axis"});
  axis('preceeding', _Test, _Ctx) ->
      error({not_implemented, "preceeding axis"});
  
  axis('attribute', NodeTest, #ctx{ctx=Context}) ->
      %% Flat list of *attribute values* of Context, that pass NodeTest
  
negative.code: eval_path(rel, Path, Ctx) ->
      do_path_expr(Path, Ctx);
  eval_path(filter, {_PathExpr, {pred, _Pred}}, _C) ->
      erlang:error({not_implemented, "filter"}).      % Who needs them?
  
  
  eval_primary_expr({comp,Comp,A,B},Ctx) ->
  