IAllowedValueSpecification FromDefault(TypeInfo reflectedType, MemberInfo parameter)
        {
            var defaultValue = _defaults.Get(reflectedType)
                               .Invoke(parameter);
            var inverse = new EqualitySpecification <object>(defaultValue).Inverse();
            var result  = new AllowedValueSpecification(inverse);

            return(result);
        }
        IAllowedValueSpecification FromDefault(TypeInfo reflectedType, MemberDescriptor parameter)
        {
            var defaultValue = _defaults.Get(reflectedType)
                               .Invoke(parameter.Metadata);

            var specification = IsCollectionTypeSpecification.Default.IsSatisfiedBy(parameter.MemberType)
                                                    ? _generic.Get(CollectionItemTypeLocator.Default.Get(parameter.MemberType))
                                .Invoke(defaultValue)
                                                    : new EqualitySpecification <object>(defaultValue);

            var result = new AllowedValueSpecification(specification.Inverse());

            return(result);
        }