On Mon, May 27, 2013 at 2:45 PM, Chris Muller <ma.chris.m@gmail.com> wrote:
 
 Colin, may we please not be at odds here?  I'm on your side.

I'm sorry, I didn't mean for that post to be so confrontational. I misread your post as shifting the goal-posts so that FileSystem wouldn't be acceptable unless it performs like your tuned-for-Banyan additions to FileDirectory. 

There's certainly room to optimize the tree-walking code in Filesystem, so we may be able to meet your needs that way. 

On the other hand, there are layers of indirection in Filesystem that aren't present in FileDirectory. Filesystem works with many kinds of directory trees—on disk, in-memory, inside a zip file, inside a git repository etc. It also has whole-tree operations that need to be able to customize the tree walking algorithm. For example, copying a tree needs to visit directories before their contents, while deleting a tree needs to visit directories after their contents. So from the point of view of Filesystem, #directoryTreeDo: is *not* a very general operation, it's quite specific, and tuned for a particular use-case. It may not be possible to optimize Filesystem's tree-walking code to the same level of memory efficiency without sacrificing generality. 

But that's not a show-stopper! We could make a method like #directoryTreeDo: just for Banyan, or Banyan could keep on using FileDirectory. It's not like FileDirectory would be removed in 4.5, and even when it finally does get removed, it would still be available as a compatibility package. 

Again, my apologies for the over-reaction.

Colin