public override sealed bool Equals(object obj)
        {
            if (obj == null || !Delegate.InternalEqualTypes((object)this, obj))
            {
                return(false);
            }
            MulticastDelegate d = obj as MulticastDelegate;

            if (d == null)
            {
                return(false);
            }
            if (this._invocationCount != (IntPtr)0)
            {
                if (this.InvocationListLogicallyNull())
                {
                    if (this.IsUnmanagedFunctionPtr())
                    {
                        if (!d.IsUnmanagedFunctionPtr())
                        {
                            return(false);
                        }
                        return(Delegate.CompareUnmanagedFunctionPtrs((Delegate)this, (Delegate)d));
                    }
                    if (d._invocationList is Delegate)
                    {
                        return(this.Equals(d._invocationList));
                    }
                    return(base.Equals(obj));
                }
                if (this._invocationList is Delegate)
                {
                    return(this._invocationList.Equals(obj));
                }
                return(this.InvocationListEquals(d));
            }
            if (!this.InvocationListLogicallyNull())
            {
                if (!this._invocationList.Equals(d._invocationList))
                {
                    return(false);
                }
                return(base.Equals((object)d));
            }
            if (d._invocationList is Delegate)
            {
                return(this.Equals(d._invocationList));
            }
            return(base.Equals((object)d));
        }
        public sealed override bool Equals(object obj)
        {
            if (obj == null || !Delegate.InternalEqualTypes(this, obj))
            {
                return(false);
            }
            MulticastDelegate multicastDelegate = obj as MulticastDelegate;

            if (multicastDelegate == null)
            {
                return(false);
            }
            if (this._invocationCount != (IntPtr)0)
            {
                if (this.InvocationListLogicallyNull())
                {
                    if (this.IsUnmanagedFunctionPtr())
                    {
                        return(multicastDelegate.IsUnmanagedFunctionPtr() && Delegate.CompareUnmanagedFunctionPtrs(this, multicastDelegate));
                    }
                    if (multicastDelegate._invocationList is Delegate)
                    {
                        return(this.Equals(multicastDelegate._invocationList));
                    }
                    return(base.Equals(obj));
                }
                else
                {
                    if (this._invocationList is Delegate)
                    {
                        return(this._invocationList.Equals(obj));
                    }
                    return(this.InvocationListEquals(multicastDelegate));
                }
            }
            else
            {
                if (!this.InvocationListLogicallyNull())
                {
                    return(this._invocationList.Equals(multicastDelegate._invocationList) && base.Equals(multicastDelegate));
                }
                if (multicastDelegate._invocationList is Delegate)
                {
                    return(this.Equals(multicastDelegate._invocationList));
                }
                return(base.Equals(multicastDelegate));
            }
        }
        public sealed override bool Equals(object obj)
        {
            if ((obj == null) || !Delegate.InternalEqualTypes(this, obj))
            {
                return(false);
            }
            MulticastDelegate delegate2 = obj as MulticastDelegate;

            if (delegate2 == null)
            {
                return(false);
            }
            if (this._invocationCount != IntPtr.Zero)
            {
                if (this.InvocationListLogicallyNull())
                {
                    if (!this.IsUnmanagedFunctionPtr())
                    {
                        return(base.Equals(obj));
                    }
                    if (!delegate2.IsUnmanagedFunctionPtr())
                    {
                        return(false);
                    }
                    return(Delegate.CompareUnmanagedFunctionPtrs(this, delegate2));
                }
                if (this._invocationList is Delegate)
                {
                    return(this._invocationList.Equals(obj));
                }
                return(this.InvocationListEquals(delegate2));
            }
            if (!this.InvocationListLogicallyNull())
            {
                if (!this._invocationList.Equals(delegate2._invocationList))
                {
                    return(false);
                }
                return(base.Equals(delegate2));
            }
            if (((delegate2._invocationCount != IntPtr.Zero) || !this.InvocationListLogicallyNull()) && (delegate2._invocationList is Delegate))
            {
                return((delegate2._invocationList as Delegate).Equals(this));
            }
            return(base.Equals(delegate2));
        }