trait Option[+a] {} case class Some[a](x: a) extends Option[a]; case object None extends Option[All]; object test { def println(str: String): Unit = java.lang.System.out.println(str); def print(opt: Option[String]) = opt match { case Some(x) => println(x); case None => println("nothing"); } }