public static GameVersionNumber asGameVersion(String version) {
        try {
            if (!version.isEmpty()) {
                char ch = version.charAt(0);
                switch (ch) {
                    case 'r':
                    case 'a':
                    case 'b':
                    case 'c':
                    case 'i':
                        return Old.parse(version);
                }

                if (version.equals("0.0"))
                    return Release.ZERO;

                if (version.startsWith("1."))
                    return Release.parse(version);

                if (version.length() == 6 && version.charAt(2) == 'w')
                    return Snapshot.parse(version);
            }
        } catch (IllegalArgumentException ignore) {
        }

        Special special = Versions.SPECIALS.get(version);
        if (special == null) {
            special = new Special(version);
        }
        return special;
    }
@Test
    public void testParseNew() {
        List<String> versions = readVersions();
        for (String version : versions) {
            assertFalse(GameVersionNumber.asGameVersion(version) instanceof GameVersionNumber.Old, "version=" + version);
        }
    }