Program: 124296
Project: 124296
Buggy source:
public void initModel(){
  IMetadataTable metadataTable=foxComponent.getMetadataTable();
  if (metadataTable == null) {
    metadataTable=new MetadataTable();
  }
  String componentName=foxComponent.getComponent().getName();
  IConnection inConn=null;
  for (  IConnection conn : foxComponent.getIncomingConnections()) {
    if ((conn.getLineStyle().equals(EConnectionType.FLOW_MAIN)) || (conn.getLineStyle().equals(EConnectionType.FLOW_REF))) {
      inConn=conn;
      break;
    }
  }
  if (inConn != null) {
    metadataTable=inConn.getMetadataTable();
  }
  treeData=new ArrayList<FOXTreeNode>();
  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;
  List<Map<String,String>> rootTable=(List<Map<String,String>>)foxComponent.getTableList(FileOutputXMLComponent.ROOT);
  for (  Map<String,String> rootMap : rootTable) {
    String newPath=rootMap.get(FileOutputXMLComponent.PATH);
    defaultValue=rootMap.get(FileOutputXMLComponent.VALUE);
    String orderValue=rootMap.get(FileOutputXMLComponent.ORDER);
    if (orderValue == null || "String_Node_Str".equals(orderValue)) {
      haveOrder=false;
    }
    if (haveOrder) {
      nodeOrder=Integer.valueOf(rootMap.get(FileOutputXMLComponent.ORDER)).intValue();
    }
    if (rootMap.get(FileOutputXMLComponent.ATTRIBUTE).equals("String_Node_Str")) {
      temp=new Attribute(newPath);
      temp.setDefaultValue(defaultValue);
      temp.setAttribute(true);
      current.addChild(temp);
    }
 else     if (rootMap.get(FileOutputXMLComponent.ATTRIBUTE).equals("String_Node_Str")) {
      temp=new NameSpaceNode(newPath);
      temp.setDefaultValue(defaultValue);
      temp.setNameSpace(true);
      current.addChild(temp);
    }
 else {
      temp=this.addElement(current,currentPath,newPath,defaultValue);
      if (rootNode == null) {
        rootNode=temp;
      }
      if (rootMap.get(FileOutputXMLComponent.ATTRIBUTE).equals("String_Node_Str")) {
        temp.setMain(true);
        mainNode=temp;
        mainPath=newPath;
      }
      current=temp;
      currentPath=newPath;
    }
    if (haveOrder) {
      temp.setOrder(nodeOrder);
    }
    String columnName=rootMap.get(FileOutputXMLComponent.COLUMN);
    if (columnName != null && columnName.length() > 0) {
      temp.setColumn(metadataTable.getColumn(columnName));
    }
  }
  current=mainNode;
  currentPath=mainPath;
  boolean isFirst=true;
  List<Map<String,String>> groupTable=(List<Map<String,String>>)foxComponent.getTableList(FileOutputXMLComponent.GROUP);
  for (  Map<String,String> groupMap : groupTable) {
    String newPath=groupMap.get(FileOutputXMLComponent.PATH);
    defaultValue=groupMap.get(FileOutputXMLComponent.VALUE);
    String orderValue=groupMap.get(FileOutputXMLComponent.ORDER);
    if (orderValue == null || "String_Node_Str".equals(orderValue)) {
      haveOrder=false;
    }
    if (haveOrder) {
      nodeOrder=Integer.valueOf(groupMap.get(FileOutputXMLComponent.ORDER)).intValue();
    }
    if (groupMap.get(FileOutputXMLComponent.ATTRIBUTE).equals("String_Node_Str")) {
      temp=new Attribute(newPath);
      temp.setDefaultValue(defaultValue);
      temp.setAttribute(true);
      current.addChild(temp);
    }
 else     if (groupMap.get(FileOutputXMLComponent.ATTRIBUTE).equals("String_Node_Str")) {
      temp=new NameSpaceNode(newPath);
      temp.setDefaultValue(defaultValue);
      temp.setNameSpace(true);
      current.addChild(temp);
    }
 else {
      temp=this.addElement(current,currentPath,newPath,defaultValue);
      if (groupMap.get(FileOutputXMLComponent.ATTRIBUTE).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=groupMap.get(FileOutputXMLComponent.COLUMN);
    if (columnName != null && columnName.length() > 0) {
      temp.setColumn(metadataTable.getColumn(columnName));
    }
  }
  current=mainNode;
  currentPath=mainPath;
  isFirst=true;
  List<Map<String,String>> loopTable=(List<Map<String,String>>)foxComponent.getTableList(FileOutputXMLComponent.LOOP);
  for (  Map<String,String> loopMap : loopTable) {
    String newPath=loopMap.get(FileOutputXMLComponent.PATH);
    defaultValue=loopMap.get(FileOutputXMLComponent.VALUE);
    String orderValue=loopMap.get(FileOutputXMLComponent.ORDER);
    if (orderValue == null || "String_Node_Str".equals(orderValue)) {
      haveOrder=false;
    }
    if (haveOrder) {
      nodeOrder=Integer.valueOf(loopMap.get(FileOutputXMLComponent.ORDER)).intValue();
    }
    if (loopMap.get(FileOutputXMLComponent.ATTRIBUTE).equals("String_Node_Str")) {
      temp=new Attribute(newPath);
      temp.setDefaultValue(defaultValue);
      temp.setAttribute(true);
      current.addChild(temp);
    }
 else     if (loopMap.get(FileOutputXMLComponent.ATTRIBUTE).equals("String_Node_Str")) {
      temp=new NameSpaceNode(newPath);
      temp.setDefaultValue(defaultValue);
      temp.setNameSpace(true);
      current.addChild(temp);
    }
 else {
      temp=this.addElement(current,currentPath,newPath,defaultValue);
      if (loopMap.get(FileOutputXMLComponent.ATTRIBUTE).equals("String_Node_Str")) {
        temp.setMain(true);
      }
      if (isFirst) {
        temp.setLoop(true);
        isFirst=false;
      }
      current=temp;
      currentPath=newPath;
    }
    if (haveOrder) {
      temp.setOrder(nodeOrder);
    }
    String columnName=loopMap.get(FileOutputXMLComponent.COLUMN);
    if (columnName != null && columnName.length() > 0) {
      temp.setColumn(metadataTable.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):
public void initModel(){
  IMetadataTable metadataTable=foxComponent.getMetadataTable();
  if (metadataTable == null) {
    metadataTable=new MetadataTable();
  }
  String componentName=foxComponent.getComponent().getName();
  IConnection inConn=null;
  for (  IConnection conn : foxComponent.getIncomingConnections()) {
    if ((conn.getLineStyle().equals(EConnectionType.FLOW_MAIN)) || (conn.getLineStyle().equals(EConnectionType.FLOW_REF))) {
      inConn=conn;
      break;
    }
  }
  if (inConn != null) {
    metadataTable=inConn.getMetadataTable();
  }
  treeData=new ArrayList<FOXTreeNode>();
  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;
  List<Map<String,String>> rootTable=(List<Map<String,String>>)foxComponent.getTableList(FileOutputXMLComponent.ROOT);
  for (  Map<String,String> rootMap : rootTable) {
    String newPath=rootMap.get(FileOutputXMLComponent.PATH);
    defaultValue=rootMap.get(FileOutputXMLComponent.VALUE);
    String orderValue=rootMap.get(FileOutputXMLComponent.ORDER);
    if (orderValue == null || "String_Node_Str".equals(orderValue)) {
      haveOrder=false;
    }
    if (haveOrder) {
      nodeOrder=Integer.valueOf(rootMap.get(FileOutputXMLComponent.ORDER)).intValue();
    }
    if (rootMap.get(FileOutputXMLComponent.ATTRIBUTE).equals("String_Node_Str")) {
      temp=new Attribute(newPath);
      temp.setDefaultValue(defaultValue);
      temp.setAttribute(true);
      current.addChild(temp);
    }
 else     if (rootMap.get(FileOutputXMLComponent.ATTRIBUTE).equals("String_Node_Str")) {
      temp=new NameSpaceNode(newPath);
      temp.setDefaultValue(defaultValue);
      temp.setNameSpace(true);
      current.addChild(temp);
    }
 else {
      temp=this.addElement(current,currentPath,newPath,defaultValue);
      if (rootNode == null) {
        rootNode=temp;
      }
      if (rootMap.get(FileOutputXMLComponent.ATTRIBUTE).equals("String_Node_Str")) {
        temp.setMain(true);
        mainNode=temp;
        mainPath=newPath;
      }
      current=temp;
      currentPath=newPath;
    }
    if (haveOrder) {
      temp.setOrder(nodeOrder);
    }
    String columnName=rootMap.get(FileOutputXMLComponent.COLUMN);
    if (columnName != null && columnName.length() > 0) {
      temp.setColumn(metadataTable.getColumn(columnName));
    }
  }
  current=mainNode;
  currentPath=mainPath;
  boolean isFirst=true;
  List<Map<String,String>> groupTable=(List<Map<String,String>>)foxComponent.getTableList(FileOutputXMLComponent.GROUP);
  for (  Map<String,String> groupMap : groupTable) {
    String newPath=groupMap.get(FileOutputXMLComponent.PATH);
    defaultValue=groupMap.get(FileOutputXMLComponent.VALUE);
    String orderValue=groupMap.get(FileOutputXMLComponent.ORDER);
    if (orderValue == null || "String_Node_Str".equals(orderValue)) {
      haveOrder=false;
    }
    if (haveOrder) {
      nodeOrder=Integer.valueOf(groupMap.get(FileOutputXMLComponent.ORDER)).intValue();
    }
    if (groupMap.get(FileOutputXMLComponent.ATTRIBUTE).equals("String_Node_Str")) {
      temp=new Attribute(newPath);
      temp.setDefaultValue(defaultValue);
      temp.setAttribute(true);
      current.addChild(temp);
    }
 else     if (groupMap.get(FileOutputXMLComponent.ATTRIBUTE).equals("String_Node_Str")) {
      temp=new NameSpaceNode(newPath);
      temp.setDefaultValue(defaultValue);
      temp.setNameSpace(true);
      current.addChild(temp);
    }
 else {
      temp=this.addElement(current,currentPath,newPath,defaultValue);
      if (groupMap.get(FileOutputXMLComponent.ATTRIBUTE).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=groupMap.get(FileOutputXMLComponent.COLUMN);
    if (columnName != null && columnName.length() > 0) {
      temp.setColumn(metadataTable.getColumn(columnName));
    }
  }
  current=mainNode;
  currentPath=mainPath;
  isFirst=true;
  List<Map<String,String>> loopTable=(List<Map<String,String>>)foxComponent.getTableList(FileOutputXMLComponent.LOOP);
  for (  Map<String,String> loopMap : loopTable) {
    String newPath=loopMap.get(FileOutputXMLComponent.PATH);
    defaultValue=loopMap.get(FileOutputXMLComponent.VALUE);
    String orderValue=loopMap.get(FileOutputXMLComponent.ORDER);
    if (orderValue == null || "String_Node_Str".equals(orderValue)) {
      haveOrder=false;
    }
    if (haveOrder) {
      nodeOrder=Integer.valueOf(loopMap.get(FileOutputXMLComponent.ORDER)).intValue();
    }
    if (loopMap.get(FileOutputXMLComponent.ATTRIBUTE).equals("String_Node_Str")) {
      temp=new Attribute(newPath);
      temp.setDefaultValue(defaultValue);
      temp.setAttribute(true);
      current.addChild(temp);
    }
 else     if (loopMap.get(FileOutputXMLComponent.ATTRIBUTE).equals("String_Node_Str")) {
      temp=new NameSpaceNode(newPath);
      temp.setDefaultValue(defaultValue);
      temp.setNameSpace(true);
      current.addChild(temp);
    }
 else {
      temp=this.addElement(current,currentPath,newPath,defaultValue);
      if (rootNode == null) {
        rootNode=temp;
      }
      if (loopMap.get(FileOutputXMLComponent.ATTRIBUTE).equals("String_Node_Str")) {
        temp.setMain(true);
      }
      if (isFirst) {
        temp.setLoop(true);
        isFirst=false;
      }
      current=temp;
      currentPath=newPath;
    }
    if (haveOrder) {
      temp.setOrder(nodeOrder);
    }
    String columnName=loopMap.get(FileOutputXMLComponent.COLUMN);
    if (columnName != null && columnName.length() > 0) {
      temp.setColumn(metadataTable.getColumn(columnName));
    }
  }
  if (rootNode == null) {
    rootNode=new Element("String_Node_Str");
  }
  rootNode.setParent(null);
  if (haveOrder) {
    orderNode(rootNode);
  }
  treeData.add(rootNode);
}