function main( context ) {
	/**
	* Reports the error message.
	*
	* @private
	* @param {ASTNode} node - node to report
	* @param {string} fcn - function name
	*/
	function report( node, fcn ) {
		context.report({
			'node': node,
			'message': 'Use the package `'+REPLACEMENTS[ fcn ]+'` instead of `Math.'+fcn+'`'
		});
	}

	/**
	* Checks whether a member expression of `Math` is encountered.
	*
	* @private
	* @param {ASTNode} node - node to examine
	*/
	function validate( node ) {
		if (
			// Use a "weak" test matching any object with the name `Math`, as we should never shadow the global math namespace in the first place:
			node.object.name === 'Math' &&
			!contains( EXCEPTIONS, node.property.name )
		) {
			report( node, node.property.name );
		}
	}

	return {
		'MemberExpression': validate
	};
}
Rule for validating that `stdlib` equivalents are used instead of the built-in global `Math` object.

@param {Object} context - ESLint context
@returns {Object} validators