public void setLanguageObject(LanguageObject theLangObj) {
    // language object must be cloned here so that the original isn't modified.
    // this prevents the original from being modified even if the user cancels out of the builder.
    LanguageObject langObj = (theLangObj == null) ? null : (LanguageObject) theLangObj.clone();

    savedLangObj = langObj;
    setOriginalSql(langObj);
    setCurrentSql(langObj);
    treeViewer.setLanguageObject(langObj);
    treeViewer.selectRoot();
    treeViewer.expandAll();

    // Defect 22003 - needed a context for the original expression
    // Providing a Lable at the top of the dialog.
    String labelText =
        Util.getString(PREFIX + "initialExpression")
            + //$NON-NLS-1$
            CoreStringUtil.Constants.DBL_SPACE
            + CoreStringUtil.Constants.DBL_SPACE
            + Util.getString(PREFIX + "undefined"); // $NON-NLS-1$
    if (savedLangObj != null) {
      String loString = savedLangObj.toString();
      if (loString.length() > 50) {
        loString = loString.substring(0, 50) + "..."; // $NON-NLS-1$
      }
      labelText =
          Util.getString(PREFIX + "initialExpression")
              + //$NON-NLS-1$
              CoreStringUtil.Constants.DBL_SPACE
              + CoreStringUtil.Constants.DBL_SPACE
              + loString;
    }
    if (originalLanguageObjLabel != null) {
      originalLanguageObjLabel.setText(labelText);
      originalLanguageObjLabel.getParent().layout();
    }
    // select root tree node
    Display.getDefault()
        .asyncExec(
            new Runnable() {
              public void run() {
                treeViewer.selectRoot();
              }
            });
  }