class C[@specialized(Int) A](a:A) {
  lazy val b = {println(s"lazy: $a"); (a, a)} // there should only be two instances of "lazy" in the output
  def c = b
}
object Test {
  def main(args:Array[String]): Unit = {
    val cInt = new C(3)
    println(cInt.c)
    println(cInt.c)
    val cFloat = new C(3.0)
    println(cFloat.c)
    println(cFloat.c)
  }
}
