public void Decode(IDecoder decoder) { this.intVal = decoder.GetInt(); this.shortVal = decoder.GetShort(); this.longVal = decoder.GetLong(); this.uintVal = decoder.GetUInt(); this.ushortVal = decoder.GetUShort(); this.ulongVal = decoder.GetULong(); this.stringVal = decoder.GetString(); this.bytesVal = decoder.GetBytes(); var subValue = decoder.GetObject <SubValue>(); if (subValue.HasValue) { this.subValue = subValue.Value; } }