OK, since you are on rather recent version, and since work I did on this is quote a while ago, I'm assuming the problem still exists. However, I'm not able to reproduce yet, so need more info.
You say "The example I posted is the necessary minimum to reproduce the problem". But it is actually less than the minimum, because if I just paste your example code into an empty file then there's no point moving the code around. So I gather some other code has to be placed before/after that code for the example to be meaningful.
I tried to just place some empty lines around it, also I tried a simple class with a method and place the statements inside the method.
In both cases moving the code around seems to work just fine, even when it is being moved from inside the method to outside the method and vice versa.
So, if you still have some example that breaks the ALT-[UP|DN]ARROW function, can you post a more complete version of it (i.e. including the surrounding lines of code in the file)?
Also to be sure we are talking about the same function: ALT-PGDN doesn't do anything for me only ALT-DN*ARROW*. But I gather this is what you meant anyway.