diff --git a/lib/deferred_library_check.dart b/lib/deferred_library_check.dart
index bd698c7..8a7e98b 100644
--- a/lib/deferred_library_check.dart
+++ b/lib/deferred_library_check.dart
@@ -38,20 +38,18 @@
 /// 'baz'.
 library dart2js_info.deferred_library_check;
 
-import 'package:quiver/collection.dart';
-
 import 'info.dart';
 
 List<ManifestComplianceFailure> checkDeferredLibraryManifest(
     AllInfo info, Map manifest) {
-  var includedPackages = new Multimap<String, String>();
-  var excludedPackages = new Multimap<String, String>();
+  var includedPackages = new Map<String, Set<String>>();
+  var excludedPackages = new Map<String, Set<String>>();
   for (var part in manifest.keys) {
     for (var package in manifest[part]['include'] ?? []) {
-      includedPackages.add(part, package);
+      (includedPackages[part] ??= {}).add(package);
     }
     for (var package in manifest[part]['exclude'] ?? []) {
-      excludedPackages.add(part, package);
+      (excludedPackages[part] ??= {}).add(package);
     }
   }
 
@@ -77,10 +75,11 @@
     return partNameFailures;
   }
 
-  var mentionedPackages = new Set()
-    ..addAll(includedPackages.values)
-    ..addAll(excludedPackages.values);
-  var actualIncludedPackages = new Multimap<String, String>();
+  var mentionedPackages = {
+    for (var values in includedPackages.values) ...values,
+    for (var values in excludedPackages.values) ...values
+  };
+  var actualIncludedPackages = new Map<String, Set<String>>();
 
   var failures = <ManifestComplianceFailure>[];
 
@@ -97,7 +96,7 @@
         containingParts.addAll(info.outputUnit.imports);
       }
       for (var part in containingParts) {
-        actualIncludedPackages.add(part, packageName);
+        (actualIncludedPackages[part] ??= {}).add(packageName);
         if (excludedPackages[part].contains(packageName)) {
           failures
               .add(new _PartContainedExcludedPackage(part, packageName, info));
@@ -109,10 +108,12 @@
   info.functions.forEach(checkInfo);
   info.fields.forEach(checkInfo);
 
-  includedPackages.forEach((part, package) {
-    if (!actualIncludedPackages.containsKey(part) ||
-        !actualIncludedPackages[part].contains(package)) {
-      failures.add(new _PartDidNotContainPackage(part, package));
+  includedPackages.forEach((part, packages) {
+    for (var package in packages) {
+      if (!actualIncludedPackages.containsKey(part) ||
+          !actualIncludedPackages[part].contains(package)) {
+        failures.add(new _PartDidNotContainPackage(part, package));
+      }
     }
   });
   return failures;
diff --git a/pubspec.yaml b/pubspec.yaml
index 0e6e222..2d00e84 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -17,7 +17,6 @@
   fixnum: ^0.10.5
   path: ^1.3.6
   protobuf: ^1.0.1
-  quiver: '>=0.29.0 <3.0.0'
   shelf: ^0.7.3
   shelf_static: ^0.2.4
   yaml: ^2.1.0
