
import scala.language.implicitConversions

object Test {
  class Base
  object Bob extends Base
  class Foo { def bippy = 42 }
  class Oof { def bippy = -21 }

  // I am more specific than you
  implicit def f1(x: Bob.type): Foo = new Foo
  implicit def f2(x: Base): Oof = new Oof

  def main(args: Array[String]): Unit = {
    // this would of course print an unambiguous 42
    println(Bob.bippy)
    println((new Base).bippy)
  }
}
