Obvious in retrospect, but took me a minute to catch on to what’s going on here:
public void DoStuff(byte maximum)
{
for(byte i = 1; i <= maximum; i++)
{
// whatever
}
}
This works like a trooper until someone passes in a byte.MaxValue in a unit test and i becomes 0 after reaching maximum and getting incremented again.