private void ValidateRequiredArguments(
            ISyntaxNode parent,
            IEnumerable <ArgumentNode> providedArguments,
            IFieldCollection <IInputField> arguments)
        {
            ILookup <string, ArgumentNode> providedArgumentLookup =
                providedArguments.ToLookup(t => t.Name.Value);

            foreach (InputField requiredArgument in arguments
                     .Where(t => IsRequiredArgument(t)))
            {
                ArgumentNode providedArgument =
                    providedArgumentLookup[requiredArgument.Name]
                    .FirstOrDefault();

                if (providedArgument == null ||
                    providedArgument.Value is NullValueNode)
                {
                    Errors.Add(new ValidationError(
                                   $"The argument `{requiredArgument.Name}` is required " +
                                   "and does not allow null values.", parent));
                }
            }
        }