# File lib/declarative_authorization/development_support/change_supporter.rb, line 48
      def find_approaches_for (options, &tests)
        @prohibited_actions = (options[:prohibited_actions] || []).to_set

        @approaches_by_actions = {}

        candidates = []
        suggestions = []
        approach_checker = ApproachChecker.new(self, tests)

        starting_candidate = Approach.new(@engine, options[:users], [])
        if starting_candidate.check(approach_checker)
          suggestions << starting_candidate
        else
          candidates << starting_candidate
        end

        checked_candidates = 0
        while !candidates.empty? and checked_candidates < 200
          checked_candidates += next_step(suggestions, candidates, approach_checker)
        end

        # remove subsets
        suggestions.sort!
      end