The JVM first runs JIT compilation, so that the application
can get running. JRockit then monitor's threads and samples what could
benefit from being optimized. I guess my hypothesis is that the initial
JIT compilation of the loop in NamespaceIterator.getInScopeNamespaceCodes() runs
okay, but then after time the JVM decides to optimize this loop even more and
possibly that's when we experience this issue?

The 9.1.0.6 build of Saxon has been installed and the
application has been running for 3 days without running into this
"ArrayIndexOutOfBoundsException" exception. I'll let you know if it
happens and what the debugging output looks like. Typically, by now the
problem has occurred. I'm wondering if the JVM does some optimization of
the loop which iterates through the hash and if putting this try/catch in this
code possibly caused the JVM to not do the optimization - but really this is
just a very weak hypothesis on my part. Just because it hasn't happened
yet doesn't mean it wont. Time will tell.