private void runSelectionStrategies(
      IProgressMonitor monitor, FeatureIterator<SimpleFeature> reader) {
    List<SelectionStrategy> strategies = parameters.selectionStrategies;
    UndoableComposite compositeCommand = new UndoableComposite();
    compositeCommand.setName(Messages.SelectGeometryCommand_name);

    SimpleFeature firstFeature = reader.next();
    for (SelectionStrategy selectionStrategy : strategies) {
      selectionStrategy.run(monitor, compositeCommand, parameters, firstFeature, true);
    }

    while (reader.hasNext()) {
      SimpleFeature nextFeature = reader.next();
      for (SelectionStrategy selectionStrategy : strategies) {
        selectionStrategy.run(monitor, compositeCommand, parameters, nextFeature, false);
      }
    }

    this.command = compositeCommand;
  }