code: func newDirectoryEntry(fetcher blob.Fetcher, ss *superset) (DirectoryEntry, error) {
  	if ss == nil {
  		return nil, errors.New("ss was nil")
  	}
  	if !ss.BlobRef.Valid() {
  		return nil, errors.New("ss.BlobRef was invalid")
  	}
  	switch ss.Type {
  	case "file", "directory", "symlink", "fifo", "socket":
  		// Okay
  	default:
  		return nil, fmt.Errorf("invalid DirectoryEntry camliType of %q", ss.Type)
  	}
  	de := &dirEntry{ss: *ss, fetcher: fetcher} // defensive copy
  	return de, nil
  }
docs: // newDirectoryEntry takes a superset and returns a DirectoryEntry if
  // the Supserset is valid and represents an entry in a directory.  It
  // must by of type "file", "directory", "symlink" or "socket".
  // TODO: "char", block", probably.  later.