Program: 122718
Project: 122718
Buggy source:
public void initModel(){
  int i=0;
  List<? extends IConnection> incomingConnections=NodeUtil.getIncomingConnections(foxComponent,IConnectionCategory.FLOW);
  for (  IConnection connection : incomingConnections) {
    IMetadataTable metadataTable=connection.getMetadataTable();
    metadataTable.setLabel(connection.getUniqueName());
    treeData=new ArrayList<FOXTreeNode>();
    if (i == 0)     currentSchema=metadataTable.getLabel();
    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;
    String schemaId=metadataTable.getLabel() + "String_Node_Str";
    List<Map<String,String>> rootTable=(List<Map<String,String>>)foxComponent.getTableList(FileOutputXMLComponent.ROOT);
    if (rootTable != null) {
      for (      Map<String,String> rootMap : rootTable) {
        String newPath=rootMap.get(FileOutputXMLComponent.PATH);
        String columnName=rootMap.get(FileOutputXMLComponent.COLUMN);
        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();
        }
        String flag=columnName + "String_Node_Str";
        if (columnName != null && columnName.length() > 0 && !flag.startsWith(metadataTable.getLabel() + "String_Node_Str")) {
          continue;
        }
        if (rootMap.get(FileOutputXMLComponent.ATTRIBUTE).equals("String_Node_Str")) {
          temp=new Attribute(newPath);
          temp.setDefaultValue(defaultValue);
          current.addChild(temp);
        }
 else         if (rootMap.get(FileOutputXMLComponent.ATTRIBUTE).equals("String_Node_Str")) {
          temp=new NameSpaceNode(newPath);
          temp.setDefaultValue(defaultValue);
          current.addChild(temp);
        }
 else {
          temp=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);
        }
        temp.setRow(metadataTable.getLabel());
        if (columnName != null && columnName.length() > 0 && columnName.startsWith(schemaId)) {
          columnName=columnName.replace(schemaId,"String_Node_Str");
          temp.setColumn(metadataTable.getColumn(columnName));
          temp.setTable(metadataTable);
        }
      }
    }
    current=mainNode;
    currentPath=mainPath;
    boolean isFirst=true;
    List<Map<String,String>> groupTable=(List<Map<String,String>>)foxComponent.getTableList(FileOutputXMLComponent.GROUP);
    if (groupTable != null) {
      for (      Map<String,String> groupMap : groupTable) {
        String newPath=groupMap.get(FileOutputXMLComponent.PATH);
        String columnName=groupMap.get(FileOutputXMLComponent.COLUMN);
        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();
        }
        String flag=columnName + "String_Node_Str";
        if (columnName != null && columnName.length() > 0 && !flag.startsWith(metadataTable.getLabel() + "String_Node_Str")) {
          continue;
        }
        if (groupMap.get(FileOutputXMLComponent.ATTRIBUTE).equals("String_Node_Str")) {
          temp=new Attribute(newPath);
          temp.setDefaultValue(defaultValue);
          current.addChild(temp);
        }
 else         if (groupMap.get(FileOutputXMLComponent.ATTRIBUTE).equals("String_Node_Str")) {
          temp=new NameSpaceNode(newPath);
          temp.setDefaultValue(defaultValue);
          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);
        }
        temp.setRow(metadataTable.getLabel());
        if (columnName != null && columnName.length() > 0 && columnName.startsWith(schemaId)) {
          columnName=columnName.replace(schemaId,"String_Node_Str");
          temp.setColumn(metadataTable.getColumn(columnName));
          temp.setTable(metadataTable);
        }
      }
    }
    current=mainNode;
    currentPath=mainPath;
    isFirst=true;
    List<Map<String,String>> loopTable=(List<Map<String,String>>)foxComponent.getTableList(FileOutputXMLComponent.LOOP);
    if (loopTable != null) {
      for (      Map<String,String> loopMap : loopTable) {
        String newPath=loopMap.get(FileOutputXMLComponent.PATH);
        String columnName=loopMap.get(FileOutputXMLComponent.COLUMN);
        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();
        }
        String flag=columnName + "String_Node_Str";
        if (columnName != null && columnName.length() > 0 && !flag.startsWith(metadataTable.getLabel() + "String_Node_Str")) {
          continue;
        }
        if (loopMap.get(FileOutputXMLComponent.ATTRIBUTE).equals("String_Node_Str")) {
          temp=new Attribute(newPath);
          temp.setDefaultValue(defaultValue);
          current.addChild(temp);
        }
 else         if (loopMap.get(FileOutputXMLComponent.ATTRIBUTE).equals("String_Node_Str")) {
          temp=new NameSpaceNode(newPath);
          temp.setDefaultValue(defaultValue);
          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);
        }
        temp.setRow(metadataTable.getLabel());
        if (columnName != null && columnName.length() > 0 && columnName.startsWith(schemaId)) {
          columnName=columnName.replace(schemaId,"String_Node_Str");
          temp.setColumn(metadataTable.getColumn(columnName));
          temp.setTable(metadataTable);
        }
      }
      if (rootNode == null) {
        rootNode=new Element("String_Node_Str");
      }
      rootNode.setParent(null);
      if (haveOrder) {
        orderNode(rootNode);
      }
      treeData.add(rootNode);
      rootNode.setRow(metadataTable.getLabel());
      contents.put(metadataTable.getLabel(),treeData);
      i++;
    }
  }
}

