void dumpPageMap(final int count, final long from, final long timestamp, final int recordSize)
                throws PersistitIOException {
            if (count * PM.ENTRY_SIZE + PM.OVERHEAD != recordSize) {
                throw new CorruptJournalException("Invalid record size " + recordSize + " for PM record at "
                        + addressToString(from, timestamp));
            }

            long address = from + PM.OVERHEAD;
            int index = 0;
            int loaded = 0;
            sb.setLength(0);
            long lastPage = Long.MAX_VALUE;
            int lastVolumeHandle = Integer.MAX_VALUE;
            for (int remaining = count; remaining > 0; remaining--) {
                if (index == loaded) {
                    final int loadedSize = Math.min((_readBuffer.capacity() / PM.ENTRY_SIZE) * PM.ENTRY_SIZE, remaining
                            * PM.ENTRY_SIZE);
                    read(address, loadedSize);
                    address += loadedSize;
                    index = 0;
                    loaded = loadedSize / PM.ENTRY_SIZE;
                    if (loaded <= 0) {
                        throw new CorruptJournalException("Could not load PageMap segment in entry "
                                + (count - remaining + 1) + " at " + addressToString(from, timestamp));
                    }
                }
                final int volumeHandle = PM.getEntryVolumeHandle(_readBuffer, index);
                final long pageAddress = PM.getEntryPageAddress(_readBuffer, index);
                final long pageTimestamp = PM.getEntryTimestamp(_readBuffer, index);
                final long journalAddress = PM.getEntryJournalAddress(_readBuffer, index);
                if (_selectedPages.isSelected(pageAddress) && _selectedTimestamps.isSelected(pageTimestamp)) {
                    if (pageAddress != lastPage || volumeHandle != lastVolumeHandle) {
                        if (sb.length() > 0) {
                            flush();
                            sb.setLength(0);
                        }
                        lastPage = pageAddress;
                        lastVolumeHandle = volumeHandle;
                        appendf("-- %5d:%,12d: ", volumeHandle, pageAddress);
                    }
                    appendf(" @%,d(%,d)", journalAddress, pageTimestamp);
                }
                index++;
            }
        }