org_eclipse_lemminx_extensions_contentmodel_XMLSchemaHoverDocumentationTypeTest_java
org.apache.xerces.impl.XMLEntityManager
public String setupCurrentEntity(String string, XMLInputSource xMLInputSource, boolean bl, boolean bl2) throws IOException, XNIException {
        String string2 = xMLInputSource.getPublicId();
        Object object = xMLInputSource.getSystemId();
        String string3 = xMLInputSource.getBaseSystemId();
        String string4 = xMLInputSource.getEncoding();
        boolean bl3 = string4 != null;
        Boolean bl4 = null;
        this.fTempByteBuffer = null;
        Object object2 = null;
        Reader reader = xMLInputSource.getCharacterStream();
        Object object3 = XMLEntityManager.expandSystemId((String)object, string3, this.fStrictURI);
        if (string3 == null) {
            string3 = object3;
        }
        if (reader == null) {
            Object object4;
            Object object5;
            int n;
            Object object6;
            Object object7;
            object2 = xMLInputSource.getByteStream();
            if (object2 == null) {
                object7 = new URL((String)object3);
                object6 = ((URL)object7).openConnection();
                if (!(object6 instanceof HttpURLConnection)) {
                    object2 = ((URLConnection)object6).getInputStream();
                } else {
                    n = 1;
                    if (xMLInputSource instanceof HTTPInputSource) {
                        object5 = (HttpURLConnection)object6;
                        object4 = (HTTPInputSource)xMLInputSource;
                        Iterator iterator = ((HTTPInputSource)object4).getHTTPRequestProperties();
                        while (iterator.hasNext()) {
                            Map.Entry entry = (Map.Entry)iterator.next();
                            ((URLConnection)object5).setRequestProperty((String)entry.getKey(), (String)entry.getValue());
                        }
                        n = ((HTTPInputSource)object4).getFollowHTTPRedirects() ? 1 : 0;
                        if (n == 0) {
                            ((HttpURLConnection)object5).setInstanceFollowRedirects(n != 0);
                        }
                    }
                    object2 = ((URLConnection)object6).getInputStream();
                    if (n != 0 && !((String)(object5 = ((URLConnection)object6).getURL().toString())).equals(object3)) {
                        object = object5;
                        object3 = object5;
                    }
                }
            }
            object2 = object7 = new RewindableInputStream((InputStream)object2);
            if (string4 == null) {
                object6 = new byte[4];
                for (n = 0; n < 4; ++n) {
                    object6[n] = (byte)((RewindableInputStream)object7).readAndBuffer();
                }
                if (n == 4) {
                    object5 = this.getEncodingInfo((byte[])object6, n);
                    string4 = ((EncodingInfo)object5).autoDetectedEncoding;
                    object4 = ((EncodingInfo)object5).readerEncoding;
                    bl4 = ((EncodingInfo)object5).isBigEndian;
                    ((InputStream)object2).reset();
                    if (((EncodingInfo)object5).hasBOM) {
                        if (object4 == "UTF-8") {
                            ((InputStream)object2).skip(3L);
                        } else if (object4 == "UTF-16") {
                            ((InputStream)object2).skip(2L);
                        }
                    }
                    reader = this.createReader((InputStream)object2, (String)object4, bl4);
                } else {
                    reader = this.createReader((InputStream)object2, string4, bl4);
                }
            } else if ((string4 = string4.toUpperCase(Locale.ENGLISH)).equals("UTF-8")) {
                object6 = new int[3];
                for (n = 0; n < 3; ++n) {
                    object6[n] = ((RewindableInputStream)object7).readAndBuffer();
                    if (object6[n] == -1) break;
                }
                if (n == 3) {
                    if (object6[0] != 239 || object6[1] != 187 || object6[2] != 191) {
                        ((InputStream)object2).reset();
                    }
                } else {
                    ((InputStream)object2).reset();
                }
                reader = this.createReader((InputStream)object2, "UTF-8", bl4);
            } else if (string4.equals("UTF-16")) {
                object6 = new int[4];
                for (n = 0; n < 4; ++n) {
                    object6[n] = ((RewindableInputStream)object7).readAndBuffer();
                    if (object6[n] == -1) break;
                }
                ((InputStream)object2).reset();
                if (n >= 2) {
                    Object object8 = object6[0];
                    Object object9 = object6[1];
                    if (object8 == 254 && object9 == 255) {
                        bl4 = Boolean.TRUE;
                        ((InputStream)object2).skip(2L);
                    } else if (object8 == 255 && object9 == 254) {
                        bl4 = Boolean.FALSE;
                        ((InputStream)object2).skip(2L);
                    } else if (n == 4) {
                        Object object10 = object6[2];
                        Object object11 = object6[3];
                        if (object8 == false && object9 == 60 && object10 == false && object11 == 63) {
                            bl4 = Boolean.TRUE;
                        }
                        if (object8 == 60 && object9 == false && object10 == 63 && object11 == false) {
                            bl4 = Boolean.FALSE;
                        }
                    }
                }
                reader = this.createReader((InputStream)object2, "UTF-16", bl4);
            } else if (string4.equals("ISO-10646-UCS-4")) {
                object6 = new int[4];
                for (n = 0; n < 4; ++n) {
                    object6[n] = ((RewindableInputStream)object7).readAndBuffer();
                    if (object6[n] == -1) break;
                }
                ((InputStream)object2).reset();
                if (n == 4) {
                    if (object6[0] == false && object6[1] == false && object6[2] == false && object6[3] == 60) {
                        bl4 = Boolean.TRUE;
                    } else if (object6[0] == 60 && object6[1] == false && object6[2] == false && object6[3] == false) {
                        bl4 = Boolean.FALSE;
                    }
                }
                reader = this.createReader((InputStream)object2, string4, bl4);
            } else if (string4.equals("ISO-10646-UCS-2")) {
                object6 = new int[4];
                for (n = 0; n < 4; ++n) {
                    object6[n] = ((RewindableInputStream)object7).readAndBuffer();
                    if (object6[n] == -1) break;
                }
                ((InputStream)object2).reset();
                if (n == 4) {
                    if (object6[0] == false && object6[1] == 60 && object6[2] == false && object6[3] == 63) {
                        bl4 = Boolean.TRUE;
                    } else if (object6[0] == 60 && object6[1] == false && object6[2] == 63 && object6[3] == false) {
                        bl4 = Boolean.FALSE;
                    }
                }
                reader = this.createReader((InputStream)object2, string4, bl4);
            } else {
                reader = this.createReader((InputStream)object2, string4, bl4);
            }
        }
        this.fReaderStack.push(reader);
        if (this.fCurrentEntity != null) {
            this.fEntityStack.push(this.fCurrentEntity);
        }
        this.fCurrentEntity = new ScannedEntity(string, new XMLResourceIdentifierImpl(string2, (String)object, string3, (String)object3), (InputStream)object2, reader, this.fTempByteBuffer, string4, bl, false, bl2);
        this.fCurrentEntity.setEncodingExternallySpecified(bl3);
        this.fEntityScanner.setCurrentEntity(this.fCurrentEntity);
        this.fResourceIdentifier.setValues(string2, (String)object, string3, (String)object3);
        return string4;
    }
 -> java.lang.String.length(): int -> java.lang.String.indexOf(int): int -> java.lang.String.lastIndexOf(int,int): int -> java.lang.String.lastIndexOf(int,int): int -> java.lang.String.lastIndexOf(int,int): int -> java.lang.String.length(): int -> 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.length(): int -> java.lang.String.trim(): java.lang.String -> java.lang.String.length(): int -> java.lang.String.charAt(int): char -> java.lang.String.length(): int -> java.lang.String.charAt(int): char -> java.lang.String.charAt(int): char -> java.lang.String.charAt(int): char -> java.lang.String.toLowerCase(java.util.Locale): java.lang.String -> java.lang.String.length(): int -> 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.length(): int -> 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.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.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.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.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.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.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.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.length(): int -> java.net.URL.openConnection(): java.net.URLConnection -> java.net.URLConnection.getInputStream(): java.io.InputStream -> java.io.InputStream.read(): int -> java.io.InputStream.read(): int -> java.io.InputStream.read(): int -> java.io.InputStream.read(): int -> java.io.InputStream.reset(): void -> java.util.Hashtable.get(java.lang.Object): java.lang.Object -> java.util.Stack.push(java.lang.Object): java.lang.Object
 [CALL] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [CALL] [CALL] [CALL] [CALL] -> java.lang.String.length(): int -> java.lang.String.indexOf(int): int -> java.lang.String.lastIndexOf(int,int): int -> java.lang.String.lastIndexOf(int,int): int -> java.lang.String.lastIndexOf(int,int): int [CALL] -> java.lang.String.length(): int -> 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.length(): int [CALL] [CALL] -> java.lang.String.trim(): java.lang.String -> java.lang.String.length(): int -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.length(): int -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.charAt(int): char [CALL] [EXIT] [EXIT] -> java.lang.String.toLowerCase(java.util.Locale): java.lang.String [EXIT] [EXIT] -> java.lang.String.length(): int -> java.lang.String.charAt(int): char -> java.lang.String.charAt(int): char -> java.lang.String.charAt(int): char -> java.lang.String.charAt(int): char [CALL] -> java.lang.String.length(): int [CALL] [EXIT] -> java.lang.String.charAt(int): char -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.charAt(int): char [CALL] [EXIT] -> java.lang.String.substring(int,int): java.lang.String [EXIT] [EXIT] [EXIT] [EXIT] [CALL] [EXIT] [CALL] [EXIT] -> java.lang.String.length(): int [EXIT] [EXIT] [CALL] [EXIT] -> java.net.URL.openConnection(): java.net.URLConnection -> java.net.URLConnection.getInputStream(): java.io.InputStream [CALL] [EXIT] [CALL] -> java.io.InputStream.read(): int [EXIT] [CALL] -> java.io.InputStream.read(): int [EXIT] [CALL] -> java.io.InputStream.read(): int [EXIT] [CALL] -> java.io.InputStream.read(): int [EXIT] [CALL] [CALL] [CALL] [EXIT] [EXIT] [CALL] [CALL] [EXIT] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [CALL] [EXIT] [EXIT] [CALL] [CALL] [EXIT] [EXIT] [CALL] [CALL] [EXIT] [EXIT] [CALL] [CALL] [EXIT] [EXIT] [EXIT] -> java.io.InputStream.reset(): void [CALL] [EXIT] [CALL] [CALL] [CALL] [EXIT] [CALL] -> java.util.Hashtable.get(java.lang.Object): java.lang.Object [EXIT] [CALL] [EXIT] [CALL] [EXIT] [EXIT] [EXIT] -> java.util.Stack.push(java.lang.Object): java.lang.Object [CALL] [CALL] [EXIT] [EXIT] [CALL] [CALL] [EXIT] [CALL] [EXIT] [CALL] [CALL] [EXIT] [EXIT] [CALL] [EXIT] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [CALL] [EXIT] [EXIT] [EXIT]