function next() {
		var fpath;
		var ext;
		var h;

		idx += 1;

		ext = extname( files[ idx ] ).slice( 1 ); // ignore leading `.`
		h = header[ ext ];
		if ( !h ) {
			// E.g., account for files such as `Makefile` which lack a filename extension...
			h = header[ basename( files[ idx ] ) ] || header.default || null;
		}
		if ( h ) {
			// Resolve an absolute filepath:
			fpath = resolve( dir, files[ idx ] );

			debug( 'Updating file (%d of %d): %s', idx+1, total, files[ idx ] );
			return readFile( fpath, FOPTS, onRead );
		}
		debug( 'Skipping file (%d of %d): %s', idx+1, total, files[ idx ] );
		return nextTick( done );

		/**
		* Callback invoked upon reading a file.
		*
		* @private
		* @param {(Error|null)} error - error object
		* @param {string} file - file contents
		* @returns {void}
		*/
		function onRead( error, file ) {
			if ( error ) {
				debug( 'Encountered an error when attempting to read file: %s. Error: %s', files[ idx ], error.message );
				return done( error );
			}
			file = insert( file, h );
			writeFile( fpath, file, FOPTS, onWrite );
		}
	}
Processes the next file.

@private
@returns {void}