title: Calling the overriden method from a trait with selftype
body: <p>Suppose, you have a trait with a selftype and you've overriden one of the methods:</p>
  
  <pre><code>trait A {
    def foo() { println("A") }
  }
  
  trait B { this: A =&gt;
    override def foo() {
      println("B")
    }
  }
  
  object Test {
    def main (args: Array[String]) {
      val b = new A with B {}
      b.foo()
    }
  }
  </code></pre>
  
  <p>So far so good, it compiles and produces "B" to the output. But how do I call the "shadowed" method from <code>A</code> to do something like this:</p>
  
  <pre><code>trait A {
    def foo() { println("Hello, ") }
  }
  
  trait B { this: A =&gt;
    override def foo() {
      //here I'd like to do something like super.foo()
      println("world!")
    }
  }
  
  object Test {
    def main (args: Array[String]) {
      val b = new A with B {}
      b.foo() //Should print "Hello, world!"
    }
  }
  </code></pre>
  
  <p>Is it even possible to call overriden <code>foo</code>? Or should I prefer inheritance to selftype to make this possible?</p>