Program: 122374
Project: 122374
Buggy source:
/** 
 * nrousseau Comment method "setMultipleComponentParameters".
 * @param multipleComponentManager
 * @param itemsMap
 * @param graphicalNode
 */
private void setMultipleComponentParameters(IMultipleComponentManager multipleComponentManager,Map<IMultipleComponentItem,AbstractNode> itemsMap,INode graphicalNode){
  List<IMultipleComponentItem> itemList=multipleComponentManager.getItemList();
  boolean targetFound;
  INode targetNode=null;
  for (int i=0; i < itemList.size(); i++) {
    targetNode=itemsMap.get(itemList.get(i));
    if (itemList.get(i).getOutputConnections().size() > 0)     targetNode.setVirtualLinkTo(EConnectionType.getTypeFromName(itemList.get(i).getOutputConnections().get(0).getConnectionType()));
    targetFound=false;
    if (targetNode != null) {
      for (int j=0; j < targetNode.getElementParameters().size() && !targetFound; j++) {
        if (targetNode.getElementParameters().get(j).getName().equals(EParameterName.TSTATCATCHER_STATS.getName())) {
          IElementParameter param=targetNode.getElementParameters().get(j);
          boolean statsFound=false;
          for (int k=0; k < graphicalNode.getElementParameters().size() && !statsFound; k++) {
            IElementParameter currentParam=graphicalNode.getElementParameters().get(k);
            if (currentParam.getName().equals(EParameterName.TSTATCATCHER_STATS.getName())) {
              param.setValue(currentParam.getValue());
              statsFound=true;
            }
          }
          targetFound=true;
        }
      }
    }
 else {
      return;
    }
  }
  for (  IMultipleComponentParameter param : multipleComponentManager.getParamList()) {
    INode sourceNode=null;
    boolean sourceFound=false;
    targetFound=false;
    for (int i=0; i < itemList.size() && !targetFound; i++) {
      if (itemList.get(i).getName().equals(param.getTargetComponent())) {
        targetNode=itemsMap.get(itemList.get(i));
        targetFound=true;
      }
    }
    if (param.getSourceComponent() != null) {
      if (param.getSourceComponent().equals("String_Node_Str")) {
        sourceNode=graphicalNode;
      }
 else {
        for (int i=0; i < itemList.size() && !sourceFound; i++) {
          if (itemList.get(i).getName().equals(param.getSourceComponent())) {
            sourceNode=itemsMap.get(itemList.get(i));
            sourceFound=true;
          }
        }
      }
      if ((sourceNode != null) && (targetNode != null)) {
        sourceFound=false;
        targetFound=false;
        IElementParameter paramSource=null, paramTarget=null;
        for (int i=0; i < sourceNode.getElementParameters().size() && !sourceFound; i++) {
          if (sourceNode.getElementParameters().get(i).getName().equals(param.getSourceValue())) {
            paramSource=sourceNode.getElementParameters().get(i);
            sourceFound=true;
          }
        }
        for (int i=0; i < targetNode.getElementParameters().size() && !targetFound; i++) {
          if (targetNode.getElementParameters().get(i).getName().equals(param.getTargetValue())) {
            paramTarget=targetNode.getElementParameters().get(i);
            targetFound=true;
          }
        }
        if ((paramSource != null) && (paramTarget != null)) {
          paramTarget.setDefaultClosedListValue(paramSource.getDefaultClosedListValue());
          paramTarget.setListItemsDisplayCodeName(paramSource.getListItemsDisplayCodeName());
          paramTarget.setListItemsValue(paramSource.getListItemsValue());
          if (multipleComponentManager.isSetConnector() && param.getSourceComponent().equals("String_Node_Str") && param.getSourceValue().equals("String_Node_Str")&& param.getTargetValue().equals("String_Node_Str")) {
            paramTarget.setValue(paramSource.getValue() + multipleComponentManager.getConnector());
          }
 else {
            paramTarget.setValue(paramSource.getValue());
          }
        }
        if ((paramSource == null) && (paramTarget != null)) {
          if (param.getSourceValue().endsWith("String_Node_Str")) {
            paramTarget.setValue(sourceNode.getElementParameter(param.getSourceValue()).getValue());
          }
        }
      }
    }
 else {
      if (param.getSourceValue() != null && targetFound) {
        targetFound=false;
        IElementParameter paramTarget=null;
        for (int i=0; i < targetNode.getElementParameters().size() && !targetFound; i++) {
          if (targetNode.getElementParameters().get(i).getName().equals(param.getTargetValue())) {
            paramTarget=targetNode.getElementParameters().get(i);
            targetFound=true;
          }
        }
        if (paramTarget != null) {
          paramTarget.setValue(param.getSourceValue());
        }
      }
    }
  }
}

