Program: 137705
Project: 137705
Buggy source:
@Override public IStatus runInUIThread(final IProgressMonitor monitor){
  getDisplay().asyncExec(new Runnable(){
    public void run(){
      boolean save=DQRepositoryNode.isOnFilterring();
      String value=DQRepositoryNode.getFilterStr();
      boolean untilSchema=false;
      boolean untilTable=false;
      try {
        if (DIALOG_TYPE_TABLE == getDialogType()) {
          untilSchema=DQRepositoryNode.isUntilSchema();
        }
 else         if (isfViewer) {
          untilTable=DQRepositoryNode.isUntilTable();
        }
        DQRepositoryNode.setFilterStr(filter);
        if (filter.equals("String_Node_Str")) {
          DQRepositoryNode.setFiltering(false);
          if (isfViewer) {
            fViewer.refresh();
            restoreCheckStatus();
          }
 else {
            sTableViewer.refresh();
          }
          unfoldToCheckedElements();
        }
 else {
          DQRepositoryNode.setFiltering(true);
          if (isfViewer) {
            if (DIALOG_TYPE_TABLE == getDialogType()) {
              DQRepositoryNode.setUntilSchema(true);
            }
 else {
              DQRepositoryNode.setUntilTable(true);
            }
            DQRepositoryNode.setIsReturnAllNodesWhenFiltering(false);
            fViewer.refresh();
            fViewer.expandAll();
            DQRepositoryNode.setIsReturnAllNodesWhenFiltering(true);
            restoreCheckStatus();
          }
 else {
            DQRepositoryNode.setIsReturnAllNodesWhenFiltering(false);
            sTableViewer.refresh();
            DQRepositoryNode.setIsReturnAllNodesWhenFiltering(true);
          }
        }
      }
  finally {
        DQRepositoryNode.setFiltering(save);
        DQRepositoryNode.setFilterStr(value);
        if (isfViewer) {
          DQRepositoryNode.setUntilTable(untilTable);
        }
        if (DIALOG_TYPE_TABLE == getDialogType()) {
          DQRepositoryNode.setUntilSchema(untilSchema);
        }
      }
      updateOKStatus();
    }
  }
);
  return Status.OK_STATUS;
}

Fixed version (ground truth):
@Override public IStatus runInUIThread(final IProgressMonitor monitor){
  getDisplay().asyncExec(new Runnable(){
    public void run(){
      boolean save=DQRepositoryNode.isOnFilterring();
      String value=DQRepositoryNode.getFilterStr();
      boolean untilSchema=false;
      boolean untilTable=false;
      try {
        if (DIALOG_TYPE_TABLE == getDialogType()) {
          untilSchema=DQRepositoryNode.isUntilSchema();
        }
 else         if (isfViewer) {
          untilTable=DQRepositoryNode.isUntilTable();
        }
        DQRepositoryNode.setFilterStr(filter);
        if (filter.equals("String_Node_Str")) {
          DQRepositoryNode.setFiltering(false);
          if (isfViewer) {
            fViewer.refresh();
            restoreCheckStatus();
          }
 else {
            sTableViewer.refresh();
          }
          unfoldToCheckedElements();
        }
 else {
          DQRepositoryNode.setFiltering(true);
          if (isfViewer) {
            if (DIALOG_TYPE_TABLE == getDialogType()) {
              DQRepositoryNode.setUntilSchema(true);
            }
 else {
              DQRepositoryNode.setUntilTable(true);
            }
            DQRepositoryNode.setIsReturnAllNodesWhenFiltering(false);
            fViewer.refresh();
            fViewer.expandAll();
            DQRepositoryNode.setIsReturnAllNodesWhenFiltering(true);
            restoreCheckStatus();
          }
 else {
            DQRepositoryNode.setIsReturnAllNodesWhenFiltering(false);
            sTableViewer.refresh();
            DQRepositoryNode.setIsReturnAllNodesWhenFiltering(true);
            restoreTableCheckStatus();
          }
        }
      }
  finally {
        DQRepositoryNode.setFiltering(save);
        DQRepositoryNode.setFilterStr(value);
        if (isfViewer) {
          DQRepositoryNode.setUntilTable(untilTable);
        }
        if (DIALOG_TYPE_TABLE == getDialogType()) {
          DQRepositoryNode.setUntilSchema(untilSchema);
        }
      }
      updateOKStatus();
    }
  }
);
  return Status.OK_STATUS;
}