Program: 189032
Project: 189032
Buggy source:
private ReturnValue getWorkflowFromXml(AbstractWorkflowDataModel wfdm,Element root){
  ReturnValue ret=new ReturnValue(ReturnValue.SUCCESS);
  Element filesE=root.getChild("String_Node_Str");
  if (filesE != null) {
    List<Element> fileES=filesE.getChildren();
    for (    Element fe : fileES) {
      SqwFile file0=new SqwFile();
      file0.setSourcePath(fe.getAttributeValue("String_Node_Str"));
      file0.setType(fe.getAttributeValue("String_Node_Str"));
      file0.setIsInput(Boolean.parseBoolean(fe.getAttributeValue("String_Node_Str")));
      if (fe.getAttribute("String_Node_Str") != null) {
        file0.setForceCopy(Boolean.parseBoolean(fe.getAttributeValue("String_Node_Str")));
      }
      wfdm.getFiles().put(fe.getAttributeValue("String_Node_Str"),file0);
    }
  }
  Element jobsE=root.getChild("String_Node_Str");
  Map<String,Job> jobsMap=new HashMap<String,Job>();
  if (jobsE != null) {
    List<Element> jobES=jobsE.getChildren();
    for (    Element je : jobES) {
      Job job=this.createJobFromElement(je,wfdm.getWorkflow());
      jobsMap.put(je.getAttributeValue("String_Node_Str").trim(),job);
    }
    for (    Element je : jobES) {
      List<Element> parents=je.getChildren("String_Node_Str");
      Job job=jobsMap.get(je.getAttributeValue("String_Node_Str"));
      if (parents != null) {
        for (        Element parentE : parents) {
          Job parent=jobsMap.get(parentE.getText().trim());
          job.addParent(parent);
        }
      }
    }
  }
  return ret;
}

Fixed version (ground truth):
private ReturnValue getWorkflowFromXml(AbstractWorkflowDataModel wfdm,Element root){
  ReturnValue ret=new ReturnValue(ReturnValue.SUCCESS);
  Element filesE=root.getChild("String_Node_Str");
  if (filesE != null) {
    List<Element> fileES=filesE.getChildren();
    for (    Element fe : fileES) {
      SqwFile file0=new SqwFile();
      file0.setSourcePath(fe.getAttributeValue("String_Node_Str"));
      file0.setType(fe.getAttributeValue("String_Node_Str"));
      file0.setIsInput(Boolean.parseBoolean(fe.getAttributeValue("String_Node_Str")));
      if (fe.getAttribute("String_Node_Str") != null) {
        file0.setForceCopy(Boolean.parseBoolean(fe.getAttributeValue("String_Node_Str")));
      }
      wfdm.getFiles().put(fe.getAttributeValue("String_Node_Str"),file0);
    }
  }
  Element dirsE=root.getChild("String_Node_Str");
  if (dirsE != null) {
    List<Element> dirs=dirsE.getChildren();
    for (    Element dir : dirs) {
      wfdm.addDirectory(dir.getText());
    }
  }
  Element jobsE=root.getChild("String_Node_Str");
  Map<String,Job> jobsMap=new HashMap<String,Job>();
  if (jobsE != null) {
    List<Element> jobES=jobsE.getChildren();
    for (    Element je : jobES) {
      Job job=this.createJobFromElement(je,wfdm.getWorkflow());
      jobsMap.put(je.getAttributeValue("String_Node_Str").trim(),job);
    }
    for (    Element je : jobES) {
      List<Element> parents=je.getChildren("String_Node_Str");
      Job job=jobsMap.get(je.getAttributeValue("String_Node_Str"));
      if (parents != null) {
        for (        Element parentE : parents) {
          Job parent=jobsMap.get(parentE.getText().trim());
          job.addParent(parent);
        }
      }
    }
  }
  return ret;
}