private IOutputType GetReturnType(
            MatchSelectionsContext context,
            FieldNode node,
            IOutputType type)
        {
            if (GetDirective(node, "_return") is DirectiveNode directive &&
                directive.Arguments.Count == 1 &&
                directive.Arguments[0] is { Name: { Value : "type" } } argument&&
                argument.Value is StringValueNode value)
            {
                ITypeNode     typeSyntax      = Utf8GraphQLParser.Syntax.ParseTypeReference(value.Value);
                NamedTypeNode namedTypeSyntax = typeSyntax.NamedType();
                var           named           = context.Schema.GetType <INamedOutputType>(namedTypeSyntax.Name.Value);
                return((IOutputType)typeSyntax.ToType(named));
            }

            return(type);
        }