int start = 0;
    private void parseHandlers() {        ArrayList partBuffer = new ArrayList();        char[] source = content.toCharArray();        int sourceLength = source.length;        int start = 0;        for (int i = 0; i < (sourceLength - 1); i++) {            if ((source[i] == '<') && (source[i + 1] == '%')) {                // found macro start tag                int j = i + 2;                // search macro end tag                while ((j < (sourceLength - 1)) &&                           ((source[j] != '%') || (source[j + 1] != '>'))) {                    j++;                }                if (j > (i + 2)) {                    String str = (new String(source, i + 2, j - i)).trim();                    if (str.endsWith("%>")) {                        str = str.substring(0, str.length() - 2);                    }                    if (str.startsWith("//")) {                        parseComment(str);                    } else {                        if (str.indexOf(" ") > -1) {                            str = str.substring(0, str.indexOf(" "));                        }                        if ((str.indexOf(".") > -1) &&                                (str.startsWith("param.") || str.startsWith("response.") ||                                str.startsWith("request.") || str.startsWith("session.")) &&                                !partBuffer.contains(str)) {                            partBuffer.add(str);                        }                    }                    start = j + 2;                }                i = j + 1;            }        }        String[] strArr = (String[]) partBuffer.toArray(new String[0]);        Arrays.sort(strArr);        for (int i = 0; i < strArr.length; i++) {            addParameter(strArr[i]);        }    }