// --- private ---
        private void RegisterWellKnownTypes()
        {
            {
                Predicate <Type> dictTypePred = (type) => {
                    return(GenericTypeUtil.EqualsGenericIDictionary(type));
                };
                _predToWrapperFactory[dictTypePred] = new IDictionaryWrapperFactory();
            }

            {
                Predicate <Type> assocColTypePred = (type) => {
                    return(GenericTypeUtil.EqualsGenericAssociationCollection(type));
                };
                _predToWrapperFactory[assocColTypePred] = new AssociationCollectionWrapperFactory();
            }

            {
                Predicate <Type> colTypePred = (type) => {
                    return(GenericTypeUtil.EqualsGenericCollection(type));
                };
                _predToWrapperFactory[colTypePred] = new CollectionWrapperFactory();
            }

            {
                Predicate <Type> listTypePred = (type) => {
                    return(GenericTypeUtil.EqualsGenericIList(type));
                };
                _predToWrapperFactory[listTypePred] = new IListWrapperFactory();
            }

            {
                Predicate <Type> colTypePred = (type) => {
                    return(GenericTypeUtil.EqualsGenericICollection(type));
                };
                _predToWrapperFactory[colTypePred] = new IListWrapperFactory();
            }
        }
 public LabeledCollectionWrapper(ListType list, CollectionWrapperFactory <T> factory)
     : base(list)
 {
     this.factory = factory;
 }