/*****************************************************************************************************************************
        ** This is an explicit interface used to access members of the builder without strong type information
        *****************************************************************************************************************************/

        IRuntimeServiceConstructionBuilder IRuntimeServiceConstructionBuilder.ConstructWith(Type argumentType, Type serviceType)
        {
            _constructorMap.Add(ConstructorMap.Create(typeof(TypedConstructorMap <,>), argumentType, serviceType));
            return(this);
        }
        /* WorkInProgress
         * public ServiceConstructionBuilder<T> ConstructWith(string named, Type argumentType, Type serviceType = null)
         * {
         * _constructorMap.Add(ConstructorMap.Create(typeof(NamedConstructorMap<,>), argumentType, serviceType ?? argumentType, named));
         * return this;
         * }
         */

        IRuntimeServiceConstructionBuilder IRuntimeServiceConstructionBuilder.ConstructWith(object value)
        {
            _constructorMap.Add(ConstructorMap.Create(typeof(ValueConstructorMap <>), value.GetType(), value));
            return(this);
        }