title: Scala Traits - How to extend a trait multiple times?
body: <p>I am noob to Scala, please see the following code.</p>
  
  <pre><code>abstract class Pizza() {
    def toppings: List[String]
    def price: BigDecimal
  }
  trait Large extends Pizza {
    abstract override def price: BigDecimal = super.price * 2
  }
  trait Cheese extends Pizza {
    abstract override def toppings: List[String] = "Cheese" :: super.toppings
    abstract override def price: BigDecimal = super.price + 0.5
  }
  trait Salami extends Pizza {
    abstract override def toppings: List[String] = "Salami" :: super.toppings
    abstract override def price: BigDecimal = super.price + 1.0
  }
  class BasePizza extends Pizza {
    def toppings = List("Tomato Sauce")
    def price = 5.0
  }
  class MargheritaPizza extends BasePizza with Cheese
  class LargeMargheritaPizza extends MargheritaPizza with Large
  class SalamiPizza extends MargheritaPizza with Salami
  class DoubleCheeseSalamiPizza extends MargheritaPizza with Salami with Cheese
  
  
  println(reflect.runtime.universe.typeOf[DoubleCheeseSalamiPizza].baseClasses)
  // List(class DoubleCheeseSalamiPizza, trait Salami, class MargheritaPizza, trait Cheese, class BasePizza, class Pizza, class Object, class Any) res0: Unit = ()
  </code></pre>
  
  <p>How can I add a decoration multiple times? for example a Pizza with double cheese ? (As you can see in the linearization order <code>trait Cheese</code> is extended one time)</p>