org_aspectj_weaver_GenericSignatureParserTest_java
org.aspectj.util.GenericSignatureParser
public String[] tokenize(String signatureString) {
        char[] chars = signatureString.toCharArray();
        int index = 0;
        ArrayList<String> tokens = new ArrayList<String>();
        StringBuilder identifier = new StringBuilder();
        boolean inParens = false;
        boolean inArray = false;
        boolean couldSeePrimitive = false;
        do {
            switch (chars[index]) {
                case '<': {
                    if (identifier.length() > 0) {
                        tokens.add(identifier.toString());
                    }
                    identifier = new StringBuilder();
                    tokens.add("<");
                    break;
                }
                case '>': {
                    if (identifier.length() > 0) {
                        tokens.add(identifier.toString());
                    }
                    identifier = new StringBuilder();
                    tokens.add(">");
                    break;
                }
                case ':': {
                    if (identifier.length() > 0) {
                        tokens.add(identifier.toString());
                    }
                    identifier = new StringBuilder();
                    tokens.add(":");
                    break;
                }
                case '/': {
                    if (identifier.length() > 0) {
                        tokens.add(identifier.toString());
                    }
                    identifier = new StringBuilder();
                    tokens.add("/");
                    couldSeePrimitive = false;
                    break;
                }
                case ';': {
                    if (identifier.length() > 0) {
                        tokens.add(identifier.toString());
                    }
                    identifier = new StringBuilder();
                    tokens.add(";");
                    couldSeePrimitive = true;
                    inArray = false;
                    break;
                }
                case '^': {
                    if (identifier.length() > 0) {
                        tokens.add(identifier.toString());
                    }
                    identifier = new StringBuilder();
                    tokens.add("^");
                    break;
                }
                case '+': {
                    tokens.add("+");
                    break;
                }
                case '-': {
                    tokens.add("-");
                    break;
                }
                case '*': {
                    tokens.add("*");
                    break;
                }
                case '.': {
                    if (identifier.length() > 0) {
                        tokens.add(identifier.toString());
                    }
                    identifier = new StringBuilder();
                    couldSeePrimitive = false;
                    tokens.add(".");
                    break;
                }
                case '(': {
                    tokens.add("(");
                    inParens = true;
                    couldSeePrimitive = true;
                    break;
                }
                case ')': {
                    tokens.add(")");
                    inParens = false;
                    break;
                }
                case '[': {
                    tokens.add("[");
                    couldSeePrimitive = true;
                    inArray = true;
                    break;
                }
                case 'B': 
                case 'C': 
                case 'D': 
                case 'F': 
                case 'I': 
                case 'J': 
                case 'S': 
                case 'V': 
                case 'Z': {
                    if ((inParens || inArray) && couldSeePrimitive && identifier.length() == 0) {
                        tokens.add(new String("" + chars[index]));
                    } else {
                        identifier.append(chars[index]);
                    }
                    inArray = false;
                    break;
                }
                case 'L': {
                    couldSeePrimitive = false;
                }
                default: {
                    identifier.append(chars[index]);
                }
            }
        } while (++index < chars.length);
        if (identifier.length() > 0) {
            tokens.add(identifier.toString());
        }
        String[] tokenArray = new String[tokens.size()];
        tokens.toArray(tokenArray);
        return tokenArray;
    }
 -> java.lang.String.toCharArray(): char[] -> java.util.List.add(java.lang.Object): boolean -> java.lang.StringBuilder.append(char): java.lang.StringBuilder -> java.lang.StringBuilder.append(char): java.lang.StringBuilder -> java.lang.StringBuilder.length(): int -> java.lang.StringBuilder.toString(): java.lang.String -> java.util.List.add(java.lang.Object): boolean -> java.util.List.add(java.lang.Object): boolean -> java.lang.StringBuilder.append(char): java.lang.StringBuilder -> java.lang.StringBuilder.length(): int -> java.lang.StringBuilder.append(char): java.lang.StringBuilder -> java.lang.StringBuilder.length(): int -> java.lang.StringBuilder.toString(): java.lang.String -> java.util.List.add(java.lang.Object): boolean -> java.util.List.add(java.lang.Object): boolean -> java.lang.StringBuilder.append(char): java.lang.StringBuilder -> java.lang.StringBuilder.length(): int -> java.lang.StringBuilder.append(char): java.lang.StringBuilder -> java.lang.StringBuilder.length(): int -> java.lang.StringBuilder.toString(): java.lang.String -> java.util.List.add(java.lang.Object): boolean -> java.util.List.add(java.lang.Object): boolean -> java.util.List.add(java.lang.Object): boolean -> java.lang.StringBuilder.append(char): java.lang.StringBuilder -> java.lang.StringBuilder.length(): int -> java.lang.StringBuilder.toString(): java.lang.String -> java.util.List.add(java.lang.Object): boolean -> java.util.List.size(): int -> java.util.List.toArray(java.lang.Object[]): java.lang.Object[]
 [CALL] -> java.lang.String.toCharArray(): char[] -> java.util.List.add(java.lang.Object): boolean -> java.lang.StringBuilder.append(char): java.lang.StringBuilder -> java.lang.StringBuilder.append(char): java.lang.StringBuilder -> java.lang.StringBuilder.length(): int -> java.lang.StringBuilder.toString(): java.lang.String -> java.util.List.add(java.lang.Object): boolean -> java.util.List.add(java.lang.Object): boolean -> java.lang.StringBuilder.append(char): java.lang.StringBuilder -> java.lang.StringBuilder.length(): int -> java.lang.StringBuilder.append(char): java.lang.StringBuilder -> java.lang.StringBuilder.length(): int -> java.lang.StringBuilder.toString(): java.lang.String -> java.util.List.add(java.lang.Object): boolean -> java.util.List.add(java.lang.Object): boolean -> java.lang.StringBuilder.append(char): java.lang.StringBuilder -> java.lang.StringBuilder.length(): int -> java.lang.StringBuilder.append(char): java.lang.StringBuilder -> java.lang.StringBuilder.length(): int -> java.lang.StringBuilder.toString(): java.lang.String -> java.util.List.add(java.lang.Object): boolean -> java.util.List.add(java.lang.Object): boolean -> java.util.List.add(java.lang.Object): boolean -> java.lang.StringBuilder.append(char): java.lang.StringBuilder -> java.lang.StringBuilder.length(): int -> java.lang.StringBuilder.toString(): java.lang.String -> java.util.List.add(java.lang.Object): boolean -> java.util.List.size(): int -> java.util.List.toArray(java.lang.Object[]): java.lang.Object[] [EXIT]