diff --git a/ipojo/runtime/core/src/main/java/org/apache/felix/ipojo/dependency/impl/ServiceReferenceManager.java b/ipojo/runtime/core/src/main/java/org/apache/felix/ipojo/dependency/impl/ServiceReferenceManager.java
index fb87a41..c647766 100644
--- a/ipojo/runtime/core/src/main/java/org/apache/felix/ipojo/dependency/impl/ServiceReferenceManager.java
+++ b/ipojo/runtime/core/src/main/java/org/apache/felix/ipojo/dependency/impl/ServiceReferenceManager.java
@@ -80,6 +80,7 @@
      */
     private LinkedList<ServiceTrackingInterceptor> m_trackingInterceptors = new
             LinkedList<ServiceTrackingInterceptor>();
+    private List<ServiceReference> serviceReferencesList;
 
     /**
      * Creates the service reference manager.
@@ -232,11 +233,14 @@
             ServiceReference oldBest = getFirstService();
             // Recompute the matching services.
             m_matchingReferences.clear();
-            for (ServiceReference reference : m_dependency.getTracker().getServiceReferencesList()) {
-                TransformedServiceReference ref = new TransformedServiceReferenceImpl(reference);
-                ref = accept(ref);
-                if (ref != null) {
-                    m_matchingReferences.put(reference, ref);
+            serviceReferencesList = m_dependency.getTracker().getServiceReferencesList();
+            if (serviceReferencesList != null) {
+                for (ServiceReference reference : serviceReferencesList) {
+                    TransformedServiceReference ref = new TransformedServiceReferenceImpl(reference);
+                    ref = accept(ref);
+                    if (ref != null) {
+                        m_matchingReferences.put(reference, ref);
+                    }
                 }
             }
 
