public static String[] splitMethodDesc(String desc)
    {
        //\[*L[^;]+;|\[[ZBCSIFDJ]|[ZBCSIFDJ]
        int beginIndex = desc.indexOf('(');
        int endIndex = desc.lastIndexOf(')');
        if (((beginIndex == -1) && (endIndex != -1)) || ((beginIndex != -1) && (endIndex == -1)))
        {
            System.err.println(beginIndex);
            System.err.println(endIndex);
            throw new RuntimeException();
        }
        String x0;
        if ((beginIndex == -1) && (endIndex == -1))
        {
            x0 = desc;
        }
        else
        {
            x0 = desc.substring(beginIndex + 1, endIndex);
        }
        Pattern pattern = Pattern.compile("\\[*L[^;]+;|\\[[ZBCSIFDJ]|[ZBCSIFDJ]");
        Matcher matcher = pattern.matcher(x0);

        ArrayList<String> listMatches = new ArrayList<String>();

        while (matcher.find())
        {
            listMatches.add(matcher.group());
        }

        return listMatches.toArray(new String[listMatches.size()]);
    }