code: func copy(src, dest string, info os.FileInfo) error {
  	if info.Mode()&os.ModeSymlink != 0 {
  		return lcopy(src, dest, info)
  	}
  	if info.IsDir() {
  		return dcopy(src, dest, info)
  	}
  	return fcopy(src, dest, info)
  }
docs: // copy dispatches copy-funcs according to the mode.
  // Because this "copy" could be called recursively,
  // "info" MUST be given here, NOT nil.