public TypeHandlerExtensionData()
            {
                var handlerTypeDescriptorProvider = new HandlerTypeDescriptorProvider(
                    new[] {
                    typeof(HandlerTypeDescriptorProvider).Assembly,
                    typeof(DebugAdapterRpcOptionsBase <>).Assembly,
                    typeof(DebugAdapterClient).Assembly,
                    typeof(DebugAdapterServer).Assembly,
                    typeof(DapReceiver).Assembly,
                    typeof(DebugAdapterProtocolTestBase).Assembly
                }
                    );

                foreach (var type in typeof(CompletionsArguments).Assembly.ExportedTypes
                         .Where(z => z.IsInterface && typeof(IJsonRpcHandler).IsAssignableFrom(z)))
                {
                    if (type.IsGenericTypeDefinition && !MethodAttribute.AllFrom(type).Any())
                    {
                        continue;
                    }
                    if (type == typeof(IProgressStartHandler) || type == typeof(IProgressUpdateHandler) || type == typeof(IProgressEndHandler))
                    {
                        continue;
                    }
                    var descriptor = handlerTypeDescriptorProvider.GetHandlerTypeDescriptor(type) !;

                    Add(
                        descriptor,
                        GetOnMethodName(descriptor),
                        GetSendMethodName(descriptor),
                        GetExtensionClass(descriptor),
                        GetExtensionClassName(descriptor).Substring(GetExtensionClassName(descriptor).LastIndexOf('.') + 1)
                        );
                }
            }
 internal LspHandlerTypeDescriptorProvider(IEnumerable <Assembly> assemblies)
 {
     KnownHandlers = HandlerTypeDescriptorProvider
                     .GetDescriptors(assemblies)
                     .Select(x => new LspHandlerTypeDescriptor(x.HandlerType) as ILspHandlerTypeDescriptor)
                     .ToLookup(x => x.Method, x => x, StringComparer.Ordinal);
 }
            public TypeHandlerData()
            {
                var handlerTypeDescriptorProvider = new HandlerTypeDescriptorProvider(
                    new[] {
                    typeof(HandlerTypeDescriptorProvider).Assembly,
                    typeof(DebugAdapterRpcOptionsBase <>).Assembly,
                    typeof(DebugAdapterClient).Assembly,
                    typeof(DebugAdapterServer).Assembly,
                    typeof(DapReceiver).Assembly,
                    typeof(DebugAdapterProtocolTestBase).Assembly
                }
                    );

                foreach (var type in typeof(CompletionsArguments).Assembly.ExportedTypes.Where(
                             z => z.IsInterface && typeof(IJsonRpcHandler).IsAssignableFrom(z)
                             ))
                {
                    if (type.IsGenericTypeDefinition && !MethodAttribute.AllFrom(type).Any())
                    {
                        continue;
                    }
                    if (type == typeof(IProgressStartHandler) || type == typeof(IProgressUpdateHandler) || type == typeof(IProgressEndHandler))
                    {
                        continue;
                    }

                    Add(handlerTypeDescriptorProvider.GetHandlerTypeDescriptor(type) !);
                }
            }