`tailrec`: what does it do and when can Kotlin optimize recursion? | LetsGit.IT