/// <summary>
        /// return the list of undocumented types.
        /// </summary>
        /// <param name="declaration">the method declaration.</param>
        /// <returns>a string containing the missing parameters.</returns>
        private string GetUndocumentedTypes(MethodDeclarationSyntax declaration)
        {
            var commentSyntax = declaration.GetDocumentationCommentTriviaSyntax();
            var parameters = declaration
                .TypeParameterList
                ?.Parameters
                .Select(_ => _.Identifier.Text)
                .ToArray();
            var documentedParameter = commentSyntax
                .GetTypeParameterDocumentationElements()
                .Where(_ => _.GetXmlTextSyntaxLines().Any())
                .ToArray()
                .GetParameterNames();

            // check missing parameters.
            var missing = parameters
                .Except(documentedParameter)
                .Select(_ => $"'{_}'")
                .ToArray();
            if (missing.Any())
                return $"missing {string.Join(", ", missing)}";

            // check extra parameters.
            var extra = documentedParameter
                .Except(parameters)
                .Select(_ => $"'{_}'")
                .ToArray();

            if (extra.Any())
                return $"additional {string.Join(", ", extra)}";

            if (!declaration.HasVoidReturnType() && commentSyntax.GetReturnDocumentationElement() == null)
                return "missing return value documentation";

            return null;
        }
 /// <summary>
 /// Validate that the return value is present if necessary.
 /// </summary>
 /// <param name="declaration">the method declaration syntax.</param>
 /// <returns>true if the return value is correctly documented.</returns>
 private bool ValidateReturnValue(MethodDeclarationSyntax declaration)
 {
     if (declaration.HasVoidReturnType())
         return true; // void is valid regardless,
     return declaration
         .GetDocumentationCommentTriviaSyntax()
         .GetReturnDocumentationElement() != null;
 }