Seems pretty good overall. Thanks for doing this. Style: put your open braces at the end of the line. --- + int si = 0; + while (si < tab.length) { why not the more readable: for (int i = 0, len = tab.length; i < len; i += 2) { Object key = tab[i]; if (key != null) { ...