private void selectAllListSelectedPrimitives() {
    List<OsmPrimitive> refSelected = getSelectedReferencePrimitives();
    List<OsmPrimitive> subSelected = getSelectedSubjectPrimitives();

    // clear current selection and add list-selected primitives, handling both
    // same and different reference/subject layers
    settings.getReferenceDataSet().clearSelection();
    settings.getSubjectDataSet().clearSelection();
    settings.getReferenceDataSet().addSelected(refSelected);
    settings.getSubjectDataSet().addSelected(subSelected);
  }
  private void performMatching() {
    matches = generateMatches(settings);

    // populate unmatched objects
    List<OsmPrimitive> referenceOnly = new ArrayList<>(settings.getReferenceSelection());
    List<OsmPrimitive> subjectOnly = new ArrayList<>(settings.getSubjectSelection());
    for (SimpleMatch match : matches) {
      referenceOnly.remove(match.getReferenceObject());
      subjectOnly.remove(match.getSubjectObject());
    }

    referenceOnlyListModel.clear();
    referenceOnlyListModel.addAll(referenceOnly);
    subjectOnlyListModel.clear();
    subjectOnlyListModel.addAll(subjectOnly);

    updateTabTitles();

    matchTableModel.setMatches(matches);
    matches.addConflationListChangedListener(matchTableModel);
    matches.addConflationListChangedListener(conflateAction);
    matches.addConflationListChangedListener(removeAction);
    matches.addConflationListChangedListener(this);
    settings.getSubjectDataSet().addDataSetListener(this);
    settings.getReferenceDataSet().addDataSetListener(this);
    // add conflation layer
    try {
      if (conflationLayer == null) {
        conflationLayer = new ConflationLayer(matches);
        Main.main.addLayer(conflationLayer);
      }
    } catch (Exception ex) {
      JOptionPane.showMessageDialog(
          Main.parent, ex.toString(), "Error adding conflation layer", JOptionPane.ERROR_MESSAGE);
    }
    //        matches.addConflationListChangedListener(conflationLayer);
  }