int start = 0;
    private void parse() {        ArrayList partBuffer = new ArrayList();        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 macr end tag                while ((j < (sourceLength - 1)) &&                           ((source[j] != '%') || (source[j + 1] != '>'))) {                    j++;                }                if (j > (i + 2)) {                    partBuffer.add(new Macro(i, j + 2));                    start = j + 2;                }                i = j + 1;            }        }        macros = new Macro[partBuffer.size()];        partBuffer.toArray(macros);    }