Program: 128624
Project: 128624
Buggy source:
@Override public void setVisible(boolean visible){
  super.setVisible(visible);
  Adapter adaptor=new Adapter(){
    @Override public Notifier getTarget(){
      return null;
    }
    @Override public boolean isAdapterForType(    Object arg0){
      return false;
    }
    @Override public void notifyChanged(    Notification arg0){
      int type=arg0.getEventType();
      int featureId=arg0.getFeatureID(ConnectionPackage.class);
      if (type == Notification.SET && featureId == ConnectionPackage.ABSTRACT_METADATA_OBJECT__LABEL) {
        MetadataColumn column=(MetadataColumn)arg0.getNotifier();
        String tableName=column.getTable().getLabel();
        Map<String,String> columnChanged=labelChanged.get(tableName);
        if (columnChanged == null) {
          columnChanged=new HashMap<String,String>();
          labelChanged.put(tableName,columnChanged);
        }
        String originalColumnName=columnChanged.get(arg0.getOldStringValue());
        if (originalColumnName == null) {
          columnChanged.put(arg0.getNewStringValue(),arg0.getOldStringValue());
        }
 else {
          columnChanged.clear();
          columnChanged.put(arg0.getNewStringValue(),originalColumnName);
        }
      }
    }
    @Override public void setTarget(    Notifier arg0){
    }
  }
;
  if (visible) {
    initializeForm();
    for (    MetadataColumn column : metadataTable.getColumns()) {
      column.eAdapters().add(adaptor);
    }
  }
 else {
    for (    MetadataColumn column : metadataTable.getColumns()) {
      if (column.eAdapters().contains(adaptor)) {
        column.eAdapters().remove(adaptor);
      }
    }
  }
  if (isReadOnly() != readOnly) {
    adaptFormToReadOnly();
  }
}

Fixed version (ground truth):
@Override public void setVisible(boolean visible){
  super.setVisible(visible);
  Adapter adaptor=new Adapter(){
    @Override public Notifier getTarget(){
      return null;
    }
    @Override public boolean isAdapterForType(    Object arg0){
      return false;
    }
    @Override public void notifyChanged(    Notification arg0){
      int type=arg0.getEventType();
      int featureId=arg0.getFeatureID(ConnectionPackage.class);
      if (type == Notification.SET && featureId == ConnectionPackage.ABSTRACT_METADATA_OBJECT__LABEL) {
        MetadataColumn column=(MetadataColumn)arg0.getNotifier();
        String tableName=column.getTable().getLabel();
        Map<String,String> columnChanged=labelChanged.get(tableName);
        if (columnChanged == null) {
          columnChanged=new HashMap<String,String>();
          labelChanged.put(tableName,columnChanged);
        }
        String originalColumnName=columnChanged.get(arg0.getOldStringValue());
        if (originalColumnName == null) {
          columnChanged.put(arg0.getNewStringValue(),arg0.getOldStringValue());
        }
 else {
          columnChanged.clear();
          columnChanged.put(arg0.getNewStringValue(),originalColumnName);
        }
      }
    }
    @Override public void setTarget(    Notifier arg0){
    }
  }
;
  if (visible) {
    initializeForm();
    if (metadataTable != null) {
      for (      MetadataColumn column : metadataTable.getColumns()) {
        column.eAdapters().add(adaptor);
      }
    }
  }
 else {
    if (metadataTable != null) {
      for (      MetadataColumn column : metadataTable.getColumns()) {
        if (column.eAdapters().contains(adaptor)) {
          column.eAdapters().remove(adaptor);
        }
      }
    }
  }
  if (isReadOnly() != readOnly) {
    adaptFormToReadOnly();
  }
}