- throw circularDependencyException when user tries to resolve a circular dependency
- make non-generic Resolve() method private
- add resolveStack to private Resolve() and ResolveInternal<>() methods and all methods in between their calls
try//exceptions thrown by methods called with invoke are wrapped into another exception, the exception thrown by the invoked method can be returned by `Exception.GetBaseException()`
<paramname="predicate">A function to test each element for a condition</param>
<returns>The first element of the <seecref="T:System.Collections.Generic.IEnumerable`1"/> or a new instance of the given <seecref="T:System.Type"/> when no element is found</returns>
A circular dependency was detected during <seecref="M:LightweightIocContainer.Interfaces.IIocContainer.Resolve``1"/>
</summary>
<paramname="resolvingType">The currently resolving <seecref="T:System.Type"/></param>
<paramname="resolveStack">The resolve stack at the time the <seecref="T:LightweightIocContainer.Exceptions.CircularDependencyException"/> was thrown</param>
<returns>An instance of the given <seecref="T:System.Type"/></returns>
<exceptioncref="T:LightweightIocContainer.Exceptions.InternalResolveException">Could not find function <seecref="M:LightweightIocContainer.IocContainer.ResolveInternal``1(System.Object[])"/></exception>
<paramname="resolveStack">The current resolve stack</param>
<returns>An instance of the given <seecref="T:System.Type"/></returns>
<exceptioncref="T:LightweightIocContainer.Exceptions.InternalResolveException">Could not find function <seecref="M:LightweightIocContainer.IocContainer.ResolveInternal``1(System.Object[])"/></exception>
<exceptioncref="T:LightweightIocContainer.Exceptions.InternalResolveException">Could not find function <seecref="M:LightweightIocContainer.IocContainer.ResolveInternal``1(System.Object[],System.Collections.Generic.List{System.Type})"/></exception>
<paramname="resolveStack">The current resolve stack</param>
<returns>An instance of the given registered <seecref="T:System.Type"/></returns>
<exceptioncref="T:LightweightIocContainer.Exceptions.TypeNotRegisteredException">The given <seecref="T:System.Type"/> is not registered in this <seecref="T:LightweightIocContainer.IocContainer"/></exception>
<exceptioncref="T:LightweightIocContainer.Exceptions.UnknownRegistrationException">The registration for the given <seecref="T:System.Type"/> has an unknown <seecref="T:System.Type"/></exception>
<paramname="resolveStack">The current resolve stack</param>
<returns>An array of all needed constructor arguments to create the <seecref="T:System.Type"/></returns>
<exceptioncref="T:LightweightIocContainer.Exceptions.NoMatchingConstructorFoundException">No matching constructor was found for the given or resolvable arguments</exception>