private void unloadUI() {
   try {
     if (ui == null) {
       if (T.t) {
         T.info("Subsystem already unloaded.");
       }
       return;
     }
     if (tray != null && ti != null) {
       ti.displayMessage(
           "", Language.getLocalizedString(getClass(), "unloading"), TrayIcon.MessageType.NONE);
       balloonClickHandler = null;
     }
     core.restartProgram(false);
   } catch (Exception t) {
     core.reportError(t, this);
   }
 }