public override void OnBeforeCompleteName(
            ITypeCompletionContext completionContext,
            DefinitionBase?definition,
            IDictionary <string, object?> contextData)
        {
            if (definition is FilterInputTypeDefinition def)
            {
                IFilterConvention convention = GetConvention(
                    completionContext.DescriptorContext,
                    def.Scope);

                var descriptor = FilterInputTypeDescriptor.New(
                    completionContext.DescriptorContext,
                    def.EntityType,
                    def.Scope);

                SchemaTypeReference typeReference = TypeReference.Create(
                    completionContext.Type,
                    def.Scope);

                convention.ApplyConfigurations(typeReference, descriptor);

                DataTypeExtensionHelper.MergeFilterInputTypeDefinitions(
                    completionContext,
                    descriptor.CreateDefinition(),
                    def);

                if (def.Scope is not null)
                {
                    definition.Name = completionContext.Scope +
                                      "_" +
                                      definition.Name;
                }
            }
        }
        public override void OnBeforeRegisterDependencies(
            ITypeDiscoveryContext discoveryContext,
            DefinitionBase?definition,
            IDictionary <string, object?> contextData)
        {
            if (definition is FilterInputTypeDefinition def)
            {
                IFilterConvention convention = GetConvention(
                    discoveryContext.DescriptorContext,
                    def.Scope);

                SchemaTypeReference typeReference = TypeReference.Create(
                    discoveryContext.Type,
                    def.Scope);

                var descriptor = FilterInputTypeDescriptor.New(
                    discoveryContext.DescriptorContext,
                    def.EntityType,
                    def.Scope);

                convention.ApplyConfigurations(typeReference, descriptor);

                FilterInputTypeDefinition extensionDefinition = descriptor.CreateDefinition();

                discoveryContext.RegisterDependencies(extensionDefinition);
            }
        }
        protected override InputObjectTypeDefinition CreateDefinition(
            ITypeDiscoveryContext context)
        {
            var descriptor = FilterInputTypeDescriptor <T> .New(
                context.DescriptorContext,
                context.Scope,
                typeof(T));

            _configure(descriptor);
            return(descriptor.CreateDefinition());
        }