If you look at the implementation of def tpe, it's tpe_*. tpe_* is how you say you've read my comments not to use .tpe and are taking responsibility for the possibility the resulting type contains dummies. And yes, annType is the actual inferred type, rather than the dummy-carrying fake type you would get from annClass.tpe_*.