void decode(Buffer buffer) throws PagingException {
DataByteArrayInputStream is = new DataByteArrayInputStream(buffer);
int length = readFields(is);
is.setPos((FILE_HEADER_SIZE / 2) - 8);
long expectedChecksum = is.readLong();
CRC32 checksum = new CRC32();
checksum.update(buffer.data, 0, length);
if (checksum.getValue() != expectedChecksum) {
// Try the 2nd copy..
is.setPos(FILE_HEADER_SIZE / 2);