Program: 12329
Project: 12329
Buggy source:
private static Module getModuleV2(Element el){
  String name=el.getAttribute("String_Node_Str");
  String id=el.getAttribute("String_Node_Str");
  String depends=el.getAttribute("String_Node_Str");
  String side=el.getAttribute("String_Node_Str");
  List<PrioritizedURL> urls=new ArrayList<PrioritizedURL>();
  NodeList nl=el.getElementsByTagName("String_Node_Str");
  for (int i=0; i < nl.getLength(); i++) {
    Element elURL=(Element)nl.item(i);
    String url=elURL.getTextContent();
    int priority=parseInt(elURL.getAttribute("String_Node_Str"));
    urls.add(new PrioritizedURL(url,priority));
  }
  String path=getTextValue(el,"String_Node_Str");
  Element elReq=(Element)el.getElementsByTagName("String_Node_Str").item(0);
  boolean required;
  boolean isDefault;
  if (elReq == null) {
    required=true;
    isDefault=true;
  }
 else {
    required=parseBooleanWithDefault(elReq.getTextContent(),true);
    isDefault=parseBooleanWithDefault(elReq.getAttribute("String_Node_Str"),false);
  }
  Element elType=(Element)el.getElementsByTagName("String_Node_Str").item(0);
  boolean inRoot=parseBooleanWithDefault(elType.getAttribute("String_Node_Str"),false);
  int order=parseInt(elType.getAttribute("String_Node_Str"));
  boolean keepMeta=parseBooleanWithDefault(elType.getAttribute("String_Node_Str"),false);
  String launchArgs=elType.getAttribute("String_Node_Str");
  String jreArgs=elType.getAttribute("String_Node_Str");
  ModType modType=ModType.valueOf(elType.getTextContent());
  boolean coremod=false;
  boolean jar=false;
  boolean library=false;
  boolean extract=false;
switch (modType) {
case Coremod:
    coremod=true;
  break;
case Extract:
extract=true;
break;
case Jar:
jar=true;
break;
case Library:
library=true;
break;
case Option:
throw new RuntimeException("String_Node_Str");
default :
break;
}
String md5=getTextValue(el,"String_Node_Str");
List<ConfigFile> configs=new ArrayList<ConfigFile>();
List<Module> submodules=new ArrayList<Module>();
nl=el.getElementsByTagName("String_Node_Str");
for (int i=0; i < nl.getLength(); i++) {
Element elConfig=(Element)nl.item(i);
ConfigFile cf=getConfigFileV1(elConfig);
configs.add(cf);
}
nl=el.getElementsByTagName("String_Node_Str");
for (int i=0; i < nl.getLength(); i++) {
Element elSubmod=(Element)nl.item(i);
Module sm=getModuleV2(elSubmod);
submodules.add(sm);
}
HashMap<String,String> mapMeta=new HashMap<String,String>();
NodeList nlMeta=el.getElementsByTagName("String_Node_Str");
if (nlMeta.getLength() > 0) {
Element elMeta=(Element)nlMeta.item(0);
NodeList nlMetaChildren=elMeta.getElementsByTagName("String_Node_Str");
for (int i=0; i < nlMetaChildren.getLength(); i++) {
Node child=nlMetaChildren.item(i);
mapMeta.put(child.getNodeName(),getTextValue(elMeta,child.getNodeName()));
}
}
Module m=new Module(name,id,urls,depends,required,jar,order,keepMeta,extract,inRoot,isDefault,coremod,md5,configs,side,path,mapMeta,library,launchArgs,jreArgs,submodules);
return m;
}

Fixed version (ground truth):
private static Module getModuleV2(Element el){
  XPath xpath=XPathFactory.newInstance().newXPath();
  try {
    String name=el.getAttribute("String_Node_Str");
    String id=el.getAttribute("String_Node_Str");
    String depends=el.getAttribute("String_Node_Str");
    String side=el.getAttribute("String_Node_Str");
    List<PrioritizedURL> urls=new ArrayList<PrioritizedURL>();
    NodeList nl;
    nl=(NodeList)xpath.evaluate("String_Node_Str",el,XPathConstants.NODESET);
    for (int i=0; i < nl.getLength(); i++) {
      Element elURL=(Element)nl.item(i);
      String url=elURL.getTextContent();
      int priority=parseInt(elURL.getAttribute("String_Node_Str"));
      urls.add(new PrioritizedURL(url,priority));
    }
    String path=(String)xpath.evaluate("String_Node_Str",el,XPathConstants.STRING);
    Element elReq=(Element)el.getElementsByTagName("String_Node_Str").item(0);
    boolean required;
    boolean isDefault;
    if (elReq == null) {
      required=true;
      isDefault=true;
    }
 else {
      required=parseBooleanWithDefault(elReq.getTextContent(),true);
      isDefault=parseBooleanWithDefault(elReq.getAttribute("String_Node_Str"),false);
    }
    Element elType=(Element)el.getElementsByTagName("String_Node_Str").item(0);
    boolean inRoot=parseBooleanWithDefault(elType.getAttribute("String_Node_Str"),false);
    int order=parseInt(elType.getAttribute("String_Node_Str"));
    boolean keepMeta=parseBooleanWithDefault(elType.getAttribute("String_Node_Str"),false);
    String launchArgs=elType.getAttribute("String_Node_Str");
    String jreArgs=elType.getAttribute("String_Node_Str");
    ModType modType=ModType.valueOf(elType.getTextContent());
    boolean coremod=false;
    boolean jar=false;
    boolean library=false;
    boolean extract=false;
switch (modType) {
case Coremod:
      coremod=true;
    break;
case Extract:
  extract=true;
break;
case Jar:
jar=true;
break;
case Library:
library=true;
break;
case Option:
throw new RuntimeException("String_Node_Str");
default :
break;
}
String md5=(String)xpath.evaluate("String_Node_Str",el,XPathConstants.STRING);
List<ConfigFile> configs=new ArrayList<ConfigFile>();
List<Module> submodules=new ArrayList<Module>();
nl=el.getElementsByTagName("String_Node_Str");
for (int i=0; i < nl.getLength(); i++) {
Element elConfig=(Element)nl.item(i);
ConfigFile cf=getConfigFileV1(elConfig);
configs.add(cf);
}
nl=el.getElementsByTagName("String_Node_Str");
for (int i=0; i < nl.getLength(); i++) {
Element elSubmod=(Element)nl.item(i);
Module sm=getModuleV2(elSubmod);
submodules.add(sm);
}
HashMap<String,String> mapMeta=new HashMap<String,String>();
NodeList nlMeta=el.getElementsByTagName("String_Node_Str");
if (nlMeta.getLength() > 0) {
Element elMeta=(Element)nlMeta.item(0);
NodeList nlMetaChildren=elMeta.getElementsByTagName("String_Node_Str");
for (int i=0; i < nlMetaChildren.getLength(); i++) {
Node child=nlMetaChildren.item(i);
mapMeta.put(child.getNodeName(),getTextValue(elMeta,child.getNodeName()));
}
}
Module m=new Module(name,id,urls,depends,required,jar,order,keepMeta,extract,inRoot,isDefault,coremod,md5,configs,side,path,mapMeta,library,launchArgs,jreArgs,submodules);
return m;
}
 catch (XPathExpressionException e) {
e.printStackTrace();
return null;
}
}