Fixed version (ground truth):
public void initModel(){
  int i=0;
  List<? extends IConnection> incomingConnections=NodeUtil.getIncomingConnections(foxComponent,IConnectionCategory.FLOW);
  for (  IConnection connection : incomingConnections) {
    IMetadataTable metadataTable=connection.getMetadataTable();
    metadataTable.setLabel(connection.getUniqueName());
    treeData=new ArrayList<FOXTreeNode>();
    if (i == 0)     currentSchema=metadataTable.getLabel();
    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;
    String schemaId=metadataTable.getLabel() + "String_Node_Str";
    List<Map<String,String>> rootTable=(List<Map<String,String>>)foxComponent.getTableList(FileOutputXMLComponent.ROOT);
    if (rootTable != null) {
      for (      Map<String,String> rootMap : rootTable) {
        String newPath=rootMap.get(FileOutputXMLComponent.PATH);
        String columnName=rootMap.get(FileOutputXMLComponent.COLUMN);
        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();
        }
        String flag=columnName + "String_Node_Str";
        if (columnName != null && columnName.length() > 0 && !flag.startsWith(metadataTable.getLabel() + "String_Node_Str")) {
          continue;
        }
        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=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);
        }
        temp.setRow(metadataTable.getLabel());
        if (columnName != null && columnName.length() > 0 && columnName.startsWith(schemaId)) {
          columnName=columnName.replace(schemaId,"String_Node_Str");
          temp.setColumn(metadataTable.getColumn(columnName));
          temp.setTable(metadataTable);
        }
      }
    }
    current=mainNode;
    currentPath=mainPath;
    boolean isFirst=true;
    List<Map<String,String>> groupTable=(List<Map<String,String>>)foxComponent.getTableList(FileOutputXMLComponent.GROUP);
    if (groupTable != null) {
      for (      Map<String,String> groupMap : groupTable) {
        String newPath=groupMap.get(FileOutputXMLComponent.PATH);
        String columnName=groupMap.get(FileOutputXMLComponent.COLUMN);
        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();
        }
        String flag=columnName + "String_Node_Str";
        if (columnName != null && columnName.length() > 0 && !flag.startsWith(metadataTable.getLabel() + "String_Node_Str")) {
          continue;
        }
        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);
        }
        temp.setRow(metadataTable.getLabel());
        if (columnName != null && columnName.length() > 0 && columnName.startsWith(schemaId)) {
          columnName=columnName.replace(schemaId,"String_Node_Str");
          temp.setColumn(metadataTable.getColumn(columnName));
          temp.setTable(metadataTable);
        }
      }
    }
    current=mainNode;
    currentPath=mainPath;
    isFirst=true;
    List<Map<String,String>> loopTable=(List<Map<String,String>>)foxComponent.getTableList(FileOutputXMLComponent.LOOP);
    if (loopTable != null) {
      for (      Map<String,String> loopMap : loopTable) {
        String newPath=loopMap.get(FileOutputXMLComponent.PATH);
        String columnName=loopMap.get(FileOutputXMLComponent.COLUMN);
        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();
        }
        String flag=columnName + "String_Node_Str";
        if (columnName != null && columnName.length() > 0 && !flag.startsWith(metadataTable.getLabel() + "String_Node_Str")) {
          continue;
        }
        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);
        }
        temp.setRow(metadataTable.getLabel());
        if (columnName != null && columnName.length() > 0 && columnName.startsWith(schemaId)) {
          columnName=columnName.replace(schemaId,"String_Node_Str");
          temp.setColumn(metadataTable.getColumn(columnName));
          temp.setTable(metadataTable);
        }
      }
      if (rootNode == null) {
        rootNode=new Element("String_Node_Str");
      }
      rootNode.setParent(null);
      if (haveOrder) {
        orderNode(rootNode);
      }
      treeData.add(rootNode);
      rootNode.setRow(metadataTable.getLabel());
      contents.put(metadataTable.getLabel(),treeData);
      i++;
    }
  }
}