private EntryInfo directoryEntry(Map<String, EntryInfo> map, @Nullable Logger logger, String normalizedName) {
    EntryInfo entry = map.get(normalizedName);
    if (entry == null || !entry.isDirectory) {
      if (logger != null && entry != null) logger.trace("duplicate entry: " + getFile() + "!/" + normalizedName);
      if (normalizedName.isEmpty()) {
        entry = createRootEntry();
      }
      else {
        Pair<String, String> path = split(normalizedName);
        EntryInfo parent = directoryEntry(map, logger, path.first);
        entry = new EntryInfo(path.second, true, DEFAULT_LENGTH, DEFAULT_TIMESTAMP, parent);
      }
      map.put(normalizedName, entry);
    }
    return entry;
  }
private EntryInfo directoryEntry(Map<String, EntryInfo> map, @Nullable Logger logger, String normalizedName)