There's no need to require the start value to come directly from the loop predecessor.
The bool return value can be dropped -- check nullptr return instead.
I plan to do this in a followup NFC. There's a bunch of other simplification that follows, and some of the naming could stand cleaned up too.
I actually hadn't noticed. But yes, that's one of the issued I'd called out on the original review. :)