diff --git a/core/src/main/java/org/apache/sling/testing/mock/osgi/OsgiServiceUtil.java b/core/src/main/java/org/apache/sling/testing/mock/osgi/OsgiServiceUtil.java
index 59e4234..705f522 100644
--- a/core/src/main/java/org/apache/sling/testing/mock/osgi/OsgiServiceUtil.java
+++ b/core/src/main/java/org/apache/sling/testing/mock/osgi/OsgiServiceUtil.java
@@ -22,15 +22,7 @@
 import java.lang.reflect.Field;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.SortedSet;
-import java.util.TreeSet;
+import java.util.*;
 
 import org.apache.commons.lang3.StringUtils;
 import org.apache.felix.scr.impl.inject.Annotations;
@@ -443,8 +435,12 @@
         // multiple references found? inject only first one with highest ranking
         if (matchingServices.size() > 1 && !reference.isCardinalityMultiple()) {
             matchingServices = matchingServices.subList(0, 1);
+        } else {
+            // sorting based on lowest ranking first
+            matchingServices.sort(Comparator.comparing(ServiceInfo::getServiceReference));
         }
 
+
         // try to invoke bind method
         for (ServiceInfo matchingService : matchingServices) {
             invokeBindUnbindMethod(reference, target, matchingService, true);
diff --git a/core/src/test/java/org/apache/sling/testing/mock/osgi/MockServiceReferencesSortTest.java b/core/src/test/java/org/apache/sling/testing/mock/osgi/MockServiceReferencesSortTest.java
index 8e321c3..91469db 100644
--- a/core/src/test/java/org/apache/sling/testing/mock/osgi/MockServiceReferencesSortTest.java
+++ b/core/src/test/java/org/apache/sling/testing/mock/osgi/MockServiceReferencesSortTest.java
@@ -88,6 +88,46 @@
         assertEquals("D", bundleContext.getService(bundleContext.getServiceReference(String.class)));
     }
 
+    @Test
+    public void testVolatileCollectionReference() {
+        OsgiServiceUtilTest.RankedService rankedServiceTen = new OsgiServiceUtilTest.RankedServiceTen();
+        bundleContext.registerService(OsgiServiceUtilTest.RankedService.class.getName(), rankedServiceTen , null);
+        MockOsgi.activate(rankedServiceTen, bundleContext);
+
+        OsgiServiceUtilTest.RankedService rankedServiceFive = new OsgiServiceUtilTest.RankedServiceFive();
+        bundleContext.registerService(OsgiServiceUtilTest.RankedService.class.getName(), rankedServiceFive, null);
+        MockOsgi.activate(rankedServiceFive, bundleContext);
+
+        OsgiServiceUtilTest.Service6VolatileMultipleReferences service6VolatileMultipleReferences = new OsgiServiceUtilTest.Service6VolatileMultipleReferences();
+        bundleContext.registerService(OsgiServiceUtilTest.Service6VolatileMultipleReferences.class.getName(), service6VolatileMultipleReferences, null);
+        MockOsgi.injectServices(service6VolatileMultipleReferences, bundleContext);
+
+        assertEquals("Should get highest when getting one service", rankedServiceTen, bundleContext.getService(bundleContext.getServiceReference(OsgiServiceUtilTest.RankedService.class)));
+        assertEquals("Should have order from lowest to highest on sorted ranked services", "RankedServiceFive=5RankedServiceTen=10", getSortedRankedServices());
+        assertEquals("Should have order from lowest to highest on volatile reference list", "RankedServiceFive=5RankedServiceTen=10", service6VolatileMultipleReferences.getRanks());
+    }
+
+    private String getSortedRankedServices() {
+        ServiceReference<?>[] refs = null;
+        try {
+            refs = bundleContext.getServiceReferences(OsgiServiceUtilTest.RankedService.class.getName(), null);
+        }
+        catch (InvalidSyntaxException ise) {
+            fail("Unexpected InvalidSyntaxException");
+        }
+        assertNotNull("Expecting our service references", refs);
+        Arrays.sort(refs);
+
+        final StringBuilder sb = new StringBuilder();
+        for(ServiceReference<?> ref : refs) {
+            OsgiServiceUtilTest.RankedService rankedService = (OsgiServiceUtilTest.RankedService)bundleContext.getService(ref);
+            sb.append(rankedService.getClass().getSimpleName()).append("=").append(rankedService.getRanking());
+            bundleContext.ungetService(ref);
+        }
+
+        return sb.toString();
+    }
+
     private ServiceRegistration<?> registerStringServiceWithoutRanking(String serviceValue) {
         return bundleContext.registerService(String.class, serviceValue, new Hashtable<String, Object>());
     }
