IAllowedMemberValues Register(IServiceProvider arg)
        {
            IParameterizedSource <MemberInfo, IAllowedValueSpecification>
            seed         = new MappedAllowedMemberValues(Specifications),
                fallback = new FixedInstanceSource <MemberInfo, IAllowedValueSpecification>(_allowed);
            var source   = this.Appending(fallback).Aggregate(seed, (current, item) => current.Or(item));
            var result   = new AllowedMemberValues(source);

            return(result);
        }
        IAllowedMemberValues Register(IServiceProvider arg)
        {
            IParameterizedSource <MemberInfo, IAllowedValueSpecification>
            seed = new MappedAllowedMemberValues(Specifications.ToDictionary(x => x.Key, x => (ISpecification <object>)x.Value)
                                                 .Concat(Instances)
                                                 .GroupBy(x => x.Key)
                                                 .ToDictionary(x => x.Key, Create)),
                fallback = new FixedInstanceSource <MemberInfo, IAllowedValueSpecification>(_allowed);
            var source   = this.Appending(fallback)
                           .Aggregate(seed, (current, item) => current.Or(item));
            var result = new AllowedMemberValues(source);

            return(result);
        }