Hi!
I funnily enough didn't check the underlying type of the modeled type NonNegativeInteger, we use the private range of AS numbers (the last few million) of the 32-bit AS range. I naively modeled it as a NonNegativeInteger and got a runtime validation failure when I tried setting a value in that range.
I am maybe mostly curious why you chose to model the NonNegativeInteger as i32 instead of u32?