org_eclipse_lemminx_extensions_contentmodel_AssociateGrammarCodeLensExtensionsTest_java
org.eclipse.lemminx.extensions.contentmodel.model.ContentModelManager
private void fillReferencedGrammarInfo(DOMDocument document, String publicId, String systemId, ContentModelProvider.Identifier identifier, Set<ReferencedGrammarInfo> referencedGrammarInfos) {
        ResolvedURIInfo resolvedURIInfo = this.resolverManager.resolveInfo(document.getDocumentURI(), publicId, systemId);
        if (resolvedURIInfo != null) {
            GrammarCacheInfo grammarCacheInfo = null;
            String cachedResolvedUri = null;
            boolean downloading = false;
            Exception cacheError = null;
            String resolvedUri = resolvedURIInfo.getResolvedURI();
            if (this.cacheResolverExtension.canUseCache(resolvedUri)) {
                try {
                    Path file = this.cacheResolverExtension.getCachedResource(resolvedUri);
                    if (file != null) {
                        cachedResolvedUri = file.toUri().toString();
                    }
                }
                catch (CacheResourceDownloadingException e) {
                    downloading = true;
                }
                catch (Exception e) {
                    cacheError = e;
                }
                finally {
                    if (cachedResolvedUri == null) {
                        try {
                            cachedResolvedUri = CacheResourcesManager.getResourceCachePath(resolvedUri).toUri().toString();
                        }
                        catch (IOException e) {}
                    }
                }
                grammarCacheInfo = new GrammarCacheInfo(cachedResolvedUri, downloading, cacheError);
            }
            if (identifier == null) {
                identifier = new ContentModelProvider.Identifier(publicId, systemId, null, null);
            }
            referencedGrammarInfos.add(new ReferencedGrammarInfo(resolvedURIInfo, grammarCacheInfo, identifier));
        }
    }
 -> java.util.List.iterator(): java.util.Iterator -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.lang.String.equals(java.lang.Object): boolean -> java.util.List.iterator(): java.util.Iterator -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.nio.file.Path.resolve(java.nio.file.Path): java.nio.file.Path -> java.nio.file.Path.toFile(): java.io.File -> java.io.File.exists(): boolean -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.nio.file.Path.resolve(java.nio.file.Path): java.nio.file.Path -> java.nio.file.Path.toFile(): java.io.File -> java.io.File.exists(): boolean -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.nio.file.Path.resolve(java.nio.file.Path): java.nio.file.Path -> java.nio.file.Path.toFile(): java.io.File -> java.io.File.exists(): boolean -> java.util.Iterator.hasNext(): boolean -> java.util.List.get(int): java.lang.Object -> java.nio.file.Path.resolve(java.nio.file.Path): java.nio.file.Path -> java.nio.file.Path.toFile(): java.io.File -> java.io.File.toURI(): java.net.URI -> java.net.URI.toString(): java.lang.String -> java.lang.String.isEmpty(): boolean -> java.util.Set.add(java.lang.Object): boolean
 [CALL] [CALL] [CALL] [EXIT] [EXIT] [CALL] -> java.util.List.iterator(): java.util.Iterator -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object [CALL] [EXIT] -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object [CALL] [EXIT] -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object [CALL] [EXIT] -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object [CALL] -> java.lang.String.equals(java.lang.Object): boolean -> java.util.List.iterator(): java.util.Iterator -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object [CALL] [CALL] [CALL] [CALL] [EXIT] -> java.nio.file.Path.resolve(java.nio.file.Path): java.nio.file.Path [EXIT] [EXIT] -> java.nio.file.Path.toFile(): java.io.File -> java.io.File.exists(): boolean [EXIT] -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object [CALL] [CALL] [CALL] [CALL] [EXIT] -> java.nio.file.Path.resolve(java.nio.file.Path): java.nio.file.Path [EXIT] [EXIT] -> java.nio.file.Path.toFile(): java.io.File -> java.io.File.exists(): boolean [EXIT] -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object [CALL] [CALL] [CALL] [CALL] [EXIT] -> java.nio.file.Path.resolve(java.nio.file.Path): java.nio.file.Path [EXIT] [EXIT] -> java.nio.file.Path.toFile(): java.io.File -> java.io.File.exists(): boolean [EXIT] -> java.util.Iterator.hasNext(): boolean -> java.util.List.get(int): java.lang.Object [CALL] [CALL] [CALL] [EXIT] -> java.nio.file.Path.resolve(java.nio.file.Path): java.nio.file.Path [EXIT] [EXIT] -> java.nio.file.Path.toFile(): java.io.File -> java.io.File.toURI(): java.net.URI -> java.net.URI.toString(): java.lang.String [EXIT] -> java.lang.String.isEmpty(): boolean [CALL] [EXIT] [EXIT] [CALL] [EXIT] [CALL] [CALL] [CALL] [EXIT] [EXIT] [EXIT] [CALL] [EXIT] [CALL] [EXIT] -> java.util.Set.add(java.lang.Object): boolean [EXIT]