code: private BlockingBackChannel initBackChannel() throws Exception {
  
  		/* get the size of the memory available to the backchannel */
  		int backChannelMemoryPages = getMemoryManager().computeNumberOfPages(this.config.getBackChannelMemory());
  
  		/* allocate the memory available to the backchannel */
  		List<MemorySegment> segments = new ArrayList<MemorySegment>();
  		int segmentSize = getMemoryManager().getPageSize();
  		getMemoryManager().allocatePages(this, segments, backChannelMemoryPages);
  
  		/* instantiate the backchannel */
  		BlockingBackChannel backChannel = new BlockingBackChannel(new SerializedUpdateBuffer(segments, segmentSize,
  			getIOManager()));
  
  		/* hand the backchannel over to the iteration tail */
  		Broker<BlockingBackChannel> broker = BlockingBackChannelBroker.instance();
  		broker.handIn(brokerKey(), backChannel);
  
  		return backChannel;
  	}
docs: the iteration head prepares the backchannel: it allocates memory, instantiates a {@link BlockingBackChannel} and
  hands it to the iteration tail via a {@link Broker} singleton