It was fun!
What was not so fun was to make it work reliably. I ended up with piles of ugly code to handle edge cases, and issues kept piling up. So in the end I was happy to use someone else’s solution.