public bool ReadObject(out object @object)
{
var id = _reader.ReadVInt64();
if (id == 0)
{
@object = null;
return false;
}
if (id <= int.MinValue || id > 0)
{
@object = _transaction.Get((ulong)id);
return false;
}
var ido = (int)(-id) - 1;
var o = RetriveObj(ido);
if (o != null)
{
var mp = o as IMemorizedPosition;
if (mp == null)
{
@object = o;
return false;
}
PushReturningPosition(((ICanMemorizePosition)_reader).MemorizeCurrentPosition());
mp.Restore();
}
else
{
PushReturningPosition(null);
}
_lastIdOfObj = ido;
@object = null;
return true;
}