private unsafe void deSerialize(AutoCSer.BinarySerialize.DeSerializer deSerializer) { byte *read = deSerializer.Read; int size = *(int *)read; if (size <= 0) { if (size == 0) { Buffer.Null(); State = (MemberState)(byte)*(int *)(read + sizeof(int)); deSerializer.Read += sizeof(int) * 2; } else { Buffer.Start = -size; deSerializer.Read += sizeof(int); } } else if (size == Buffer.Length) { if (deSerializer.VerifyRead(sizeof(int) + size + (-size & 3))) { fixed(byte *bufferFixed = Buffer.Array) AutoCSer.Memory.CopyNotNull(read + sizeof(int), bufferFixed + Buffer.Start, size); State = MemberState.Remote; } } else { deSerializer.State = BinarySerialize.DeSerializeState.IndexOutOfRange; } }