docs: private JPanel createSorterPane() {
          JPanel insidePanel = new JPanel();
          insidePanel.setLayout(new GridBagLayout());
          preview = new JTableHeader();
          Sortables[] sortables = MainFrame.getInstance().getAvailableSortables();
          preview.setColumnModel(new SorterTableColumnModel(sortables));
  
          for (Sortables s : sortables) {
              if (s != Sortables.DIVIDER) {
                  checkBoxSortList.add(new SortableCheckBox(s));
              }
          }
  
          setSorterCheckBoxes();
  
          GridBagConstraints gbc = new GridBagConstraints();
          gbc.fill = GridBagConstraints.BOTH;
          gbc.gridx = 1;
          gbc.insets = new Insets(2,5,2,5);
          insidePanel.add(new JLabel("<html><h2>1. Choose bug properties"), gbc);
          insidePanel.add(new CheckBoxList<>(checkBoxSortList.toArray(new JCheckBox[checkBoxSortList.size()])), gbc);
  
          JTable t = new JTable(new DefaultTableModel(0, sortables.length));
          t.setTableHeader(preview);
          preview.setCursor(Cursor.getPredefinedCursor(Cursor.W_RESIZE_CURSOR));
          insidePanel.add(new JLabel("<html><h2>2. Drag and drop to change grouping priority"), gbc);
          insidePanel.add(createAppropriatelySizedScrollPane(t), gbc);
  
          sortApply = new JButton(edu.umd.cs.findbugs.L10N.getLocalString("dlg.apply_btn", "Apply"));
          sortApply.addActionListener(e -> {
              MainFrame.getInstance().getSorter().createFrom((SorterTableColumnModel) preview.getColumnModel());
              ((BugTreeModel) MainFrame.getInstance().getTree().getModel()).checkSorter();
              SorterDialog.this.dispose();
          });
          gbc.fill = GridBagConstraints.NONE;
          insidePanel.add(sortApply, gbc);
  
          JPanel sorter = new JPanel();
          sorter.setLayout(new BorderLayout());
          sorter.add(new JScrollPane(insidePanel), BorderLayout.CENTER);
  
          return sorter;
      }