boolean processMappings(KeyValueProcessor processor) throws IOException {
      assert isIndexLeaf();
      acquirePage();
      try {
        final ByteBuffer pageBuffer = page.rawPageBuffer();

        if (isHashedLeaf()) {
          int offset = addressInBuffer + indexToOffset(0);
          for (int slotNo = 0; slotNo < hashPageCapacity; slotNo++) {
            int key = pageBuffer.getInt(offset + KEY_OFFSET);
            if (key != HASH_FREE) {
              int value = pageBuffer.getInt(offset);
              if (!processor.process(key, value)) {
                return false;
              }
            }
            offset += INTERIOR_SIZE;
          }
        }
        else {
          final int childrenCount = getChildrenCount();
          for (int childNo = 0; childNo < childrenCount; ++childNo) {
            final int key = keyAtGivenLocksAndBufferAcquired(pageBuffer, childNo);
            final int value = addressAtGivenLocksAndBufferAcquired(pageBuffer, childNo);
            if (!processor.process(key, value)) {
              return false;
            }
          }
        }
        return true;
      }
      finally {
        releasePage();
      }
    }
boolean processMappings(KeyValueProcessor processor)