org_eclipse_lemminx_extensions_xsd_XSDCompletionExtensionsTest_java
org.apache.xerces.impl.xpath.XPath$Scanner
public boolean scanExpr(SymbolTable symbolTable, XPath.Tokens tokens, String string, int n, int n2) throws XPathException {
        boolean bl = false;
        block23: while (n != n2) {
            int n3 = string.charAt(n);
            while ((n3 == 32 || n3 == 10 || n3 == 9 || n3 == 13) && ++n != n2) {
                n3 = string.charAt(n);
            }
            if (n == n2) break;
            int n4 = n3 >= 128 ? 25 : fASCIICharMap[n3];
            switch (n4) {
                case 6: {
                    this.addToken(tokens, 0);
                    bl = false;
                    if (++n != n2) continue block23;
                    break;
                }
                case 7: {
                    this.addToken(tokens, 1);
                    bl = true;
                    if (++n != n2) continue block23;
                    break;
                }
                case 21: {
                    this.addToken(tokens, 2);
                    bl = false;
                    if (++n != n2) continue block23;
                    break;
                }
                case 22: {
                    this.addToken(tokens, 3);
                    bl = true;
                    if (++n != n2) continue block23;
                    break;
                }
                case 12: {
                    if (n + 1 == n2) {
                        this.addToken(tokens, 4);
                        bl = true;
                        ++n;
                        break;
                    }
                    n3 = string.charAt(n + 1);
                    if (n3 == 46) {
                        this.addToken(tokens, 5);
                        bl = true;
                        n += 2;
                    } else if (n3 >= 48 && n3 <= 57) {
                        this.addToken(tokens, 47);
                        bl = true;
                        n = this.scanNumber(tokens, string, n2, n);
                    } else if (n3 == 47) {
                        this.addToken(tokens, 4);
                        bl = true;
                        ++n;
                    } else {
                        if (n3 == 124) {
                            this.addToken(tokens, 4);
                            bl = true;
                            ++n;
                            break;
                        }
                        if (n3 == 32 || n3 == 10 || n3 == 9 || n3 == 13) {
                            while (++n != n2 && ((n3 = (int)string.charAt(n)) == 32 || n3 == 10 || n3 == 9 || n3 == 13)) {
                            }
                            if (n == n2 || n3 == 124) {
                                this.addToken(tokens, 4);
                                bl = true;
                                break;
                            }
                            throw new XPathException("c-general-xpath");
                        }
                        throw new XPathException("c-general-xpath");
                    }
                    if (n != n2) continue block23;
                    break;
                }
                case 19: {
                    this.addToken(tokens, 6);
                    bl = false;
                    if (++n != n2) continue block23;
                    break;
                }
                case 10: {
                    this.addToken(tokens, 7);
                    bl = false;
                    if (++n != n2) continue block23;
                    break;
                }
                case 15: {
                    if (++n == n2) {
                        return false;
                    }
                    n3 = string.charAt(n);
                    if (n3 != 58) {
                        return false;
                    }
                    this.addToken(tokens, 8);
                    bl = false;
                    if (++n != n2) continue block23;
                    break;
                }
                case 13: {
                    if (++n == n2) {
                        this.addToken(tokens, 21);
                        bl = false;
                        break;
                    }
                    n3 = string.charAt(n);
                    if (n3 == 47) {
                        this.addToken(tokens, 22);
                        bl = false;
                        if (++n != n2) continue block23;
                        break;
                    }
                    this.addToken(tokens, 21);
                    bl = false;
                    break;
                }
                case 24: {
                    this.addToken(tokens, 23);
                    bl = false;
                    if (++n != n2) continue block23;
                    break;
                }
                case 9: {
                    this.addToken(tokens, 24);
                    bl = false;
                    if (++n != n2) continue block23;
                    break;
                }
                case 11: {
                    this.addToken(tokens, 25);
                    bl = false;
                    if (++n != n2) continue block23;
                    break;
                }
                case 17: {
                    this.addToken(tokens, 26);
                    bl = false;
                    if (++n != n2) continue block23;
                    break;
                }
                case 3: {
                    if (++n == n2) {
                        return false;
                    }
                    n3 = string.charAt(n);
                    if (n3 != 61) {
                        return false;
                    }
                    this.addToken(tokens, 27);
                    bl = false;
                    if (++n != n2) continue block23;
                    break;
                }
                case 16: {
                    if (++n == n2) {
                        this.addToken(tokens, 28);
                        bl = false;
                        break;
                    }
                    n3 = string.charAt(n);
                    if (n3 == 61) {
                        this.addToken(tokens, 29);
                        bl = false;
                        if (++n != n2) continue block23;
                        break;
                    }
                    this.addToken(tokens, 28);
                    bl = false;
                    break;
                }
                case 18: {
                    if (++n == n2) {
                        this.addToken(tokens, 30);
                        bl = false;
                        break;
                    }
                    n3 = string.charAt(n);
                    if (n3 == 61) {
                        this.addToken(tokens, 31);
                        bl = false;
                        if (++n != n2) continue block23;
                        break;
                    }
                    this.addToken(tokens, 30);
                    bl = false;
                    break;
                }
                case 4: {
                    int n5 = n3;
                    if (++n == n2) {
                        return false;
                    }
                    n3 = string.charAt(n);
                    int n6 = n;
                    while (n3 != n5) {
                        if (++n == n2) {
                            return false;
                        }
                        n3 = string.charAt(n);
                    }
                    int n7 = n - n6;
                    this.addToken(tokens, 46);
                    bl = true;
                    tokens.addToken(symbolTable.addSymbol(string.substring(n6, n6 + n7)));
                    if (++n != n2) continue block23;
                    break;
                }
                case 14: {
                    this.addToken(tokens, 47);
                    bl = true;
                    n = this.scanNumber(tokens, string, n2, n);
                    break;
                }
                case 5: {
                    String string2;
                    if (++n == n2) {
                        return false;
                    }
                    int n8 = n;
                    if ((n = this.scanNCName(string, n2, n)) == n8) {
                        return false;
                    }
                    n3 = n < n2 ? (int)string.charAt(n) : -1;
                    String string3 = symbolTable.addSymbol(string.substring(n8, n));
                    if (n3 != 58) {
                        string2 = XMLSymbols.EMPTY_STRING;
                    } else {
                        string2 = string3;
                        if (++n == n2) {
                            return false;
                        }
                        n8 = n;
                        if ((n = this.scanNCName(string, n2, n)) == n8) {
                            return false;
                        }
                        n3 = n < n2 ? (int)string.charAt(n) : -1;
                        string3 = symbolTable.addSymbol(string.substring(n8, n));
                    }
                    this.addToken(tokens, 48);
                    bl = true;
                    tokens.addToken(string2);
                    tokens.addToken(string3);
                    break;
                }
                case 8: {
                    if (bl) {
                        this.addToken(tokens, 20);
                        bl = false;
                    } else {
                        this.addToken(tokens, 9);
                        bl = true;
                    }
                    if (++n != n2) continue block23;
                    break;
                }
                case 20: 
                case 23: 
                case 25: {
                    int n8 = n;
                    n = this.scanNCName(string, n2, n);
                    if (n == n8) {
                        return false;
                    }
                    n3 = n < n2 ? (int)string.charAt(n) : -1;
                    String string3 = symbolTable.addSymbol(string.substring(n8, n));
                    boolean bl2 = false;
                    boolean bl3 = false;
                    String string2 = XMLSymbols.EMPTY_STRING;
                    if (n3 == 58) {
                        if (++n == n2) {
                            return false;
                        }
                        n3 = string.charAt(n);
                        if (n3 == 42) {
                            if (++n < n2) {
                                n3 = string.charAt(n);
                            }
                            bl2 = true;
                        } else if (n3 == 58) {
                            if (++n < n2) {
                                n3 = string.charAt(n);
                            }
                            bl3 = true;
                        } else {
                            string2 = string3;
                            n8 = n;
                            if ((n = this.scanNCName(string, n2, n)) == n8) {
                                return false;
                            }
                            n3 = n < n2 ? (int)string.charAt(n) : -1;
                            string3 = symbolTable.addSymbol(string.substring(n8, n));
                        }
                    }
                    while ((n3 == 32 || n3 == 10 || n3 == 9 || n3 == 13) && ++n != n2) {
                        n3 = string.charAt(n);
                    }
                    if (bl) {
                        if (string3 == fAndSymbol) {
                            this.addToken(tokens, 16);
                            bl = false;
                        } else if (string3 == fOrSymbol) {
                            this.addToken(tokens, 17);
                            bl = false;
                        } else if (string3 == fModSymbol) {
                            this.addToken(tokens, 18);
                            bl = false;
                        } else if (string3 == fDivSymbol) {
                            this.addToken(tokens, 19);
                            bl = false;
                        } else {
                            return false;
                        }
                        if (bl2) {
                            return false;
                        }
                        if (!bl3) continue block23;
                        return false;
                    }
                    if (n3 == 40 && !bl2 && !bl3) {
                        if (string3 == fCommentSymbol) {
                            this.addToken(tokens, 12);
                        } else if (string3 == fTextSymbol) {
                            this.addToken(tokens, 13);
                        } else if (string3 == fPISymbol) {
                            this.addToken(tokens, 14);
                        } else if (string3 == fNodeSymbol) {
                            this.addToken(tokens, 15);
                        } else {
                            this.addToken(tokens, 32);
                            tokens.addToken(string2);
                            tokens.addToken(string3);
                        }
                        this.addToken(tokens, 0);
                        bl = false;
                        if (++n != n2) continue block23;
                        break;
                    }
                    if (bl3 || n3 == 58 && n + 1 < n2 && string.charAt(n + 1) == ':') {
                        if (string3 == fAncestorSymbol) {
                            this.addToken(tokens, 33);
                        } else if (string3 == fAncestorOrSelfSymbol) {
                            this.addToken(tokens, 34);
                        } else if (string3 == fAttributeSymbol) {
                            this.addToken(tokens, 35);
                        } else if (string3 == fChildSymbol) {
                            this.addToken(tokens, 36);
                        } else if (string3 == fDescendantSymbol) {
                            this.addToken(tokens, 37);
                        } else if (string3 == fDescendantOrSelfSymbol) {
                            this.addToken(tokens, 38);
                        } else if (string3 == fFollowingSymbol) {
                            this.addToken(tokens, 39);
                        } else if (string3 == fFollowingSiblingSymbol) {
                            this.addToken(tokens, 40);
                        } else if (string3 == fNamespaceSymbol) {
                            this.addToken(tokens, 41);
                        } else if (string3 == fParentSymbol) {
                            this.addToken(tokens, 42);
                        } else if (string3 == fPrecedingSymbol) {
                            this.addToken(tokens, 43);
                        } else if (string3 == fPrecedingSiblingSymbol) {
                            this.addToken(tokens, 44);
                        } else if (string3 == fSelfSymbol) {
                            this.addToken(tokens, 45);
                        } else {
                            return false;
                        }
                        if (bl2) {
                            return false;
                        }
                        this.addToken(tokens, 8);
                        bl = false;
                        if (bl3) continue block23;
                        ++n;
                        if (++n != n2) continue block23;
                        break;
                    }
                    if (bl2) {
                        this.addToken(tokens, 10);
                        bl = true;
                        tokens.addToken(string3);
                        break;
                    }
                    this.addToken(tokens, 11);
                    bl = true;
                    tokens.addToken(string2);
                    tokens.addToken(string3);
                    break;
                }
                default: {
                    return false;
                }
            }
        }
        return true;
    }
 -> java.lang.String.charAt(int): char -> java.lang.String.charAt(int): char -> java.lang.String.charAt(int): char -> java.lang.String.charAt(int): char -> java.lang.String.charAt(int): char -> java.lang.String.charAt(int): char -> java.lang.String.charAt(int): char -> java.lang.String.charAt(int): char -> java.lang.String.charAt(int): char -> java.lang.String.substring(int,int): java.lang.String -> java.lang.String.hashCode(): int -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.String.charAt(int): char -> java.lang.String.charAt(int): char -> java.lang.String.charAt(int): char -> java.lang.String.charAt(int): char -> java.lang.String.charAt(int): char -> java.lang.String.charAt(int): char -> java.lang.String.substring(int,int): java.lang.String -> java.lang.String.hashCode(): int -> java.lang.String.hashCode(): int -> java.lang.String.hashCode(): int -> java.lang.String.hashCode(): int -> java.lang.String.hashCode(): int -> java.lang.String.hashCode(): int -> java.lang.String.hashCode(): int -> java.lang.String.hashCode(): int -> java.lang.String.hashCode(): int -> java.lang.String.hashCode(): int -> java.lang.String.hashCode(): int -> java.lang.String.hashCode(): int -> java.lang.String.hashCode(): int -> java.lang.String.hashCode(): int -> java.lang.String.hashCode(): int -> java.lang.String.hashCode(): int -> java.lang.String.hashCode(): int -> java.lang.String.hashCode(): int -> java.lang.String.hashCode(): int -> java.lang.String.hashCode(): int -> java.lang.String.hashCode(): int -> java.lang.String.hashCode(): int -> java.lang.String.hashCode(): int -> java.lang.String.hashCode(): int -> java.lang.String.hashCode(): int -> java.lang.String.hashCode(): int -> java.lang.String.hashCode(): int -> java.lang.String.hashCode(): int -> java.lang.String.hashCode(): int -> java.lang.String.hashCode(): int -> java.lang.String.hashCode(): int -> java.lang.String.hashCode(): int -> java.lang.String.hashCode(): int -> java.lang.String.hashCode(): int -> java.lang.String.hashCode(): int -> java.lang.String.hashCode(): int -> java.lang.String.hashCode(): int -> java.lang.String.hashCode(): int -> java.lang.String.hashCode(): int -> java.lang.String.hashCode(): int -> java.lang.String.hashCode(): int -> java.lang.String.hashCode(): int -> java.lang.String.hashCode(): int -> java.lang.String.hashCode(): int -> java.lang.String.hashCode(): int -> java.lang.String.hashCode(): int -> java.lang.String.hashCode(): int -> java.lang.String.hashCode(): int -> java.lang.String.hashCode(): int -> java.lang.String.hashCode(): int -> java.lang.String.hashCode(): int -> java.lang.String.hashCode(): int -> java.lang.String.hashCode(): int -> java.lang.String.hashCode(): int -> java.lang.String.hashCode(): int -> java.lang.String.hashCode(): int -> java.lang.String.hashCode(): int -> java.lang.String.hashCode(): int -> java.lang.String.hashCode(): int -> java.lang.String.hashCode(): int -> java.lang.String.hashCode(): int -> java.lang.String.hashCode(): int -> java.lang.String.hashCode(): int -> java.lang.String.hashCode(): int -> java.lang.String.hashCode(): int -> java.lang.String.hashCode(): int -> java.lang.String.hashCode(): int -> java.lang.String.hashCode(): int -> java.lang.String.hashCode(): int -> java.lang.String.hashCode(): int -> java.lang.String.hashCode(): int -> java.lang.String.hashCode(): int -> java.lang.String.hashCode(): int -> java.lang.String.hashCode(): int -> java.lang.String.hashCode(): int -> java.lang.String.hashCode(): int -> java.lang.String.hashCode(): int -> java.lang.String.intern(): java.lang.String -> java.lang.String.length(): int -> java.lang.String.getChars(int,int,char[],int): void -> java.util.Hashtable.get(java.lang.Object): java.lang.Object -> java.util.Hashtable.size(): int -> java.util.Hashtable.put(java.lang.Object,java.lang.Object): java.lang.Object -> java.lang.Integer.intValue(): int -> java.util.Hashtable.get(java.lang.Object): java.lang.Object -> java.util.Hashtable.size(): int -> java.util.Hashtable.put(java.lang.Object,java.lang.Object): java.lang.Object -> java.lang.Integer.intValue(): int
 [CALL] -> java.lang.String.charAt(int): char -> java.lang.String.charAt(int): char [CALL] [CALL] [CALL] [EXIT] [EXIT] [EXIT] -> java.lang.String.charAt(int): char -> java.lang.String.charAt(int): char [CALL] [CALL] [CALL] [EXIT] [EXIT] [EXIT] -> java.lang.String.charAt(int): char [CALL] -> java.lang.String.charAt(int): char -> java.lang.String.charAt(int): char -> java.lang.String.charAt(int): char [EXIT] -> java.lang.String.charAt(int): char -> java.lang.String.substring(int,int): java.lang.String [CALL] [CALL] -> java.lang.String.hashCode(): int [EXIT] -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.String.equals(java.lang.Object): boolean [EXIT] -> java.lang.String.charAt(int): char [CALL] -> java.lang.String.charAt(int): char -> java.lang.String.charAt(int): char -> java.lang.String.charAt(int): char -> java.lang.String.charAt(int): char -> java.lang.String.charAt(int): char [EXIT] -> java.lang.String.substring(int,int): java.lang.String [CALL] [CALL] -> java.lang.String.hashCode(): int [EXIT] [CALL] [CALL] [CALL] [CALL] -> java.lang.String.hashCode(): int [EXIT] [CALL] -> java.lang.String.hashCode(): int [EXIT] [CALL] -> java.lang.String.hashCode(): int [EXIT] [CALL] -> java.lang.String.hashCode(): int [EXIT] [CALL] -> java.lang.String.hashCode(): int [EXIT] [CALL] -> java.lang.String.hashCode(): int [EXIT] [CALL] -> java.lang.String.hashCode(): int [EXIT] [CALL] -> java.lang.String.hashCode(): int [EXIT] [CALL] -> java.lang.String.hashCode(): int [EXIT] [CALL] -> java.lang.String.hashCode(): int [EXIT] [CALL] -> java.lang.String.hashCode(): int [EXIT] [CALL] -> java.lang.String.hashCode(): int [EXIT] [CALL] -> java.lang.String.hashCode(): int [EXIT] [CALL] -> java.lang.String.hashCode(): int [EXIT] [CALL] -> java.lang.String.hashCode(): int [EXIT] [CALL] -> java.lang.String.hashCode(): int [EXIT] [CALL] -> java.lang.String.hashCode(): int [EXIT] [CALL] -> java.lang.String.hashCode(): int [EXIT] [CALL] -> java.lang.String.hashCode(): int [EXIT] [CALL] -> java.lang.String.hashCode(): int [EXIT] [CALL] -> java.lang.String.hashCode(): int [EXIT] [CALL] -> java.lang.String.hashCode(): int [EXIT] [CALL] -> java.lang.String.hashCode(): int [EXIT] [CALL] -> java.lang.String.hashCode(): int [EXIT] [CALL] -> java.lang.String.hashCode(): int [EXIT] [CALL] -> java.lang.String.hashCode(): int [EXIT] [CALL] -> java.lang.String.hashCode(): int [EXIT] [CALL] -> java.lang.String.hashCode(): int [EXIT] [CALL] -> java.lang.String.hashCode(): int [EXIT] [CALL] -> java.lang.String.hashCode(): int [EXIT] [CALL] -> java.lang.String.hashCode(): int [EXIT] [CALL] -> java.lang.String.hashCode(): int [EXIT] [CALL] -> java.lang.String.hashCode(): int [EXIT] [CALL] -> java.lang.String.hashCode(): int [EXIT] [CALL] -> java.lang.String.hashCode(): int [EXIT] [CALL] -> java.lang.String.hashCode(): int [EXIT] [CALL] -> java.lang.String.hashCode(): int [EXIT] [CALL] -> java.lang.String.hashCode(): int [EXIT] [CALL] -> java.lang.String.hashCode(): int [EXIT] [CALL] -> java.lang.String.hashCode(): int [EXIT] [CALL] -> java.lang.String.hashCode(): int [EXIT] [CALL] -> java.lang.String.hashCode(): int [EXIT] [CALL] -> java.lang.String.hashCode(): int [EXIT] [CALL] -> java.lang.String.hashCode(): int [EXIT] [CALL] -> java.lang.String.hashCode(): int [EXIT] [CALL] -> java.lang.String.hashCode(): int [EXIT] [CALL] -> java.lang.String.hashCode(): int [EXIT] [CALL] -> java.lang.String.hashCode(): int [EXIT] [CALL] -> java.lang.String.hashCode(): int [EXIT] [CALL] -> java.lang.String.hashCode(): int [EXIT] [CALL] -> java.lang.String.hashCode(): int [EXIT] [CALL] -> java.lang.String.hashCode(): int [EXIT] [CALL] -> java.lang.String.hashCode(): int [EXIT] [CALL] -> java.lang.String.hashCode(): int [EXIT] [CALL] -> java.lang.String.hashCode(): int [EXIT] [CALL] -> java.lang.String.hashCode(): int [EXIT] [CALL] -> java.lang.String.hashCode(): int [EXIT] [CALL] -> java.lang.String.hashCode(): int [EXIT] [CALL] -> java.lang.String.hashCode(): int [EXIT] [CALL] -> java.lang.String.hashCode(): int [EXIT] [CALL] -> java.lang.String.hashCode(): int [EXIT] [CALL] -> java.lang.String.hashCode(): int [EXIT] [CALL] -> java.lang.String.hashCode(): int [EXIT] [CALL] -> java.lang.String.hashCode(): int [EXIT] [CALL] -> java.lang.String.hashCode(): int [EXIT] [CALL] -> java.lang.String.hashCode(): int [EXIT] [CALL] -> java.lang.String.hashCode(): int [EXIT] [CALL] -> java.lang.String.hashCode(): int [EXIT] [CALL] -> java.lang.String.hashCode(): int [EXIT] [CALL] -> java.lang.String.hashCode(): int [EXIT] [CALL] -> java.lang.String.hashCode(): int [EXIT] [CALL] -> java.lang.String.hashCode(): int [EXIT] [CALL] -> java.lang.String.hashCode(): int [EXIT] [CALL] -> java.lang.String.hashCode(): int [EXIT] [CALL] -> java.lang.String.hashCode(): int [EXIT] [EXIT] [EXIT] [CALL] -> java.lang.String.hashCode(): int [EXIT] [CALL] -> java.lang.String.intern(): java.lang.String -> java.lang.String.length(): int -> java.lang.String.getChars(int,int,char[],int): void [EXIT] [EXIT] [EXIT] [CALL] [CALL] [CALL] [EXIT] [EXIT] [EXIT] [CALL] -> java.util.Hashtable.get(java.lang.Object): java.lang.Object -> java.util.Hashtable.size(): int -> java.util.Hashtable.put(java.lang.Object,java.lang.Object): java.lang.Object -> java.lang.Integer.intValue(): int [CALL] [EXIT] [EXIT] [CALL] -> java.util.Hashtable.get(java.lang.Object): java.lang.Object -> java.util.Hashtable.size(): int -> java.util.Hashtable.put(java.lang.Object,java.lang.Object): java.lang.Object -> java.lang.Integer.intValue(): int [CALL] [EXIT] [EXIT] [EXIT]