Oh extra comment, this is a bug based on a bad assumption. We cannot assume all argument values to a method are in order they are allocated (without re-writing the scope table and all affected AST nodes). The parser does depth traversal to parse the nodes and allocates as it comes up. In the derived meth, the parser will allocate 'a', then when it gets to 'b' it burrows down into (c = 3) and then allocates 'c'. Finally after it comes back up and it allocates 'b'.
The simplest fix is probably to use our new ArgumentNode storing the index fix for zsuper, which will slow down zsuper invocation a bit (but only do it for 1.9 mode) since we will move from an array return to walking a list.
Also notice that both interpreter and compiler have different logic for this.