Program: 130070
Project: 130070
Buggy source:
private void initXmlTreeData(){
  treeData.clear();
  EList root=getConnection().getRoot();
  EList loop=getConnection().getLoop();
  EList group=getConnection().getGroup();
  FOXTreeNode rootNode=null;
  FOXTreeNode current=null;
  FOXTreeNode temp=null;
  FOXTreeNode mainNode=null;
  String mainPath=null;
  String currentPath=null;
  String defaultValue=null;
  int nodeOrder=0;
  boolean haveOrder=true;
  for (int i=0; i < root.size(); i++) {
    XMLFileNode node=(XMLFileNode)root.get(i);
    String newPath=node.getXMLPath();
    defaultValue=node.getDefaultValue();
    String type=node.getType();
    String orderValue=String.valueOf(node.getOrder());
    if (orderValue == null || "String_Node_Str".equals(orderValue)) {
      haveOrder=false;
    }
    if (haveOrder) {
      nodeOrder=node.getOrder();
    }
    if (node.getAttribute().equals("String_Node_Str")) {
      temp=new Attribute(newPath);
      temp.setDefaultValue(defaultValue);
      temp.setAttribute(true);
      temp.setDataType(type);
      current.addChild(temp);
    }
 else     if (node.getAttribute().equals("String_Node_Str")) {
      temp=new NameSpaceNode(newPath);
      temp.setDefaultValue(defaultValue);
      temp.setNameSpace(true);
      temp.setDataType(type);
      current.addChild(temp);
    }
 else {
      temp=this.addElement(current,currentPath,newPath,defaultValue);
      temp.setDataType(type);
      if (rootNode == null) {
        rootNode=temp;
      }
      if (node.getAttribute().equals("String_Node_Str")) {
        temp.setMain(true);
        mainNode=temp;
        mainPath=newPath;
      }
      current=temp;
      currentPath=newPath;
    }
    if (haveOrder) {
      temp.setOrder(nodeOrder);
    }
    String columnName=node.getRelatedColumn();
    if (columnName != null && columnName.length() > 0) {
      temp.setColumn(getColumn(columnName));
    }
  }
  current=mainNode;
  currentPath=mainPath;
  boolean isFirst=true;
  for (int i=0; i < group.size(); i++) {
    XMLFileNode node=(XMLFileNode)group.get(i);
    String newPath=node.getXMLPath();
    defaultValue=node.getDefaultValue();
    String type=node.getType();
    String orderValue=String.valueOf(node.getOrder());
    if (orderValue == null || "String_Node_Str".equals(orderValue)) {
      haveOrder=false;
    }
    if (haveOrder) {
      nodeOrder=node.getOrder();
    }
    if (node.getAttribute().equals("String_Node_Str")) {
      temp=new Attribute(newPath);
      temp.setDefaultValue(defaultValue);
      temp.setAttribute(true);
      temp.setDataType(type);
      current.addChild(temp);
    }
 else     if (node.getAttribute().equals("String_Node_Str")) {
      temp=new NameSpaceNode(newPath);
      temp.setDefaultValue(defaultValue);
      temp.setNameSpace(true);
      temp.setDataType(type);
      current.addChild(temp);
    }
 else {
      temp=this.addElement(current,currentPath,newPath,defaultValue);
      temp.setDataType(type);
      if (node.getAttribute().equals("String_Node_Str")) {
        temp.setMain(true);
        mainNode=temp;
        mainPath=newPath;
      }
      if (isFirst) {
        temp.setGroup(true);
        isFirst=false;
      }
      current=temp;
      currentPath=newPath;
    }
    if (haveOrder) {
      temp.setOrder(nodeOrder);
    }
    String columnName=node.getRelatedColumn();
    if (columnName != null && columnName.length() > 0) {
      temp.setColumn(getColumn(columnName));
    }
  }
  current=mainNode;
  currentPath=mainPath;
  isFirst=true;
  for (int i=0; i < loop.size(); i++) {
    XMLFileNode node=(XMLFileNode)loop.get(i);
    String newPath=node.getXMLPath();
    defaultValue=node.getDefaultValue();
    String type=node.getType();
    String orderValue=String.valueOf(node.getOrder());
    if (orderValue == null || "String_Node_Str".equals(orderValue)) {
      haveOrder=false;
    }
    if (haveOrder) {
      nodeOrder=node.getOrder();
    }
    if (node.getAttribute().equals("String_Node_Str")) {
      temp=new Attribute(newPath);
      temp.setDefaultValue(defaultValue);
      temp.setAttribute(true);
      temp.setDataType(type);
      temp.setDataType(type);
      current.addChild(temp);
    }
 else     if (node.getAttribute().equals("String_Node_Str")) {
      temp=new NameSpaceNode(newPath);
      temp.setDefaultValue(defaultValue);
      temp.setNameSpace(true);
      temp.setDataType(type);
      current.addChild(temp);
    }
 else {
      temp=this.addElement(current,currentPath,newPath,defaultValue);
      temp.setDataType(type);
      if (node.getAttribute().equals("String_Node_Str")) {
        temp.setMain(true);
        mainNode=temp;
        mainPath=newPath;
      }
      if (isFirst) {
        temp.setLoop(true);
        isFirst=false;
      }
      current=temp;
      currentPath=newPath;
    }
    if (haveOrder) {
      temp.setOrder(nodeOrder);
    }
    String columnName=node.getRelatedColumn();
    if (columnName != null && columnName.length() > 0) {
      temp.setColumn(getColumn(columnName));
    }
  }
  if (rootNode == null) {
    rootNode=new Element("String_Node_Str");
  }
  rootNode.setParent(null);
  if (haveOrder) {
    orderNode(rootNode);
  }
  treeData.add(rootNode);
}

