@Override
  public boolean forEach(@NotNull ValueReader<? super String> reader) throws IOException {
    //RC: current implementation is lock-free, but it violates the invariant that value listed by forEach()
    //    must be 'known' to enumerator methods tryEnumerate()/enumerate(). tryEnumerate checks .valueToId
    //    map, which is updated (in enumerate) _after_ new .idToValue array is already set and visible, hence
    //    it could be new value already appended to .idToValue, but not yet to .valueToId.
    checkNotClosed();
    String[] idToNameLocal = idToValue;
    for (int i = 0; i < idToNameLocal.length; i++) {
      String value = idToNameLocal[i];
      int id = i + 1;
      boolean continueProcessing = reader.read(id, value);
      if (!continueProcessing) {
        return false;
      }
    }
    return true;
  }
@Override
  public boolean forEach(@NotNull ValueReader<? super String> reader)