Java to Kotlin action: no infinite recursion for symlinks + more efficient update()