private static void DeclareFields(
            ITypeBindingInfo bindingInfo,
            IInputObjectTypeDescriptor typeDescriptor,
            InputObjectTypeDefinitionNode node)
        {
            foreach (InputValueDefinitionNode inputField in node.Fields)
            {
                bindingInfo.TrackField(inputField.Name.Value);

                IInputFieldDescriptor descriptor = typeDescriptor
                                                   .Field(inputField.Name.Value)
                                                   .Description(inputField.Description?.Value)
                                                   .Type(inputField.Type)
                                                   .DefaultValue(inputField.DefaultValue)
                                                   .SyntaxNode(inputField);

                if (bindingInfo.TryGetFieldProperty(
                        inputField.Name.Value,
                        MemberKind.InputObjectField,
                        out PropertyInfo p))
                {
                    descriptor.Extend().OnBeforeCreate(
                        t => t.Property = p);
                }

                foreach (DirectiveNode directive in inputField.Directives)
                {
                    descriptor.Directive(directive);
                }
            }
        }
        private void DeclareFields(
            IInputObjectTypeDescriptor typeDescriptor,
            InputObjectTypeDefinitionNode node)
        {
            foreach (InputValueDefinitionNode inputField in node.Fields)
            {
                IInputFieldDescriptor descriptor = typeDescriptor
                                                   .Field(inputField.Name.Value)
                                                   .Description(inputField.Description?.Value)
                                                   .Type(inputField.Type)
                                                   .DefaultValue(inputField.DefaultValue)
                                                   .SyntaxNode(inputField);

                foreach (DirectiveNode directive in inputField.Directives)
                {
                    descriptor.Directive(directive);
                }
            }
        }