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)); }