public SystemInformationBlockType7 Decode(BitArrayInputStream input)
            {
                var type = new SystemInformationBlockType7();

                type.InitDefaults();
                var flag = false;

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

                type.t_ReselectionGERAN = input.ReadBits(3);
                if (stream.Read())
                {
                    type.t_ReselectionGERAN_SF = SpeedStateScaleFactors.PerDecoder.Instance.Decode(input);
                }
                if (stream.Read())
                {
                    type.carrierFreqsInfoList = new List <CarrierFreqsInfoGERAN>();
                    var num2 = 4;
                    var num3 = input.ReadBits(num2) + 1;
                    for (var i = 0; i < num3; i++)
                    {
                        var item = CarrierFreqsInfoGERAN.PerDecoder.Instance.Decode(input);
                        type.carrierFreqsInfoList.Add(item);
                    }
                }
                if (flag && stream.Read())
                {
                    var nBits = input.ReadBits(8);
                    type.lateNonCriticalExtension = input.readOctetString(nBits);
                }
                return(type);
            }
 public SystemInformationBlockType7 Decode(BitArrayInputStream input)
 {
     var type = new SystemInformationBlockType7();
     type.InitDefaults();
     var flag = false;
     flag = input.ReadBit() != 0;
     var stream = flag ? new BitMaskStream(input, 3) : new BitMaskStream(input, 2);
     type.t_ReselectionGERAN = input.ReadBits(3);
     if (stream.Read())
     {
         type.t_ReselectionGERAN_SF = SpeedStateScaleFactors.PerDecoder.Instance.Decode(input);
     }
     if (stream.Read())
     {
         type.carrierFreqsInfoList = new List<CarrierFreqsInfoGERAN>();
         var num2 = 4;
         var num3 = input.ReadBits(num2) + 1;
         for (var i = 0; i < num3; i++)
         {
             var item = CarrierFreqsInfoGERAN.PerDecoder.Instance.Decode(input);
             type.carrierFreqsInfoList.Add(item);
         }
     }
     if (flag && stream.Read())
     {
         var nBits = input.ReadBits(8);
         type.lateNonCriticalExtension = input.readOctetString(nBits);
     }
     return type;
 }