Program: 119403
Project: 119403
Buggy source:
@Override public void undo(){
  propagateDatas(false);
  if (currentInputMetadata != null) {
    if (!currentInputMetadata.sameMetadataAs(oldInputMetadata,IMetadataColumn.OPTIONS_NONE)) {
      currentInputMetadata.setListColumns(oldInputMetadata.getListColumns());
      if (inputWasRepository) {
        inputNode.setPropertyValue(EParameterName.SCHEMA_TYPE.getName(),EmfComponent.REPOSITORY);
      }
    }
  }
  if (!currentOutputMetadata.sameMetadataAs(oldOutputMetadata,IMetadataColumn.OPTIONS_NONE)) {
    List<IMetadataColumn> currentColumns=new ArrayList<IMetadataColumn>(oldOutputMetadata.getListColumns());
    currentOutputMetadata.setListColumns(currentColumns);
    MetadataToolHelper.copyTable(oldOutputMetadata,currentOutputMetadata);
  }
  for (  INodeConnector connector : node.getListConnector()) {
    if ((!connector.getName().equals(currentConnector)) && connector.getBaseSchema().equals(currentConnector)) {
      MetadataToolHelper.copyTable(oldOutputMetadata,node.getMetadataFromConnector(connector.getName()));
    }
  }
  if (outputWasRepository) {
    node.setPropertyValue(EParameterName.SCHEMA_TYPE.getName(),EmfComponent.REPOSITORY);
  }
  for (  ChangeMetadataCommand cmd : propagatedChange) {
    cmd.undo();
  }
  List<ColumnNameChanged> columnNameChanged=MetadataToolHelper.getColumnNameChanged(oldOutputMetadata,newOutputMetadata);
  ColumnListController.updateColumnList(node,columnNameChanged,true);
  if (!internal) {
    updateColumnList(newOutputMetadata,oldOutputMetadata);
    ((Process)node.getProcess()).checkProcess();
  }
}

Fixed version (ground truth):
@Override public void undo(){
  propagateDatas(false);
  if (currentInputMetadata != null) {
    if (!currentInputMetadata.sameMetadataAs(oldInputMetadata,IMetadataColumn.OPTIONS_NONE)) {
      currentInputMetadata.setListColumns(oldInputMetadata.getListColumns());
      if (inputWasRepository) {
        inputNode.setPropertyValue(EParameterName.SCHEMA_TYPE.getName(),EmfComponent.REPOSITORY);
      }
    }
  }
  if (!currentOutputMetadata.sameMetadataAs(oldOutputMetadata,IMetadataColumn.OPTIONS_NONE)) {
    List<IMetadataColumn> currentColumns=new ArrayList<IMetadataColumn>(oldOutputMetadata.getListColumns());
    currentOutputMetadata.setListColumns(currentColumns);
    MetadataToolHelper.copyTable(oldOutputMetadata,currentOutputMetadata);
  }
  for (  INodeConnector connector : node.getListConnector()) {
    if ((!connector.getName().equals(currentConnector)) && connector.getBaseSchema().equals(currentConnector)) {
      MetadataToolHelper.copyTable(oldOutputMetadata,node.getMetadataFromConnector(connector.getName()));
    }
  }
  if (outputWasRepository) {
    node.setPropertyValue(EParameterName.SCHEMA_TYPE.getName(),EmfComponent.REPOSITORY);
  }
  for (  ChangeMetadataCommand cmd : propagatedChange) {
    cmd.undo();
  }
  List<ColumnNameChanged> columnNameChanged=MetadataToolHelper.getColumnNameChanged(oldOutputMetadata,newOutputMetadata);
  ColumnListController.updateColumnList(node,columnNameChanged,true);
  if (!internal) {
    updateColumnList(newOutputMetadata,oldOutputMetadata);
    ((Process)node.getProcess()).checkProcess();
  }
  refreshTHMAPObjectType();
}