public void UnregisterChannelType(string remoteServiceType,
                                          Guid sessionGuid,
                                          bool requireLock)
        {
            IDisposable @lock = null;

            try
            {
                var pluginInst = RunningPluginMap.SafeGet(sessionGuid);

                if (pluginInst == null)
                {
                    throw new ArgumentException($"Plugin not found for service {remoteServiceType}");
                }

                if (requireLock)
                {
                    @lock = pluginInst.Lock.Lock();
                }

                pluginInst.InterfaceChannelMap.TryRemove(remoteServiceType, out _);
                InterfaceChannelMap.TryRemove(remoteServiceType, out _);

                Task.Run(() => NotifyServiceRevoked(remoteServiceType));
            }
            finally
            {
                @lock?.Dispose();
            }
        }