haha, this reminds me of a chunk of self rewriting machine code I wrote for the C64 (where such enhancements could be justified) Every time I wanted to expand on it I had to sit myself down and look at it FOR A FEW HOURS just to remember what the fuck was going on. And it wasn't even big. The hilarious thought someone else would one day try to decipher it crossed my mind hundreds of times. "Okay, so this is where the code generation rewrites it self.... again"
Sure, you can have conditionals but you can also replace them with no-ops and sure you can have no-ops but you can also move the lower part of the code up.... or should that be the upper part down? Which one is the bigger? How to keep track of this modification? surely moar code morphing is the answer?