public static CachedComponentResolver Rent([NotNull] GameObject gameObject, DependencySource dependencySource) { if (gameObject == null) { throw new ArgumentNullException(nameof(gameObject)); } if (FreeResolvers.Count == 0) { return(new CachedComponentResolver(gameObject, dependencySource)); } var lastIndex = FreeResolvers.Count - 1; var resolver = FreeResolvers[lastIndex]; FreeResolvers.RemoveAt(lastIndex); FreeResolversSet.Remove(resolver); resolver.Clear(); resolver.GameObject = gameObject; resolver.DependencySource = dependencySource; return(resolver); }