org_eclipse_lemminx_extensions_xsl_XSLCompletionExtensionsTest_java
org.apache.xerces.impl.xpath.regex.RegularExpression
public boolean matches(String string, int n, int n2, Match match) {
        int n3;
        int n4;
        Object object = this;
        synchronized (object) {
            if (this.operations == null) {
                this.prepare();
            }
            if (this.context == null) {
                this.context = new Context();
            }
        }
        object = null;
        Context context = this.context;
        synchronized (context) {
            object = this.context.inuse ? new Context() : this.context;
            ((Context)object).reset(string, n, n2, this.numberOfClosures);
        }
        if (match != null) {
            match.setNumberOfGroups(this.nofparen);
            match.setSource(string);
        } else if (this.hasBackReferences) {
            match = new Match();
            match.setNumberOfGroups(this.nofparen);
        }
        ((Context)object).match = match;
        if (RegularExpression.isSet(this.options, 512)) {
            int n5 = this.match((Context)object, this.operations, ((Context)object).start, 1, this.options);
            if (n5 == ((Context)object).limit) {
                if (((Context)object).match != null) {
                    ((Context)object).match.setBeginning(0, ((Context)object).start);
                    ((Context)object).match.setEnd(0, n5);
                }
                ((Context)object).setInUse(false);
                return true;
            }
            return false;
        }
        if (this.fixedStringOnly) {
            int n6 = this.fixedStringTable.matches(string, ((Context)object).start, ((Context)object).limit);
            if (n6 >= 0) {
                if (((Context)object).match != null) {
                    ((Context)object).match.setBeginning(0, n6);
                    ((Context)object).match.setEnd(0, n6 + this.fixedString.length());
                }
                ((Context)object).setInUse(false);
                return true;
            }
            ((Context)object).setInUse(false);
            return false;
        }
        if (this.fixedString != null && (n4 = this.fixedStringTable.matches(string, ((Context)object).start, ((Context)object).limit)) < 0) {
            ((Context)object).setInUse(false);
            return false;
        }
        int n7 = ((Context)object).limit - this.minlength;
        int n8 = -1;
        if (this.operations != null && this.operations.type == 7 && this.operations.getChild().type == 0) {
            if (RegularExpression.isSet(this.options, 4)) {
                n3 = ((Context)object).start;
                n8 = this.match((Context)object, this.operations, ((Context)object).start, 1, this.options);
            } else {
                boolean bl = true;
                for (n3 = ((Context)object).start; n3 <= n7; ++n3) {
                    char c = string.charAt(n3);
                    if (RegularExpression.isEOLChar(c)) {
                        bl = true;
                        continue;
                    }
                    if (!bl || 0 > (n8 = this.match((Context)object, this.operations, n3, 1, this.options))) {
                        bl = false;
                        continue;
                    }
                    break;
                }
            }
        } else if (this.firstChar != null) {
            RangeToken rangeToken = this.firstChar;
            for (n3 = ((Context)object).start; n3 <= n7; ++n3) {
                int n9 = string.charAt(n3);
                if (REUtil.isHighSurrogate(n9) && n3 + 1 < ((Context)object).limit) {
                    n9 = REUtil.composeFromSurrogates(n9, string.charAt(n3 + 1));
                }
                if (!rangeToken.match(n9) || 0 > (n8 = this.match((Context)object, this.operations, n3, 1, this.options))) {
                    continue;
                }
                break;
            }
        } else {
            for (n3 = ((Context)object).start; n3 <= n7 && 0 > (n8 = this.match((Context)object, this.operations, n3, 1, this.options)); ++n3) {
            }
        }
        if (n8 >= 0) {
            if (((Context)object).match != null) {
                ((Context)object).match.setBeginning(0, n3);
                ((Context)object).match.setEnd(0, n8);
            }
            ((Context)object).setInUse(false);
            return true;
        }
        ((Context)object).setInUse(false);
        return false;
    }
 -> java.lang.String.charAt(int): char -> java.util.Stack.push(java.lang.Object): java.lang.Object -> java.lang.String.charAt(int): char -> java.util.Stack.push(java.lang.Object): java.lang.Object -> java.lang.String.charAt(int): char -> java.util.Stack.push(java.lang.Object): java.lang.Object -> java.lang.String.charAt(int): char -> java.util.Stack.push(java.lang.Object): java.lang.Object -> java.lang.String.charAt(int): char -> java.util.Stack.push(java.lang.Object): java.lang.Object -> java.lang.String.charAt(int): char -> java.util.Stack.push(java.lang.Object): java.lang.Object -> java.lang.String.charAt(int): char -> java.util.Stack.push(java.lang.Object): java.lang.Object -> java.lang.String.charAt(int): char -> java.util.Stack.push(java.lang.Object): java.lang.Object -> java.lang.String.charAt(int): char -> java.util.Stack.push(java.lang.Object): java.lang.Object -> java.lang.String.charAt(int): char -> java.util.Stack.push(java.lang.Object): java.lang.Object -> java.lang.String.charAt(int): char -> java.util.Stack.push(java.lang.Object): java.lang.Object -> java.lang.String.charAt(int): char -> java.util.Stack.push(java.lang.Object): java.lang.Object -> java.lang.String.charAt(int): char -> java.util.Stack.push(java.lang.Object): java.lang.Object -> java.util.Stack.isEmpty(): boolean -> java.util.Stack.pop(): java.lang.Object -> java.util.Stack.isEmpty(): boolean -> java.util.Stack.pop(): java.lang.Object -> java.util.Stack.isEmpty(): boolean -> java.util.Stack.pop(): java.lang.Object -> java.util.Stack.isEmpty(): boolean -> java.util.Stack.pop(): java.lang.Object -> java.util.Stack.isEmpty(): boolean -> java.util.Stack.pop(): java.lang.Object -> java.util.Stack.isEmpty(): boolean -> java.util.Stack.pop(): java.lang.Object -> java.util.Stack.isEmpty(): boolean -> java.util.Stack.pop(): java.lang.Object -> java.util.Stack.isEmpty(): boolean -> java.util.Stack.pop(): java.lang.Object -> java.util.Stack.isEmpty(): boolean -> java.util.Stack.pop(): java.lang.Object -> java.util.Stack.isEmpty(): boolean -> java.util.Stack.pop(): java.lang.Object -> java.util.Stack.isEmpty(): boolean -> java.util.Stack.pop(): java.lang.Object -> java.util.Stack.isEmpty(): boolean -> java.util.Stack.pop(): java.lang.Object -> java.util.Stack.isEmpty(): boolean -> java.util.Stack.pop(): java.lang.Object -> java.util.Stack.isEmpty(): boolean
 [CALL] [CALL] [CALL] [EXIT] [CALL] [CALL] [EXIT] [CALL] [EXIT] [EXIT] [EXIT] [CALL] [EXIT] [CALL] [CALL] [EXIT] [CALL] [EXIT] [CALL] -> java.lang.String.charAt(int): char [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] -> java.util.Stack.push(java.lang.Object): java.lang.Object [CALL] [CALL] [EXIT] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] -> java.lang.String.charAt(int): char [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] -> java.util.Stack.push(java.lang.Object): java.lang.Object [CALL] [CALL] [EXIT] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] -> java.lang.String.charAt(int): char [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] -> java.util.Stack.push(java.lang.Object): java.lang.Object [CALL] [CALL] [EXIT] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] -> java.lang.String.charAt(int): char [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] -> java.util.Stack.push(java.lang.Object): java.lang.Object [CALL] [CALL] [EXIT] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] -> java.lang.String.charAt(int): char [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] -> java.util.Stack.push(java.lang.Object): java.lang.Object [CALL] [CALL] [EXIT] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] -> java.lang.String.charAt(int): char [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] -> java.util.Stack.push(java.lang.Object): java.lang.Object [CALL] [CALL] [EXIT] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] -> java.lang.String.charAt(int): char [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] -> java.util.Stack.push(java.lang.Object): java.lang.Object [CALL] [CALL] [EXIT] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] -> java.lang.String.charAt(int): char [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] -> java.util.Stack.push(java.lang.Object): java.lang.Object [CALL] [CALL] [EXIT] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] -> java.lang.String.charAt(int): char [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] -> java.util.Stack.push(java.lang.Object): java.lang.Object [CALL] [CALL] [EXIT] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] -> java.lang.String.charAt(int): char [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] -> java.util.Stack.push(java.lang.Object): java.lang.Object [CALL] [CALL] [EXIT] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] -> java.lang.String.charAt(int): char [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] -> java.util.Stack.push(java.lang.Object): java.lang.Object [CALL] [CALL] [EXIT] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] -> java.lang.String.charAt(int): char [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] -> java.util.Stack.push(java.lang.Object): java.lang.Object [CALL] [CALL] [EXIT] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] -> java.lang.String.charAt(int): char [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] -> java.util.Stack.push(java.lang.Object): java.lang.Object [CALL] [CALL] [EXIT] [EXIT] [CALL] [EXIT] -> java.util.Stack.isEmpty(): boolean -> java.util.Stack.pop(): java.lang.Object [CALL] [EXIT] [CALL] [EXIT] -> java.util.Stack.isEmpty(): boolean -> java.util.Stack.pop(): java.lang.Object [CALL] [EXIT] -> java.util.Stack.isEmpty(): boolean -> java.util.Stack.pop(): java.lang.Object [CALL] [EXIT] -> java.util.Stack.isEmpty(): boolean -> java.util.Stack.pop(): java.lang.Object [CALL] [EXIT] -> java.util.Stack.isEmpty(): boolean -> java.util.Stack.pop(): java.lang.Object [CALL] [EXIT] -> java.util.Stack.isEmpty(): boolean -> java.util.Stack.pop(): java.lang.Object [CALL] [EXIT] -> java.util.Stack.isEmpty(): boolean -> java.util.Stack.pop(): java.lang.Object [CALL] [EXIT] -> java.util.Stack.isEmpty(): boolean -> java.util.Stack.pop(): java.lang.Object [CALL] [EXIT] -> java.util.Stack.isEmpty(): boolean -> java.util.Stack.pop(): java.lang.Object [CALL] [EXIT] -> java.util.Stack.isEmpty(): boolean -> java.util.Stack.pop(): java.lang.Object [CALL] [EXIT] -> java.util.Stack.isEmpty(): boolean -> java.util.Stack.pop(): java.lang.Object [CALL] [EXIT] -> java.util.Stack.isEmpty(): boolean -> java.util.Stack.pop(): java.lang.Object [CALL] [EXIT] -> java.util.Stack.isEmpty(): boolean -> java.util.Stack.pop(): java.lang.Object [CALL] [EXIT] -> java.util.Stack.isEmpty(): boolean [EXIT] [CALL] [EXIT] [EXIT]