diff --git a/crates/analyzer/src/analyze/crate_.rs b/crates/analyzer/src/analyze/crate_.rs
index e72aac9..4daef58 100644
--- a/crates/analyzer/src/analyze/crate_.rs
+++ b/crates/analyzer/src/analyze/crate_.rs
@@ -94,21 +94,36 @@ pub fn analyze_crate(path: &str) -> Result<AnalysisResult> {
     // recursively find/read the public sub-modules
     let mut read_modules = vec![];
     while let Some((parent_dir, module_name, parent)) = modules_to_read.pop() {
-        let (module_path, submodule_dir) =
-            if parent_dir.join(&module_name).with_extension("rs").exists() {
-                (
-                    parent_dir.join(&module_name).with_extension("rs"),
-                    parent_dir.join(&module_name),
-                )
-            } else if parent_dir.join(&module_name).join("mod.rs").exists() {
-                (
-                    parent_dir.join(&module_name).join("mod.rs"),
-                    parent_dir.to_path_buf(),
-                )
-            } else {
-                // TODO warn about missing module?
-                continue;
-            };
+        let (module_path, submodule_dir) = if parent_dir
+            .join(&parent[1..].join("/"))
+            .join(&module_name)
+            .with_extension("rs")
+            .exists()
+        {
+            (
+                parent_dir
+                    .join(&parent[1..].join("/"))
+                    .join(&module_name)
+                    .with_extension("rs"),
+                parent_dir.join(&parent[1..].join("/")).join(&module_name),
+            )
+        } else if parent_dir
+            .join(&parent[1..].join("/"))
+            .join(&module_name)
+            .join("mod.rs")
+            .exists()
+        {
+            (
+                parent_dir
+                    .join(&parent[1..].join("/"))
+                    .join(&module_name)
+                    .join("mod.rs"),
+                parent_dir.join(&parent[1..].join("/")).to_path_buf(),
+            )
+        } else {
+            // TODO warn about missing module?
+            continue;
+        };
 
         if read_modules.contains(&module_path) {
             continue;