diff --git a/include/fruit/impl/component_functors.defn.h b/include/fruit/impl/component_functors.defn.h
index dbed564..25e1509 100644
--- a/include/fruit/impl/component_functors.defn.h
+++ b/include/fruit/impl/component_functors.defn.h
@@ -239,7 +239,7 @@
   template <typename Comp, typename AnnotatedSignature, typename Lambda>
   struct apply {
     using AnnotatedC = NormalizeType(SignatureType(AnnotatedSignature));
-    using OptionalAnnotatedI = FindInMap(typename Comp::InterfaceBindings, AnnotatedC);
+    using OptionalAnnotatedI = FindValueInMap(typename Comp::InterfaceBindings, AnnotatedC);
     struct Op {
       using Result = Comp;
       void operator()(ComponentStorage& storage) {
@@ -469,7 +469,7 @@
       void operator()(ComponentStorage& storage) {
         PostProcessRegisterConstructorHelper<
             UnwrapType<AnnotatedSignature>,
-            Eval<FindInMap(typename Comp::InterfaceBindings, AnnotatedC)>
+            Eval<FindValueInMap(typename Comp::InterfaceBindings, AnnotatedC)>
             >()(storage);
       }
     };
diff --git a/include/fruit/impl/meta/map.h b/include/fruit/impl/meta/map.h
index 4645cbb..c6f3b43 100644
--- a/include/fruit/impl/meta/map.h
+++ b/include/fruit/impl/meta/map.h
@@ -77,6 +77,27 @@
   };
 };
 
+// TODO: Consider implementing this by finding the position first, then calling VectorRemoveFirstN
+// and getting the first element.
+struct FindValueInMap {
+  template <typename TToFind>
+  struct Helper {
+    template <typename CurrentResult, typename T>
+    struct apply {
+      using type = CurrentResult;
+    };
+    template <typename CurrentResult, typename Value>
+    struct apply<CurrentResult, Pair<Value, TToFind>> {
+      using type = Value;
+    };
+  };
+
+  template <typename M, typename TToFind>
+  struct apply {
+    using type = FoldVector(M, Helper<TToFind>, None);
+  };
+};
+
 } // namespace meta
 } // namespace impl
 } // namespace fruit
diff --git a/tests/test_binding_compression.py b/tests/test_binding_compression.py
index 7a27f1c..77c7d1c 100755
--- a/tests/test_binding_compression.py
+++ b/tests/test_binding_compression.py
@@ -60,6 +60,7 @@
           Assert((injector.get<WithAnnot<const I*          >>()->value == 5));
           Assert((injector.get<WithAnnot<const I&          >>() .value == 5));
           Assert((injector.get<WithAnnot<std::shared_ptr<I>>>()->value == 5));
+          Assert(injector.unsafeGet<WithAnnot<X>>() == nullptr);
 
           Assert(X::num_objects_constructed == 1);
         }
@@ -97,6 +98,7 @@
           Assert((injector.get<WithAnnot<const I*          >>()->value == 5));
           Assert((injector.get<WithAnnot<const I&          >>() .value == 5));
           Assert((injector.get<WithAnnot<std::shared_ptr<I>>>()->value == 5));
+          Assert(injector.unsafeGet<WithAnnot<X>>() == nullptr);
           Assert(X::num_objects_constructed == 1);
         }
         '''
@@ -147,6 +149,7 @@
           Assert(C1::num_objects_constructed == 0);
           injector.get<I2*>();
           injector.get<X*>();
+          Assert(injector.unsafeGet<C1>() != nullptr);
           Assert(C1::num_objects_constructed == 1);
         }
         '''
