Program: 56098
Project: 56098
Buggy source:
/** 
 * 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
 */
public void wireTo(ExecutionGroupVertex groupVertex,int indexOfInputGate,int indexOfOutputGate,ChannelType channelType,boolean userDefinedChannelType,CompressionLevel compressionLevel,boolean userDefinedCompressionLevel) throws GraphConversionException {
  List<ExecutionGroupEdge> edges=this.getForwardEdges(groupVertex);
  if (edges.size() > 0) {
    if (channelType != edges.get(0).getChannelType()) {
      if (userDefinedChannelType) {
        throw new GraphConversionException("String_Node_Str" + getName() + "String_Node_Str"+ groupVertex+ "String_Node_Str");
      }
 else {
        channelType=edges.get(0).getChannelType();
      }
    }
  }
  final ExecutionGroupEdge edge=new ExecutionGroupEdge(this.executionGraph,this,indexOfOutputGate,groupVertex,indexOfInputGate,channelType,userDefinedChannelType,compressionLevel,userDefinedCompressionLevel);
synchronized (this.forwardLinks) {
    this.forwardLinks.add(edge);
  }
  groupVertex.wireBackLink(edge);
}

Fixed version (ground truth):
/** 
 * 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
 */
public void wireTo(ExecutionGroupVertex groupVertex,int indexOfInputGate,int indexOfOutputGate,ChannelType channelType,boolean userDefinedChannelType,CompressionLevel compressionLevel,boolean userDefinedCompressionLevel) throws GraphConversionException {
synchronized (this.forwardLinks) {
    if (indexOfOutputGate < this.forwardLinks.size()) {
      final ExecutionGroupEdge previousEdge=this.forwardLinks.get(indexOfOutputGate);
      if (previousEdge != null) {
        throw new GraphConversionException("String_Node_Str" + indexOfOutputGate + "String_Node_Str"+ getName()+ "String_Node_Str");
      }
    }
  }
  final ExecutionGroupEdge edge=new ExecutionGroupEdge(this.executionGraph,this,indexOfOutputGate,groupVertex,indexOfInputGate,channelType,userDefinedChannelType,compressionLevel,userDefinedCompressionLevel);
synchronized (this.forwardLinks) {
    this.forwardLinks.add(edge);
  }
  groupVertex.wireBackLink(edge);
}