function main( context ) {
	/**
	* Reports the error message.
	*
	* @private
	* @param {ASTNode} node - node to report
	*/
	function report( node ) {
		context.report({
			'node': node,
			'message': '`Array` constructor is invoked without the `new` keyword',
			'fix': fix
		});

		/**
		* Fixes the error message.
		*
		* @private
		* @param {Function} fixer - ESLint fixer
		* @returns {Object} fix
		*/
		function fix( fixer ) {
			return fixer.insertTextBefore( node, 'new ' );
		}
	}

	/**
	* Checks whether the `Array` constructor is invoked without the `new` keyword.
	*
	* @private
	* @param {ASTNode} node - node to examine
	*/
	function validate( node ) {
		var calleeName = extractName( node );
		if ( isString( calleeName ) && calleeName === 'Array' ) {
			report( node );
		}
	}

	return {
		'CallExpression': validate
	};
}
Rule for validating that `Array` constructor calls are not invoked without the `new` keyword.

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