org_apache_struts2_session_StrutsJUnit4SessionTestCaseTest_java
freemarker.template.Version
public Version(String stringValue, Boolean gaeCompliant, Date buildDate) {
        char firstChar;
        this.originalStringValue = stringValue = stringValue.trim();
        int[] parts = new int[3];
        String extraInfoTmp = null;
        int partIdx = 0;
        for (int i = 0; i < stringValue.length(); ++i) {
            char c = stringValue.charAt(i);
            if (this.isNumber(c)) {
                parts[partIdx] = parts[partIdx] * 10 + (c - 48);
                continue;
            }
            if (i == 0) {
                throw new IllegalArgumentException("The version number string " + StringUtil.jQuote(stringValue) + " doesn't start with a number.");
            }
            if (c == '.') {
                char nextC;
                char c2 = nextC = i + 1 >= stringValue.length() ? (char)'\u0000' : stringValue.charAt(i + 1);
                if (nextC == '.') {
                    throw new IllegalArgumentException("The version number string " + StringUtil.jQuote(stringValue) + " contains multiple dots after a number.");
                }
                if (partIdx == 2 || !this.isNumber(nextC)) {
                    extraInfoTmp = stringValue.substring(i);
                    break;
                }
                ++partIdx;
                continue;
            }
            extraInfoTmp = stringValue.substring(i);
            break;
        }
        if (extraInfoTmp != null && ((firstChar = extraInfoTmp.charAt(0)) == '.' || firstChar == '-' || firstChar == '_') && (extraInfoTmp = extraInfoTmp.substring(1)).length() == 0) {
            throw new IllegalArgumentException("The version number string " + StringUtil.jQuote(stringValue) + " has an extra info section opened with \"" + firstChar + "\", but it's empty.");
        }
        this.extraInfo = extraInfoTmp;
        this.major = parts[0];
        this.minor = parts[1];
        this.micro = parts[2];
        this.intValue = this.calculateIntValue();
        this.gaeCompliant = gaeCompliant;
        this.buildDate = buildDate;
    }
 -> java.lang.String.trim(): java.lang.String -> java.lang.String.length(): int -> java.lang.String.charAt(int): char -> java.lang.String.length(): int -> java.lang.String.charAt(int): char -> java.lang.String.length(): int -> java.lang.String.charAt(int): char -> java.lang.String.length(): int -> java.lang.String.charAt(int): char -> java.lang.String.length(): int -> java.lang.String.charAt(int): char -> java.lang.String.length(): int -> java.lang.String.charAt(int): char -> java.lang.String.length(): int -> java.lang.String.charAt(int): char -> java.lang.String.length(): int -> java.lang.String.charAt(int): char -> java.lang.String.length(): int
 [CALL] -> java.lang.String.trim(): java.lang.String -> java.lang.String.length(): int -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.length(): int -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.length(): int -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.length(): int -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.length(): int -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.length(): int -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.length(): int -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.length(): int -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.length(): int [CALL] [CALL] [EXIT] [EXIT] [EXIT]