It’s easy to look at source code and see that it’s got complicated. It’s harder to work out when it’s complicated because it needs to do something complicated like model something from the real world that’s complicated, or when it’s complicated because it’s accumulated loads of old crap. If you start experimenting with a rewrite, typically it’ll look like it mostly works before you’ve added most of the necessary complexity, and that can trick people into thinking that it wasn’t actually necessary.