code: public void unGroup(TreeTableColumn<S, ?>... treeTableColumns) {
          try {
              lock.lock();
              if (groupOrder.size() > 0) {
                  groupOrder.removeAll(treeTableColumns);
                  List<TreeTableColumn<S, ?>> grouped = new ArrayList<>();
                  grouped.addAll(groupOrder);
                  groupOrder.clear();
                  JFXUtilities.runInFXAndWait(() -> {
                      ArrayList<TreeTableColumn<S, ?>> sortOrder = new ArrayList<>();
                      sortOrder.addAll(getSortOrder());
                      // needs to reset the children in order to update the parent
                      List children = Arrays.asList(originalRoot.getChildren().toArray());
                      originalRoot.getChildren().clear();
                      originalRoot.getChildren().setAll(children);
                      // reset the original root
                      internalSetRoot = true;
                      setRoot(originalRoot);
                      internalSetRoot = false;
                      getSelectionModel().select(0);
                      getSortOrder().addAll(sortOrder);
                      if (grouped.size() != 0) {
                          refreshGroups(grouped);
                      }
                  });
              }
          } finally {
              lock.unlock();
          }
      }
docs: this is a blocking method so it should not be called from the ui thread,
  it will ungroup the tree table view
  
  @param treeTableColumns