code: func decodeChild(data []byte) (noder.Noder, error) {
  	clean := bytes.TrimSpace(data)
  	if len(data) < 3 {
  		return nil, fmt.Errorf("element too short: %s", clean)
  	}
  
  	fileNameEnd := bytes.IndexRune(data, fileStartMark)
  	dirNameEnd := bytes.IndexRune(data, dirStartMark)
  	switch {
  	case fileNameEnd == -1 && dirNameEnd == -1:
  		return nil, fmt.Errorf(
  			"malformed child, no file or dir start mark found")
  	case fileNameEnd == -1:
  		return decodeDir(clean, nonRoot)
  	case dirNameEnd == -1:
  		return decodeFile(clean)
  	case dirNameEnd < fileNameEnd:
  		return decodeDir(clean, nonRoot)
  	case dirNameEnd > fileNameEnd:
  		return decodeFile(clean)
  	}
  
  	return nil, fmt.Errorf("unreachable")
  }
docs: // A child can be a file or a dir.