function checkFunction(node) {
			const hasVoidThisParam =
				node.params.length > 0 &&
				node.params[0].type === "Identifier" &&
				node.params[0].name === "this" &&
				node.params[0].typeAnnotation?.typeAnnotation.type ===
					"TSVoidKeyword";

			const effectiveParamCount =
				hasVoidThisParam && !countVoidThis
					? node.params.length - 1
					: node.params.length;

			if (effectiveParamCount > numParams) {
				context.report({
					loc: astUtils.getFunctionHeadLoc(node, sourceCode),
					node,
					messageId: "exceed",
					data: {
						name: upperCaseFirst(
							astUtils.getFunctionNameWithKind(node),
						),
						count: effectiveParamCount,
						max: numParams,
					},
				});
			}
		}
Checks a function to see if it has too many parameters.
@param {ASTNode} node The node to check.
@returns {void}
@private