Program: 184253
Project: 184253
Buggy source:
public BonitaFormParcer(byte[] procBytes){
  try {
    DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
    DocumentBuilder db=dbf.newDocumentBuilder();
    Document doc=db.parse(new ByteArrayInputStream(procBytes));
    doc.getDocumentElement().normalize();
    Node mainProcess=doc.getElementsByTagName("String_Node_Str").item(0);
    NodeList processNodes=mainProcess.getChildNodes();
    for (int i=0; i < processNodes.getLength(); i++) {
      if (processNodes.item(i) != null && processNodes.item(i).getNodeName().equals("String_Node_Str") && processNodes.item(i).getAttributes().getNamedItem("String_Node_Str").getNodeValue().equals("String_Node_Str")) {
        Node processNode=processNodes.item(i);
        process=new XMLProcessDefinition(processNode.getAttributes().getNamedItem("String_Node_Str").getNodeValue(),processNode.getAttributes().getNamedItem("String_Node_Str").getNodeValue());
        process.setByPassFormsGeneration(processNode.getAttributes().getNamedItem("String_Node_Str") != null && processNode.getAttributes().getNamedItem("String_Node_Str").getNodeValue().equals("String_Node_Str"));
        NodeList processChilds=processNode.getChildNodes();
        for (int y=0; y < processChilds.getLength(); y++) {
          if (processChilds.item(y).getNodeName().equals("String_Node_Str") && processChilds.item(y).getAttributes().getNamedItem("String_Node_Str").getNodeValue().equals("String_Node_Str")) {
            Node nodeTask=processChilds.item(y);
            if (nodeTask.getChildNodes().getLength() > 0) {
              XMLTaskDefinition task=new XMLTaskDefinition(nodeTask.getAttributes().getNamedItem("String_Node_Str").getNodeValue(),nodeTask.getAttributes().getNamedItem("String_Node_Str").getNodeValue());
              task.setByPassFormsGeneration(nodeTask.getAttributes().getNamedItem("String_Node_Str") != null && nodeTask.getAttributes().getNamedItem("String_Node_Str").getNodeValue().equals("String_Node_Str"));
              process.addTask(nodeTask.getAttributes().getNamedItem("String_Node_Str").getNodeValue(),task);
            }
          }
 else           if (processChilds.item(y).getNodeName().equals("String_Node_Str") && processChilds.item(y).getAttributes().getNamedItem("String_Node_Str").getNodeValue().equals("String_Node_Str")) {
            NodeList laneChilds=processChilds.item(y).getChildNodes();
            for (int z=0; z < laneChilds.getLength(); z++) {
              if (laneChilds.item(z).getNodeName().equals("String_Node_Str") && laneChilds.item(z).getAttributes().getNamedItem("String_Node_Str").getNodeValue().equals("String_Node_Str")) {
                Node nodeTask=laneChilds.item(z);
                if (nodeTask.getChildNodes().getLength() > 0) {
                  XMLTaskDefinition task=new XMLTaskDefinition(nodeTask.getAttributes().getNamedItem("String_Node_Str").getNodeValue(),nodeTask.getAttributes().getNamedItem("String_Node_Str").getNodeValue());
                  task.setByPassFormsGeneration(nodeTask.getAttributes().getNamedItem("String_Node_Str") != null && nodeTask.getAttributes().getNamedItem("String_Node_Str").getNodeValue().equals("String_Node_Str"));
                  process.addTask(nodeTask.getAttributes().getNamedItem("String_Node_Str").getNodeValue(),task);
                }
              }
            }
          }
        }
      }
    }
  }
 catch (  Exception ex) {
    ex.printStackTrace();
  }
}

Fixed version (ground truth):
public BonitaFormParcer(byte[] procBytes){
  try {
    processPoolMap=new Hashtable<String,XMLProcessDefinition>();
    DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
    DocumentBuilder db=dbf.newDocumentBuilder();
    Document doc=db.parse(new ByteArrayInputStream(procBytes));
    doc.getDocumentElement().normalize();
    Node mainProcess=doc.getElementsByTagName("String_Node_Str").item(0);
    NodeList processNodes=mainProcess.getChildNodes();
    for (int i=0; i < processNodes.getLength(); i++) {
      if (processNodes.item(i) != null && processNodes.item(i).getNodeName().equals("String_Node_Str") && processNodes.item(i).getAttributes().getNamedItem("String_Node_Str").getNodeValue().equals("String_Node_Str")) {
        Node processNode=processNodes.item(i);
        String nodeName=processNode.getAttributes().getNamedItem("String_Node_Str").getNodeValue();
        XMLProcessDefinition process=new XMLProcessDefinition(nodeName,processNode.getAttributes().getNamedItem("String_Node_Str").getNodeValue());
        process.setByPassFormsGeneration(processNode.getAttributes().getNamedItem("String_Node_Str") != null && processNode.getAttributes().getNamedItem("String_Node_Str").getNodeValue().equals("String_Node_Str"));
        NodeList processChilds=processNode.getChildNodes();
        for (int y=0; y < processChilds.getLength(); y++) {
          if (processChilds.item(y).getNodeName().equals("String_Node_Str") && processChilds.item(y).getAttributes().getNamedItem("String_Node_Str").getNodeValue().equals("String_Node_Str")) {
            Node nodeTask=processChilds.item(y);
            if (nodeTask.getChildNodes().getLength() > 0) {
              XMLTaskDefinition task=new XMLTaskDefinition(nodeTask.getAttributes().getNamedItem("String_Node_Str").getNodeValue(),nodeTask.getAttributes().getNamedItem("String_Node_Str").getNodeValue());
              task.setByPassFormsGeneration(nodeTask.getAttributes().getNamedItem("String_Node_Str") != null && nodeTask.getAttributes().getNamedItem("String_Node_Str").getNodeValue().equals("String_Node_Str"));
              process.addTask(nodeTask.getAttributes().getNamedItem("String_Node_Str").getNodeValue(),task);
            }
          }
 else           if (processChilds.item(y).getNodeName().equals("String_Node_Str") && processChilds.item(y).getAttributes().getNamedItem("String_Node_Str").getNodeValue().equals("String_Node_Str")) {
            NodeList laneChilds=processChilds.item(y).getChildNodes();
            for (int z=0; z < laneChilds.getLength(); z++) {
              if (laneChilds.item(z).getNodeName().equals("String_Node_Str") && laneChilds.item(z).getAttributes().getNamedItem("String_Node_Str").getNodeValue().equals("String_Node_Str")) {
                Node nodeTask=laneChilds.item(z);
                if (nodeTask.getChildNodes().getLength() > 0) {
                  XMLTaskDefinition task=new XMLTaskDefinition(nodeTask.getAttributes().getNamedItem("String_Node_Str").getNodeValue(),nodeTask.getAttributes().getNamedItem("String_Node_Str").getNodeValue());
                  task.setByPassFormsGeneration(nodeTask.getAttributes().getNamedItem("String_Node_Str") != null && nodeTask.getAttributes().getNamedItem("String_Node_Str").getNodeValue().equals("String_Node_Str"));
                  process.addTask(nodeTask.getAttributes().getNamedItem("String_Node_Str").getNodeValue(),task);
                }
              }
            }
          }
          processPoolMap.put(nodeName,process);
        }
      }
    }
  }
 catch (  Exception ex) {
    ex.printStackTrace();
  }
}