class Ping { val pong = new Pong(this) def name = "ping" def loop/*?*/ { poke() } def poke/*?*/ { pong./*!*/poke() } override def toString = name } class Pong(ping: Ping) { val name/*?*/ = "pong" def poke() { ping./*!*/poke() } override def toString = name }