AA: fail-safe binary root lookup
diff --git a/analysis/analysis-api-standalone/analysis-api-standalone-base/src/org/jetbrains/kotlin/analysis/api/standalone/base/project/structure/StandaloneProjectFactory.kt b/analysis/analysis-api-standalone/analysis-api-standalone-base/src/org/jetbrains/kotlin/analysis/api/standalone/base/project/structure/StandaloneProjectFactory.kt
index ba278e5..2cb475d 100644
--- a/analysis/analysis-api-standalone/analysis-api-standalone-base/src/org/jetbrains/kotlin/analysis/api/standalone/base/project/structure/StandaloneProjectFactory.kt
+++ b/analysis/analysis-api-standalone/analysis-api-standalone-base/src/org/jetbrains/kotlin/analysis/api/standalone/base/project/structure/StandaloneProjectFactory.kt
@@ -17,6 +17,7 @@
 import com.intellij.psi.impl.file.impl.JavaFileManager
 import com.intellij.psi.search.GlobalSearchScope
 import com.intellij.psi.search.ProjectScope
+import com.intellij.util.io.URLUtil.JAR_PROTOCOL
 import com.intellij.util.io.URLUtil.JAR_SEPARATOR
 import org.jetbrains.kotlin.analysis.project.structure.*
 import org.jetbrains.kotlin.cli.common.messages.MessageCollector
@@ -152,8 +153,12 @@
         .filterIsInstance<KtBinaryModule>()
         .flatMap { it.getBinaryRoots() }
         .mapNotNull { path ->
-            val jar = environment.environment.jarFileSystem.findFileByPath(path.toAbsolutePath().toString() + JAR_SEPARATOR)
-                ?: return@mapNotNull null
+            val pathString = path.toAbsolutePath().toString()
+            val jar =
+                if (pathString.endsWith(JAR_PROTOCOL))
+                    environment.environment.jarFileSystem.findFileByPath(pathString + JAR_SEPARATOR)
+                else null
+            if (jar == null) return@mapNotNull null
             JavaRoot(jar, JavaRoot.RootType.BINARY)
         }