def find_lighters_collection(prepatory_steps, requirements): while not requirements.met(): prepatory_steps.exclude('furtive'); if prepatory_steps.incomplete(): recommence_from_the_start(); else: return [lighter for lighter in prepatory_steps if lighter.has('spark') and not lighter.is_furtive()]