Fixed (parser): couldn't use `self` as second type in a type list
`self` always refers to the instance type, while `self.class` refers to the metaclass
`typeof(self)` as a macro def return type makes `self` resolve to the most specific type, not to the type where the macro was defined
Allow `typeof` in restrictions
Updated Changelog