Program: 120632
Project: 120632
Buggy source:
/** 
 * DOC amaumont Comment method "processNewProcessColumnName".
 * @param previousColumnName TODO
 * @param dataMapTableView
 * @param text
 * @param entry
 */
public void processColumnNameChanged(final String previousColumnName,final String newColumnName,final DataMapTableView dataMapTableView,final ITableEntry currentModifiedITableEntry){
  mapperManager.changeColumnName(currentModifiedITableEntry,previousColumnName,newColumnName);
  Collection<DataMapTableView> tableViews=mapperManager.getTablesView();
  boolean atLeastOneLinkHasBeenRemoved=false;
  for (  DataMapTableView view : tableViews) {
    IDataMapTable dataMapTable=view.getDataMapTable();
    List<IColumnEntry> metadataTableEntries=dataMapTable.getColumnEntries();
    for (    IColumnEntry entry : metadataTableEntries) {
      if (parseExpression(entry.getExpression(),entry,true,true,false).isAtLeastOneLinkRemoved()) {
        atLeastOneLinkHasBeenRemoved=true;
      }
    }
    if (dataMapTable instanceof OutputTable) {
      List<FilterTableEntry> constraintEntries=((OutputTable)dataMapTable).getFilterEntries();
      for (      FilterTableEntry entry : constraintEntries) {
        if (parseExpression(entry.getExpression(),entry,true,true,false).isAtLeastOneLinkRemoved()) {
          atLeastOneLinkHasBeenRemoved=true;
        }
      }
    }
  }
  mapperManager.getUiManager().refreshBackground(false,false);
  dataMapTableView.getTableViewerCreatorForColumns().getTableViewer().refresh(currentModifiedITableEntry);
  if (atLeastOneLinkHasBeenRemoved) {
    new AsynchronousThreading(20,false,dataMapTableView.getDisplay(),new Runnable(){
      public void run(){
        TableViewerCreator tableViewerCreatorForColumns=dataMapTableView.getTableViewerCreatorForColumns();
        boolean propagate=MessageDialog.openQuestion(tableViewerCreatorForColumns.getTable().getShell(),Messages.getString("String_Node_Str"),Messages.getString("String_Node_Str"));
        if (propagate) {
          TableEntryLocation previousLocation=new TableEntryLocation(currentModifiedITableEntry.getParentName(),previousColumnName);
          TableEntryLocation newLocation=new TableEntryLocation(currentModifiedITableEntry.getParentName(),newColumnName);
          mapperManager.replacePreviousLocationInAllExpressions(previousLocation,newLocation);
        }
      }
    }
).start();
  }
}

Fixed version (ground truth):
/** 
 * DOC amaumont Comment method "processNewProcessColumnName".
 * @param previousColumnName TODO
 * @param dataMapTableView
 * @param text
 * @param entry
 */
public void processColumnNameChanged(final String previousColumnName,final String newColumnName,final DataMapTableView dataMapTableView,final ITableEntry currentModifiedITableEntry){
  mapperManager.changeColumnName(currentModifiedITableEntry,previousColumnName,newColumnName);
  Collection<DataMapTableView> tableViews=mapperManager.getTablesView();
  boolean atLeastOneLinkHasBeenRemoved=false;
  for (  DataMapTableView view : tableViews) {
    IDataMapTable dataMapTable=view.getDataMapTable();
    List<IColumnEntry> metadataTableEntries=dataMapTable.getColumnEntries();
    for (    IColumnEntry entry : metadataTableEntries) {
      if (parseExpression(entry.getExpression(),entry,true,true,false).isAtLeastOneLinkRemoved()) {
        atLeastOneLinkHasBeenRemoved=true;
      }
    }
    if (dataMapTable instanceof AbstractInOutTable) {
      ExpressionFilterEntry expressionFilterEntry=((AbstractInOutTable)dataMapTable).getExpressionFilter();
      if (expressionFilterEntry != null && expressionFilterEntry.getExpression() != null) {
        if (parseExpression(expressionFilterEntry.getExpression(),expressionFilterEntry,true,true,false).isAtLeastOneLinkRemoved()) {
          atLeastOneLinkHasBeenRemoved=true;
        }
      }
    }
  }
  mapperManager.getUiManager().refreshBackground(false,false);
  dataMapTableView.getTableViewerCreatorForColumns().getTableViewer().refresh(currentModifiedITableEntry);
  if (atLeastOneLinkHasBeenRemoved) {
    new AsynchronousThreading(20,false,dataMapTableView.getDisplay(),new Runnable(){
      public void run(){
        TableViewerCreator tableViewerCreatorForColumns=dataMapTableView.getTableViewerCreatorForColumns();
        boolean propagate=MessageDialog.openQuestion(tableViewerCreatorForColumns.getTable().getShell(),Messages.getString("String_Node_Str"),Messages.getString("String_Node_Str"));
        if (propagate) {
          TableEntryLocation previousLocation=new TableEntryLocation(currentModifiedITableEntry.getParentName(),previousColumnName);
          TableEntryLocation newLocation=new TableEntryLocation(currentModifiedITableEntry.getParentName(),newColumnName);
          mapperManager.replacePreviousLocationInAllExpressions(previousLocation,newLocation);
        }
      }
    }
).start();
  }
}