Added an invariant guard impl, it's pretty hot though, I should extract it
add an invariant check to the item's SetOrdinal method