OK, I had the same intuition.
Even though you have separate functions for the different semantics it wasn't immediately obvious to me that this two static if branches are supposed to do the same.