@SuppressWarnings("unused")
    private static void runTestKeyInt() throws InterruptedException {
        System.err.println("runTestKeyInt");
        for (;;) {
            final Board board = Board.createBoardRandom(4);

            final KeyMakerInt kmi1 = KeyMakerInt.createInstance(board.getNumRobots(), board.sizeNumBits, (board.getGoal().robotNumber < 0));
            final KeyDepthMap kdm1 = KeyDepthMapTrieSpecial.createInstance(board, true);

            final KeyMakerInt kmi2 = KeyMakerInt.createInstance(board.getNumRobots(), board.sizeNumBits, (board.getGoal().robotNumber < 0));
            final KeyDepthMap kdm2 = new KeyDepthMapTrieGeneric(board.getNumRobots() * board.sizeNumBits);

            for (int i = 0;  i < 10000000;  ++i) {
                board.setRobotsRandom();
                final int[] state = board.getRobotPositions();

                final int key1 = kmi1.run(state);
                final boolean res1a = kdm1.putIfGreater(key1, 5);   // true or false
                final boolean res1b = kdm1.putIfGreater(key1, 5);   // always false
                final boolean res1c = kdm1.putIfGreater(key1, 4);   // always false
                final boolean res1d = kdm1.putIfGreater(key1, 6);   // always equal to res1a
                if ((true == res1b) || (true == res1c)) {
                    System.err.println("unexpected result 'true' of kdm1.putIfGreater() for state " + Arrays.toString(state));
                }
                if ((res1a != res1d)) {
                    System.err.println("unexpected results 'not equal' of kdm1.putIfGreater() for state " + Arrays.toString(state));
                }

                final int key2 = kmi2.run(state);
                final boolean res2a = kdm2.putIfGreater(key2, 5);   // true or false
                final boolean res2b = kdm2.putIfGreater(key2, 5);   // always false
                final boolean res2c = kdm2.putIfGreater(key2, 4);   // always false
                final boolean res2d = kdm2.putIfGreater(key2, 6);   // always equal to res2a
                if ((true == res2b) || (true == res2c)) {
                    System.err.println("unexpected result 'true' of kdm2.putIfGreater() for state " + Arrays.toString(state));
                }
                if ((res2a != res2d)) {
                    System.err.println("unexpected results 'not equal' of kdm2.putIfGreater() for state " + Arrays.toString(state));
                }

                if ((res1a != res2a)) {
                    System.err.println("unexpected results 'not equal' of kdm1/kdm2.putIfGreater() for state " + Arrays.toString(state));
                }
            }
            System.err.println("test loop finished" +
                    "\tkdm1.megabytes=" + ((kdm1.allocatedBytes() + (1 << 20) - 1) >> 20) +
                    "\tkdm2.megabytes=" + ((kdm2.allocatedBytes() + (1 << 20) - 1) >> 20) );
        }
    }