trait Foo { fun inc() : Foo fun not() : Foo } fun foo(x: Foo) { !x.inc() }