It's obvious that this doesn't work:
trait A val a = new A since traits cannot be instantiated (if we added {} after new A then it would work, since we're creating an anonymous class).
However, this does work, and I don't know why:
trait A trait B val a = new A with B Does the process of linearization automatically create an anonymous class for a base trait or what?