If someone extended TailRec, a MatchError would be thrown here. So, even if TailRec was not sealed, no one could really replace `tailcall(foo())` to `new TailRec { override def result = foo() }` to eliminate the `rest` reference.