// Get the invocation list of the current delegate. public override Delegate[] GetInvocationList() { int len = GetLength(this); Delegate[] list = new Delegate [len]; int posn = len - 1; MulticastDelegate current = this; MulticastDelegate clone; while (((Object)current) != null) { clone = (MulticastDelegate)(current.MemberwiseClone()); clone.prev = null; list[posn--] = clone; current = current.prev; } return(list); }