# ... wait, why does this do strange behaviour: type NumVal = object of Rootobj type IntVal = object of NumVal num: int type FloatVal = object of NumVal num: float method printNum(self: NumVal) {.base.} = echo "No Number" method printNum(self: IntVal) = echo self.num + 1 method printNum(self: FloatVal) = echo self.num + 1.0 let x = IntVal(num: 5) let y = FloatVal(num: 5.0) let z: seq[NumVal] = @[x, y] for val in z: val.printNum() # ? # I feel like this should work without issue, I'm confused