// called when an inline assembly is updated
        public static void HandleAssemblyUpdated(string pluginAssemblyInstanceId, List <PluginInfo> pluginList)
        {
            lock (GlobalRegistrations)
            {
                if (GlobalRegistrations.ContainsKey(pluginAssemblyInstanceId))
                {
                    GlobalRegistrations[pluginAssemblyInstanceId].Clear();
                }
                else
                {
                    GlobalRegistrations.Add(pluginAssemblyInstanceId, new List <ServerMethodPluginRegistration>());
                }

                pluginList.ForEach(pluginInfo =>
                {
                    var reg = ServerMethodPluginRegistration.Create(pluginAssemblyInstanceId, pluginInfo);

                    GlobalRegistrations[pluginAssemblyInstanceId].Add(reg);
                });
            }

            lock (EndpointInstanceUse)
            {
                if (EndpointInstanceUse.ContainsKey(pluginAssemblyInstanceId))
                {
                    foreach (var ep in EndpointInstanceUse[pluginAssemblyInstanceId])
                    {
                        ep.HandleAssemblyUpdated(pluginAssemblyInstanceId);
                    }

                    EndpointInstanceUse.Remove(pluginAssemblyInstanceId);
                }
            }
        }
        public static void Register(string pluginAssemblyInstanceId, PluginInfo pluginInfo)
        {
            try
            {
                var reg = ServerMethodPluginRegistration.Create(pluginAssemblyInstanceId, pluginInfo);

                lock (GlobalRegistrations)
                {
                    if (!GlobalRegistrations.ContainsKey(pluginAssemblyInstanceId))
                    {
                        GlobalRegistrations.Add(pluginAssemblyInstanceId, new List <ServerMethodPluginRegistration>());
                    }

                    GlobalRegistrations[pluginAssemblyInstanceId].Add(reg);
                }
            }
            catch (Exception ex)
            {
                SessionLog.Error($"Failed to instantiate plugin '{pluginInfo.Name}' ({pluginInfo.Guid}) from assembly {pluginInfo.Assembly.FullName}. See exception that follows.");
                SessionLog.Exception(ex);
            }
        }