docs: private ChannelWithMeta mergeChannels(List<ChannelWithMeta> channelIDs) throws IOException {
  		// the list with the target iterators
  		List<FileIOChannel> openChannels = new ArrayList<>(channelIDs.size());
  		final BinaryMergeIterator<Entry> mergeIterator =
  				getMergingIterator(channelIDs, openChannels);
  
  		// create a new channel writer
  		final FileIOChannel.ID mergedChannelID = ioManager.createChannel();
  		channelManager.addChannel(mergedChannelID);
  		AbstractChannelWriterOutputView output = null;
  
  		int numBytesInLastBlock;
  		int numBlocksWritten;
  		try {
  			output = FileChannelUtil.createOutputView(
  					ioManager, mergedChannelID, compressionEnable,
  					compressionCodecFactory, compressionBlockSize, pageSize);
  			writeMergingOutput(mergeIterator, output);
  			numBytesInLastBlock = output.close();
  			numBlocksWritten = output.getBlockCount();
  		} catch (IOException e) {
  			if (output != null) {
  				output.close();
  				output.getChannel().deleteChannel();
  			}
  			throw e;
  		}
  
  		// remove, close and delete channels
  		for (FileIOChannel channel : openChannels) {
  			channelManager.removeChannel(channel.getChannelID());
  			try {
  				channel.closeAndDelete();
  			} catch (Throwable ignored) {
  			}
  		}
  
  		return new ChannelWithMeta(mergedChannelID, numBlocksWritten, numBytesInLastBlock);
  	}