code: func (b Box) Walk(wf WalkFunc) error {
  	if data[b.Path] == nil {
  		base, err := filepath.EvalSymlinks(filepath.Join(b.callingDir, b.Path))
  		if err != nil {
  			return err
  		}
  		return filepath.Walk(base, func(path string, info os.FileInfo, err error) error {
  			cleanName, err := filepath.Rel(base, path)
  			if err != nil {
  				cleanName = strings.TrimPrefix(path, base)
  			}
  			cleanName = filepath.ToSlash(filepath.Clean(cleanName))
  			cleanName = strings.TrimPrefix(cleanName, "/")
  			cleanName = filepath.FromSlash(cleanName)
  			if info == nil || info.IsDir() {
  				return nil
  			}
  
  			file, err := fileFor(path, cleanName)
  			if err != nil {
  				return err
  			}
  			return wf(cleanName, file)
  		})
  	}
  	for n := range data[b.Path] {
  		f, err := b.find(n)
  		if err != nil {
  			return err
  		}
  		err = wf(n, f)
  		if err != nil {
  			return err
  		}
  	}
  	return nil
  }
docs: // Walk will traverse the box and call the WalkFunc for each file in the box/folder.