void () { try { if (url == null) { return; } if (url.startsWith(JAR_PROTOCOL)) { VirtualFile file = VirtualFileManager.getInstance().findFileByUrl(BrowserUtil.getDocURL(url)); if (file != null) { myBuilder.buildFromStream(url, new StringReader(VfsUtilCore.loadText(file)), data); } } else { URL parsedUrl = BrowserUtil.getURL(url); if (parsedUrl != null) { // gzip is disabled because in any case compressed JAR is downloaded HttpRequests.request(parsedUrl.toString()).gzip(false).connect(request -> { String contentEncoding = request.getConnection().getContentEncoding(); byte[] bytes = request.readBytes(null); ByteArrayInputStream stream = new ByteArrayInputStream(bytes); if (contentEncoding == null) { try (BufferedReader reader = new BufferedReader(new InputStreamReader(stream, StandardCharsets.UTF_8))) { for (String htmlLine = reader.readLine(); htmlLine != null; htmlLine = reader.readLine()) { contentEncoding = parseContentEncoding(htmlLine); if (contentEncoding != null) { break; } } } } myBuilder.buildFromStream(url, contentEncoding != null ? new MyReader(stream, contentEncoding) : new MyReader(stream), data); return null; }); } } } catch (ProcessCanceledException ignored) { } catch (IOException e) { myException = e; } finally { //noinspection AssignmentToStaticFieldFromInstanceMethod ourFree = true; } }