private DelegateSerializationHolder(SerializationInfo info, StreamingContext ctx) { DelegateSerializationHolder.DelegateEntry delegateEntry = (DelegateSerializationHolder.DelegateEntry)info.GetValue("Delegate", typeof(DelegateSerializationHolder.DelegateEntry)); int num = 0; DelegateSerializationHolder.DelegateEntry delegateEntry2 = delegateEntry; while (delegateEntry2 != null) { delegateEntry2 = delegateEntry2.delegateEntry; num++; } if (num == 1) { this._delegate = delegateEntry.DeserializeDelegate(info); } else { Delegate[] array = new Delegate[num]; delegateEntry2 = delegateEntry; for (int i = 0; i < num; i++) { array[i] = delegateEntry2.DeserializeDelegate(info); delegateEntry2 = delegateEntry2.delegateEntry; } this._delegate = Delegate.Combine(array); } }