private void ReadObject(ObjectInputStream @in)
{
@in.DefaultReadObject();
int writtenKeyCount = keyCount;
if (writtenKeyCount != 0)
{
keyCount = 0;
bool hasIntValues = @in.ReadBoolean();
bool hasObjectValues = @in.ReadBoolean();
int N = 1 << power;
if (hasIntValues)
{
keys = new int[2 * N];
ivaluesShift = N;
}
else
{
keys = new int[N];
}
for (int i = 0; i != N; ++i)
{
keys[i] = EMPTY;
}
if (hasObjectValues)
{
values = new object[N];
}
for (int i_1 = 0; i_1 != writtenKeyCount; ++i_1)
{
int key = @in.ReadInt();
int index = InsertNewKey(key);
if (hasIntValues)
{
int ivalue = @in.ReadInt();
keys[ivaluesShift + index] = ivalue;
}
if (hasObjectValues)
{
values[index] = @in.ReadObject();
}
}
}
}