org_apache_struts2_convention_PackageBasedActionConfigBuilderTest_java
org.apache.struts2.convention.SEOActionNameBuilder
@Override
    public String build(String className) {
        String actionName = className;
        this.checkActionName(actionName);
        LOG.trace("Truncate Action suffix if found");
        actionName = this.truncateSuffixIfMatches(actionName);
        LOG.trace("Convert to underscores");
        char[] ca = actionName.toCharArray();
        StringBuilder build = new StringBuilder("" + ca[0]);
        boolean lower = true;
        for (int i = 1; i < ca.length; ++i) {
            char c = ca[i];
            if (Character.isUpperCase(c) && lower) {
                build.append(this.separator);
                lower = false;
            } else if (!Character.isUpperCase(c)) {
                lower = true;
            }
            build.append(c);
        }
        actionName = build.toString();
        if (this.lowerCase) {
            actionName = actionName.toLowerCase();
        }
        LOG.trace("Changed action name from [{}] to [{}]", (Object)className, (Object)actionName);
        return actionName;
    }
 -> java.util.Set.iterator(): java.util.Iterator -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.lang.String.equals(java.lang.Object): boolean -> java.util.Iterator.hasNext(): boolean -> java.util.Set.iterator(): java.util.Iterator -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.lang.String.endsWith(java.lang.String): boolean -> java.util.Iterator.hasNext(): boolean -> java.lang.String.toCharArray(): char[] -> java.lang.StringBuilder.append(java.lang.String): java.lang.StringBuilder -> java.lang.StringBuilder.append(char): java.lang.StringBuilder -> java.lang.StringBuilder.toString(): java.lang.String -> java.lang.Character.isUpperCase(char): boolean -> java.lang.Character.isUpperCase(char): boolean -> java.lang.StringBuilder.append(char): java.lang.StringBuilder -> java.lang.Character.isUpperCase(char): boolean -> java.lang.Character.isUpperCase(char): boolean -> java.lang.StringBuilder.append(char): java.lang.StringBuilder -> java.lang.Character.isUpperCase(char): boolean -> java.lang.Character.isUpperCase(char): boolean -> java.lang.StringBuilder.append(char): java.lang.StringBuilder -> java.lang.Character.isUpperCase(char): boolean -> java.lang.Character.isUpperCase(char): boolean -> java.lang.StringBuilder.append(char): java.lang.StringBuilder -> java.lang.Character.isUpperCase(char): boolean -> java.lang.Character.isUpperCase(char): boolean -> java.lang.StringBuilder.append(char): java.lang.StringBuilder -> java.lang.Character.isUpperCase(char): boolean -> java.lang.Character.isUpperCase(char): boolean -> java.lang.StringBuilder.append(char): java.lang.StringBuilder -> java.lang.Character.isUpperCase(char): boolean -> java.lang.Character.isUpperCase(char): boolean -> java.lang.StringBuilder.append(char): java.lang.StringBuilder -> java.lang.Character.isUpperCase(char): boolean -> java.lang.Character.isUpperCase(char): boolean -> java.lang.StringBuilder.append(char): java.lang.StringBuilder -> java.lang.Character.isUpperCase(char): boolean -> java.lang.Character.isUpperCase(char): boolean -> java.lang.StringBuilder.append(char): java.lang.StringBuilder -> java.lang.Character.isUpperCase(char): boolean -> java.lang.Character.isUpperCase(char): boolean -> java.lang.StringBuilder.append(char): java.lang.StringBuilder -> java.lang.Character.isUpperCase(char): boolean -> java.lang.Character.isUpperCase(char): boolean -> java.lang.StringBuilder.append(char): java.lang.StringBuilder -> java.lang.StringBuilder.toString(): java.lang.String -> java.lang.String.toLowerCase(): java.lang.String
 [CALL] [CALL] -> java.util.Set.iterator(): java.util.Iterator -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.lang.String.equals(java.lang.Object): boolean -> java.util.Iterator.hasNext(): boolean [EXIT] [CALL] [CALL] [CALL] [CALL] [EXIT] [CALL] [EXIT] [EXIT] [EXIT] [EXIT] [CALL] -> java.util.Set.iterator(): java.util.Iterator -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.lang.String.endsWith(java.lang.String): boolean -> java.util.Iterator.hasNext(): boolean [EXIT] [CALL] [CALL] [CALL] [CALL] [EXIT] [CALL] [EXIT] [EXIT] [EXIT] [EXIT] -> java.lang.String.toCharArray(): char[] -> java.lang.StringBuilder.append(java.lang.String): java.lang.StringBuilder -> java.lang.StringBuilder.append(char): java.lang.StringBuilder -> java.lang.StringBuilder.toString(): java.lang.String -> java.lang.Character.isUpperCase(char): boolean -> java.lang.Character.isUpperCase(char): boolean -> java.lang.StringBuilder.append(char): java.lang.StringBuilder -> java.lang.Character.isUpperCase(char): boolean -> java.lang.Character.isUpperCase(char): boolean -> java.lang.StringBuilder.append(char): java.lang.StringBuilder -> java.lang.Character.isUpperCase(char): boolean -> java.lang.Character.isUpperCase(char): boolean -> java.lang.StringBuilder.append(char): java.lang.StringBuilder -> java.lang.Character.isUpperCase(char): boolean -> java.lang.Character.isUpperCase(char): boolean -> java.lang.StringBuilder.append(char): java.lang.StringBuilder -> java.lang.Character.isUpperCase(char): boolean -> java.lang.Character.isUpperCase(char): boolean -> java.lang.StringBuilder.append(char): java.lang.StringBuilder -> java.lang.Character.isUpperCase(char): boolean -> java.lang.Character.isUpperCase(char): boolean -> java.lang.StringBuilder.append(char): java.lang.StringBuilder -> java.lang.Character.isUpperCase(char): boolean -> java.lang.Character.isUpperCase(char): boolean -> java.lang.StringBuilder.append(char): java.lang.StringBuilder -> java.lang.Character.isUpperCase(char): boolean -> java.lang.Character.isUpperCase(char): boolean -> java.lang.StringBuilder.append(char): java.lang.StringBuilder -> java.lang.Character.isUpperCase(char): boolean -> java.lang.Character.isUpperCase(char): boolean -> java.lang.StringBuilder.append(char): java.lang.StringBuilder -> java.lang.Character.isUpperCase(char): boolean -> java.lang.Character.isUpperCase(char): boolean -> java.lang.StringBuilder.append(char): java.lang.StringBuilder -> java.lang.Character.isUpperCase(char): boolean -> java.lang.Character.isUpperCase(char): boolean -> java.lang.StringBuilder.append(char): java.lang.StringBuilder -> java.lang.StringBuilder.toString(): java.lang.String -> java.lang.String.toLowerCase(): java.lang.String [CALL] [CALL] [CALL] [CALL] [EXIT] [CALL] [EXIT] [EXIT] [EXIT] [EXIT] [EXIT]