Program: 130039
Project: 130039
Buggy source:
protected void initMetadataTable(List<FOXTreeNode> list,EList columnList){
  int maxColumnsNumber=CoreRuntimePlugin.getInstance().getPreferenceStore().getInt(ITalendCorePrefConstants.MAXIMUM_AMOUNT_OF_COLUMNS_FOR_XML);
  for (  FOXTreeNode node : list) {
    if (columnList.size() > maxColumnsNumber) {
      return;
    }
    MetadataEmfTableEditor editor=new MetadataEmfTableEditor();
    if (node instanceof Element) {
      String label=node.getLabel();
      if (!node.hasChildren() && label != null && !label.equals("String_Node_Str")) {
        String dataType=node.getDataType();
        MetadataColumn metadataColumn=ConnectionFactory.eINSTANCE.createMetadataColumn();
        metadataColumn.setLabel(editor.getNextGeneratedColumnName(label,columnList));
        metadataColumn.setOriginalField(label);
        metadataColumn.setTalendType(dataType);
        columnList.add(metadataColumn);
        node.setColumn(ConvertionHelper.convertToIMetaDataColumn(metadataColumn));
      }
    }
    if (node instanceof Attribute) {
      String label=node.getLabel();
      if (label != null && !label.equals("String_Node_Str")) {
        String dataType=node.getDataType();
        MetadataColumn metadataColumn=ConnectionFactory.eINSTANCE.createMetadataColumn();
        metadataColumn.setLabel(editor.getNextGeneratedColumnName(label,columnList));
        metadataColumn.setOriginalField(label);
        metadataColumn.setTalendType(dataType);
        columnList.add(metadataColumn);
        node.setColumn(ConvertionHelper.convertToIMetaDataColumn(metadataColumn));
      }
    }
    if (node.hasChildren()) {
      List<FOXTreeNode> children=node.getChildren();
      initMetadataTable(children,columnList);
    }
  }
}

Fixed version (ground truth):
protected void initMetadataTable(List<FOXTreeNode> list,EList columnList){
  int maxColumnsNumber=CoreRuntimePlugin.getInstance().getPreferenceStore().getInt(ITalendCorePrefConstants.MAXIMUM_AMOUNT_OF_COLUMNS_FOR_XML);
  for (  FOXTreeNode node : list) {
    if (columnList.size() > maxColumnsNumber) {
      return;
    }
    MetadataEmfTableEditor editor=new MetadataEmfTableEditor();
    if (node instanceof Element) {
      String label=node.getLabel();
      if (!node.hasChildren() && label != null && !label.equals("String_Node_Str")) {
        String columnName=label;
        if (columnName.contains("String_Node_Str")) {
          columnName=columnName.split("String_Node_Str")[1];
        }
        columnName=columnName.replaceAll("String_Node_Str","String_Node_Str");
        String dataType=node.getDataType();
        MetadataColumn metadataColumn=ConnectionFactory.eINSTANCE.createMetadataColumn();
        metadataColumn.setLabel(editor.getNextGeneratedColumnName(columnName,columnList));
        metadataColumn.setOriginalField(label);
        metadataColumn.setTalendType(dataType);
        columnList.add(metadataColumn);
        node.setColumn(ConvertionHelper.convertToIMetaDataColumn(metadataColumn));
      }
    }
    if (node instanceof Attribute) {
      String label=node.getLabel();
      if (label != null && !label.equals("String_Node_Str")) {
        String columnName=label;
        if (columnName.contains("String_Node_Str")) {
          columnName=columnName.split("String_Node_Str")[1];
        }
        columnName=columnName.replaceAll("String_Node_Str","String_Node_Str");
        String dataType=node.getDataType();
        MetadataColumn metadataColumn=ConnectionFactory.eINSTANCE.createMetadataColumn();
        metadataColumn.setLabel(editor.getNextGeneratedColumnName(columnName,columnList));
        metadataColumn.setOriginalField(label);
        metadataColumn.setTalendType(dataType);
        columnList.add(metadataColumn);
        node.setColumn(ConvertionHelper.convertToIMetaDataColumn(metadataColumn));
      }
    }
    if (node.hasChildren()) {
      List<FOXTreeNode> children=node.getChildren();
      initMetadataTable(children,columnList);
    }
  }
}