public static Argument DecodeEventArg(this RailBitBuffer buffer) { EventArgType eType = (EventArgType)buffer.Read(NumberOfBitsForArgType); switch (eType) { case EventArgType.EntityReference: return(new Argument(buffer.ReadEntityId())); case EventArgType.MBGUID: return(new Argument(buffer.ReadMBGUID())); case EventArgType.Null: return(Argument.Null); case EventArgType.Int: return(new Argument(buffer.ReadInt())); default: throw new ArgumentOutOfRangeException(); } }