{
deleteLock.enterProtected();
EntryPage page=makePageCurrent( streams, key.index/ENTRY_PAGE_SIZE);
int localOffset=key.index%ENTRY_PAGE_SIZE;
if ( key.reuseCount!=page.reuseCount[localOffset])
throw new InvalidObjectKeyException();
int classIndex=page.classIndex[localOffset];
try
{
classList.classChangeLock.enterProtected();
if ( classIndex>classList.classEntries.size() ||
classIndex<0)
throw new InvalidObjectKeyException();
ClassEntry classEntry=
(ClassEntry)classList.classEntries.get( classIndex);
if ( classEntry.reuseCount!=page.classReuse[localOffset])
throw new InvalidObjectKeyException();
classEntry.objectStreams.enterProtected();
try
{
return classEntry.objectStreams.readObjectWithPrefix(
page.offset[localOffset]);