Yes, as TailRec reconstructs execution flow, it pattern matches on type of the tree, and is able to use it this way. But common usecase in scalac(that I like) is that those methods replace trivial match-and-transform clauses.