Demonstrate how to define a type that behaves like an integer but has a lowest valid value of 1 and a highest valid value of 10. Include all bounds checking you need to write, or explain how the compiler or interpreter creates those bounds checks for you.

type TinyInt(Integer value) {
    throw @Overflow(value) when value is <1 or >10
} with Lookup, Show
 
func TinyInt as Integer => this.value
 
func TinyInt + (other) => TinyInt(this.value + other as Integer)
 
func TinyInt * (other) => TinyInt(this.value * other as Integer)
 
func TinyInt - (other) => TinyInt(this.value - other as Integer)
 
func TinyInt / (other) => TinyInt(this.value / other as Integer)