@Override
    public <E extends Throwable> boolean forEach(@NotNull ThrowableConsumer<? super VItem, E> consumer) throws IOException, E {
      ByteBuffer buffer = startingChunk.read();
      int header = buffer.getInt();
      if (isValueAbsent(header)) {
        return true;//nothing
      }
      int keySize = keySize(header);
      buffer.position(Integer.BYTES + keySize);
      while (buffer.hasRemaining()) {
        int valueSize = buffer.getInt();
        VItem item = valueDescriptor.read(
          buffer.slice(buffer.position(), valueSize)
            .order(buffer.order())
        );

        consumer.consume(item);

        buffer.position(buffer.position() + valueSize);
      }
      //TODO RC: continue chain if nextChunkId
      return true;
    }
@Override
    public <E extends Throwable> boolean forEach(@NotNull ThrowableConsumer<? super VItem, E> consumer)