public static IAssemblyGraphBuilder GetOrCreate(string projectPath,
                                                        IReadOnlyCollection <CustomScriptAssembly> assemblies,
                                                        IReadOnlyCollection <CustomScriptAssemblyReference> customScriptAssemblyReferences)
        {
            var assemblyGraphBuilderKey = new AssemblyGraphBuilderKey
            {
                projectPath = projectPath,
                assemblies  = assemblies,
                customScriptAssemblyReferences = customScriptAssemblyReferences,
            };

            if (!m_AlreadyInitializedAssemblyGraphBuilder.TryGetValue(assemblyGraphBuilderKey,
                                                                      out var assemblyGraphBuilder))
            {
                assemblyGraphBuilder = new AssemblyGraphBuilder(projectPath);
                assemblyGraphBuilder.Initialize(assemblies, customScriptAssemblyReferences);
                m_AlreadyInitializedAssemblyGraphBuilder[assemblyGraphBuilderKey] = assemblyGraphBuilder;
            }

            return(assemblyGraphBuilder);
        }
 public bool Equals(AssemblyGraphBuilderKey other)
 {
     return(string.Equals(projectPath, other.projectPath, StringComparison.Ordinal) &&
            assemblies.SequenceEqual(other.assemblies) &&
            customScriptAssemblyReferences.SequenceEqual(other.customScriptAssemblyReferences));
 }