anchor.diff:  [source, scala]
   ----
   import scala.util.control.TailCalls.{ TailRec, done, tailcall }
  +
   def even(i: Int): TailRec[Boolean] = i match {
  -case 0 => done(true)
  -case _ => tailcall(odd(i - 1))
  -}
  +  case 0 => done(true)
  +  case _ => tailcall(odd(i - 1))
  +}
  + 
   def odd(i: Int): TailRec[Boolean] = i match {
  -case 0 => done(false)
  -case _ => tailcall(even(i - 1))
  -}
  +  case 0 => done(false)
  +  case _ => tailcall(even(i - 1))
  +}
  +
   even(3000).result
   ----
   
  
positive.code: // Using Scala's self recursive tail call optimization
  @tailrec
  def run(evenOdd: EvenOdd): Boolean = evenOdd match {
  case Done(result) => result
  case Even(value) => run(even(value))
  case Odd(value) => run(odd(value))
  }
  ----
  
  
negative.code: [source, scala]
  ----
  sealed trait EvenOdd
  
  case class Done(result: Boolean) extends EvenOdd
  case class Even(value: Int) extends EvenOdd
  case class Odd(value: Int) extends EvenOdd
  
  def even(i: Int): EvenOdd = i match {
    case 0 => Done(true)
    case _ => Odd(i - 1)
  }
  
  def odd(i: Int): EvenOdd = i match {
    case 0 => Done(false)
    case _ => Even(i - 1)
  }
  ----
  
  