IO = Trait { .Inp = Type; .Output = Type; .func = (self, x: .Inp) -> .Output } C = Class() C|<: IO|. Inp = Int Output = Bool func self, i = _ = self i >= 0 io x, y = x.func y assert io C.new(), 1