@SuppressWarnings("SpellCheckingInspection")
  static long pack(@NotNull String id,
                   @Nullable String hit,
                   @Nullable String path,
                   @Nullable String groupName,
                   @NotNull IndexedCharsInterner identifierTable) {
    long _id = identifierTable.toId(id.trim());
    long _hit = hit == null ? Short.MAX_VALUE : identifierTable.toId(hit.trim());
    long _path = path == null ? Short.MAX_VALUE : identifierTable.toId(path.trim());
    long _groupName = groupName == null ? Short.MAX_VALUE : identifierTable.toId(groupName.trim());
    assert _id >= 0 && _id < Short.MAX_VALUE;
    assert _hit >= 0 && _hit <= Short.MAX_VALUE;
    assert _path >= 0 && _path <= Short.MAX_VALUE;
    assert _groupName >= 0 && _groupName <= Short.MAX_VALUE;
    return _groupName << 48 | _id << 32 | _hit << 16 | _path/* << 0*/;
  }
@SuppressWarnings("SpellCheckingInspection")
  static long pack(@NotNull String id,
                   @Nullable String hit,
                   @Nullable String path,
                   @Nullable String groupName,
                   @NotNull IndexedCharsInterner identifierTable)