public override bool Equals(object obj)
 {
     // We don't need to compare the invokees
     // But do we need to compare the contexts and return types?
     return(obj is VirtualMethodBase other &&
            Name == other.Name &&
            DeclaringType.Equals(other.DeclaringType) &&
            CollectionServices.CompareArrays(GetParameterTypes(), other.GetParameterTypes()));
 }
 public override bool Equals(object obj)
 {
     // We don't need to compare the getters and setters.
     // But do we need to compare the contexts and return types?
     return(obj is VirtualPropertyBase other &&
            _name == other._name &&
            _declaringType.Equals(other._declaringType) &&
            _propertyType == other._propertyType &&
            CollectionServices.CompareArrays(GetIndexParametersNoCopy(), other.GetIndexParametersNoCopy()));
 }