diff --git a/src/read/stream.rs b/src/read/stream.rs
index 38854440..3cf174ac 100644
--- a/src/read/stream.rs
+++ b/src/read/stream.rs
@@ -116,8 +116,6 @@ pub trait ZipStreamVisitor {
     fn visit_file(&mut self, file: &mut ZipFile<'_>) -> ZipResult<()>;
 
     /// This function is guranteed to be called after all `visit_file`s.
-    /// For every file, there must be corresponding visit_additional_metadata
-    /// unless the input is incomplete.
     ///
     ///  * `metadata` - Provides missing metadata in `visit_file`.
     fn visit_additional_metadata(&mut self, metadata: &ZipStreamFileMetadata) -> ZipResult<()>;
@@ -214,7 +212,7 @@ impl ZipStreamFileMetadata {
 #[cfg(test)]
 mod test {
     use super::*;
-    use std::collections::BTreeMap;
+    use std::collections::BTreeSet;
     use std::io;
 
     struct DummyVisitor;
@@ -301,12 +299,12 @@ mod test {
 
         #[derive(Default)]
         struct V {
-            filenames: BTreeMap<Box<str>, u8>,
+            filenames: BTreeSet<Box<str>>,
         }
         impl ZipStreamVisitor for V {
             fn visit_file(&mut self, file: &mut ZipFile<'_>) -> ZipResult<()> {
                 if file.is_file() {
-                    self.filenames.insert(file.name().into(), 1);
+                    self.filenames.insert(file.name().into());
                 }
 
                 Ok(())
@@ -316,19 +314,18 @@ mod test {
                 metadata: &ZipStreamFileMetadata,
             ) -> ZipResult<()> {
                 if metadata.is_file() {
-                    let v = self.filenames.get_mut(metadata.name()).unwrap();
-                    *v += 1;
+                    assert!(
+                        self.filenames.contains(metadata.name()),
+                        "{} is missing its file content",
+                        metadata.name()
+                    );
                 }
 
                 Ok(())
             }
         }
 
-        let mut visitor = V::default();
-        reader.visit(&mut visitor).unwrap();
-        for (filename, cnt) in visitor.filenames {
-            assert_eq!(cnt, 2, "{filename} does not have visit_additional_metadata");
-        }
+        reader.visit(&mut V::default()).unwrap();
     }
 
     #[test]
@@ -339,7 +336,7 @@ mod test {
 
         #[derive(Default)]
         struct V {
-            filenames: BTreeMap<Box<str>, u8>,
+            filenames: BTreeSet<Box<str>>,
         }
         impl ZipStreamVisitor for V {
             fn visit_file(&mut self, file: &mut ZipFile<'_>) -> ZipResult<()> {
@@ -351,7 +348,7 @@ mod test {
                 );
 
                 if file.is_file() {
-                    self.filenames.insert(file.name().into(), 1);
+                    self.filenames.insert(file.name().into());
                 }
 
                 Ok(())
@@ -361,19 +358,18 @@ mod test {
                 metadata: &ZipStreamFileMetadata,
             ) -> ZipResult<()> {
                 if metadata.is_file() {
-                    let v = self.filenames.get_mut(metadata.name()).unwrap();
-                    *v += 1;
+                    assert!(
+                        self.filenames.contains(metadata.name()),
+                        "{} is missing its file content",
+                        metadata.name()
+                    );
                 }
 
                 Ok(())
             }
         }
 
-        let mut visitor = V::default();
-        reader.visit(&mut visitor).unwrap();
-        for (filename, cnt) in visitor.filenames {
-            assert_eq!(cnt, 2, "{filename} does not have visit_additional_metadata");
-        }
+        reader.visit(&mut V::default()).unwrap();
     }
 
     /// test case to ensure we don't preemptively over allocate based on the