Fixed version (ground truth):
/** 
 * nrousseau Comment method "setMultipleComponentParameters".
 * @param multipleComponentManager
 * @param itemsMap
 * @param graphicalNode
 */
private void setMultipleComponentParameters(IMultipleComponentManager multipleComponentManager,Map<IMultipleComponentItem,AbstractNode> itemsMap,INode graphicalNode){
  List<IMultipleComponentItem> itemList=multipleComponentManager.getItemList();
  boolean targetFound;
  INode targetNode=null;
  for (int i=0; i < itemList.size(); i++) {
    targetNode=itemsMap.get(itemList.get(i));
    if (itemList.get(i).getOutputConnections().size() > 0) {
      targetNode.setVirtualLinkTo(EConnectionType.getTypeFromName(itemList.get(i).getOutputConnections().get(0).getConnectionType()));
    }
    targetFound=false;
    if (targetNode != null) {
      for (int j=0; j < targetNode.getElementParameters().size() && !targetFound; j++) {
        if (targetNode.getElementParameters().get(j).getName().equals(EParameterName.TSTATCATCHER_STATS.getName())) {
          IElementParameter param=targetNode.getElementParameters().get(j);
          boolean statsFound=false;
          for (int k=0; k < graphicalNode.getElementParameters().size() && !statsFound; k++) {
            IElementParameter currentParam=graphicalNode.getElementParameters().get(k);
            if (currentParam.getName().equals(EParameterName.TSTATCATCHER_STATS.getName())) {
              param.setValue(currentParam.getValue());
              statsFound=true;
            }
          }
          targetFound=true;
        }
      }
    }
 else {
      return;
    }
  }
  for (  IMultipleComponentParameter param : multipleComponentManager.getParamList()) {
    INode sourceNode=null;
    boolean sourceFound=false;
    targetFound=false;
    for (int i=0; i < itemList.size() && !targetFound; i++) {
      if (itemList.get(i).getName().equals(param.getTargetComponent())) {
        targetNode=itemsMap.get(itemList.get(i));
        targetFound=true;
      }
    }
    if (param.getSourceComponent() != null) {
      if (param.getSourceComponent().equals("String_Node_Str")) {
        sourceNode=graphicalNode;
      }
 else {
        for (int i=0; i < itemList.size() && !sourceFound; i++) {
          if (itemList.get(i).getName().equals(param.getSourceComponent())) {
            sourceNode=itemsMap.get(itemList.get(i));
            sourceFound=true;
          }
        }
      }
      if ((sourceNode != null) && (targetNode != null)) {
        sourceFound=false;
        targetFound=false;
        IElementParameter paramSource=null, paramTarget=null;
        for (int i=0; i < sourceNode.getElementParameters().size() && !sourceFound; i++) {
          if (sourceNode.getElementParameters().get(i).getName().equals(param.getSourceValue())) {
            paramSource=sourceNode.getElementParameters().get(i);
            sourceFound=true;
          }
        }
        for (int i=0; i < targetNode.getElementParameters().size() && !targetFound; i++) {
          if (targetNode.getElementParameters().get(i).getName().equals(param.getTargetValue())) {
            paramTarget=targetNode.getElementParameters().get(i);
            targetFound=true;
          }
        }
        if ((paramSource != null) && (paramTarget != null)) {
          paramTarget.setDefaultClosedListValue(paramSource.getDefaultClosedListValue());
          paramTarget.setListItemsDisplayCodeName(paramSource.getListItemsDisplayCodeName());
          paramTarget.setListItemsValue(paramSource.getListItemsValue());
          if (multipleComponentManager.isSetConnector() && param.getSourceComponent().equals("String_Node_Str") && param.getSourceValue().equals("String_Node_Str")&& param.getTargetValue().equals("String_Node_Str")) {
            paramTarget.setValue(paramSource.getValue() + multipleComponentManager.getConnector());
          }
 else {
            paramTarget.setValue(paramSource.getValue());
          }
        }
        if ((paramSource == null) && (paramTarget != null)) {
          if (param.getSourceValue().endsWith("String_Node_Str")) {
            paramTarget.setValue(sourceNode.getElementParameter(param.getSourceValue()).getValue());
          }
        }
      }
    }
 else {
      if (param.getSourceValue() != null && targetFound) {
        targetFound=false;
        IElementParameter paramTarget=null;
        for (int i=0; i < targetNode.getElementParameters().size() && !targetFound; i++) {
          if (targetNode.getElementParameters().get(i).getName().equals(param.getTargetValue())) {
            paramTarget=targetNode.getElementParameters().get(i);
            targetFound=true;
          }
        }
        if (paramTarget != null) {
          paramTarget.setValue(param.getSourceValue());
        }
      }
    }
  }
}