/*	[Signature("(LBTree$Node;TKey;TValue;I)LBTree$Node;")]*/

    private BTree.Node insert(BTree.Node node, IComparable comparable, object obj, int num)
    {
        BTree.Entry entry = new BTree.Entry(comparable, obj, null);
        int         i;

        if (num == 0)
        {
            for (i = 0; i < BTree.Node.access_200(node); i++)
            {
                if (this.less(comparable, BTree.Entry.access_300(BTree.Node.access_100(node)[i])))
                {
                    break;
                }
            }
        }
        else
        {
            i = 0;
            while (i < BTree.Node.access_200(node))
            {
                if (i + 1 == BTree.Node.access_200(node) || this.less(comparable, BTree.Entry.access_300(BTree.Node.access_100(node)[i + 1])))
                {
                    BTree.Entry[] arg_79_0 = BTree.Node.access_100(node);
                    int           arg_79_1 = i;
                    i++;
                    BTree.Node node2 = this.insert(BTree.Entry.access_500(arg_79_0[arg_79_1]), comparable, obj, num - 1);
                    if (node2 == null)
                    {
                        return(null);
                    }
                    BTree.Entry.access_302(entry, BTree.Entry.access_300(BTree.Node.access_100(node2)[0]));
                    BTree.Entry.access_502(entry, node2);
                    break;
                }
                else
                {
                    i++;
                }
            }
        }
        for (int j = BTree.Node.access_200(node); j > i; j += -1)
        {
            BTree.Node.access_100(node)[j] = BTree.Node.access_100(node)[j - 1];
        }
        BTree.Node.access_100(node)[i] = entry;
        BTree.Node.access_208(node);
        if (BTree.Node.access_200(node) < 4)
        {
            return(null);
        }
        return(this.split(node));
    }
/*		[LineNumberTable(32), Modifiers(Modifiers.Static | Modifiers.Synthetic)]*/
        internal static BTree.Node access_502(BTree.Entry entry, BTree.Node result)
        {
            entry.next = result;
            return(result);
        }
/*		[LineNumberTable(32), Modifiers(Modifiers.Static | Modifiers.Synthetic)]*/
        internal static IComparable access_302(BTree.Entry entry, IComparable result)
        {
            entry.key = result;
            return(result);
        }
/*		[LineNumberTable(32), Modifiers(Modifiers.Static | Modifiers.Synthetic)]*/
        internal static BTree.Node access_500(BTree.Entry entry)
        {
            return(entry.next);
        }
/*		[LineNumberTable(32), Modifiers(Modifiers.Static | Modifiers.Synthetic)]*/
        internal static object access_400(BTree.Entry entry)
        {
            return(entry.value);
        }
/*		[LineNumberTable(32), Modifiers(Modifiers.Static | Modifiers.Synthetic)]*/
        internal static IComparable access_300(BTree.Entry entry)
        {
            return(entry.key);
        }