In our discussion with @dotta we arrived at the following guidelines: symbols represent definitions, and types represent instantiations of that definition. So you can have one symbol (say, `scala.List`), and many different types with that same symbol: `List[Int]`, `List[String]`, etc. So when this distinction is necessary (as I think it is for type-hierarchy), go for types. Symbols are useful to *navigate* to the (generic) definition.