public boolean forEach(@NotNull ValueReader<? super Data> reader,
                         @Nullable DataFilter filter) throws IOException {
    return traverseAllRecords(new RecordsProcessor() {
      @Override
      public boolean process(final int record) throws IOException {
        if (filter == null || filter.accept(record)) {
          Data value = valueOf(record);
          return reader.read(record, value);
        }
        return true;
      }
    });
  }
public boolean forEach(@NotNull ValueReader<? super Data> reader,
                         @Nullable DataFilter filter)