Hoist checks out of loops.
We only ever create up to one parse job in a go, so no need to recheck these conditions all the time