boolean processMappings(KeyValueProcessor processor) throws IOException {
      assert isIndexLeaf();

      if (isHashedLeaf()) {
        int offset = addressInBuffer + indexToOffset(0);

        for (int i = 0; i < hashPageCapacity; ++i) {
          int finalOffset = offset;
          Boolean result;
          lockBuffer();
          try {
            result = ((NodeOp<Boolean>)b -> {
              int key = b.getInt(finalOffset + KEY_OFFSET);
              if (key != HASH_FREE) {
                if (!processor.process(key, b.getInt(finalOffset))) return false;
              }
              return true;
            }).operate(bufferWrapper);
          }
          finally {
            unlockBuffer();
          }
          if (!result) {
            return false;
          }

          offset += INTERIOR_SIZE;
        }
      }
      else {
        final int childrenCount = getChildrenCount();
        for (int i = 0; i < childrenCount; ++i) {
          if (!processor.process(keyAt(i), addressAt(i))) return false;
        }
      }
      return true;
    }
boolean processMappings(KeyValueProcessor processor)