Type Linearization

Here, following is explained
///////////////////////////////////////////////////////////////////////////
trait A { def common = “A” }
trait B extends A { override def common = “B” }
trait C extends A { override def common = “C” }
class D1 extends B with C
class D2 extends C with B

In case of (D1), the superclass of C is B.
///////////////////////////////////////////////////////////////////////////

Following same reasoning, in case of (D2), the superclass of B is C.

So is it possible to vary hierarchy relationships dynamically by varying traits linearly?

Asked here too: