> Personally I don't think that the client code is any "harder" (in particular if the class itself implements Iterable), but I guess that's a matter of taste. Regarding the object creation I agree, but I don't think that's really a problem, unless you create maybe millions of hierarchy objects.

Always hard to make performance predictions w/o actually testing it. But, in general I agree that it mainly a matter of taste. I find static methods are in many cases the most thankful ones one can use. 

> That said, I've created #230 which makes it a static helper class again. I guess I can live with this as well, and if the the hierarchy class itself should not implement Iterable (which you seemed to dislike), then indeed the instance based approach seems less attractive to me.

thanks. note, I probably had a bigger issue with the API than with the fact that we create instances. The combination of the class itself being _Iterable_ and _filter_ returning a list seemed non intuitive to me.