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: eval_path(rel, Path, Ctx) ->
      do_path_expr(Path, Ctx);
  eval_path(filter, {_PathExpr, {pred, _Pred}}, _C) ->
      error({not_implemented, "filter"}).      % Who needs them?
  
  
  eval_primary_expr({comp,Comp,A,B},Ctx) ->
  
negative.code:                   ParentNode = get_node_at(Root, ParentPosition),
                    maybe_add_node(ParentNode, NodeTest, Acc, Context);
               (Smth, _Acc) ->
                    erlang:error({not_implemented, "parent for non-nodes", Smth})
          end, [], Context),
      ordsets:to_list(ordsets:from_list(lists:reverse(L)));
  axis('ancestor', _Test, _Ctx) ->
      erlang:error({not_implemented, "ancestor axis"});
  
  axis('following_sibling', NodeTest, #ctx{root=Root, ctx=Context}) ->
      %% TODO: alerts for non-elements (like for `text()/parent::`)
  