Program: 87706
Project: 87706
Buggy source:
void wire(final ExecutionGroupVertex source,final int indexOfOutputGate,final ExecutionGroupVertex target,final int indexOfInputGate,final ChannelType channelType,final CompressionLevel compressionLevel) throws GraphConversionException {
  for (int i=0; i < source.getCurrentNumberOfGroupMembers(); i++) {
    final ExecutionVertex sourceVertex=source.getGroupMember(i);
    final OutputGate<? extends Record> outputGate=sourceVertex.getEnvironment().getOutputGate(indexOfOutputGate);
    if (outputGate == null) {
      throw new GraphConversionException("String_Node_Str" + sourceVertex.getName() + "String_Node_Str"+ indexOfOutputGate);
    }
    if (outputGate.getNumberOfOutputChannels() > 0) {
      throw new GraphConversionException("String_Node_Str" + sourceVertex.getName() + "String_Node_Str"+ i+ "String_Node_Str"+ outputGate.getNumberOfOutputChannels()+ "String_Node_Str");
    }
    for (int j=0; j < target.getCurrentNumberOfGroupMembers(); j++) {
      final ExecutionVertex targetVertex=target.getGroupMember(j);
      final InputGate<? extends Record> inputGate=targetVertex.getEnvironment().getInputGate(indexOfInputGate);
      if (inputGate == null) {
        throw new GraphConversionException("String_Node_Str" + targetVertex.getName() + "String_Node_Str"+ indexOfInputGate);
      }
      if (inputGate.getNumberOfInputChannels() > 0 && i == 0) {
        throw new GraphConversionException("String_Node_Str" + targetVertex.getName() + "String_Node_Str"+ j+ "String_Node_Str"+ inputGate.getNumberOfInputChannels()+ "String_Node_Str");
      }
      if (inputGate.getDistributionPattern().createWire(i,j,source.getCurrentNumberOfGroupMembers(),target.getCurrentNumberOfGroupMembers())) {
        createChannel(sourceVertex,outputGate,targetVertex,inputGate,channelType,compressionLevel);
      }
      inputGate.setChannelType(channelType);
    }
    outputGate.setChannelType(channelType);
  }
}

Fixed version (ground truth):
void wire(final ExecutionGroupVertex source,final int indexOfOutputGate,final ExecutionGroupVertex target,final int indexOfInputGate,final ChannelType channelType,final CompressionLevel compressionLevel) throws GraphConversionException {
  for (int i=0; i < source.getCurrentNumberOfGroupMembers(); i++) {
    final ExecutionVertex sourceVertex=source.getGroupMember(i);
    final OutputGate<? extends Record> outputGate=sourceVertex.getEnvironment().getOutputGate(indexOfOutputGate);
    if (outputGate == null) {
      throw new GraphConversionException("String_Node_Str" + sourceVertex.getName() + "String_Node_Str"+ indexOfOutputGate);
    }
    if (outputGate.getNumberOfOutputChannels() > 0) {
      throw new GraphConversionException("String_Node_Str" + sourceVertex.getName() + "String_Node_Str"+ i+ "String_Node_Str"+ outputGate.getNumberOfOutputChannels()+ "String_Node_Str");
    }
    for (int j=0; j < target.getCurrentNumberOfGroupMembers(); j++) {
      final ExecutionVertex targetVertex=target.getGroupMember(j);
      final InputGate<? extends Record> inputGate=targetVertex.getEnvironment().getInputGate(indexOfInputGate);
      if (inputGate == null) {
        throw new GraphConversionException("String_Node_Str" + targetVertex.getName() + "String_Node_Str"+ indexOfInputGate);
      }
      if (inputGate.getNumberOfInputChannels() > 0 && i == 0) {
        throw new GraphConversionException("String_Node_Str" + targetVertex.getName() + "String_Node_Str"+ j+ "String_Node_Str"+ inputGate.getNumberOfInputChannels()+ "String_Node_Str");
      }
      if (inputGate.getDistributionPattern().createWire(i,j,source.getCurrentNumberOfGroupMembers(),target.getCurrentNumberOfGroupMembers())) {
        createChannel(sourceVertex,outputGate,targetVertex,inputGate,channelType,compressionLevel);
      }
      inputGate.setChannelType(channelType);
    }
    outputGate.setChannelType(channelType);
    sourceVertex.checkInitialCheckpointState();
  }
}