code: def walk(self, func, arg):
          
          entries = self.entries
          names = list(entries.keys())
          names.remove('.')
          names.remove('..')
          func(arg, self, names)
          for dirname in [n for n in names if isinstance(entries[n], Dir)]:
              entries[dirname].walk(func, arg)
docs: Walk this directory tree by calling the specified function
          for each directory in the tree.
  
          This behaves like the os.path.walk() function, but for in-memory
          Node.FS.Dir objects.  The function takes the same arguments as
          the functions passed to os.path.walk():
  
                  func(arg, dirname, fnames)
  
          Except that "dirname" will actually be the directory *Node*,
          not the string.  The '.' and '..' entries are excluded from
          fnames.  The fnames list may be modified in-place to filter the
          subdirectories visited or otherwise impose a specific order.
          The "arg" argument is always passed to func() and may be used
          in any way (or ignored, passing None is common).