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
suggestions.sort!
end