diff --git a/core/src/test/java/org/apache/sling/testing/mock/osgi/OsgiServiceUtilTest.java b/core/src/test/java/org/apache/sling/testing/mock/osgi/OsgiServiceUtilTest.java
index 7a847d7..3365140 100644
--- a/core/src/test/java/org/apache/sling/testing/mock/osgi/OsgiServiceUtilTest.java
+++ b/core/src/test/java/org/apache/sling/testing/mock/osgi/OsgiServiceUtilTest.java
@@ -625,4 +625,63 @@
 
     }
 
+    public interface RankedService {
+        int getRanking();
+    }
+
+    @Component(
+            properties = {
+                    "service.ranking:Integer=5"
+            }
+    )
+    public static class RankedServiceFive implements RankedService {
+
+        private int ranking;
+
+        @Activate
+        public void activate(Map<String, Object> properties) {
+            this.ranking = (Integer) properties.get("service.ranking");
+        }
+
+        @Override
+        public int getRanking() {
+            return ranking;
+        }
+    }
+
+    @Component(
+            properties = {
+                    "service.ranking:Integer=10"
+            }
+    )
+    public static class RankedServiceTen implements RankedService {
+
+        private int ranking;
+
+        @Activate
+        public void activate(Map<String, Object> properties) {
+            this.ranking = (Integer) properties.get("service.ranking");
+        }
+
+        @Override
+        public int getRanking() {
+            return ranking;
+        }
+    }
+
+    @Component(service = Service6VolatileMultipleReferences.class)
+    public static class Service6VolatileMultipleReferences {
+
+        @Reference
+        private volatile List<RankedService> rankedServices;
+
+        public String getRanks() {
+            StringBuilder builder = new StringBuilder();
+            for(RankedService rankedService : rankedServices) {
+                builder.append(rankedService.getClass().getSimpleName()).append("=").append(rankedService.getRanking());
+            }
+            return builder.toString();
+        }
+    }
+
 }
diff --git a/core/src/test/resources/OSGI-INF/org.apache.sling.testing.mock.osgi.OsgiServiceUtilTest.xml b/core/src/test/resources/OSGI-INF/org.apache.sling.testing.mock.osgi.OsgiServiceUtilTest.xml
index 751c55f..c8e44f1 100644
--- a/core/src/test/resources/OSGI-INF/org.apache.sling.testing.mock.osgi.OsgiServiceUtilTest.xml
+++ b/core/src/test/resources/OSGI-INF/org.apache.sling.testing.mock.osgi.OsgiServiceUtilTest.xml
@@ -83,4 +83,25 @@
     </service>
     <property name="service.pid" value="org.apache.sling.testing.mock.osgi.OsgiServiceUtilTest$ServiceFactory1"/>
   </scr:component>
+  <scr:component name="org.apache.sling.testing.mock.osgi.OsgiServiceUtilTest$RankedServiceFive" activate="activate">
+    <property name="service.ranking" type="Integer" value="5"/>
+    <service>
+      <provide interface="org.apache.sling.testing.mock.osgi.OsgiServiceUtilTest$RankedService"/>
+    </service>
+    <implementation class="org.apache.sling.testing.mock.osgi.OsgiServiceUtilTest$RankedServiceFive"/>
+  </scr:component>
+  <scr:component name="org.apache.sling.testing.mock.osgi.OsgiServiceUtilTest$RankedServiceTen" activate="activate">
+    <property name="service.ranking" type="Integer" value="10"/>
+    <service>
+      <provide interface="org.apache.sling.testing.mock.osgi.OsgiServiceUtilTest$RankedService"/>
+    </service>
+    <implementation class="org.apache.sling.testing.mock.osgi.OsgiServiceUtilTest$RankedServiceTen"/>
+  </scr:component>
+  <scr:component name="org.apache.sling.testing.mock.osgi.OsgiServiceUtilTest$Service6VolatileMultipleReferences">
+    <service>
+      <provide interface="org.apache.sling.testing.mock.osgi.OsgiServiceUtilTest$Service6VolatileMultipleReferences"/>
+    </service>
+    <reference name="rankedServices" cardinality="0..n" policy="dynamic" interface="org.apache.sling.testing.mock.osgi.OsgiServiceUtilTest$RankedService" field="rankedServices" field-collection-type="service"/>
+    <implementation class="org.apache.sling.testing.mock.osgi.OsgiServiceUtilTest$Service6VolatileMultipleReferences"/>
+  </scr:component>
 </components>
