List<JsonSchemaCatalogEntry> (PsiFile catalog) { if (!catalog.isValid()) return null; VirtualFile virtualFile = catalog.getVirtualFile(); if (virtualFile == null || !virtualFile.isValid()) return null; JsonValue value = AstLoadingFilter.forceAllowTreeLoading(catalog, () -> catalog instanceof JsonFile ? ((JsonFile)catalog).getTopLevelValue() : null); if (!(value instanceof JsonObject)) return null; JsonProperty schemas = ((JsonObject)value).findProperty("schemas"); if (schemas == null) return null; JsonValue schemasValue = schemas.getValue(); if (!(schemasValue instanceof JsonArray)) return null; List<JsonSchemaCatalogEntry> catalogMap = new ArrayList<>(); fillMap((JsonArray)schemasValue, catalogMap); return catalogMap; }