Program: 121547
Project: 121547
Buggy source:
private boolean isComponentNeedRepartion(IConnection con,Node needToPar){
  String partitioning=needToPar.getComponent().getPartitioning();
  if (partitioning.equals("String_Node_Str")) {
    if (existPreviousPar((Node)con.getSource()) || existPreviousDepar((Node)con.getSource()) || existPreviousRepar((Node)con.getSource())|| existPreviousNone((Node)con.getSource())) {
      return false;
    }
    return true;
  }
 else {
    boolean needRepar=false;
    if (getPreviousParCon(needToPar) != null) {
      String[] partitionKey=partitioning.split("String_Node_Str");
      IElementParameter parTableCon=getPreviousParCon(needToPar).getElementParameter("String_Node_Str");
      IElementParameter parTableNode=needToPar.getElementParameter(partitionKey[0]);
      if (parTableNode != null) {
        ElementParameter conElemForList=null;
        String clumnKeyListName="String_Node_Str";
        String clumnNodeListName=partitionKey[1];
        List<String> parKeyValues=new ArrayList<String>();
        List<String> columnKeyValues=new ArrayList<String>();
        for (        Map conColumnListMap : (List<Map>)parTableCon.getValue()) {
          if (conColumnListMap.get(clumnKeyListName) instanceof String) {
            parKeyValues.add((String)conColumnListMap.get(clumnKeyListName));
          }
          if (conElemForList != null && conColumnListMap.get(clumnKeyListName) instanceof Integer) {
            Integer index=(Integer)conColumnListMap.get(clumnKeyListName);
            parKeyValues.add((String)conElemForList.getListItemsValue()[index]);
          }
        }
        for (        Map nodeColumnListMap : (List<Map>)parTableNode.getValue()) {
          if ((String)nodeColumnListMap.get(clumnNodeListName) != null) {
            columnKeyValues.add((String)nodeColumnListMap.get(clumnNodeListName));
          }
        }
        if (columnKeyValues.size() > 0) {
          if (columnKeyValues.equals(parKeyValues)) {
            needRepar=false;
          }
 else {
            needRepar=true;
          }
        }
      }
    }
    return needRepar;
  }
}

Fixed version (ground truth):
private boolean isComponentNeedRepartion(IConnection con,Node needToPar){
  String partitioning=needToPar.getComponent().getPartitioning();
  if (partitioning.equals("String_Node_Str")) {
    if (existPreviousPar((Node)con.getSource()) || existPreviousDepar((Node)con.getSource()) || existPreviousRepar((Node)con.getSource())|| existPreviousNone((Node)con.getSource())) {
      return false;
    }
    return true;
  }
 else {
    boolean needRepar=false;
    if (getPreviousParCon(needToPar) != null) {
      String[] partitionKey=partitioning.split("String_Node_Str");
      IElementParameter parTableCon=getPreviousParCon(needToPar).getElementParameter("String_Node_Str");
      IElementParameter parTableNode=needToPar.getElementParameter(partitionKey[0]);
      if (parTableNode != null) {
        String clumnKeyListName="String_Node_Str";
        String clumnNodeListName=partitionKey[1];
        List<String> parKeyValues=new ArrayList<String>();
        List<String> columnKeyValues=new ArrayList<String>();
        for (        Map conColumnListMap : (List<Map>)parTableCon.getValue()) {
          if (conColumnListMap.get(clumnKeyListName) instanceof String) {
            parKeyValues.add((String)conColumnListMap.get(clumnKeyListName));
          }
        }
        for (        Map nodeColumnListMap : (List<Map>)parTableNode.getValue()) {
          if ((String)nodeColumnListMap.get(clumnNodeListName) != null) {
            columnKeyValues.add((String)nodeColumnListMap.get(clumnNodeListName));
          }
        }
        if (columnKeyValues.size() > 0) {
          if (columnKeyValues.equals(parKeyValues)) {
            needRepar=false;
          }
 else {
            needRepar=true;
          }
        }
      }
    }
    return needRepar;
  }
}