From: matt neuburg [mailto:matt / tidbits.com] 
> Why wouldn't you do this?
> 
> module TreeStuff
>   class Node
>   end
>   class Tree < Node
>   end
> end

Only because it's an annoying namespace level that the user would need
to either repeatedly specify or include. If I wrap all my own classes in
a Phrogz namespace, then the user needs to type:
  tree = Phrogz::TreeStuff::Tree.new
and that's a little ugly IMHO. If a class can serve as its own
namespace, I think that it makes sense, to let it do so.

I also prefer to place subordinate/helper classes inside the class that
they augment. To my way of thinking, it makes little sense to use a
TreeStuff::Node outside of the context of a TreeStuff::Tree. As such, I
would prefer to see that implicit dependency suggested by letting the
Tree wrap its big old arms around the Node and say "MINE!". 

But you raise a good point; that's certainly a good, simple way to
achieve the goal without spewing classes about willy-nilly.