function resolveFiles( files, idx, clbk ) {
	var count;
	var out;
	var len;
	var i;

	len = files.length;
	out = new Array( len );

	debug( 'Resolving %d files...', len );
	if ( len === 0 ) {
		return clbk( null, out, idx );
	}
	count = 0;
	for ( i = 0; i < len; i++ ) {
		debug( 'Resolving file: %s (%d of %d).', files[ i ], i+1, len );
		exists( files[ i ], createClbk( i ) );
	}
	/**
	* Returns a callback to be invoked upon determining if a file path exists.
	*
	* @private
	* @param {NonNegativeInteger} i - index
	* @returns {Callback} callback
	*/
	function createClbk( i ) {
		var file = files[ i ];
		var k = i + 1;

		return onExists;
		/**
		* Callback to be invoked upon determining if a file path exists.
		*
		* @private
		* @param {(Error|null)} error - error object
		* @param {boolean} bool - boolean indicating if a file path exists
		* @returns {void}
		*/
		function onExists( error, bool ) {
			if ( error ) {
				debug( 'Encountered an error while resolving file: %s (%d of %d). Error: %s', file, k, len, error.message );
				return clbk( error );
			}
			if ( !bool ) {
				debug( 'Unable to resolve file: %s (%d of %d). File does not exist.', file, k, len );
				error = new Error( format( 'unexpected error. File does not exist. Unable to resolve file: %s.', file ) );
				return clbk( error );
			}
			debug( 'Resolved file: %s (%d of %d). File: %s.', file, k, len, file );
			out[ i ] = file;

			count += 1;
			debug( 'Resolved %d of %d files.', count, len );
			if ( count === len ) {
				debug( 'Resolved all files.' );
				return clbk( null, out, idx );
			}
		}
	}
}
Resolves a list of files.

@private
@param {StringArray} files - list of absolute file paths
@param {NonNegativeInteger} idx - package index
@param {Callback} clbk - callback to invoke after resolving files
@returns {void}