Example #1
0
            internal int method_5(T value, IComparer <T> comparer)
            {
                int num1 = 0;

                RedBlackTree <T> .Node node1 = (RedBlackTree <T> .Node)null;
                RedBlackTree <T> .Node root1 = (RedBlackTree <T> .Node)null;
                RedBlackTree <T> .Node root2 = this;
                bool isLeft1 = false;

                RedBlackTree <T> .Node node2 = root2.method_2(false);
                while (node2 != null)
                {
                    bool isLeft2 = isLeft1;
                    RedBlackTree <T> .Node node3 = root1;
                    root1 = root2;
                    root2 = node2;
                    int num2 = comparer.Compare(value, root2.gparam_0);
                    isLeft1 = num2 < 0;
                    if (num2 == 0)
                    {
                        node1 = root2;
                    }
                    node2 = root2.method_2(isLeft1);
                    if (!root2.IsRed && !RedBlackTree <T> .Node.smethod_0(node2))
                    {
                        if (RedBlackTree <T> .Node.smethod_0(root2.method_2(!isLeft1)))
                        {
                            RedBlackTree <T> .Node child = isLeft1 ? RedBlackTree <T> .Node.smethod_3(root2) : RedBlackTree <T> .Node.smethod_1(root2);

                            root1.method_1(isLeft2, child);
                            root1 = child;
                        }
                        else
                        {
                            RedBlackTree <T> .Node node4 = root1.method_2(!isLeft2);
                            if (node4 != null)
                            {
                                if (!RedBlackTree <T> .Node.smethod_0(node4.node_1) && !RedBlackTree <T> .Node.smethod_0(node4.node_2))
                                {
                                    root1.bool_0 = false;
                                    node4.bool_0 = true;
                                    root2.bool_0 = true;
                                }
                                else
                                {
                                    bool isLeft3 = root1 != node3.node_2;
                                    RedBlackTree <T> .Node child;
                                    if (RedBlackTree <T> .Node.smethod_0(node4.method_2(isLeft2)))
                                    {
                                        child = isLeft2 ? RedBlackTree <T> .Node.smethod_4(root1) : RedBlackTree <T> .Node.smethod_2(root1);

                                        node3.method_1(isLeft3, child);
                                    }
                                    else if (RedBlackTree <T> .Node.smethod_0(node4.method_2(!isLeft2)))
                                    {
                                        child = isLeft2 ? RedBlackTree <T> .Node.smethod_3(root1) : RedBlackTree <T> .Node.smethod_1(root1);

                                        node3.method_1(isLeft3, child);
                                    }
                                    else
                                    {
                                        child = node3.method_2(isLeft3);
                                    }
                                    RedBlackTree <T> .Node node5 = root2;
                                    child.bool_0        = true;
                                    node5.bool_0        = true;
                                    child.node_1.bool_0 = false;
                                    child.node_2.bool_0 = false;
                                }
                            }
                        }
                    }
                }
                if (node1 != null)
                {
                    node1.gparam_0 = root2.gparam_0;
                    root1.method_1(root1.Right != root2, root2.method_2(root2.Left == null));
                    num1 = 1;
                }
                return(num1);
            }