It's likely they will come up with some novel configurations that we didn't anticipate, but nothing that's not within the limits of its programmed potential. self-modifying code is a strange area of programming, and the vast majority of artificial intelligence doesn't involve self-modifying code because of its unpredictability. In fact, most programming language do not allow for self-modifying code directly, although any turing complete machine (which isn't that difficult to accomplish) could _possibly_ do it. Instead, the trends seem to be object oriented primarily, even within AI. The "purest code" is pure functional programming, but the few languages that are pure functional programming - like Haskell... don't have the speed people want, so they usually return to C++ for closeness-to-the-nature-of-the-computer-itself or to Python, which is easy to use and maintain and comprehend. My point is, the ranges of modification are set by the programmers and the specs of the design ahead of time. Anything that goes beyond the programmed limits of capacity are likely errors.