Try to separate "do_pass" from "have object" decision points.