code: ExecutionGroupEdge wireTo(final ExecutionGroupVertex groupVertex, final int indexOfInputGate,
  			final int indexOfOutputGate, final ChannelType channelType, final boolean userDefinedChannelType,
  			final DistributionPattern distributionPattern) throws GraphConversionException {
  
  		try {
  			final ExecutionGroupEdge previousEdge = this.forwardLinks.get(indexOfOutputGate);
  			if (previousEdge != null) {
  				throw new GraphConversionException("Output gate " + indexOfOutputGate + " of" + getName()
  						+ " already has an outgoing edge");
  			}
  		} catch (ArrayIndexOutOfBoundsException e) {
  			// Ignore exception
  		}
  
  		final ExecutionGroupEdge edge = new ExecutionGroupEdge(this, indexOfOutputGate, groupVertex, indexOfInputGate,
  			channelType, userDefinedChannelType, distributionPattern);
  
  		this.forwardLinks.add(edge);
  
  		groupVertex.wireBackLink(edge);
  
  		return edge;
  	}
docs: Wires this group vertex to the specified group vertex and creates
  a back link.
  
  @param groupVertex
  the group vertex that should be the target of the wiring
  @param indexOfInputGate
  the index of the consuming task's input gate
  @param indexOfOutputGate
  the index of the producing tasks's output gate
  @param channelType
  the channel type to be used for this edge
  @param userDefinedChannelType
  <code>true</code> if the channel type is user defined, <code>false</code> otherwise
  @param compressionLevel
  the compression level to be used for this edge
  @param userDefinedCompressionLevel
  <code>true</code> if the compression level is user defined, <code>false</code> otherwise
  @param distributionPattern
  the distribution pattern to create the wiring between the group members
  @param isBroadcast
  indicates that the edge is part of broadcast group
  @return the created edge.