function find( files, opts, clbk ) { // eslint-disable-line stdlib/no-redeclare
	var total;
	var out;
	var i;

	total = files.length;
	i = -1;
	out = [];

	return next();

	/**
	* Checks the next package.
	*
	* @private
	*/
	function next() {
		var fpath;
		var dir;

		i += 1;
		debug( 'Searching package %d of %d: %s', i+1, total, files[ i ] );

		debug( 'Checking for a REPL help file...' );
		dir = dirname( files[ i ] );
		fpath = join( dir, opts.filename );
		exists( fpath, onExists );

		/**
		* Callback invoked after checking for a REPL help file.
		*
		* @private
		* @param {(Error|null)} error - error object
		* @param {boolean} bool - boolean indicating if a file exists
		*/
		function onExists( error, bool ) { // eslint-disable-line no-unused-vars
			if ( error ) {
				debug( 'Encountered an error when searching for a REPL help file. Directory: %s (%d of %d). Error: %s', dir, i+1, total, error.message );
			} else {
				debug( 'Found a package REPL help file.' );
				out.push( fpath );
			}
			done();
		}
	}

	/**
	* Callback invoked upon checking all packages.
	*
	* @private
	* @returns {void}
	*/
	function done() {
		var j = i + 1;
		if ( j < total ) {
			debug( 'Searched %d of %d packages.', j, total );
			return next();
		}
		debug( 'Successfully searched all packages.' );
		return clbk( null, out );
	}
}
Searches for REPL help files based on a list of `package.json` files.

@private
@param {StringArray} files - list of `package.json` files
@param {Options} opts - search options
@param {string} opts.filename - REPL help filename
@param {Callback} clbk - callback to invoke upon completion
@returns {void}