case class op(x: op, y: int, z: int) { def op(y: int, z: int) = new op(this, y, z) } object Test extends Application { val xs = new op(null, 0, 0) op (1, 1) op (2, 2) Console.println(xs) xs match { case null op (0, 0) op (1, 1) op (2, 2) => Console.println("OK") } }