code: func (b *Box) Walk(wf WalkFunc) error {
  	m := map[string]file.File{}
  
  	dr := b.DefaultResolver
  	if dr == nil {
  		cd := resolver.OsPath(b.ResolutionDir)
  		dr = &resolver.Disk{Root: cd}
  	}
  	if fm, ok := dr.(file.FileMappable); ok {
  		for n, f := range fm.FileMap() {
  			m[n] = f
  		}
  	}
  	var err error
  	b.resolvers.Range(func(n string, r resolver.Resolver) bool {
  		var f file.File
  		f, err = r.Resolve("", n)
  		if err != nil {
  			return false
  		}
  		keep := true
  		for k := range m {
  			if strings.EqualFold(k, n) {
  				keep = false
  			}
  		}
  		if keep {
  			m[n] = f
  		}
  		return true
  	})
  	if err != nil {
  		return err
  	}
  
  	var keys = make([]string, 0, len(m))
  	for k := range m {
  		keys = append(keys, k)
  	}
  	sort.Strings(keys)
  
  	for _, k := range keys {
  		osPath := resolver.OsPath(k)
  		plog.Debug(b, "Walk", "path", k, "osPath", osPath)
  		if err := wf(osPath, m[k]); err != nil {
  			return err
  		}
  	}
  	return nil
  }
docs: // Walk will traverse the box and call the WalkFunc for each file in the box/folder.