private void WriteObject(ObjectOutputStream @out)
{
@out.DefaultWriteObject();
int count = keyCount;
if (count != 0)
{
bool hasIntValues = (ivaluesShift != 0);
bool hasObjectValues = (values != null);
@out.WriteBoolean(hasIntValues);
@out.WriteBoolean(hasObjectValues);
for (int i = 0; count != 0; ++i)
{
int key = keys[i];
if (key != EMPTY && key != DELETED)
{
--count;
@out.WriteInt(key);
if (hasIntValues)
{
@out.WriteInt(keys[ivaluesShift + i]);
}
if (hasObjectValues)
{
@out.WriteObject(values[i]);
}
}
}
}
}