/// <summary>
        /// Starts the definition of a child instance specifying the argument name
        /// in the case of a constructor function that consumes more than one argument
        /// of type T
        /// </summary>
        /// <typeparam name="CONSTRUCTORARGUMENTTYPE"></typeparam>
        /// <param name="propertyName"></param>
        /// <returns></returns>
        public ChildInstanceExpression Child <CONSTRUCTORARGUMENTTYPE>(string propertyName)
        {
            var child = new ChildInstanceExpression(this, propertyName);

            child.ChildType = typeof(CONSTRUCTORARGUMENTTYPE);

            return(child);
        }
        /// <summary>
        /// Start the definition of a child instance for type CONSTRUCTORARGUMENTTYPE
        /// </summary>
        /// <typeparam name="CONSTRUCTORARGUMENTTYPE"></typeparam>
        /// <returns></returns>
        public ChildInstanceExpression Child(Type dependencyType)
        {
            string propertyName = findPropertyName(dependencyType);

            ChildInstanceExpression child = Child(propertyName);

            child.ChildType = dependencyType;

            return(child);
        }