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();
            }
        }
        /// <inheritdoc />
        public string GetService(string remoteInterfaceType)
        {
            if (remoteInterfaceType == null)
            {
                throw new ArgumentNullException(nameof(remoteInterfaceType));
            }

            return(InterfaceChannelMap.SafeGet(remoteInterfaceType));
        }