code: func glob(fs http.FileSystem, dir, pattern string, matches []string) (m []string, e error) {
  	m = matches
  	fi, err := vfsutil.Stat(fs, dir)
  	if err != nil {
  		return
  	}
  	if !fi.IsDir() {
  		return
  	}
  	fis, err := vfsutil.ReadDir(fs, dir)
  	if err != nil {
  		return
  	}
  
  	sort.Sort(byName(fis))
  
  	for _, fi := range fis {
  		n := fi.Name()
  		matched, err := path.Match(path.Clean(pattern), n)
  		if err != nil {
  			return m, err
  		}
  		if matched {
  			m = append(m, path.Join(dir, n))
  		}
  	}
  	return
  }
docs: // glob searches for files matching pattern in the directory dir
  // and appends them to matches. If the directory cannot be
  // opened, it returns the existing matches. New matches are
  // added in lexicographical order.