Program: 118432
Project: 118432
Buggy source:
@Override public void metadataInputChanged(IODataComponent dataComponent,String connectionToApply){
  List<Map<String,String>> listRoot=(List<Map<String,String>>)this.getElementParameter(ROOT).getValue();
  boolean flagRoot=false;
  List<Map<String,String>> listGroup=(List<Map<String,String>>)this.getElementParameter(GROUP).getValue();
  boolean flagGroup=false;
  List<Map<String,String>> listLoop=(List<Map<String,String>>)this.getElementParameter(LOOP).getValue();
  boolean flagLoop=false;
  String schemaId="String_Node_Str";
  if (istFileOutputMSXML()) {
    schemaId=dataComponent.getConnection().getMetadataTable().getLabel() + "String_Node_Str";
  }
  for (  ColumnNameChanged col : dataComponent.getColumnNameChanged()) {
    for (    Map<String,String> map : listRoot) {
      if (map.get(COLUMN).equals(schemaId + col.getOldName())) {
        map.put(COLUMN,schemaId + col.getNewName());
        flagRoot=true;
      }
    }
    for (    Map<String,String> map : listGroup) {
      if (map.get(COLUMN).equals(schemaId + col.getOldName())) {
        map.put(COLUMN,schemaId + col.getNewName());
        flagGroup=true;
      }
    }
    for (    Map<String,String> map : listLoop) {
      if (map.get(COLUMN).equals(schemaId + col.getOldName())) {
        map.put(COLUMN,schemaId + col.getNewName());
        flagLoop=true;
      }
    }
  }
  if (flagRoot) {
    this.getElementParameter(ROOT).setValue(listRoot);
  }
  if (flagGroup) {
    this.getElementParameter(GROUP).setValue(listGroup);
  }
  if (flagLoop) {
    this.getElementParameter(LOOP).setValue(listLoop);
  }
}

Fixed version (ground truth):
@Override public void metadataInputChanged(IODataComponent dataComponent,String connectionToApply){
  List<Map<String,String>> listRoot=new ArrayList<Map<String,String>>();
  if (this.getElementParameter(ROOT) != null && this.getElementParameter(ROOT).getValue() != null) {
    listRoot.addAll((List<Map<String,String>>)this.getElementParameter(ROOT).getValue());
  }
  boolean flagRoot=false;
  List<Map<String,String>> listGroup=new ArrayList<Map<String,String>>();
  if (this.getElementParameter(GROUP) != null && this.getElementParameter(GROUP).getValue() != null) {
    listGroup.addAll((List<Map<String,String>>)this.getElementParameter(GROUP).getValue());
  }
  boolean flagGroup=false;
  List<Map<String,String>> listLoop=new ArrayList<Map<String,String>>();
  if (this.getElementParameter(LOOP) != null && this.getElementParameter(LOOP).getValue() != null) {
    listLoop.addAll((List<Map<String,String>>)this.getElementParameter(LOOP).getValue());
  }
  boolean flagLoop=false;
  String schemaId="String_Node_Str";
  if (istFileOutputMSXML()) {
    schemaId=dataComponent.getConnection().getMetadataTable().getLabel() + "String_Node_Str";
  }
  for (  ColumnNameChanged col : dataComponent.getColumnNameChanged()) {
    for (    Map<String,String> map : listRoot) {
      if (map.get(COLUMN).equals(schemaId + col.getOldName())) {
        map.put(COLUMN,schemaId + col.getNewName());
        flagRoot=true;
      }
    }
    for (    Map<String,String> map : listGroup) {
      if (map.get(COLUMN).equals(schemaId + col.getOldName())) {
        map.put(COLUMN,schemaId + col.getNewName());
        flagGroup=true;
      }
    }
    for (    Map<String,String> map : listLoop) {
      if (map.get(COLUMN).equals(schemaId + col.getOldName())) {
        map.put(COLUMN,schemaId + col.getNewName());
        flagLoop=true;
      }
    }
  }
  if (flagRoot) {
    this.getElementParameter(ROOT).setValue(listRoot);
  }
  if (flagGroup) {
    this.getElementParameter(GROUP).setValue(listGroup);
  }
  if (flagLoop) {
    this.getElementParameter(LOOP).setValue(listLoop);
  }
}