Can use self in class scope
Make `Foo.class` in types always be a virutal type even if Foo doesn't have subclasses
`inherited` macro applies to subclasses of subclasses recursively