anchor.diff:          [r, a, b]
       ],
       Expected = lists:reverse(Actual).
  +
  +filter_iterator_all_test() ->
  +    Root = build_test_tree(),
  +    Filter = [r, a, all],
  +    {FilterIt, FilterAcc} = create_filter_iterator(Filter),
  +    {[], [], Filter, Actual} = iterate(FilterIt, FilterAcc, r, Root),
  +    Expected = [
  +        [r, a, b],
  +        [r, a, d],
  +        [r, a, d, e]
  +    ],
  +    Expected = lists:reverse(Actual).
  +
  
positive.code:         _ -> {fun ehome_vtree:noop_iterator/2, Acc}
      end.
  
  -spec create_filter_iterator([any | any()]) ->
      {IteratorFun :: iterator(), IteratorAcc :: any()}.
  create_filter_iterator(Filter) ->
      {
  
negative.code:                       Name -> [lists:reverse(NextPath)|Results];
                        _ -> Results
                    end,
      {fun noop_iterator/2,
          {NextPath, [FHead|PrevFilters], [], NextResults}};
  apply_filter(Name, {CurPath, PrevFilters, [FHead|FRest], Results}) ->
      Acc = {[Name|CurPath], [FHead|PrevFilters], FRest, Results},
  