public cellInfoList_r9_Type Decode(BitArrayInputStream input)
 {
     int num2;
     cellInfoList_r9_Type type = new cellInfoList_r9_Type();
     type.InitDefaults();
     bool flag = input.ReadBit() != 0;
     switch (input.ReadBits(2))
     {
         case 0:
             {
                 type.geran_r9 = new List<CellInfoGERAN_r9>();
                 num2 = 5;
                 int num4 = input.ReadBits(num2) + 1;
                 for (int i = 0; i < num4; i++)
                 {
                     CellInfoGERAN_r9 item = CellInfoGERAN_r9.PerDecoder.Instance.Decode(input);
                     type.geran_r9.Add(item);
                 }
                 return type;
             }
         case 1:
             {
                 type.utra_FDD_r9 = new List<CellInfoUTRA_FDD_r9>();
                 num2 = 4;
                 int num6 = input.ReadBits(num2) + 1;
                 for (int j = 0; j < num6; j++)
                 {
                     CellInfoUTRA_FDD_r9 _r2 = CellInfoUTRA_FDD_r9.PerDecoder.Instance.Decode(input);
                     type.utra_FDD_r9.Add(_r2);
                 }
                 return type;
             }
         case 2:
             {
                 type.utra_TDD_r9 = new List<CellInfoUTRA_TDD_r9>();
                 num2 = 4;
                 int num8 = input.ReadBits(num2) + 1;
                 for (int k = 0; k < num8; k++)
                 {
                     CellInfoUTRA_TDD_r9 _r3 = CellInfoUTRA_TDD_r9.PerDecoder.Instance.Decode(input);
                     type.utra_TDD_r9.Add(_r3);
                 }
                 return type;
             }
         case 3:
             if (flag)
             {
                 type.utra_TDD_r10 = new List<CellInfoUTRA_TDD_r10>();
                 num2 = 4;
                 int num10 = input.ReadBits(num2) + 1;
                 for (int m = 0; m < num10; m++)
                 {
                     CellInfoUTRA_TDD_r10 _r4 = CellInfoUTRA_TDD_r10.PerDecoder.Instance.Decode(input);
                     type.utra_TDD_r10.Add(_r4);
                 }
             }
             return type;
     }
     throw new Exception(GetType().Name + ":NoChoice had been choose");
 }
                public cellInfoList_r9_Type Decode(BitArrayInputStream input)
                {
                    int num2;
                    cellInfoList_r9_Type type = new cellInfoList_r9_Type();

                    type.InitDefaults();
                    bool flag = input.ReadBit() != 0;

                    switch (input.ReadBits(2))
                    {
                    case 0:
                    {
                        type.geran_r9 = new List <CellInfoGERAN_r9>();
                        num2          = 5;
                        int num4 = input.ReadBits(num2) + 1;
                        for (int i = 0; i < num4; i++)
                        {
                            CellInfoGERAN_r9 item = CellInfoGERAN_r9.PerDecoder.Instance.Decode(input);
                            type.geran_r9.Add(item);
                        }
                        return(type);
                    }

                    case 1:
                    {
                        type.utra_FDD_r9 = new List <CellInfoUTRA_FDD_r9>();
                        num2             = 4;
                        int num6 = input.ReadBits(num2) + 1;
                        for (int j = 0; j < num6; j++)
                        {
                            CellInfoUTRA_FDD_r9 _r2 = CellInfoUTRA_FDD_r9.PerDecoder.Instance.Decode(input);
                            type.utra_FDD_r9.Add(_r2);
                        }
                        return(type);
                    }

                    case 2:
                    {
                        type.utra_TDD_r9 = new List <CellInfoUTRA_TDD_r9>();
                        num2             = 4;
                        int num8 = input.ReadBits(num2) + 1;
                        for (int k = 0; k < num8; k++)
                        {
                            CellInfoUTRA_TDD_r9 _r3 = CellInfoUTRA_TDD_r9.PerDecoder.Instance.Decode(input);
                            type.utra_TDD_r9.Add(_r3);
                        }
                        return(type);
                    }

                    case 3:
                        if (flag)
                        {
                            type.utra_TDD_r10 = new List <CellInfoUTRA_TDD_r10>();
                            num2 = 4;
                            int num10 = input.ReadBits(num2) + 1;
                            for (int m = 0; m < num10; m++)
                            {
                                CellInfoUTRA_TDD_r10 _r4 = CellInfoUTRA_TDD_r10.PerDecoder.Instance.Decode(input);
                                type.utra_TDD_r10.Add(_r4);
                            }
                        }
                        return(type);
                    }
                    throw new Exception(GetType().Name + ":NoChoice had been choose");
                }