15d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaoimport otherpackage.OtherPackagePublicEnum;
25d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
3a5c0c21ac37756698374d233210cfd5b8e8b4436Elliott Hughesimport java.lang.reflect.*;
4a5c0c21ac37756698374d233210cfd5b8e8b4436Elliott Hughes
55d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaopublic class Main {
65d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    /** used by {@link #basisCall} */
75d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    static private int basisTestValue = 12;
85d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
95d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    static public void main(String[] args) throws Exception {
10a5c0c21ac37756698374d233210cfd5b8e8b4436Elliott Hughes        try {
11a5c0c21ac37756698374d233210cfd5b8e8b4436Elliott Hughes            Class<?> enumClass = Enum.class;
12a5c0c21ac37756698374d233210cfd5b8e8b4436Elliott Hughes            Method enumValueOf = null;
13a5c0c21ac37756698374d233210cfd5b8e8b4436Elliott Hughes            for (Method m : enumClass.getDeclaredMethods()) {
14a5c0c21ac37756698374d233210cfd5b8e8b4436Elliott Hughes                if (m.getName().equals("valueOf")) {
15a5c0c21ac37756698374d233210cfd5b8e8b4436Elliott Hughes                    enumValueOf = m;
16a5c0c21ac37756698374d233210cfd5b8e8b4436Elliott Hughes                    break;
17a5c0c21ac37756698374d233210cfd5b8e8b4436Elliott Hughes                }
18a5c0c21ac37756698374d233210cfd5b8e8b4436Elliott Hughes            }
19a5c0c21ac37756698374d233210cfd5b8e8b4436Elliott Hughes            enumValueOf.invoke(null, String.class, "blah");
20a5c0c21ac37756698374d233210cfd5b8e8b4436Elliott Hughes            throw new AssertionError();
21a5c0c21ac37756698374d233210cfd5b8e8b4436Elliott Hughes        } catch (InvocationTargetException expected) {
22a5c0c21ac37756698374d233210cfd5b8e8b4436Elliott Hughes            IllegalArgumentException iae = (IllegalArgumentException) expected.getCause();
2358c02f72dbc1774e3cdf6b228c224b310f6d40ceNarayan Kamath            if (!iae.getMessage().equals("class java.lang.String is not an enum type.")) {
24a5c0c21ac37756698374d233210cfd5b8e8b4436Elliott Hughes                throw new AssertionError();
25a5c0c21ac37756698374d233210cfd5b8e8b4436Elliott Hughes            }
26a5c0c21ac37756698374d233210cfd5b8e8b4436Elliott Hughes        }
27a5c0c21ac37756698374d233210cfd5b8e8b4436Elliott Hughes
285d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        boolean timing = (args.length >= 1) && args[0].equals("--timing");
295d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        run(timing);
305d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    }
315d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
325d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    static public void run(boolean timing) {
335d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        preTest();
345d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
355d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        long time0 = System.nanoTime();
365d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        int count1 = test1(500);
375d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        long time1 = System.nanoTime();
385d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        int count2 = test2(500);
395d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        long time2 = System.nanoTime();
405d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        int count3 = test3(500);
415d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        long time3 = System.nanoTime();
425d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        int count4 = basis(500);
435d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        long time4 = System.nanoTime();
445d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
455d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        System.out.println("basis: performed " + count4 + " iterations");
465d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        System.out.println("test1: performed " + count1 + " iterations");
475d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        System.out.println("test2: performed " + count2 + " iterations");
485d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        System.out.println("test3: performed " + count3 + " iterations");
495d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
505d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        double msec1 = (time1 - time0) / (double) count1 / 1000000;
515d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        double msec2 = (time2 - time1) / (double) count2 / 1000000;
525d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        double msec3 = (time3 - time2) / (double) count3 / 1000000;
535d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        double basisMsec = (time4 - time3) / (double) count4 / 1000000;
545d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
555d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        double avg = (msec1 + msec2 + msec3) / 3;
565d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        if (avg < (basisMsec * 10)) {
575d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            System.out.println("Timing is acceptable.");
585d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        } else {
595d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            System.out.println("Iterations are taking too long!");
605d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            timing = true;
615d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        }
625d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
635d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        if (timing) {
645d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            System.out.printf("basis time: %.3g msec\n", basisMsec);
655d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            System.out.printf("test1: %.3g msec per iteration\n", msec1);
665d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            System.out.printf("test2: %.3g msec per iteration\n", msec2);
675d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            System.out.printf("test3: %.3g msec per iteration\n", msec3);
685d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        }
695d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
705d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    }
715d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
725d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    static public void preTest() {
735d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        /*
745d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao         * This is meant to ensure that the basic enum functionality
755d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao         * really is working.
765d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao         */
775d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
785d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Class<SamePackagePublicEnum> c = SamePackagePublicEnum.class;
795d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
805d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        System.out.println(Enum.valueOf(c, "FOUR"));
815d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        System.out.println(Enum.valueOf(c, "ONE"));
825d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        System.out.println(Enum.valueOf(c, "FOURTEEN"));
835d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        System.out.println(Enum.valueOf(c, "NINE"));
845d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        System.out.println(Enum.valueOf(c, "FIVE"));
855d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        System.out.println(Enum.valueOf(c, "TWELVE"));
865d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
875d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        System.out.println(Enum.valueOf(c, "ZERO").getClass().getName());
885d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    }
895d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
905d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    static final String[] BASIS_COMPARE_ARRAY = {
915d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        "ZERO", "ONE", "TWO", "THREE", "FOUR", "FIVE", "SIX", "SEVEN", "EIGHT",
925d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        "NINE", "TEN", "ELEVEN", "TWELVE", "THIRTEEN", "FOURTEEN", "FIFTEEN",
935d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        "SIXTEEN", "SEVENTEEN", "EIGHTEEN", "NINETEEN"
945d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    };
955d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
965d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    static public int basis(int iters) {
975d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        for (int i = iters; i > 0; i--) {
985d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            basisValueOf("ZERO");
995d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            basisValueOf("ONE");
1005d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            basisValueOf("TWO");
1015d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            basisValueOf("THREE");
1025d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            basisValueOf("FOUR");
1035d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            basisValueOf("FIVE");
1045d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            basisValueOf("SIX");
1055d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            basisValueOf("SEVEN");
1065d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            basisValueOf("EIGHT");
1075d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            basisValueOf("NINE");
1085d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            basisValueOf("TEN");
1095d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            basisValueOf("ELEVEN");
1105d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            basisValueOf("TWELVE");
1115d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            basisValueOf("THIRTEEN");
1125d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            basisValueOf("FOURTEEN");
1135d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            basisValueOf("FIFTEEN");
1145d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            basisValueOf("SIXTEEN");
1155d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            basisValueOf("SEVENTEEN");
1165d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            basisValueOf("EIGHTEEN");
1175d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            basisValueOf("NINETEEN");
1185d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        }
1195d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
1205d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        return iters * 20;
1215d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    }
1225d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
1235d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    static String basisValueOf(String key) {
1245d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        for (String s : BASIS_COMPARE_ARRAY) {
1255d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            if (s.equals(key)) {
1265d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao                return s;
1275d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            }
1285d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        }
1295d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        throw new IllegalArgumentException();
1305d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    }
1315d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
1325d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    static public int test1(int iters) {
1335d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Class<SamePackagePublicEnum> c = SamePackagePublicEnum.class;
1345d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        for (int i = iters; i > 0; i--) {
1355d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            Enum.valueOf(c, "ZERO");
1365d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            Enum.valueOf(c, "ONE");
1375d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            Enum.valueOf(c, "TWO");
1385d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            Enum.valueOf(c, "THREE");
1395d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            Enum.valueOf(c, "FOUR");
1405d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            Enum.valueOf(c, "FIVE");
1415d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            Enum.valueOf(c, "SIX");
1425d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            Enum.valueOf(c, "SEVEN");
1435d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            Enum.valueOf(c, "EIGHT");
1445d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            Enum.valueOf(c, "NINE");
1455d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            Enum.valueOf(c, "TEN");
1465d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            Enum.valueOf(c, "ELEVEN");
1475d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            Enum.valueOf(c, "TWELVE");
1485d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            Enum.valueOf(c, "THIRTEEN");
1495d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            Enum.valueOf(c, "FOURTEEN");
1505d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            Enum.valueOf(c, "FIFTEEN");
1515d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            Enum.valueOf(c, "SIXTEEN");
1525d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            Enum.valueOf(c, "SEVENTEEN");
1535d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            Enum.valueOf(c, "EIGHTEEN");
1545d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            Enum.valueOf(c, "NINETEEN");
1555d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        }
1565d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
1575d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        return iters * 20;
1585d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    }
1595d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
1605d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    static public int test2(int iters) {
1615d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Class<SamePackagePrivateEnum> c = SamePackagePrivateEnum.class;
1625d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        for (int i = iters; i > 0; i--) {
1635d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            Enum.valueOf(c, "ZERO");
1645d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            Enum.valueOf(c, "ONE");
1655d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            Enum.valueOf(c, "TWO");
1665d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            Enum.valueOf(c, "THREE");
1675d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            Enum.valueOf(c, "FOUR");
1685d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            Enum.valueOf(c, "FIVE");
1695d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            Enum.valueOf(c, "SIX");
1705d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            Enum.valueOf(c, "SEVEN");
1715d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            Enum.valueOf(c, "EIGHT");
1725d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            Enum.valueOf(c, "NINE");
1735d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            Enum.valueOf(c, "TEN");
1745d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            Enum.valueOf(c, "ELEVEN");
1755d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            Enum.valueOf(c, "TWELVE");
1765d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            Enum.valueOf(c, "THIRTEEN");
1775d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            Enum.valueOf(c, "FOURTEEN");
1785d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            Enum.valueOf(c, "FIFTEEN");
1795d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            Enum.valueOf(c, "SIXTEEN");
1805d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            Enum.valueOf(c, "SEVENTEEN");
1815d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            Enum.valueOf(c, "EIGHTEEN");
1825d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            Enum.valueOf(c, "NINETEEN");
1835d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        }
1845d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
1855d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        return iters * 20;
1865d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    }
1875d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
1885d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    static public int test3(int iters) {
1895d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Class<OtherPackagePublicEnum> c = OtherPackagePublicEnum.class;
1905d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        for (int i = iters; i > 0; i--) {
1915d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            Enum.valueOf(c, "ZERO");
1925d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            Enum.valueOf(c, "ONE");
1935d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            Enum.valueOf(c, "TWO");
1945d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            Enum.valueOf(c, "THREE");
1955d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            Enum.valueOf(c, "FOUR");
1965d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            Enum.valueOf(c, "FIVE");
1975d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            Enum.valueOf(c, "SIX");
1985d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            Enum.valueOf(c, "SEVEN");
1995d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            Enum.valueOf(c, "EIGHT");
2005d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            Enum.valueOf(c, "NINE");
2015d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            Enum.valueOf(c, "TEN");
2025d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            Enum.valueOf(c, "ELEVEN");
2035d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            Enum.valueOf(c, "TWELVE");
2045d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            Enum.valueOf(c, "THIRTEEN");
2055d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            Enum.valueOf(c, "FOURTEEN");
2065d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            Enum.valueOf(c, "FIFTEEN");
2075d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            Enum.valueOf(c, "SIXTEEN");
2085d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            Enum.valueOf(c, "SEVENTEEN");
2095d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            Enum.valueOf(c, "EIGHTEEN");
2105d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            Enum.valueOf(c, "NINETEEN");
2115d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        }
2125d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
2135d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        return iters * 20;
2145d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    }
2155d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao}
216