class A[T]
class B {
  def m(a: A[this.type] = new A[this.type]): Unit = { }
}

class C {
  def foo(a: Int, b: Int = 0) = 0
  def foo() = 0
}

object Test {
  def newB = new B
  newB.m()

  val stableB = new B
  stableB.m()

  def f: Unit = {
    println((new C).foo(0))
  }
}
