- 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