public object GetRealObject(StreamingContext context)
        {
            int length1 = 0;

            for (DelegateSerializationHolder.DelegateEntry delegateEntry = this.m_delegateEntry; delegateEntry != null; delegateEntry = delegateEntry.Entry)
            {
                ++length1;
            }
            int num = length1 - 1;

            if (length1 == 1)
            {
                return((object)this.GetDelegate(this.m_delegateEntry, 0));
            }
            object[] objArray = new object[length1];
            for (DelegateSerializationHolder.DelegateEntry de = this.m_delegateEntry; de != null; de = de.Entry)
            {
                --length1;
                objArray[length1] = (object)this.GetDelegate(de, num - length1);
            }
            MulticastDelegate multicastDelegate = (MulticastDelegate)objArray[0];

            object[] invocationList = objArray;
            int      length2        = invocationList.Length;

            return((object)multicastDelegate.NewMulticastDelegate(invocationList, length2));
        }