Fixed version (ground truth):
private void initXmlTreeData(){
  treeData.clear();
  EList root=getConnection().getRoot();
  EList loop=getConnection().getLoop();
  EList group=getConnection().getGroup();
  FOXTreeNode rootNode=null;
  FOXTreeNode current=null;
  FOXTreeNode temp=null;
  FOXTreeNode mainNode=null;
  String mainPath=null;
  String currentPath=null;
  String defaultValue=null;
  int nodeOrder=0;
  boolean haveOrder=true;
  for (int i=0; i < root.size(); i++) {
    XMLFileNode node=(XMLFileNode)root.get(i);
    String newPath=node.getXMLPath();
    defaultValue=node.getDefaultValue();
    String type=node.getType();
    String orderValue=String.valueOf(node.getOrder());
    if (orderValue == null || "String_Node_Str".equals(orderValue)) {
      haveOrder=false;
    }
    if (haveOrder) {
      nodeOrder=node.getOrder();
    }
    if (node.getAttribute().equals("String_Node_Str")) {
      temp=new Attribute(newPath);
      temp.setDefaultValue(defaultValue);
      temp.setAttribute(true);
      temp.setDataType(type);
      current.addChild(temp);
    }
 else     if (node.getAttribute().equals("String_Node_Str")) {
      temp=new NameSpaceNode(newPath);
      temp.setDefaultValue(defaultValue);
      temp.setNameSpace(true);
      temp.setDataType(type);
      current.addChild(temp);
    }
 else {
      temp=this.addElement(current,currentPath,newPath,defaultValue);
      temp.setDataType(type);
      if (rootNode == null) {
        rootNode=temp;
      }
      if (node.getAttribute().equals("String_Node_Str")) {
        temp.setMain(true);
        mainNode=temp;
        mainPath=newPath;
      }
      current=temp;
      currentPath=newPath;
    }
    if (haveOrder) {
      temp.setOrder(nodeOrder);
    }
    String columnName=node.getRelatedColumn();
    if (columnName != null && columnName.length() > 0) {
      temp.setColumn(getColumn(columnName));
    }
  }
  current=mainNode;
  currentPath=mainPath;
  boolean isFirst=true;
  for (int i=0; i < group.size(); i++) {
    XMLFileNode node=(XMLFileNode)group.get(i);
    String newPath=node.getXMLPath();
    defaultValue=node.getDefaultValue();
    String type=node.getType();
    String orderValue=String.valueOf(node.getOrder());
    if (orderValue == null || "String_Node_Str".equals(orderValue)) {
      haveOrder=false;
    }
    if (haveOrder) {
      nodeOrder=node.getOrder();
    }
    if (node.getAttribute().equals("String_Node_Str")) {
      temp=new Attribute(newPath);
      temp.setDefaultValue(defaultValue);
      temp.setAttribute(true);
      temp.setDataType(type);
      current.addChild(temp);
    }
 else     if (node.getAttribute().equals("String_Node_Str")) {
      temp=new NameSpaceNode(newPath);
      temp.setDefaultValue(defaultValue);
      temp.setNameSpace(true);
      temp.setDataType(type);
      current.addChild(temp);
    }
 else {
      temp=this.addElement(current,currentPath,newPath,defaultValue);
      temp.setDataType(type);
      if (node.getAttribute().equals("String_Node_Str")) {
        temp.setMain(true);
        mainNode=temp;
        mainPath=newPath;
      }
      if (isFirst) {
        temp.setGroup(true);
        isFirst=false;
      }
      current=temp;
      currentPath=newPath;
    }
    if (haveOrder) {
      temp.setOrder(nodeOrder);
    }
    String columnName=node.getRelatedColumn();
    if (columnName != null && columnName.length() > 0) {
      temp.setColumn(getColumn(columnName));
    }
  }
  current=mainNode;
  currentPath=mainPath;
  isFirst=true;
  for (int i=0; i < loop.size(); i++) {
    XMLFileNode node=(XMLFileNode)loop.get(i);
    String newPath=node.getXMLPath();
    defaultValue=node.getDefaultValue();
    String type=node.getType();
    String orderValue=String.valueOf(node.getOrder());
    if (orderValue == null || "String_Node_Str".equals(orderValue)) {
      haveOrder=false;
    }
    if (haveOrder) {
      nodeOrder=node.getOrder();
    }
    if (node.getAttribute().equals("String_Node_Str")) {
      temp=new Attribute(newPath);
      temp.setDefaultValue(defaultValue);
      temp.setAttribute(true);
      temp.setDataType(type);
      temp.setDataType(type);
      current.addChild(temp);
    }
 else     if (node.getAttribute().equals("String_Node_Str")) {
      temp=new NameSpaceNode(newPath);
      temp.setDefaultValue(defaultValue);
      temp.setNameSpace(true);
      temp.setDataType(type);
      current.addChild(temp);
    }
 else {
      temp=this.addElement(current,currentPath,newPath,defaultValue);
      temp.setDataType(type);
      if (rootNode == null) {
        rootNode=temp;
      }
      if (node.getAttribute().equals("String_Node_Str")) {
        temp.setMain(true);
        mainNode=temp;
        mainPath=newPath;
      }
      if (isFirst) {
        temp.setLoop(true);
        isFirst=false;
      }
      current=temp;
      currentPath=newPath;
    }
    if (haveOrder) {
      temp.setOrder(nodeOrder);
    }
    String columnName=node.getRelatedColumn();
    if (columnName != null && columnName.length() > 0) {
      temp.setColumn(getColumn(columnName));
    }
  }
  if (rootNode == null) {
    rootNode=new Element("String_Node_Str");
  }
  rootNode.setParent(null);
  if (haveOrder) {
    orderNode(rootNode);
  }
  treeData.add(rootNode);
}