diff --git a/staticlibs/src_frameworkcommon/android/net/util/LinkPropertiesUtils.java b/staticlibs/src_frameworkcommon/android/net/util/LinkPropertiesUtils.java
index c50ca0b..bd96edb 100644
--- a/staticlibs/src_frameworkcommon/android/net/util/LinkPropertiesUtils.java
+++ b/staticlibs/src_frameworkcommon/android/net/util/LinkPropertiesUtils.java
@@ -91,23 +91,26 @@
                 Function<T, K> keyCalculator) {
             HashMap<K, T> updateTracker = new HashMap<>();
 
-            for (T oldItem : oldItems) {
-                updateTracker.put(keyCalculator.apply(oldItem), oldItem);
-            }
-
-            for (T newItem : newItems) {
-                T oldItem = updateTracker.remove(keyCalculator.apply(newItem));
-                if (oldItem != null) {
-                    if (!oldItem.equals(newItem)) {
-                        // Update of existing item.
-                        updated.add(newItem);
-                    }
-                } else {
-                    // New item.
-                    added.add(newItem);
+            if (oldItems != null) {
+                for (T oldItem : oldItems) {
+                    updateTracker.put(keyCalculator.apply(oldItem), oldItem);
                 }
             }
 
+            if (newItems != null) {
+                for (T newItem : newItems) {
+                    T oldItem = updateTracker.remove(keyCalculator.apply(newItem));
+                    if (oldItem != null) {
+                        if (!oldItem.equals(newItem)) {
+                            // Update of existing item.
+                            updated.add(newItem);
+                        }
+                    } else {
+                        // New item.
+                        added.add(newItem);
+                    }
+                }
+            }
             removed.addAll(updateTracker.values());
         }
 
diff --git a/staticlibs/tests/unit/src/android/net/util/LinkPropertiesUtilsTest.java b/staticlibs/tests/unit/src/android/net/util/LinkPropertiesUtilsTest.java
index e2cde34..0fa1c52 100644
--- a/staticlibs/tests/unit/src/android/net/util/LinkPropertiesUtilsTest.java
+++ b/staticlibs/tests/unit/src/android/net/util/LinkPropertiesUtilsTest.java
@@ -229,7 +229,7 @@
         CompareOrUpdateResult<String, String> result =
                 new CompareOrUpdateResult<String, String>(oldItems, emptyList, extractPrefix);
         assertCompareOrUpdateResult(result,
-                emptyList,  strArray("hello123", "howareyou669", "goodbye5678"), emptyList);
+                emptyList, strArray("hello123", "howareyou669", "goodbye5678"), emptyList);
 
         // Empty -> items: everything added.
         result = new CompareOrUpdateResult<String, String>(emptyList, newItems, extractPrefix);
@@ -244,5 +244,15 @@
         result =  new CompareOrUpdateResult<>(oldItems, newItems, extractPrefix);
         assertCompareOrUpdateResult(result,
                 strArray("verywell"), strArray("howareyou669"), strArray("goodbye000"));
+
+        // Null -> items: everything added.
+        result = new CompareOrUpdateResult<String, String>(null, newItems, extractPrefix);
+        assertCompareOrUpdateResult(result,
+                strArray("hello123", "goodbye000", "verywell"), emptyList,  emptyList);
+
+        // Items -> null: everything removed.
+        result = new CompareOrUpdateResult<String, String>(oldItems, null, extractPrefix);
+        assertCompareOrUpdateResult(result,
+                emptyList, strArray("hello123", "howareyou669", "goodbye5678"), emptyList);
     }
 }
\ No newline at end of file
