public void Deserialize_V1(Stream stream, DataVersion version)
        {
            Byte[] intBuffer = new Byte[sizeof(UInt32)];
             BasePowerTarget.IConcretePowerTarget.PowerTargetType type;

            stream.Read(intBuffer, 0, sizeof(UInt32));
            type = ( BasePowerTarget.IConcretePowerTarget.PowerTargetType)BitConverter.ToUInt32(intBuffer, 0);

            switch(type)
            {
                case  BasePowerTarget.IConcretePowerTarget.PowerTargetType.ZoneGTC:
                    {
                        m_ConcreteTarget = new PowerZoneGTCTarget(stream, version, this);
                        break;
                    }
                case  BasePowerTarget.IConcretePowerTarget.PowerTargetType.ZoneST:
                    {
                        m_ConcreteTarget = new PowerZoneSTTarget(stream, version, this);
                        break;
                    }
                case  BasePowerTarget.IConcretePowerTarget.PowerTargetType.Range:
                    {
                        m_ConcreteTarget = new PowerRangeTarget(stream, version, this);
                        break;
                    }
                default:
                    {
                        Debug.Assert(false);
                        break;
                    }
            }
        }
 public new void Deserialize_V0(Stream stream, DataVersion version)
 {
     // In V0, we only have GTC zone type
     m_ConcreteTarget = new PowerZoneGTCTarget(stream, version, this);
 }