public SystemInformationBlockType6 Decode(BitArrayInputStream input)
            {
                int num2;
                var type = new SystemInformationBlockType6();

                type.InitDefaults();
                var flag = false;

                flag = input.readBit() != 0;
                var stream = flag ? new BitMaskStream(input, 4) : new BitMaskStream(input, 3);

                if (stream.Read())
                {
                    type.carrierFreqListUTRA_FDD = new List <CarrierFreqUTRA_FDD>();
                    num2 = 4;
                    var num3 = input.readBits(num2) + 1;
                    for (var i = 0; i < num3; i++)
                    {
                        var item = CarrierFreqUTRA_FDD.PerDecoder.Instance.Decode(input);
                        type.carrierFreqListUTRA_FDD.Add(item);
                    }
                }
                if (stream.Read())
                {
                    type.carrierFreqListUTRA_TDD = new List <CarrierFreqUTRA_TDD>();
                    num2 = 4;
                    var num5 = input.readBits(num2) + 1;
                    for (var j = 0; j < num5; j++)
                    {
                        var qutra_tdd = CarrierFreqUTRA_TDD.PerDecoder.Instance.Decode(input);
                        type.carrierFreqListUTRA_TDD.Add(qutra_tdd);
                    }
                }
                type.t_ReselectionUTRA = input.readBits(3);
                if (stream.Read())
                {
                    type.t_ReselectionUTRA_SF = SpeedStateScaleFactors.PerDecoder.Instance.Decode(input);
                }
                if (flag && stream.Read())
                {
                    var nBits = input.readBits(8);
                    type.lateNonCriticalExtension = input.readOctetString(nBits);
                }
                return(type);
            }
 public SystemInformationBlockType6 Decode(BitArrayInputStream input)
 {
     int num2;
     var type = new SystemInformationBlockType6();
     type.InitDefaults();
     var flag = false;
     flag = input.ReadBit() != 0;
     var stream = flag ? new BitMaskStream(input, 4) : new BitMaskStream(input, 3);
     if (stream.Read())
     {
         type.carrierFreqListUTRA_FDD = new List<CarrierFreqUTRA_FDD>();
         num2 = 4;
         var num3 = input.ReadBits(num2) + 1;
         for (var i = 0; i < num3; i++)
         {
             var item = CarrierFreqUTRA_FDD.PerDecoder.Instance.Decode(input);
             type.carrierFreqListUTRA_FDD.Add(item);
         }
     }
     if (stream.Read())
     {
         type.carrierFreqListUTRA_TDD = new List<CarrierFreqUTRA_TDD>();
         num2 = 4;
         var num5 = input.ReadBits(num2) + 1;
         for (var j = 0; j < num5; j++)
         {
             var qutra_tdd = CarrierFreqUTRA_TDD.PerDecoder.Instance.Decode(input);
             type.carrierFreqListUTRA_TDD.Add(qutra_tdd);
         }
     }
     type.t_ReselectionUTRA = input.ReadBits(3);
     if (stream.Read())
     {
         type.t_ReselectionUTRA_SF = SpeedStateScaleFactors.PerDecoder.Instance.Decode(input);
     }
     if (flag && stream.Read())
     {
         var nBits = input.ReadBits(8);
         type.lateNonCriticalExtension = input.readOctetString(nBits);
     }
     return type;
 }