public void EqualityAndHashCode_Default(Visibility visibility1, Type[] parameters1, Visibility visibility2, Type[] parameters2, bool equal)
        {
            ConstructorDefinition definition1 = new ConstructorDefinition(visibility1, parameters1, null);
            ConstructorDefinition definition2 = new ConstructorDefinition(visibility2, parameters2, null);

            Assert.Equal(equal, definition1.Equals(definition2));                        // IEquatable<T>.Equals()
            Assert.Equal(equal, definition2.Equals(definition1));                        // IEquatable<T>.Equals()
            Assert.Equal(equal, (definition1 as object).Equals(definition2));            // object.Equals()
            Assert.Equal(equal, (definition2 as object).Equals(definition1));            // object.Equals()
            Assert.Equal(equal, definition1.GetHashCode() == definition2.GetHashCode()); // different definitions CAN have the same hash code, but it is unlikely...
        }