The checking logic isn't actually all of the complicated, but I'd rather not have assertions dependent on implementation details (such as odd step first or even step first), so I think sticking with a warning (and an explanation in the code) is the right way to go.