/// <summary>
        /// Selects a decorator type.  The implementation directly
        /// before this point in the decorator 'stack' (be it the initial implementation or a
        /// decorator itself) will be passed to the selected implementation.  Thus this implementation
        /// will 'wrap' the one before it.
        /// </summary>
        /// <returns>A customisation helper by which further implementations may be added to the decorator 'stack'.</returns>
        /// <param name="decoratorType">The type of the concrete implementation to use as a decorator.</param>
        /// <param name="parameters">An optional collection of <see cref="TypedParam"/>.</param>
        public ICustomizesDecorator ThenWrapWithType(Type decoratorType, params TypedParam[] parameters)
        {
            var customizer = builder.ThenWrapWithType(decoratorType, parameters?.Select(x => new TypedParameter(x.Type, x.Value)).ToArray() ?? new TypedParameter[0]);

            return(new DecoratorCustomizerAdapter(customizer));
        }