internal override void set_list(BList <T> list)
 {
     if (this.list == list)
     {
         return;
     }
     this.list = list;
     for (int i = 0, iN = this.data.Count; i < iN; i++)
     {
         this.data[i].set_list(list);
     }
 }
            static bool Test2()
            {
                System.Random ran = new System.Random(2134);

                {
//%%if IsEx==0 (
                    BList <int>     list1 = new BList <int>();
                    Gen::List <int> list2 = new System.Collections.Generic.List <int>();
//%%elif IsEx==1
                    BListEx <TestElement>   list1 = new BListEx <TestElement>();
                    Gen::List <TestElement> list2 = new System.Collections.Generic.List <TestElement>();
//%%)
                    const int N = 100000;
                    for (int i = 0; i < N; i++)
                    {
                        int idx = (int)(ran.NextDouble() * list1.Count);
//%%if IsEx==0 (
                        list1.Insert(idx, i);
                        list2.Insert(idx, i);
//%%elif IsEx==1
                        TestElement e = new TestElement(i);
                        list1.Insert(idx, e);
                        list2.Insert(idx, e);
//%%)
                    }

                    for (int i = 0; i < N; i++)
                    {
                        if (list1[i] != list2[i])
                        {
                            return(false);
                        }
                    }


                    for (int i = 0; i < N / 2; i++)
                    {
                        int idx = (int)(ran.NextDouble() * list1.Count);
                        list1.RemoveAt(idx);
                        list2.RemoveAt(idx);
                    }

                    for (int i = 0; i < N / 2; i++)
                    {
                        if (list1[i] != list2[i])
                        {
                            return(false);
                        }
                    }
                }
                return(true);
            }
            static bool Test2a()
            {
                System.Random ran = new System.Random(2134);

                {
//%%if IsEx==0 (
                    BList <int> list1 = new BList <int>();
//%%elif IsEx==1
                    BListEx <TestElement> list1 = new BListEx <TestElement>();
//%%)
                    const int N = 1000000;
                    for (int i = 0; i < N; i++)
                    {
                        int idx = (int)(ran.NextDouble() * list1.Count);
//%%if IsEx==0 (
                        list1.Insert(idx, i);
//%%elif IsEx==1
                        TestElement e = new TestElement(i);
                        list1.Insert(idx, e);
//%%)
                        if (i % 1000 == 0)
                        {
                            list1.DbgCheckState();
                        }
                    }

                    for (int i = 0; i < N / 2; i++)
                    {
                        int idx = (int)(ran.NextDouble() * list1.Count);
                        list1.RemoveAt(idx);
                        if (i % 1000 == 0)
                        {
                            list1.DbgCheckState();
                        }
                    }

                    list1.DbgCheckState();
                }
                return(true);
            }
 internal virtual void set_list(BList <T> list)
 {
     this.list = list;
 }