class ChecklistExporter {

    public List<ForcedRoot> findRoots(final Session session) throws RepositoryException {
        List<ForcedRoot> roots = new ArrayList<>();
        for (Op op : this.operations) {
            switch (op.selectorType) {
                case PATH:
                    roots.addAll(traverse(session, op.args));
                    break;
                case NODETYPE:
                    roots.addAll(query(session, ntStatement(session, op.args)));
                    break;
                case QUERY:
                default:
                    roots.addAll(query(session, op.args.get(0)));
                    break;
            }
        }
        return roots;
    }

    private  ChecklistExporter(final List<Op> operations,
                              final List<String> exportTypeDefs,
                              final List<Rule> pathScopes,
                              final List<Rule> nodeTypeFilters,
                              final List<JcrNs> jcrNamespaces);

}