)
  if container then
    container = self.members[container]
    if container and container.search then
      return container:search(newpath)
    end
  else
    return self.members[path]
  end
end


ContainedContainer = oo.class({}, Contained, Container)
function ContainedContainer:__init(object)
  Contained:__init(object)
  Container:__init(object)
  return oo.rawnew(self, object)
end


Root = Container{}
Folder = ContainedContainer{
  container = Root,
  name = "my_folder",
}
File = Contained{
  contain