public override void ReadBinary(ESPReader reader) { List <string> readTags = new List <string>(); readTags.Add(reader.PeekTag()); Marker.ReadBinary(reader); while (reader.BaseStream.Position < reader.BaseStream.Length) { string subTag = reader.PeekTag(); switch (subTag) { case "INAM": if (readTags.Contains("INAM")) { return; } if (Idle == null) { Idle = new RecordReference(); } Idle.ReadBinary(reader); break; case "SCHR": if (readTags.Contains("SCHR")) { return; } if (Script == null) { Script = new EmbeddedScript(); } Script.ReadBinary(reader); break; case "TNAM": if (readTags.Contains("TNAM")) { return; } if (Topic == null) { Topic = new RecordReference(); } Topic.ReadBinary(reader); break; default: return; } readTags.Add(subTag); } }