I'll say @tailrec is mandatory here.