anchor.diff:          _ -> {fun ehome_vtree:noop_iterator/2, Acc}
       end.
   
  --spec create_filter_iterator([any | any()]) ->
  +-spec create_filter_iterator([all | any | any()]) ->
       {IteratorFun :: iterator(), IteratorAcc :: any()}.
   create_filter_iterator(Filter) ->
       {
  
positive.code:         [r, a, b]
      ],
      Expected = lists:reverse(Actual).
  
negative.code: noop_iterator(_, Acc) ->
      {undefined, Acc}.
  
  all_iterator({start, Name, _Value}, {CurPath, PrevFilters, [], Results}) ->
      io:format("name=~p~n", [Name]),
      NextPath = [Name|CurPath],
      NextResults = [lists:reverse(NextPath)|Results],
      {undefined, {NextPath, PrevFilters, [], NextResults}};
  all_iterator({stop, Name}, {[Name | CurPath], PrevFilters, FRest, Results}) ->
      {undefined, {CurPath, PrevFilters, FRest, Results}}.
  
  apply_filter(Name, {CurPath, PrevFilters, [all], Results}) ->
      NextPath = [Name|CurPath],
      NextResults = [lists:reverse(NextPath)|Results],
      {fun all_iterator/2, {NextPath, [all|PrevFilters], [], NextResults}};
  apply_filter(Name, {CurPath, PrevFilters, [FHead], Results}) ->
      NextPath = [Name|CurPath],
      NextResults = case FHead of
  