private EnvironmentPool FindEnvironmentPool(BuildEnvironment environment)
        {
            var entry = new EnvironmentPoolEntry(environment.ProjectFile, environment.Platform, environment.SourceGenerators.Select(Path.GetFullPath).ToArray());

            var collection = GetEnvironmentPool(entry);

            if (collection.IsInvalid)
            {
                this.Log().Debug("Discarding source generation host, generators files have been modified");

                _domains.TryRemove(entry, out collection);

                UnloadHosts(collection);

                collection = GetEnvironmentPool(entry);
            }

            return(collection);
        }
 private static EnvironmentPool GetEnvironmentPool(EnvironmentPoolEntry entry)
 => _domains.TryGetValue(entry, out var hosts)
                         ? hosts
                         : _domains[entry] = new EnvironmentPool(entry);