import java.util.List;
import java.util.Map;
import javafx.application.Application;
import javafx.collections.ObservableList;
import javafx.scene.control.TreeItem;
import javafx.scene.control.TreeSortMode;
import javafx.scene.control.TreeTableColumn;
import javafx.scene.control.TreeTableView;
import javafx.stage.Stage;

public class TableBugReproduction extends Application {
    private static final List<String> COLUMNS = List.of("First", "Second", "Third");

    @Override
    public void start(Stage primaryStage) {
        TreeTableView<Map<String, String>> myTreeTableView = new TreeTableView<>();

        TreeItem<Map<String, String>> myRoot = new TreeItem<>(Map.of());
        myTreeTableView.setRoot(myRoot);
        myTreeTableView.setShowRoot(false);
        myTreeTableView.setSortMode(TreeSortMode.ALL_DESCENDANTS);

        ObservableList<TreeTableColumn<Map<String, String>, ?>> myColumns = myTreeTableView.getColumns();

        TreeTableColumn<Map<String, String>, Object> mySortColumn = null;
        for (String myColumnName : COLUMNS) {
            TreeTableColumn<Map<String, String>, Object> myColumn = new TreeTableColumn<>(myColumnName);
            myColumn.setId(myColumnName);
            myColumn.setSortable(true);
            myColumns.add(myColumn);
            if (mySortColumn == null) {
                mySortColumn = myColumn;
            }
        }

        myTreeTableView.getSortOrder().add(mySortColumn);

        assert myTreeTableView.getSortOrder().size() == 1;
        System.out.println(myTreeTableView.getSortOrder().size());
    }
	
	public static void main(String[] args) {
        Application.launch(TableBugReproduction.class, args);
    }
}
