Bugfix: Make extensions beyond n=16 immutable.

Previously, we only make extensions immutable if they were in the FieldSet's
array, maximum size 16. The overflow entries in the TreeMap weren't made
immutable.

PiperOrigin-RevId: 671564444
diff --git a/java/core/src/main/java/com/google/protobuf/FieldSet.java b/java/core/src/main/java/com/google/protobuf/FieldSet.java
index debad4e..c81a1d1 100644
--- a/java/core/src/main/java/com/google/protobuf/FieldSet.java
+++ b/java/core/src/main/java/com/google/protobuf/FieldSet.java
@@ -101,8 +101,15 @@
     int n = fields.getNumArrayEntries(); // Optimisation: hoist out of hot loop.
     for (int i = 0; i < n; ++i) {
       Entry<T, Object> entry = fields.getArrayEntryAt(i);
-      if (entry.getValue() instanceof GeneratedMessageLite) {
-        ((GeneratedMessageLite<?, ?>) entry.getValue()).makeImmutable();
+      Object value = entry.getValue();
+      if (value instanceof GeneratedMessageLite) {
+        ((GeneratedMessageLite<?, ?>) value).makeImmutable();
+      }
+    }
+    for (Map.Entry<T, Object> entry : fields.getOverflowEntries()) {
+      Object value = entry.getValue();
+      if (value instanceof GeneratedMessageLite) {
+        ((GeneratedMessageLite<?, ?>) value).makeImmutable();
       }
     }
     fields.makeImmutable();
diff --git a/java/core/src/test/java/com/google/protobuf/ParserLiteTest.java b/java/core/src/test/java/com/google/protobuf/ParserLiteTest.java
index 5433bb4..c903e95 100644
--- a/java/core/src/test/java/com/google/protobuf/ParserLiteTest.java
+++ b/java/core/src/test/java/com/google/protobuf/ParserLiteTest.java
@@ -76,15 +76,14 @@
   }
 
   @Test
-  public void testParseExtensionsLite_extensionIsMutable() throws Exception {
+  public void testParseExtensionsLite_extensionIsImmutable() throws Exception {
     TestAllExtensionsLite message =
         TestAllExtensionsLite.parseFrom(
             TestUtilLite.getAllLiteExtensionsSet().toByteArray(),
             TestUtilLite.getExtensionRegistryLite());
     Object nested = message.getExtension(UnittestLite.optionalNestedMessageExtensionLite);
     if (nested instanceof GeneratedMessageLite) {
-      // TODO: Make this false.
-      assertThat(((GeneratedMessageLite) nested).isMutable()).isTrue();
+      assertThat(((GeneratedMessageLite) nested).isMutable()).isFalse();
     }
   }