Browse Source

Tests and fixes for double-enumeration on AddRange and adding of null to PopsicleList

csharptest 14 năm trước cách đây
mục cha
commit
4ecebd8b4a
22 tập tin đã thay đổi với 703 bổ sung544 xóa
  1. 4 4
      src/AddressBook/AddressBookProtos.cs
  2. 2 2
      src/ProtoGen/RepeatedEnumFieldGenerator.cs
  3. 2 2
      src/ProtoGen/RepeatedMessageFieldGenerator.cs
  4. 2 2
      src/ProtoGen/RepeatedPrimitiveFieldGenerator.cs
  5. 59 0
      src/ProtocolBuffers.Test/Collections/PopsicleListTest.cs
  6. 123 0
      src/ProtocolBuffers.Test/GeneratedBuilderTest.cs
  7. 1 0
      src/ProtocolBuffers.Test/ProtocolBuffers.Test.csproj
  8. 2 2
      src/ProtocolBuffers.Test/TestProtos/UnitTestEmbedOptimizeForProtoFile.cs
  9. 8 8
      src/ProtocolBuffers.Test/TestProtos/UnitTestGoogleSizeProtoFile.cs
  10. 16 16
      src/ProtocolBuffers.Test/TestProtos/UnitTestGoogleSpeedProtoFile.cs
  11. 2 2
      src/ProtocolBuffers.Test/TestProtos/UnitTestMessageSetProtoFile.cs
  12. 138 138
      src/ProtocolBuffers.Test/TestProtos/UnitTestProtoFile.cs
  13. 6 6
      src/ProtocolBuffers.Test/TestProtos/UnitTestRpcInterop.cs
  14. 10 10
      src/ProtocolBuffers.Test/TestProtos/UnitTestXmlSerializerTestProtoFile.cs
  15. 33 5
      src/ProtocolBuffers/Collections/PopsicleList.cs
  16. 42 42
      src/ProtocolBuffers/DescriptorProtos/DescriptorProtoFile.cs
  17. 0 26
      src/ProtocolBuffers/GeneratedBuilder.cs
  18. 0 26
      src/ProtocolBuffers/GeneratedBuilderLite.cs
  19. 5 5
      src/ProtocolBuffersLite.Test/TestProtos/UnitTestExtrasFullProtoFile.cs
  20. 6 6
      src/ProtocolBuffersLite.Test/TestProtos/UnitTestExtrasLiteProtoFile.cs
  21. 104 104
      src/ProtocolBuffersLite.Test/TestProtos/UnitTestLiteProtoFile.cs
  22. 138 138
      src/ProtocolBuffersLite.Test/TestProtos/UnitTestProtoFile.cs

+ 4 - 4
src/AddressBook/AddressBookProtos.cs

@@ -593,7 +593,7 @@ namespace Google.ProtocolBuffers.Examples.AddressBook {
           Email = other.Email;
         }
         if (other.phone_.Count != 0) {
-          base.AddRange(other.phone_, result.phone_);
+          result.phone_.Add(other.phone_);
         }
         this.MergeUnknownFields(other.UnknownFields);
         return this;
@@ -749,7 +749,7 @@ namespace Google.ProtocolBuffers.Examples.AddressBook {
         return this;
       }
       public Builder AddRangePhone(scg::IEnumerable<global::Google.ProtocolBuffers.Examples.AddressBook.Person.Types.PhoneNumber> values) {
-        base.AddRange(values, result.phone_);
+        result.phone_.Add(values);
         return this;
       }
       public Builder ClearPhone() {
@@ -926,7 +926,7 @@ namespace Google.ProtocolBuffers.Examples.AddressBook {
       public override Builder MergeFrom(AddressBook other) {
         if (other == global::Google.ProtocolBuffers.Examples.AddressBook.AddressBook.DefaultInstance) return this;
         if (other.person_.Count != 0) {
-          base.AddRange(other.person_, result.person_);
+          result.person_.Add(other.person_);
         }
         this.MergeUnknownFields(other.UnknownFields);
         return this;
@@ -1014,7 +1014,7 @@ namespace Google.ProtocolBuffers.Examples.AddressBook {
         return this;
       }
       public Builder AddRangePerson(scg::IEnumerable<global::Google.ProtocolBuffers.Examples.AddressBook.Person> values) {
-        base.AddRange(values, result.person_);
+        result.person_.Add(values);
         return this;
       }
       public Builder ClearPerson() {

+ 2 - 2
src/ProtoGen/RepeatedEnumFieldGenerator.cs

@@ -88,7 +88,7 @@ namespace Google.ProtocolBuffers.ProtoGen
             writer.WriteLine("  return this;");
             writer.WriteLine("}");
             writer.WriteLine("public Builder AddRange{0}(scg::IEnumerable<{1}> values) {{", PropertyName, TypeName);
-            writer.WriteLine("  base.AddRange(values, result.{0}_);", Name);
+            writer.WriteLine("  result.{0}_.Add(values);", Name);
             writer.WriteLine("  return this;");
             writer.WriteLine("}");
             writer.WriteLine("public Builder Clear{0}() {{", PropertyName);
@@ -100,7 +100,7 @@ namespace Google.ProtocolBuffers.ProtoGen
         public void GenerateMergingCode(TextGenerator writer)
         {
             writer.WriteLine("if (other.{0}_.Count != 0) {{", Name);
-            writer.WriteLine("  base.AddRange(other.{0}_, result.{0}_);", Name);
+            writer.WriteLine("  result.{0}_.Add(other.{0}_);", Name);
             writer.WriteLine("}");
         }
 

+ 2 - 2
src/ProtoGen/RepeatedMessageFieldGenerator.cs

@@ -98,7 +98,7 @@ namespace Google.ProtocolBuffers.ProtoGen
             writer.WriteLine("  return this;");
             writer.WriteLine("}");
             writer.WriteLine("public Builder AddRange{0}(scg::IEnumerable<{1}> values) {{", PropertyName, TypeName);
-            writer.WriteLine("  base.AddRange(values, result.{0}_);", Name);
+            writer.WriteLine("  result.{0}_.Add(values);", Name);
             writer.WriteLine("  return this;");
             writer.WriteLine("}");
             writer.WriteLine("public Builder Clear{0}() {{", PropertyName);
@@ -110,7 +110,7 @@ namespace Google.ProtocolBuffers.ProtoGen
         public void GenerateMergingCode(TextGenerator writer)
         {
             writer.WriteLine("if (other.{0}_.Count != 0) {{", Name);
-            writer.WriteLine("  base.AddRange(other.{0}_, result.{0}_);", Name);
+            writer.WriteLine("  result.{0}_.Add(other.{0}_);", Name);
             writer.WriteLine("}");
         }
 

+ 2 - 2
src/ProtoGen/RepeatedPrimitiveFieldGenerator.cs

@@ -97,7 +97,7 @@ namespace Google.ProtocolBuffers.ProtoGen
             writer.WriteLine("}");
             AddClsComplianceCheck(writer);
             writer.WriteLine("public Builder AddRange{0}(scg::IEnumerable<{1}> values) {{", PropertyName, TypeName);
-            writer.WriteLine("  base.AddRange(values, result.{0}_);", Name);
+            writer.WriteLine("  result.{0}_.Add(values);", Name);
             writer.WriteLine("  return this;");
             writer.WriteLine("}");
             writer.WriteLine("public Builder Clear{0}() {{", PropertyName);
@@ -109,7 +109,7 @@ namespace Google.ProtocolBuffers.ProtoGen
         public void GenerateMergingCode(TextGenerator writer)
         {
             writer.WriteLine("if (other.{0}_.Count != 0) {{", Name);
-            writer.WriteLine("  base.AddRange(other.{0}_, result.{0}_);", Name);
+            writer.WriteLine("  result.{0}_.Add(other.{0}_);", Name);
             writer.WriteLine("}");
         }
 

+ 59 - 0
src/ProtocolBuffers.Test/Collections/PopsicleListTest.cs

@@ -35,6 +35,7 @@
 #endregion
 
 using System;
+using System.Collections.Generic;
 using NUnit.Framework;
 
 internal delegate void Action();
@@ -94,6 +95,64 @@ namespace Google.ProtocolBuffers.Collections
             Assert.IsFalse(list.IsReadOnly);
         }
 
+        [Test]
+        public void DoesNotAddNullEnumerable()
+        {
+            PopsicleList<string> list = new PopsicleList<string>();
+            try
+            {
+                list.Add((IEnumerable<string>)null);
+            }
+            catch (ArgumentNullException)
+            { return; }
+
+            Assert.Fail("List should not allow nulls.");
+        }
+
+        [Test]
+        public void DoesNotAddRangeWithNull()
+        {
+            PopsicleList<string> list = new PopsicleList<string>();
+            try
+            {
+                list.Add(new[] { "a", "b", null });
+            }
+            catch (ArgumentNullException)
+            { return; }
+
+            Assert.Fail("List should not allow nulls.");
+        }
+
+        [Test]
+        public void DoesNotAddNull()
+        {
+            PopsicleList<string> list = new PopsicleList<string>();
+            try
+            {
+                list.Add((string)null);
+            }
+            catch (ArgumentNullException)
+            { return; }
+
+            Assert.Fail("List should not allow nulls.");
+        }
+
+        [Test]
+        public void DoesNotSetNull()
+        {
+            PopsicleList<string> list = new PopsicleList<string>();
+            list.Add("a");
+            try
+            {
+                list[0] = null;
+            }
+            catch (ArgumentNullException)
+            { return; }
+
+            Assert.Fail("List should not allow nulls.");
+        }
+
+
         private static void AssertNotSupported(Action action)
         {
             try

+ 123 - 0
src/ProtocolBuffers.Test/GeneratedBuilderTest.cs

@@ -0,0 +1,123 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using Google.ProtocolBuffers.TestProtos;
+using NUnit.Framework;
+
+namespace Google.ProtocolBuffers
+{
+    [TestFixture]
+    public class GeneratedBuilderTest
+    {
+        class OneTimeEnumerator<T> : IEnumerable<T>
+        {
+            readonly T _item;
+            bool _enumerated;
+            public OneTimeEnumerator(T item)
+            {
+                _item = item;
+            }
+            public IEnumerator<T> GetEnumerator()
+            {
+                Assert.IsFalse(_enumerated, "The collection {0} has already been enumerated", GetType());
+                _enumerated = true;
+                yield return _item;
+            }
+            System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
+            { return GetEnumerator(); }
+        }
+
+        [Test]
+        public void DoesNotEnumerateTwiceForMessageList()
+        {
+            TestAllTypes.Builder b = new TestAllTypes.Builder();
+            b.AddRangeRepeatedForeignMessage(
+                new OneTimeEnumerator<ForeignMessage>(
+                    ForeignMessage.DefaultInstance));
+        }
+        [Test]
+        public void DoesNotEnumerateTwiceForPrimitiveList()
+        {
+            TestAllTypes.Builder b = new TestAllTypes.Builder();
+            b.AddRangeRepeatedInt32(new OneTimeEnumerator<int>(1));
+        }
+        [Test]
+        public void DoesNotEnumerateTwiceForStringList()
+        {
+            TestAllTypes.Builder b = new TestAllTypes.Builder();
+            b.AddRangeRepeatedString(new OneTimeEnumerator<string>("test"));
+        }
+        [Test]
+        public void DoesNotEnumerateTwiceForEnumList()
+        {
+            TestAllTypes.Builder b = new TestAllTypes.Builder();
+            b.AddRangeRepeatedForeignEnum(new OneTimeEnumerator<ForeignEnum>(ForeignEnum.FOREIGN_BAR));
+        }
+
+        private static void AssertThrows<T>(System.Threading.ThreadStart method) where T : Exception
+        {
+            try
+            {
+                method();
+            }
+            catch (Exception error)
+            {
+                if (error is T)
+                    return;
+                throw;
+            }
+            Assert.Fail("Expected exception of type " + typeof(T));
+        }
+
+        [Test]
+        public void DoesNotAddNullToMessageListByAddRange()
+        {
+            TestAllTypes.Builder b = new TestAllTypes.Builder();
+            AssertThrows<ArgumentNullException>(
+                () => b.AddRangeRepeatedForeignMessage(new ForeignMessage[] { null })
+                    );
+        }
+        [Test]
+        public void DoesNotAddNullToMessageListByAdd()
+        {
+            TestAllTypes.Builder b = new TestAllTypes.Builder();
+            AssertThrows<ArgumentNullException>(
+                () => b.AddRepeatedForeignMessage((ForeignMessage)null)
+                    );
+        }
+        [Test]
+        public void DoesNotAddNullToMessageListBySet()
+        {
+            TestAllTypes.Builder b = new TestAllTypes.Builder();
+            b.AddRepeatedForeignMessage(ForeignMessage.DefaultInstance);
+            AssertThrows<ArgumentNullException>(
+                () => b.SetRepeatedForeignMessage(0, (ForeignMessage)null)
+                    );
+        }
+        [Test]
+        public void DoesNotAddNullToStringListByAddRange()
+        {
+            TestAllTypes.Builder b = new TestAllTypes.Builder();
+            AssertThrows<ArgumentNullException>(
+                () => b.AddRangeRepeatedString(new String[] { null })
+                    );
+        }
+        [Test]
+        public void DoesNotAddNullToStringListByAdd()
+        {
+            TestAllTypes.Builder b = new TestAllTypes.Builder();
+            AssertThrows<ArgumentNullException>(
+                () => b.AddRepeatedString(null)
+                    );
+        }
+        [Test]
+        public void DoesNotAddNullToStringListBySet()
+        {
+            TestAllTypes.Builder b = new TestAllTypes.Builder();
+            b.AddRepeatedString("one");
+            AssertThrows<ArgumentNullException>(
+                () => b.SetRepeatedString(0, null)
+                    );
+        }
+    }
+}

+ 1 - 0
src/ProtocolBuffers.Test/ProtocolBuffers.Test.csproj

@@ -97,6 +97,7 @@
     <Compile Include="Descriptors\MessageDescriptorTest.cs" />
     <Compile Include="DynamicMessageTest.cs" />
     <Compile Include="ExtendableMessageTest.cs" />
+    <Compile Include="GeneratedBuilderTest.cs" />
     <Compile Include="GeneratedMessageTest.cs" />
     <Compile Include="MessageStreamIteratorTest.cs" />
     <Compile Include="MessageStreamWriterTest.cs" />

+ 2 - 2
src/ProtocolBuffers.Test/TestProtos/UnitTestEmbedOptimizeForProtoFile.cs

@@ -246,7 +246,7 @@ namespace Google.ProtocolBuffers.TestProtos {
           MergeOptionalMessage(other.OptionalMessage);
         }
         if (other.repeatedMessage_.Count != 0) {
-          base.AddRange(other.repeatedMessage_, result.repeatedMessage_);
+          result.repeatedMessage_.Add(other.repeatedMessage_);
         }
         this.MergeUnknownFields(other.UnknownFields);
         return this;
@@ -379,7 +379,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedMessage(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.TestOptimizedForSize> values) {
-        base.AddRange(values, result.repeatedMessage_);
+        result.repeatedMessage_.Add(values);
         return this;
       }
       public Builder ClearRepeatedMessage() {

+ 8 - 8
src/ProtocolBuffers.Test/TestProtos/UnitTestGoogleSizeProtoFile.cs

@@ -877,7 +877,7 @@ namespace Google.ProtocolBuffers.TestProtos {
       }
       [global::System.CLSCompliant(false)]
       public Builder AddRangeField5(scg::IEnumerable<ulong> values) {
-        base.AddRange(values, result.field5_);
+        result.field5_.Add(values);
         return this;
       }
       public Builder ClearField5() {
@@ -2515,7 +2515,7 @@ namespace Google.ProtocolBuffers.TestProtos {
             return this;
           }
           public Builder AddRangeField14(scg::IEnumerable<string> values) {
-            base.AddRange(values, result.field14_);
+            result.field14_.Add(values);
             return this;
           }
           public Builder ClearField14() {
@@ -2656,7 +2656,7 @@ namespace Google.ProtocolBuffers.TestProtos {
             return this;
           }
           public Builder AddRangeField22(scg::IEnumerable<string> values) {
-            base.AddRange(values, result.field22_);
+            result.field22_.Add(values);
             return this;
           }
           public Builder ClearField22() {
@@ -2682,7 +2682,7 @@ namespace Google.ProtocolBuffers.TestProtos {
             return this;
           }
           public Builder AddRangeField73(scg::IEnumerable<int> values) {
-            base.AddRange(values, result.field73_);
+            result.field73_.Add(values);
             return this;
           }
           public Builder ClearField73() {
@@ -3591,7 +3591,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeGroup1(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.SizeMessage2.Types.Group1> values) {
-        base.AddRange(values, result.group1_);
+        result.group1_.Add(values);
         return this;
       }
       public Builder ClearGroup1() {
@@ -3619,7 +3619,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeField128(scg::IEnumerable<string> values) {
-        base.AddRange(values, result.field128_);
+        result.field128_.Add(values);
         return this;
       }
       public Builder ClearField128() {
@@ -3665,7 +3665,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeField127(scg::IEnumerable<string> values) {
-        base.AddRange(values, result.field127_);
+        result.field127_.Add(values);
         return this;
       }
       public Builder ClearField127() {
@@ -3709,7 +3709,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeField130(scg::IEnumerable<long> values) {
-        base.AddRange(values, result.field130_);
+        result.field130_.Add(values);
         return this;
       }
       public Builder ClearField130() {

+ 16 - 16
src/ProtocolBuffers.Test/TestProtos/UnitTestGoogleSpeedProtoFile.cs

@@ -975,7 +975,7 @@ namespace Google.ProtocolBuffers.TestProtos {
           Field4 = other.Field4;
         }
         if (other.field5_.Count != 0) {
-          base.AddRange(other.field5_, result.field5_);
+          result.field5_.Add(other.field5_);
         }
         if (other.HasField59) {
           Field59 = other.Field59;
@@ -1511,7 +1511,7 @@ namespace Google.ProtocolBuffers.TestProtos {
       }
       [global::System.CLSCompliant(false)]
       public Builder AddRangeField5(scg::IEnumerable<ulong> values) {
-        base.AddRange(values, result.field5_);
+        result.field5_.Add(values);
         return this;
       }
       public Builder ClearField5() {
@@ -3569,7 +3569,7 @@ namespace Google.ProtocolBuffers.TestProtos {
               Field13 = other.Field13;
             }
             if (other.field14_.Count != 0) {
-              base.AddRange(other.field14_, result.field14_);
+              result.field14_.Add(other.field14_);
             }
             if (other.HasField15) {
               Field15 = other.Field15;
@@ -3590,10 +3590,10 @@ namespace Google.ProtocolBuffers.TestProtos {
               Field16 = other.Field16;
             }
             if (other.field22_.Count != 0) {
-              base.AddRange(other.field22_, result.field22_);
+              result.field22_.Add(other.field22_);
             }
             if (other.field73_.Count != 0) {
-              base.AddRange(other.field73_, result.field73_);
+              result.field73_.Add(other.field73_);
             }
             if (other.HasField20) {
               Field20 = other.Field20;
@@ -3820,7 +3820,7 @@ namespace Google.ProtocolBuffers.TestProtos {
             return this;
           }
           public Builder AddRangeField14(scg::IEnumerable<string> values) {
-            base.AddRange(values, result.field14_);
+            result.field14_.Add(values);
             return this;
           }
           public Builder ClearField14() {
@@ -3961,7 +3961,7 @@ namespace Google.ProtocolBuffers.TestProtos {
             return this;
           }
           public Builder AddRangeField22(scg::IEnumerable<string> values) {
-            base.AddRange(values, result.field22_);
+            result.field22_.Add(values);
             return this;
           }
           public Builder ClearField22() {
@@ -3987,7 +3987,7 @@ namespace Google.ProtocolBuffers.TestProtos {
             return this;
           }
           public Builder AddRangeField73(scg::IEnumerable<int> values) {
-            base.AddRange(values, result.field73_);
+            result.field73_.Add(values);
             return this;
           }
           public Builder ClearField73() {
@@ -4764,22 +4764,22 @@ namespace Google.ProtocolBuffers.TestProtos {
           Field63 = other.Field63;
         }
         if (other.group1_.Count != 0) {
-          base.AddRange(other.group1_, result.group1_);
+          result.group1_.Add(other.group1_);
         }
         if (other.field128_.Count != 0) {
-          base.AddRange(other.field128_, result.field128_);
+          result.field128_.Add(other.field128_);
         }
         if (other.HasField131) {
           Field131 = other.Field131;
         }
         if (other.field127_.Count != 0) {
-          base.AddRange(other.field127_, result.field127_);
+          result.field127_.Add(other.field127_);
         }
         if (other.HasField129) {
           Field129 = other.Field129;
         }
         if (other.field130_.Count != 0) {
-          base.AddRange(other.field130_, result.field130_);
+          result.field130_.Add(other.field130_);
         }
         if (other.HasField205) {
           Field205 = other.Field205;
@@ -5389,7 +5389,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeGroup1(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.SpeedMessage2.Types.Group1> values) {
-        base.AddRange(values, result.group1_);
+        result.group1_.Add(values);
         return this;
       }
       public Builder ClearGroup1() {
@@ -5417,7 +5417,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeField128(scg::IEnumerable<string> values) {
-        base.AddRange(values, result.field128_);
+        result.field128_.Add(values);
         return this;
       }
       public Builder ClearField128() {
@@ -5463,7 +5463,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeField127(scg::IEnumerable<string> values) {
-        base.AddRange(values, result.field127_);
+        result.field127_.Add(values);
         return this;
       }
       public Builder ClearField127() {
@@ -5507,7 +5507,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeField130(scg::IEnumerable<long> values) {
-        base.AddRange(values, result.field130_);
+        result.field130_.Add(values);
         return this;
       }
       public Builder ClearField130() {

+ 2 - 2
src/ProtocolBuffers.Test/TestProtos/UnitTestMessageSetProtoFile.cs

@@ -1499,7 +1499,7 @@ namespace Google.ProtocolBuffers.TestProtos {
       public override Builder MergeFrom(RawMessageSet other) {
         if (other == global::Google.ProtocolBuffers.TestProtos.RawMessageSet.DefaultInstance) return this;
         if (other.item_.Count != 0) {
-          base.AddRange(other.item_, result.item_);
+          result.item_.Add(other.item_);
         }
         this.MergeUnknownFields(other.UnknownFields);
         return this;
@@ -1587,7 +1587,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeItem(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.RawMessageSet.Types.Item> values) {
-        base.AddRange(values, result.item_);
+        result.item_.Add(values);
         return this;
       }
       public Builder ClearItem() {

+ 138 - 138
src/ProtocolBuffers.Test/TestProtos/UnitTestProtoFile.cs

@@ -3333,76 +3333,76 @@ namespace Google.ProtocolBuffers.TestProtos {
           OptionalCord = other.OptionalCord;
         }
         if (other.repeatedInt32_.Count != 0) {
-          base.AddRange(other.repeatedInt32_, result.repeatedInt32_);
+          result.repeatedInt32_.Add(other.repeatedInt32_);
         }
         if (other.repeatedInt64_.Count != 0) {
-          base.AddRange(other.repeatedInt64_, result.repeatedInt64_);
+          result.repeatedInt64_.Add(other.repeatedInt64_);
         }
         if (other.repeatedUint32_.Count != 0) {
-          base.AddRange(other.repeatedUint32_, result.repeatedUint32_);
+          result.repeatedUint32_.Add(other.repeatedUint32_);
         }
         if (other.repeatedUint64_.Count != 0) {
-          base.AddRange(other.repeatedUint64_, result.repeatedUint64_);
+          result.repeatedUint64_.Add(other.repeatedUint64_);
         }
         if (other.repeatedSint32_.Count != 0) {
-          base.AddRange(other.repeatedSint32_, result.repeatedSint32_);
+          result.repeatedSint32_.Add(other.repeatedSint32_);
         }
         if (other.repeatedSint64_.Count != 0) {
-          base.AddRange(other.repeatedSint64_, result.repeatedSint64_);
+          result.repeatedSint64_.Add(other.repeatedSint64_);
         }
         if (other.repeatedFixed32_.Count != 0) {
-          base.AddRange(other.repeatedFixed32_, result.repeatedFixed32_);
+          result.repeatedFixed32_.Add(other.repeatedFixed32_);
         }
         if (other.repeatedFixed64_.Count != 0) {
-          base.AddRange(other.repeatedFixed64_, result.repeatedFixed64_);
+          result.repeatedFixed64_.Add(other.repeatedFixed64_);
         }
         if (other.repeatedSfixed32_.Count != 0) {
-          base.AddRange(other.repeatedSfixed32_, result.repeatedSfixed32_);
+          result.repeatedSfixed32_.Add(other.repeatedSfixed32_);
         }
         if (other.repeatedSfixed64_.Count != 0) {
-          base.AddRange(other.repeatedSfixed64_, result.repeatedSfixed64_);
+          result.repeatedSfixed64_.Add(other.repeatedSfixed64_);
         }
         if (other.repeatedFloat_.Count != 0) {
-          base.AddRange(other.repeatedFloat_, result.repeatedFloat_);
+          result.repeatedFloat_.Add(other.repeatedFloat_);
         }
         if (other.repeatedDouble_.Count != 0) {
-          base.AddRange(other.repeatedDouble_, result.repeatedDouble_);
+          result.repeatedDouble_.Add(other.repeatedDouble_);
         }
         if (other.repeatedBool_.Count != 0) {
-          base.AddRange(other.repeatedBool_, result.repeatedBool_);
+          result.repeatedBool_.Add(other.repeatedBool_);
         }
         if (other.repeatedString_.Count != 0) {
-          base.AddRange(other.repeatedString_, result.repeatedString_);
+          result.repeatedString_.Add(other.repeatedString_);
         }
         if (other.repeatedBytes_.Count != 0) {
-          base.AddRange(other.repeatedBytes_, result.repeatedBytes_);
+          result.repeatedBytes_.Add(other.repeatedBytes_);
         }
         if (other.repeatedGroup_.Count != 0) {
-          base.AddRange(other.repeatedGroup_, result.repeatedGroup_);
+          result.repeatedGroup_.Add(other.repeatedGroup_);
         }
         if (other.repeatedNestedMessage_.Count != 0) {
-          base.AddRange(other.repeatedNestedMessage_, result.repeatedNestedMessage_);
+          result.repeatedNestedMessage_.Add(other.repeatedNestedMessage_);
         }
         if (other.repeatedForeignMessage_.Count != 0) {
-          base.AddRange(other.repeatedForeignMessage_, result.repeatedForeignMessage_);
+          result.repeatedForeignMessage_.Add(other.repeatedForeignMessage_);
         }
         if (other.repeatedImportMessage_.Count != 0) {
-          base.AddRange(other.repeatedImportMessage_, result.repeatedImportMessage_);
+          result.repeatedImportMessage_.Add(other.repeatedImportMessage_);
         }
         if (other.repeatedNestedEnum_.Count != 0) {
-          base.AddRange(other.repeatedNestedEnum_, result.repeatedNestedEnum_);
+          result.repeatedNestedEnum_.Add(other.repeatedNestedEnum_);
         }
         if (other.repeatedForeignEnum_.Count != 0) {
-          base.AddRange(other.repeatedForeignEnum_, result.repeatedForeignEnum_);
+          result.repeatedForeignEnum_.Add(other.repeatedForeignEnum_);
         }
         if (other.repeatedImportEnum_.Count != 0) {
-          base.AddRange(other.repeatedImportEnum_, result.repeatedImportEnum_);
+          result.repeatedImportEnum_.Add(other.repeatedImportEnum_);
         }
         if (other.repeatedStringPiece_.Count != 0) {
-          base.AddRange(other.repeatedStringPiece_, result.repeatedStringPiece_);
+          result.repeatedStringPiece_.Add(other.repeatedStringPiece_);
         }
         if (other.repeatedCord_.Count != 0) {
-          base.AddRange(other.repeatedCord_, result.repeatedCord_);
+          result.repeatedCord_.Add(other.repeatedCord_);
         }
         if (other.HasDefaultInt32) {
           DefaultInt32 = other.DefaultInt32;
@@ -4433,7 +4433,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedInt32(scg::IEnumerable<int> values) {
-        base.AddRange(values, result.repeatedInt32_);
+        result.repeatedInt32_.Add(values);
         return this;
       }
       public Builder ClearRepeatedInt32() {
@@ -4459,7 +4459,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedInt64(scg::IEnumerable<long> values) {
-        base.AddRange(values, result.repeatedInt64_);
+        result.repeatedInt64_.Add(values);
         return this;
       }
       public Builder ClearRepeatedInt64() {
@@ -4490,7 +4490,7 @@ namespace Google.ProtocolBuffers.TestProtos {
       }
       [global::System.CLSCompliant(false)]
       public Builder AddRangeRepeatedUint32(scg::IEnumerable<uint> values) {
-        base.AddRange(values, result.repeatedUint32_);
+        result.repeatedUint32_.Add(values);
         return this;
       }
       public Builder ClearRepeatedUint32() {
@@ -4521,7 +4521,7 @@ namespace Google.ProtocolBuffers.TestProtos {
       }
       [global::System.CLSCompliant(false)]
       public Builder AddRangeRepeatedUint64(scg::IEnumerable<ulong> values) {
-        base.AddRange(values, result.repeatedUint64_);
+        result.repeatedUint64_.Add(values);
         return this;
       }
       public Builder ClearRepeatedUint64() {
@@ -4547,7 +4547,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedSint32(scg::IEnumerable<int> values) {
-        base.AddRange(values, result.repeatedSint32_);
+        result.repeatedSint32_.Add(values);
         return this;
       }
       public Builder ClearRepeatedSint32() {
@@ -4573,7 +4573,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedSint64(scg::IEnumerable<long> values) {
-        base.AddRange(values, result.repeatedSint64_);
+        result.repeatedSint64_.Add(values);
         return this;
       }
       public Builder ClearRepeatedSint64() {
@@ -4604,7 +4604,7 @@ namespace Google.ProtocolBuffers.TestProtos {
       }
       [global::System.CLSCompliant(false)]
       public Builder AddRangeRepeatedFixed32(scg::IEnumerable<uint> values) {
-        base.AddRange(values, result.repeatedFixed32_);
+        result.repeatedFixed32_.Add(values);
         return this;
       }
       public Builder ClearRepeatedFixed32() {
@@ -4635,7 +4635,7 @@ namespace Google.ProtocolBuffers.TestProtos {
       }
       [global::System.CLSCompliant(false)]
       public Builder AddRangeRepeatedFixed64(scg::IEnumerable<ulong> values) {
-        base.AddRange(values, result.repeatedFixed64_);
+        result.repeatedFixed64_.Add(values);
         return this;
       }
       public Builder ClearRepeatedFixed64() {
@@ -4661,7 +4661,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedSfixed32(scg::IEnumerable<int> values) {
-        base.AddRange(values, result.repeatedSfixed32_);
+        result.repeatedSfixed32_.Add(values);
         return this;
       }
       public Builder ClearRepeatedSfixed32() {
@@ -4687,7 +4687,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedSfixed64(scg::IEnumerable<long> values) {
-        base.AddRange(values, result.repeatedSfixed64_);
+        result.repeatedSfixed64_.Add(values);
         return this;
       }
       public Builder ClearRepeatedSfixed64() {
@@ -4713,7 +4713,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedFloat(scg::IEnumerable<float> values) {
-        base.AddRange(values, result.repeatedFloat_);
+        result.repeatedFloat_.Add(values);
         return this;
       }
       public Builder ClearRepeatedFloat() {
@@ -4739,7 +4739,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedDouble(scg::IEnumerable<double> values) {
-        base.AddRange(values, result.repeatedDouble_);
+        result.repeatedDouble_.Add(values);
         return this;
       }
       public Builder ClearRepeatedDouble() {
@@ -4765,7 +4765,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedBool(scg::IEnumerable<bool> values) {
-        base.AddRange(values, result.repeatedBool_);
+        result.repeatedBool_.Add(values);
         return this;
       }
       public Builder ClearRepeatedBool() {
@@ -4793,7 +4793,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedString(scg::IEnumerable<string> values) {
-        base.AddRange(values, result.repeatedString_);
+        result.repeatedString_.Add(values);
         return this;
       }
       public Builder ClearRepeatedString() {
@@ -4821,7 +4821,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedBytes(scg::IEnumerable<pb::ByteString> values) {
-        base.AddRange(values, result.repeatedBytes_);
+        result.repeatedBytes_.Add(values);
         return this;
       }
       public Builder ClearRepeatedBytes() {
@@ -4859,7 +4859,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedGroup(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.RepeatedGroup> values) {
-        base.AddRange(values, result.repeatedGroup_);
+        result.repeatedGroup_.Add(values);
         return this;
       }
       public Builder ClearRepeatedGroup() {
@@ -4897,7 +4897,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedNestedMessage(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage> values) {
-        base.AddRange(values, result.repeatedNestedMessage_);
+        result.repeatedNestedMessage_.Add(values);
         return this;
       }
       public Builder ClearRepeatedNestedMessage() {
@@ -4935,7 +4935,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedForeignMessage(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.ForeignMessage> values) {
-        base.AddRange(values, result.repeatedForeignMessage_);
+        result.repeatedForeignMessage_.Add(values);
         return this;
       }
       public Builder ClearRepeatedForeignMessage() {
@@ -4973,7 +4973,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedImportMessage(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.ImportMessage> values) {
-        base.AddRange(values, result.repeatedImportMessage_);
+        result.repeatedImportMessage_.Add(values);
         return this;
       }
       public Builder ClearRepeatedImportMessage() {
@@ -4999,7 +4999,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedNestedEnum(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedEnum> values) {
-        base.AddRange(values, result.repeatedNestedEnum_);
+        result.repeatedNestedEnum_.Add(values);
         return this;
       }
       public Builder ClearRepeatedNestedEnum() {
@@ -5025,7 +5025,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedForeignEnum(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.ForeignEnum> values) {
-        base.AddRange(values, result.repeatedForeignEnum_);
+        result.repeatedForeignEnum_.Add(values);
         return this;
       }
       public Builder ClearRepeatedForeignEnum() {
@@ -5051,7 +5051,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedImportEnum(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.ImportEnum> values) {
-        base.AddRange(values, result.repeatedImportEnum_);
+        result.repeatedImportEnum_.Add(values);
         return this;
       }
       public Builder ClearRepeatedImportEnum() {
@@ -5079,7 +5079,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedStringPiece(scg::IEnumerable<string> values) {
-        base.AddRange(values, result.repeatedStringPiece_);
+        result.repeatedStringPiece_.Add(values);
         return this;
       }
       public Builder ClearRepeatedStringPiece() {
@@ -5107,7 +5107,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedCord(scg::IEnumerable<string> values) {
-        base.AddRange(values, result.repeatedCord_);
+        result.repeatedCord_.Add(values);
         return this;
       }
       public Builder ClearRepeatedCord() {
@@ -8611,7 +8611,7 @@ namespace Google.ProtocolBuffers.TestProtos {
           MergeOptionalMessage(other.OptionalMessage);
         }
         if (other.repeatedMessage_.Count != 0) {
-          base.AddRange(other.repeatedMessage_, result.repeatedMessage_);
+          result.repeatedMessage_.Add(other.repeatedMessage_);
         }
         if (other.HasDummy) {
           Dummy = other.Dummy;
@@ -8751,7 +8751,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedMessage(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.TestRequired> values) {
-        base.AddRange(values, result.repeatedMessage_);
+        result.repeatedMessage_.Add(values);
         return this;
       }
       public Builder ClearRepeatedMessage() {
@@ -11868,10 +11868,10 @@ namespace Google.ProtocolBuffers.TestProtos {
           public override Builder MergeFrom(NestedMessage other) {
             if (other == global::Google.ProtocolBuffers.TestProtos.TestNestedMessageHasBits.Types.NestedMessage.DefaultInstance) return this;
             if (other.nestedmessageRepeatedInt32_.Count != 0) {
-              base.AddRange(other.nestedmessageRepeatedInt32_, result.nestedmessageRepeatedInt32_);
+              result.nestedmessageRepeatedInt32_.Add(other.nestedmessageRepeatedInt32_);
             }
             if (other.nestedmessageRepeatedForeignmessage_.Count != 0) {
-              base.AddRange(other.nestedmessageRepeatedForeignmessage_, result.nestedmessageRepeatedForeignmessage_);
+              result.nestedmessageRepeatedForeignmessage_.Add(other.nestedmessageRepeatedForeignmessage_);
             }
             this.MergeUnknownFields(other.UnknownFields);
             return this;
@@ -11952,7 +11952,7 @@ namespace Google.ProtocolBuffers.TestProtos {
             return this;
           }
           public Builder AddRangeNestedmessageRepeatedInt32(scg::IEnumerable<int> values) {
-            base.AddRange(values, result.nestedmessageRepeatedInt32_);
+            result.nestedmessageRepeatedInt32_.Add(values);
             return this;
           }
           public Builder ClearNestedmessageRepeatedInt32() {
@@ -11990,7 +11990,7 @@ namespace Google.ProtocolBuffers.TestProtos {
             return this;
           }
           public Builder AddRangeNestedmessageRepeatedForeignmessage(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.ForeignMessage> values) {
-            base.AddRange(values, result.nestedmessageRepeatedForeignmessage_);
+            result.nestedmessageRepeatedForeignmessage_.Add(values);
             return this;
           }
           public Builder ClearNestedmessageRepeatedForeignmessage() {
@@ -12638,22 +12638,22 @@ namespace Google.ProtocolBuffers.TestProtos {
           CordField = other.CordField;
         }
         if (other.repeatedPrimitiveField_.Count != 0) {
-          base.AddRange(other.repeatedPrimitiveField_, result.repeatedPrimitiveField_);
+          result.repeatedPrimitiveField_.Add(other.repeatedPrimitiveField_);
         }
         if (other.repeatedStringField_.Count != 0) {
-          base.AddRange(other.repeatedStringField_, result.repeatedStringField_);
+          result.repeatedStringField_.Add(other.repeatedStringField_);
         }
         if (other.repeatedEnumField_.Count != 0) {
-          base.AddRange(other.repeatedEnumField_, result.repeatedEnumField_);
+          result.repeatedEnumField_.Add(other.repeatedEnumField_);
         }
         if (other.repeatedMessageField_.Count != 0) {
-          base.AddRange(other.repeatedMessageField_, result.repeatedMessageField_);
+          result.repeatedMessageField_.Add(other.repeatedMessageField_);
         }
         if (other.repeatedStringPieceField_.Count != 0) {
-          base.AddRange(other.repeatedStringPieceField_, result.repeatedStringPieceField_);
+          result.repeatedStringPieceField_.Add(other.repeatedStringPieceField_);
         }
         if (other.repeatedCordField_.Count != 0) {
-          base.AddRange(other.repeatedCordField_, result.repeatedCordField_);
+          result.repeatedCordField_.Add(other.repeatedCordField_);
         }
         this.MergeUnknownFields(other.UnknownFields);
         return this;
@@ -12926,7 +12926,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedPrimitiveField(scg::IEnumerable<int> values) {
-        base.AddRange(values, result.repeatedPrimitiveField_);
+        result.repeatedPrimitiveField_.Add(values);
         return this;
       }
       public Builder ClearRepeatedPrimitiveField() {
@@ -12954,7 +12954,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedStringField(scg::IEnumerable<string> values) {
-        base.AddRange(values, result.repeatedStringField_);
+        result.repeatedStringField_.Add(values);
         return this;
       }
       public Builder ClearRepeatedStringField() {
@@ -12980,7 +12980,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedEnumField(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.ForeignEnum> values) {
-        base.AddRange(values, result.repeatedEnumField_);
+        result.repeatedEnumField_.Add(values);
         return this;
       }
       public Builder ClearRepeatedEnumField() {
@@ -13018,7 +13018,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedMessageField(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.ForeignMessage> values) {
-        base.AddRange(values, result.repeatedMessageField_);
+        result.repeatedMessageField_.Add(values);
         return this;
       }
       public Builder ClearRepeatedMessageField() {
@@ -13046,7 +13046,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedStringPieceField(scg::IEnumerable<string> values) {
-        base.AddRange(values, result.repeatedStringPieceField_);
+        result.repeatedStringPieceField_.Add(values);
         return this;
       }
       public Builder ClearRepeatedStringPieceField() {
@@ -13074,7 +13074,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedCordField(scg::IEnumerable<string> values) {
-        base.AddRange(values, result.repeatedCordField_);
+        result.repeatedCordField_.Add(values);
         return this;
       }
       public Builder ClearRepeatedCordField() {
@@ -15409,46 +15409,46 @@ namespace Google.ProtocolBuffers.TestProtos {
       public override Builder MergeFrom(TestPackedTypes other) {
         if (other == global::Google.ProtocolBuffers.TestProtos.TestPackedTypes.DefaultInstance) return this;
         if (other.packedInt32_.Count != 0) {
-          base.AddRange(other.packedInt32_, result.packedInt32_);
+          result.packedInt32_.Add(other.packedInt32_);
         }
         if (other.packedInt64_.Count != 0) {
-          base.AddRange(other.packedInt64_, result.packedInt64_);
+          result.packedInt64_.Add(other.packedInt64_);
         }
         if (other.packedUint32_.Count != 0) {
-          base.AddRange(other.packedUint32_, result.packedUint32_);
+          result.packedUint32_.Add(other.packedUint32_);
         }
         if (other.packedUint64_.Count != 0) {
-          base.AddRange(other.packedUint64_, result.packedUint64_);
+          result.packedUint64_.Add(other.packedUint64_);
         }
         if (other.packedSint32_.Count != 0) {
-          base.AddRange(other.packedSint32_, result.packedSint32_);
+          result.packedSint32_.Add(other.packedSint32_);
         }
         if (other.packedSint64_.Count != 0) {
-          base.AddRange(other.packedSint64_, result.packedSint64_);
+          result.packedSint64_.Add(other.packedSint64_);
         }
         if (other.packedFixed32_.Count != 0) {
-          base.AddRange(other.packedFixed32_, result.packedFixed32_);
+          result.packedFixed32_.Add(other.packedFixed32_);
         }
         if (other.packedFixed64_.Count != 0) {
-          base.AddRange(other.packedFixed64_, result.packedFixed64_);
+          result.packedFixed64_.Add(other.packedFixed64_);
         }
         if (other.packedSfixed32_.Count != 0) {
-          base.AddRange(other.packedSfixed32_, result.packedSfixed32_);
+          result.packedSfixed32_.Add(other.packedSfixed32_);
         }
         if (other.packedSfixed64_.Count != 0) {
-          base.AddRange(other.packedSfixed64_, result.packedSfixed64_);
+          result.packedSfixed64_.Add(other.packedSfixed64_);
         }
         if (other.packedFloat_.Count != 0) {
-          base.AddRange(other.packedFloat_, result.packedFloat_);
+          result.packedFloat_.Add(other.packedFloat_);
         }
         if (other.packedDouble_.Count != 0) {
-          base.AddRange(other.packedDouble_, result.packedDouble_);
+          result.packedDouble_.Add(other.packedDouble_);
         }
         if (other.packedBool_.Count != 0) {
-          base.AddRange(other.packedBool_, result.packedBool_);
+          result.packedBool_.Add(other.packedBool_);
         }
         if (other.packedEnum_.Count != 0) {
-          base.AddRange(other.packedEnum_, result.packedEnum_);
+          result.packedEnum_.Add(other.packedEnum_);
         }
         this.MergeUnknownFields(other.UnknownFields);
         return this;
@@ -15599,7 +15599,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangePackedInt32(scg::IEnumerable<int> values) {
-        base.AddRange(values, result.packedInt32_);
+        result.packedInt32_.Add(values);
         return this;
       }
       public Builder ClearPackedInt32() {
@@ -15625,7 +15625,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangePackedInt64(scg::IEnumerable<long> values) {
-        base.AddRange(values, result.packedInt64_);
+        result.packedInt64_.Add(values);
         return this;
       }
       public Builder ClearPackedInt64() {
@@ -15656,7 +15656,7 @@ namespace Google.ProtocolBuffers.TestProtos {
       }
       [global::System.CLSCompliant(false)]
       public Builder AddRangePackedUint32(scg::IEnumerable<uint> values) {
-        base.AddRange(values, result.packedUint32_);
+        result.packedUint32_.Add(values);
         return this;
       }
       public Builder ClearPackedUint32() {
@@ -15687,7 +15687,7 @@ namespace Google.ProtocolBuffers.TestProtos {
       }
       [global::System.CLSCompliant(false)]
       public Builder AddRangePackedUint64(scg::IEnumerable<ulong> values) {
-        base.AddRange(values, result.packedUint64_);
+        result.packedUint64_.Add(values);
         return this;
       }
       public Builder ClearPackedUint64() {
@@ -15713,7 +15713,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangePackedSint32(scg::IEnumerable<int> values) {
-        base.AddRange(values, result.packedSint32_);
+        result.packedSint32_.Add(values);
         return this;
       }
       public Builder ClearPackedSint32() {
@@ -15739,7 +15739,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangePackedSint64(scg::IEnumerable<long> values) {
-        base.AddRange(values, result.packedSint64_);
+        result.packedSint64_.Add(values);
         return this;
       }
       public Builder ClearPackedSint64() {
@@ -15770,7 +15770,7 @@ namespace Google.ProtocolBuffers.TestProtos {
       }
       [global::System.CLSCompliant(false)]
       public Builder AddRangePackedFixed32(scg::IEnumerable<uint> values) {
-        base.AddRange(values, result.packedFixed32_);
+        result.packedFixed32_.Add(values);
         return this;
       }
       public Builder ClearPackedFixed32() {
@@ -15801,7 +15801,7 @@ namespace Google.ProtocolBuffers.TestProtos {
       }
       [global::System.CLSCompliant(false)]
       public Builder AddRangePackedFixed64(scg::IEnumerable<ulong> values) {
-        base.AddRange(values, result.packedFixed64_);
+        result.packedFixed64_.Add(values);
         return this;
       }
       public Builder ClearPackedFixed64() {
@@ -15827,7 +15827,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangePackedSfixed32(scg::IEnumerable<int> values) {
-        base.AddRange(values, result.packedSfixed32_);
+        result.packedSfixed32_.Add(values);
         return this;
       }
       public Builder ClearPackedSfixed32() {
@@ -15853,7 +15853,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangePackedSfixed64(scg::IEnumerable<long> values) {
-        base.AddRange(values, result.packedSfixed64_);
+        result.packedSfixed64_.Add(values);
         return this;
       }
       public Builder ClearPackedSfixed64() {
@@ -15879,7 +15879,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangePackedFloat(scg::IEnumerable<float> values) {
-        base.AddRange(values, result.packedFloat_);
+        result.packedFloat_.Add(values);
         return this;
       }
       public Builder ClearPackedFloat() {
@@ -15905,7 +15905,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangePackedDouble(scg::IEnumerable<double> values) {
-        base.AddRange(values, result.packedDouble_);
+        result.packedDouble_.Add(values);
         return this;
       }
       public Builder ClearPackedDouble() {
@@ -15931,7 +15931,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangePackedBool(scg::IEnumerable<bool> values) {
-        base.AddRange(values, result.packedBool_);
+        result.packedBool_.Add(values);
         return this;
       }
       public Builder ClearPackedBool() {
@@ -15957,7 +15957,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangePackedEnum(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.ForeignEnum> values) {
-        base.AddRange(values, result.packedEnum_);
+        result.packedEnum_.Add(values);
         return this;
       }
       public Builder ClearPackedEnum() {
@@ -16444,46 +16444,46 @@ namespace Google.ProtocolBuffers.TestProtos {
       public override Builder MergeFrom(TestUnpackedTypes other) {
         if (other == global::Google.ProtocolBuffers.TestProtos.TestUnpackedTypes.DefaultInstance) return this;
         if (other.unpackedInt32_.Count != 0) {
-          base.AddRange(other.unpackedInt32_, result.unpackedInt32_);
+          result.unpackedInt32_.Add(other.unpackedInt32_);
         }
         if (other.unpackedInt64_.Count != 0) {
-          base.AddRange(other.unpackedInt64_, result.unpackedInt64_);
+          result.unpackedInt64_.Add(other.unpackedInt64_);
         }
         if (other.unpackedUint32_.Count != 0) {
-          base.AddRange(other.unpackedUint32_, result.unpackedUint32_);
+          result.unpackedUint32_.Add(other.unpackedUint32_);
         }
         if (other.unpackedUint64_.Count != 0) {
-          base.AddRange(other.unpackedUint64_, result.unpackedUint64_);
+          result.unpackedUint64_.Add(other.unpackedUint64_);
         }
         if (other.unpackedSint32_.Count != 0) {
-          base.AddRange(other.unpackedSint32_, result.unpackedSint32_);
+          result.unpackedSint32_.Add(other.unpackedSint32_);
         }
         if (other.unpackedSint64_.Count != 0) {
-          base.AddRange(other.unpackedSint64_, result.unpackedSint64_);
+          result.unpackedSint64_.Add(other.unpackedSint64_);
         }
         if (other.unpackedFixed32_.Count != 0) {
-          base.AddRange(other.unpackedFixed32_, result.unpackedFixed32_);
+          result.unpackedFixed32_.Add(other.unpackedFixed32_);
         }
         if (other.unpackedFixed64_.Count != 0) {
-          base.AddRange(other.unpackedFixed64_, result.unpackedFixed64_);
+          result.unpackedFixed64_.Add(other.unpackedFixed64_);
         }
         if (other.unpackedSfixed32_.Count != 0) {
-          base.AddRange(other.unpackedSfixed32_, result.unpackedSfixed32_);
+          result.unpackedSfixed32_.Add(other.unpackedSfixed32_);
         }
         if (other.unpackedSfixed64_.Count != 0) {
-          base.AddRange(other.unpackedSfixed64_, result.unpackedSfixed64_);
+          result.unpackedSfixed64_.Add(other.unpackedSfixed64_);
         }
         if (other.unpackedFloat_.Count != 0) {
-          base.AddRange(other.unpackedFloat_, result.unpackedFloat_);
+          result.unpackedFloat_.Add(other.unpackedFloat_);
         }
         if (other.unpackedDouble_.Count != 0) {
-          base.AddRange(other.unpackedDouble_, result.unpackedDouble_);
+          result.unpackedDouble_.Add(other.unpackedDouble_);
         }
         if (other.unpackedBool_.Count != 0) {
-          base.AddRange(other.unpackedBool_, result.unpackedBool_);
+          result.unpackedBool_.Add(other.unpackedBool_);
         }
         if (other.unpackedEnum_.Count != 0) {
-          base.AddRange(other.unpackedEnum_, result.unpackedEnum_);
+          result.unpackedEnum_.Add(other.unpackedEnum_);
         }
         this.MergeUnknownFields(other.UnknownFields);
         return this;
@@ -16634,7 +16634,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeUnpackedInt32(scg::IEnumerable<int> values) {
-        base.AddRange(values, result.unpackedInt32_);
+        result.unpackedInt32_.Add(values);
         return this;
       }
       public Builder ClearUnpackedInt32() {
@@ -16660,7 +16660,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeUnpackedInt64(scg::IEnumerable<long> values) {
-        base.AddRange(values, result.unpackedInt64_);
+        result.unpackedInt64_.Add(values);
         return this;
       }
       public Builder ClearUnpackedInt64() {
@@ -16691,7 +16691,7 @@ namespace Google.ProtocolBuffers.TestProtos {
       }
       [global::System.CLSCompliant(false)]
       public Builder AddRangeUnpackedUint32(scg::IEnumerable<uint> values) {
-        base.AddRange(values, result.unpackedUint32_);
+        result.unpackedUint32_.Add(values);
         return this;
       }
       public Builder ClearUnpackedUint32() {
@@ -16722,7 +16722,7 @@ namespace Google.ProtocolBuffers.TestProtos {
       }
       [global::System.CLSCompliant(false)]
       public Builder AddRangeUnpackedUint64(scg::IEnumerable<ulong> values) {
-        base.AddRange(values, result.unpackedUint64_);
+        result.unpackedUint64_.Add(values);
         return this;
       }
       public Builder ClearUnpackedUint64() {
@@ -16748,7 +16748,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeUnpackedSint32(scg::IEnumerable<int> values) {
-        base.AddRange(values, result.unpackedSint32_);
+        result.unpackedSint32_.Add(values);
         return this;
       }
       public Builder ClearUnpackedSint32() {
@@ -16774,7 +16774,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeUnpackedSint64(scg::IEnumerable<long> values) {
-        base.AddRange(values, result.unpackedSint64_);
+        result.unpackedSint64_.Add(values);
         return this;
       }
       public Builder ClearUnpackedSint64() {
@@ -16805,7 +16805,7 @@ namespace Google.ProtocolBuffers.TestProtos {
       }
       [global::System.CLSCompliant(false)]
       public Builder AddRangeUnpackedFixed32(scg::IEnumerable<uint> values) {
-        base.AddRange(values, result.unpackedFixed32_);
+        result.unpackedFixed32_.Add(values);
         return this;
       }
       public Builder ClearUnpackedFixed32() {
@@ -16836,7 +16836,7 @@ namespace Google.ProtocolBuffers.TestProtos {
       }
       [global::System.CLSCompliant(false)]
       public Builder AddRangeUnpackedFixed64(scg::IEnumerable<ulong> values) {
-        base.AddRange(values, result.unpackedFixed64_);
+        result.unpackedFixed64_.Add(values);
         return this;
       }
       public Builder ClearUnpackedFixed64() {
@@ -16862,7 +16862,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeUnpackedSfixed32(scg::IEnumerable<int> values) {
-        base.AddRange(values, result.unpackedSfixed32_);
+        result.unpackedSfixed32_.Add(values);
         return this;
       }
       public Builder ClearUnpackedSfixed32() {
@@ -16888,7 +16888,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeUnpackedSfixed64(scg::IEnumerable<long> values) {
-        base.AddRange(values, result.unpackedSfixed64_);
+        result.unpackedSfixed64_.Add(values);
         return this;
       }
       public Builder ClearUnpackedSfixed64() {
@@ -16914,7 +16914,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeUnpackedFloat(scg::IEnumerable<float> values) {
-        base.AddRange(values, result.unpackedFloat_);
+        result.unpackedFloat_.Add(values);
         return this;
       }
       public Builder ClearUnpackedFloat() {
@@ -16940,7 +16940,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeUnpackedDouble(scg::IEnumerable<double> values) {
-        base.AddRange(values, result.unpackedDouble_);
+        result.unpackedDouble_.Add(values);
         return this;
       }
       public Builder ClearUnpackedDouble() {
@@ -16966,7 +16966,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeUnpackedBool(scg::IEnumerable<bool> values) {
-        base.AddRange(values, result.unpackedBool_);
+        result.unpackedBool_.Add(values);
         return this;
       }
       public Builder ClearUnpackedBool() {
@@ -16992,7 +16992,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeUnpackedEnum(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.ForeignEnum> values) {
-        base.AddRange(values, result.unpackedEnum_);
+        result.unpackedEnum_.Add(values);
         return this;
       }
       public Builder ClearUnpackedEnum() {
@@ -17956,10 +17956,10 @@ namespace Google.ProtocolBuffers.TestProtos {
           MergeDynamicMessageExtension(other.DynamicMessageExtension);
         }
         if (other.repeatedExtension_.Count != 0) {
-          base.AddRange(other.repeatedExtension_, result.repeatedExtension_);
+          result.repeatedExtension_.Add(other.repeatedExtension_);
         }
         if (other.packedExtension_.Count != 0) {
-          base.AddRange(other.packedExtension_, result.packedExtension_);
+          result.packedExtension_.Add(other.packedExtension_);
         }
         this.MergeUnknownFields(other.UnknownFields);
         return this;
@@ -18216,7 +18216,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedExtension(scg::IEnumerable<string> values) {
-        base.AddRange(values, result.repeatedExtension_);
+        result.repeatedExtension_.Add(values);
         return this;
       }
       public Builder ClearRepeatedExtension() {
@@ -18242,7 +18242,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangePackedExtension(scg::IEnumerable<int> values) {
-        base.AddRange(values, result.packedExtension_);
+        result.packedExtension_.Add(values);
         return this;
       }
       public Builder ClearPackedExtension() {
@@ -18541,22 +18541,22 @@ namespace Google.ProtocolBuffers.TestProtos {
       public override Builder MergeFrom(TestRepeatedScalarDifferentTagSizes other) {
         if (other == global::Google.ProtocolBuffers.TestProtos.TestRepeatedScalarDifferentTagSizes.DefaultInstance) return this;
         if (other.repeatedFixed32_.Count != 0) {
-          base.AddRange(other.repeatedFixed32_, result.repeatedFixed32_);
+          result.repeatedFixed32_.Add(other.repeatedFixed32_);
         }
         if (other.repeatedInt32_.Count != 0) {
-          base.AddRange(other.repeatedInt32_, result.repeatedInt32_);
+          result.repeatedInt32_.Add(other.repeatedInt32_);
         }
         if (other.repeatedFixed64_.Count != 0) {
-          base.AddRange(other.repeatedFixed64_, result.repeatedFixed64_);
+          result.repeatedFixed64_.Add(other.repeatedFixed64_);
         }
         if (other.repeatedInt64_.Count != 0) {
-          base.AddRange(other.repeatedInt64_, result.repeatedInt64_);
+          result.repeatedInt64_.Add(other.repeatedInt64_);
         }
         if (other.repeatedFloat_.Count != 0) {
-          base.AddRange(other.repeatedFloat_, result.repeatedFloat_);
+          result.repeatedFloat_.Add(other.repeatedFloat_);
         }
         if (other.repeatedUint64_.Count != 0) {
-          base.AddRange(other.repeatedUint64_, result.repeatedUint64_);
+          result.repeatedUint64_.Add(other.repeatedUint64_);
         }
         this.MergeUnknownFields(other.UnknownFields);
         return this;
@@ -18663,7 +18663,7 @@ namespace Google.ProtocolBuffers.TestProtos {
       }
       [global::System.CLSCompliant(false)]
       public Builder AddRangeRepeatedFixed32(scg::IEnumerable<uint> values) {
-        base.AddRange(values, result.repeatedFixed32_);
+        result.repeatedFixed32_.Add(values);
         return this;
       }
       public Builder ClearRepeatedFixed32() {
@@ -18689,7 +18689,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedInt32(scg::IEnumerable<int> values) {
-        base.AddRange(values, result.repeatedInt32_);
+        result.repeatedInt32_.Add(values);
         return this;
       }
       public Builder ClearRepeatedInt32() {
@@ -18720,7 +18720,7 @@ namespace Google.ProtocolBuffers.TestProtos {
       }
       [global::System.CLSCompliant(false)]
       public Builder AddRangeRepeatedFixed64(scg::IEnumerable<ulong> values) {
-        base.AddRange(values, result.repeatedFixed64_);
+        result.repeatedFixed64_.Add(values);
         return this;
       }
       public Builder ClearRepeatedFixed64() {
@@ -18746,7 +18746,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedInt64(scg::IEnumerable<long> values) {
-        base.AddRange(values, result.repeatedInt64_);
+        result.repeatedInt64_.Add(values);
         return this;
       }
       public Builder ClearRepeatedInt64() {
@@ -18772,7 +18772,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedFloat(scg::IEnumerable<float> values) {
-        base.AddRange(values, result.repeatedFloat_);
+        result.repeatedFloat_.Add(values);
         return this;
       }
       public Builder ClearRepeatedFloat() {
@@ -18803,7 +18803,7 @@ namespace Google.ProtocolBuffers.TestProtos {
       }
       [global::System.CLSCompliant(false)]
       public Builder AddRangeRepeatedUint64(scg::IEnumerable<ulong> values) {
-        base.AddRange(values, result.repeatedUint64_);
+        result.repeatedUint64_.Add(values);
         return this;
       }
       public Builder ClearRepeatedUint64() {

+ 6 - 6
src/ProtocolBuffers.Test/TestProtos/UnitTestRpcInterop.cs

@@ -245,7 +245,7 @@ namespace Google.ProtocolBuffers.TestProtos {
       public override Builder MergeFrom(SearchRequest other) {
         if (other == global::Google.ProtocolBuffers.TestProtos.SearchRequest.DefaultInstance) return this;
         if (other.criteria_.Count != 0) {
-          base.AddRange(other.criteria_, result.criteria_);
+          result.criteria_.Add(other.criteria_);
         }
         this.MergeUnknownFields(other.UnknownFields);
         return this;
@@ -323,7 +323,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeCriteria(scg::IEnumerable<string> values) {
-        base.AddRange(values, result.criteria_);
+        result.criteria_.Add(values);
         return this;
       }
       public Builder ClearCriteria() {
@@ -791,7 +791,7 @@ namespace Google.ProtocolBuffers.TestProtos {
       public override Builder MergeFrom(SearchResponse other) {
         if (other == global::Google.ProtocolBuffers.TestProtos.SearchResponse.DefaultInstance) return this;
         if (other.results_.Count != 0) {
-          base.AddRange(other.results_, result.results_);
+          result.results_.Add(other.results_);
         }
         this.MergeUnknownFields(other.UnknownFields);
         return this;
@@ -879,7 +879,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeResults(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.SearchResponse.Types.ResultItem> values) {
-        base.AddRange(values, result.results_);
+        result.results_.Add(values);
         return this;
       }
       public Builder ClearResults() {
@@ -1076,7 +1076,7 @@ namespace Google.ProtocolBuffers.TestProtos {
       public override Builder MergeFrom(RefineSearchRequest other) {
         if (other == global::Google.ProtocolBuffers.TestProtos.RefineSearchRequest.DefaultInstance) return this;
         if (other.criteria_.Count != 0) {
-          base.AddRange(other.criteria_, result.criteria_);
+          result.criteria_.Add(other.criteria_);
         }
         if (other.HasPreviousResults) {
           MergePreviousResults(other.PreviousResults);
@@ -1166,7 +1166,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeCriteria(scg::IEnumerable<string> values) {
-        base.AddRange(values, result.criteria_);
+        result.criteria_.Add(values);
         return this;
       }
       public Builder ClearCriteria() {

+ 10 - 10
src/ProtocolBuffers.Test/TestProtos/UnitTestXmlSerializerTestProtoFile.cs

@@ -318,7 +318,7 @@ namespace Google.ProtocolBuffers.TestProtos {
       public override Builder MergeFrom(TestXmlChild other) {
         if (other == global::Google.ProtocolBuffers.TestProtos.TestXmlChild.DefaultInstance) return this;
         if (other.options_.Count != 0) {
-          base.AddRange(other.options_, result.options_);
+          result.options_.Add(other.options_);
         }
         if (other.HasBinary) {
           Binary = other.Binary;
@@ -411,7 +411,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeOptions(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.EnumOptions> values) {
-        base.AddRange(values, result.options_);
+        result.options_.Add(values);
         return this;
       }
       public Builder ClearOptions() {
@@ -1119,7 +1119,7 @@ namespace Google.ProtocolBuffers.TestProtos {
           public override Builder MergeFrom(Children other) {
             if (other == global::Google.ProtocolBuffers.TestProtos.TestXmlMessage.Types.Children.DefaultInstance) return this;
             if (other.options_.Count != 0) {
-              base.AddRange(other.options_, result.options_);
+              result.options_.Add(other.options_);
             }
             if (other.HasBinary) {
               Binary = other.Binary;
@@ -1212,7 +1212,7 @@ namespace Google.ProtocolBuffers.TestProtos {
             return this;
           }
           public Builder AddRangeOptions(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.EnumOptions> values) {
-            base.AddRange(values, result.options_);
+            result.options_.Add(values);
             return this;
           }
           public Builder ClearOptions() {
@@ -1500,13 +1500,13 @@ namespace Google.ProtocolBuffers.TestProtos {
           Number = other.Number;
         }
         if (other.numbers_.Count != 0) {
-          base.AddRange(other.numbers_, result.numbers_);
+          result.numbers_.Add(other.numbers_);
         }
         if (other.HasText) {
           Text = other.Text;
         }
         if (other.textlines_.Count != 0) {
-          base.AddRange(other.textlines_, result.textlines_);
+          result.textlines_.Add(other.textlines_);
         }
         if (other.HasValid) {
           Valid = other.Valid;
@@ -1515,7 +1515,7 @@ namespace Google.ProtocolBuffers.TestProtos {
           MergeChild(other.Child);
         }
         if (other.children_.Count != 0) {
-          base.AddRange(other.children_, result.children_);
+          result.children_.Add(other.children_);
         }
           this.MergeExtensionFields(other);
         this.MergeUnknownFields(other.UnknownFields);
@@ -1640,7 +1640,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeNumbers(scg::IEnumerable<int> values) {
-        base.AddRange(values, result.numbers_);
+        result.numbers_.Add(values);
         return this;
       }
       public Builder ClearNumbers() {
@@ -1687,7 +1687,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeTextlines(scg::IEnumerable<string> values) {
-        base.AddRange(values, result.textlines_);
+        result.textlines_.Add(values);
         return this;
       }
       public Builder ClearTextlines() {
@@ -1779,7 +1779,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeChildren(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.TestXmlMessage.Types.Children> values) {
-        base.AddRange(values, result.children_);
+        result.children_.Add(values);
         return this;
       }
       public Builder ClearChildren() {

+ 33 - 5
src/ProtocolBuffers/Collections/PopsicleList.cs

@@ -42,6 +42,7 @@ namespace Google.ProtocolBuffers.Collections
     /// </summary>
     public sealed class PopsicleList<T> : IPopsicleList<T>, ICastArray
     {
+        private static readonly bool CheckForNull = default(T) == null;
         private static readonly T[] EmptySet = new T[0];
 
         private List<T> items;
@@ -65,6 +66,10 @@ namespace Google.ProtocolBuffers.Collections
         public void Insert(int index, T item)
         {
             ValidateModification();
+            if (CheckForNull)
+            {
+                ThrowHelper.ThrowIfNull(item);
+            }
             items.Insert(index, item);
         }
 
@@ -87,6 +92,10 @@ namespace Google.ProtocolBuffers.Collections
             set
             {
                 ValidateModification();
+                if (CheckForNull)
+                {
+                    ThrowHelper.ThrowIfNull(value);
+                }
                 items[index] = value;
             }
         }
@@ -94,6 +103,10 @@ namespace Google.ProtocolBuffers.Collections
         public void Add(T item)
         {
             ValidateModification();
+            if (CheckForNull)
+            {
+                ThrowHelper.ThrowIfNull(item);
+            }
             items.Add(item);
         }
 
@@ -145,15 +158,30 @@ namespace Google.ProtocolBuffers.Collections
 
         public void Add(IEnumerable<T> collection)
         {
-            if (readOnly)
+            ValidateModification();
+            ThrowHelper.ThrowIfNull(collection);
+
+            if (!CheckForNull || collection is PopsicleList<T>)
             {
-                throw new NotSupportedException("List is read-only");
+                items.AddRange(collection);
             }
-            if (items == null)
+            else
             {
-                items = new List<T>();
+                // Assumption, it's ok to enumerate collections more than once.
+                if (collection is ICollection<T>)
+                {
+                    ThrowHelper.ThrowIfAnyNull(collection);
+                    items.AddRange(collection);
+                }
+                else
+                {
+                    foreach (T item in collection)
+                    {
+                        ThrowHelper.ThrowIfNull(item);
+                        items.Add(item);
+                    }
+                }
             }
-            items.AddRange(collection);
         }
 
         private void ValidateModification()

+ 42 - 42
src/ProtocolBuffers/DescriptorProtos/DescriptorProtoFile.cs

@@ -393,7 +393,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
       public override Builder MergeFrom(FileDescriptorSet other) {
         if (other == global::Google.ProtocolBuffers.DescriptorProtos.FileDescriptorSet.DefaultInstance) return this;
         if (other.file_.Count != 0) {
-          base.AddRange(other.file_, result.file_);
+          result.file_.Add(other.file_);
         }
         this.MergeUnknownFields(other.UnknownFields);
         return this;
@@ -481,7 +481,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
         return this;
       }
       public Builder AddRangeFile(scg::IEnumerable<global::Google.ProtocolBuffers.DescriptorProtos.FileDescriptorProto> values) {
-        base.AddRange(values, result.file_);
+        result.file_.Add(values);
         return this;
       }
       public Builder ClearFile() {
@@ -805,19 +805,19 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
           Package = other.Package;
         }
         if (other.dependency_.Count != 0) {
-          base.AddRange(other.dependency_, result.dependency_);
+          result.dependency_.Add(other.dependency_);
         }
         if (other.messageType_.Count != 0) {
-          base.AddRange(other.messageType_, result.messageType_);
+          result.messageType_.Add(other.messageType_);
         }
         if (other.enumType_.Count != 0) {
-          base.AddRange(other.enumType_, result.enumType_);
+          result.enumType_.Add(other.enumType_);
         }
         if (other.service_.Count != 0) {
-          base.AddRange(other.service_, result.service_);
+          result.service_.Add(other.service_);
         }
         if (other.extension_.Count != 0) {
-          base.AddRange(other.extension_, result.extension_);
+          result.extension_.Add(other.extension_);
         }
         if (other.HasOptions) {
           MergeOptions(other.Options);
@@ -969,7 +969,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
         return this;
       }
       public Builder AddRangeDependency(scg::IEnumerable<string> values) {
-        base.AddRange(values, result.dependency_);
+        result.dependency_.Add(values);
         return this;
       }
       public Builder ClearDependency() {
@@ -1007,7 +1007,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
         return this;
       }
       public Builder AddRangeMessageType(scg::IEnumerable<global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto> values) {
-        base.AddRange(values, result.messageType_);
+        result.messageType_.Add(values);
         return this;
       }
       public Builder ClearMessageType() {
@@ -1045,7 +1045,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
         return this;
       }
       public Builder AddRangeEnumType(scg::IEnumerable<global::Google.ProtocolBuffers.DescriptorProtos.EnumDescriptorProto> values) {
-        base.AddRange(values, result.enumType_);
+        result.enumType_.Add(values);
         return this;
       }
       public Builder ClearEnumType() {
@@ -1083,7 +1083,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
         return this;
       }
       public Builder AddRangeService(scg::IEnumerable<global::Google.ProtocolBuffers.DescriptorProtos.ServiceDescriptorProto> values) {
-        base.AddRange(values, result.service_);
+        result.service_.Add(values);
         return this;
       }
       public Builder ClearService() {
@@ -1121,7 +1121,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
         return this;
       }
       public Builder AddRangeExtension(scg::IEnumerable<global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto> values) {
-        base.AddRange(values, result.extension_);
+        result.extension_.Add(values);
         return this;
       }
       public Builder ClearExtension() {
@@ -1745,19 +1745,19 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
           Name = other.Name;
         }
         if (other.field_.Count != 0) {
-          base.AddRange(other.field_, result.field_);
+          result.field_.Add(other.field_);
         }
         if (other.extension_.Count != 0) {
-          base.AddRange(other.extension_, result.extension_);
+          result.extension_.Add(other.extension_);
         }
         if (other.nestedType_.Count != 0) {
-          base.AddRange(other.nestedType_, result.nestedType_);
+          result.nestedType_.Add(other.nestedType_);
         }
         if (other.enumType_.Count != 0) {
-          base.AddRange(other.enumType_, result.enumType_);
+          result.enumType_.Add(other.enumType_);
         }
         if (other.extensionRange_.Count != 0) {
-          base.AddRange(other.extensionRange_, result.extensionRange_);
+          result.extensionRange_.Add(other.extensionRange_);
         }
         if (other.HasOptions) {
           MergeOptions(other.Options);
@@ -1896,7 +1896,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
         return this;
       }
       public Builder AddRangeField(scg::IEnumerable<global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto> values) {
-        base.AddRange(values, result.field_);
+        result.field_.Add(values);
         return this;
       }
       public Builder ClearField() {
@@ -1934,7 +1934,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
         return this;
       }
       public Builder AddRangeExtension(scg::IEnumerable<global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto> values) {
-        base.AddRange(values, result.extension_);
+        result.extension_.Add(values);
         return this;
       }
       public Builder ClearExtension() {
@@ -1972,7 +1972,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
         return this;
       }
       public Builder AddRangeNestedType(scg::IEnumerable<global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto> values) {
-        base.AddRange(values, result.nestedType_);
+        result.nestedType_.Add(values);
         return this;
       }
       public Builder ClearNestedType() {
@@ -2010,7 +2010,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
         return this;
       }
       public Builder AddRangeEnumType(scg::IEnumerable<global::Google.ProtocolBuffers.DescriptorProtos.EnumDescriptorProto> values) {
-        base.AddRange(values, result.enumType_);
+        result.enumType_.Add(values);
         return this;
       }
       public Builder ClearEnumType() {
@@ -2048,7 +2048,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
         return this;
       }
       public Builder AddRangeExtensionRange(scg::IEnumerable<global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto.Types.ExtensionRange> values) {
-        base.AddRange(values, result.extensionRange_);
+        result.extensionRange_.Add(values);
         return this;
       }
       public Builder ClearExtensionRange() {
@@ -2910,7 +2910,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
           Name = other.Name;
         }
         if (other.value_.Count != 0) {
-          base.AddRange(other.value_, result.value_);
+          result.value_.Add(other.value_);
         }
         if (other.HasOptions) {
           MergeOptions(other.Options);
@@ -3033,7 +3033,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
         return this;
       }
       public Builder AddRangeValue(scg::IEnumerable<global::Google.ProtocolBuffers.DescriptorProtos.EnumValueDescriptorProto> values) {
-        base.AddRange(values, result.value_);
+        result.value_.Add(values);
         return this;
       }
       public Builder ClearValue() {
@@ -3632,7 +3632,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
           Name = other.Name;
         }
         if (other.method_.Count != 0) {
-          base.AddRange(other.method_, result.method_);
+          result.method_.Add(other.method_);
         }
         if (other.HasOptions) {
           MergeOptions(other.Options);
@@ -3755,7 +3755,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
         return this;
       }
       public Builder AddRangeMethod(scg::IEnumerable<global::Google.ProtocolBuffers.DescriptorProtos.MethodDescriptorProto> values) {
-        base.AddRange(values, result.method_);
+        result.method_.Add(values);
         return this;
       }
       public Builder ClearMethod() {
@@ -4512,7 +4512,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
           PyGenericServices = other.PyGenericServices;
         }
         if (other.uninterpretedOption_.Count != 0) {
-          base.AddRange(other.uninterpretedOption_, result.uninterpretedOption_);
+          result.uninterpretedOption_.Add(other.uninterpretedOption_);
         }
           this.MergeExtensionFields(other);
         this.MergeUnknownFields(other.UnknownFields);
@@ -4765,7 +4765,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
         return this;
       }
       public Builder AddRangeUninterpretedOption(scg::IEnumerable<global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption> values) {
-        base.AddRange(values, result.uninterpretedOption_);
+        result.uninterpretedOption_.Add(values);
         return this;
       }
       public Builder ClearUninterpretedOption() {
@@ -4984,7 +4984,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
           NoStandardDescriptorAccessor = other.NoStandardDescriptorAccessor;
         }
         if (other.uninterpretedOption_.Count != 0) {
-          base.AddRange(other.uninterpretedOption_, result.uninterpretedOption_);
+          result.uninterpretedOption_.Add(other.uninterpretedOption_);
         }
           this.MergeExtensionFields(other);
         this.MergeUnknownFields(other.UnknownFields);
@@ -5117,7 +5117,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
         return this;
       }
       public Builder AddRangeUninterpretedOption(scg::IEnumerable<global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption> values) {
-        base.AddRange(values, result.uninterpretedOption_);
+        result.uninterpretedOption_.Add(values);
         return this;
       }
       public Builder ClearUninterpretedOption() {
@@ -5390,7 +5390,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
           ExperimentalMapKey = other.ExperimentalMapKey;
         }
         if (other.uninterpretedOption_.Count != 0) {
-          base.AddRange(other.uninterpretedOption_, result.uninterpretedOption_);
+          result.uninterpretedOption_.Add(other.uninterpretedOption_);
         }
           this.MergeExtensionFields(other);
         this.MergeUnknownFields(other.UnknownFields);
@@ -5576,7 +5576,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
         return this;
       }
       public Builder AddRangeUninterpretedOption(scg::IEnumerable<global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption> values) {
-        base.AddRange(values, result.uninterpretedOption_);
+        result.uninterpretedOption_.Add(values);
         return this;
       }
       public Builder ClearUninterpretedOption() {
@@ -5757,7 +5757,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
       public override Builder MergeFrom(EnumOptions other) {
         if (other == global::Google.ProtocolBuffers.DescriptorProtos.EnumOptions.DefaultInstance) return this;
         if (other.uninterpretedOption_.Count != 0) {
-          base.AddRange(other.uninterpretedOption_, result.uninterpretedOption_);
+          result.uninterpretedOption_.Add(other.uninterpretedOption_);
         }
           this.MergeExtensionFields(other);
         this.MergeUnknownFields(other.UnknownFields);
@@ -5846,7 +5846,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
         return this;
       }
       public Builder AddRangeUninterpretedOption(scg::IEnumerable<global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption> values) {
-        base.AddRange(values, result.uninterpretedOption_);
+        result.uninterpretedOption_.Add(values);
         return this;
       }
       public Builder ClearUninterpretedOption() {
@@ -6027,7 +6027,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
       public override Builder MergeFrom(EnumValueOptions other) {
         if (other == global::Google.ProtocolBuffers.DescriptorProtos.EnumValueOptions.DefaultInstance) return this;
         if (other.uninterpretedOption_.Count != 0) {
-          base.AddRange(other.uninterpretedOption_, result.uninterpretedOption_);
+          result.uninterpretedOption_.Add(other.uninterpretedOption_);
         }
           this.MergeExtensionFields(other);
         this.MergeUnknownFields(other.UnknownFields);
@@ -6116,7 +6116,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
         return this;
       }
       public Builder AddRangeUninterpretedOption(scg::IEnumerable<global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption> values) {
-        base.AddRange(values, result.uninterpretedOption_);
+        result.uninterpretedOption_.Add(values);
         return this;
       }
       public Builder ClearUninterpretedOption() {
@@ -6297,7 +6297,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
       public override Builder MergeFrom(ServiceOptions other) {
         if (other == global::Google.ProtocolBuffers.DescriptorProtos.ServiceOptions.DefaultInstance) return this;
         if (other.uninterpretedOption_.Count != 0) {
-          base.AddRange(other.uninterpretedOption_, result.uninterpretedOption_);
+          result.uninterpretedOption_.Add(other.uninterpretedOption_);
         }
           this.MergeExtensionFields(other);
         this.MergeUnknownFields(other.UnknownFields);
@@ -6386,7 +6386,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
         return this;
       }
       public Builder AddRangeUninterpretedOption(scg::IEnumerable<global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption> values) {
-        base.AddRange(values, result.uninterpretedOption_);
+        result.uninterpretedOption_.Add(values);
         return this;
       }
       public Builder ClearUninterpretedOption() {
@@ -6567,7 +6567,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
       public override Builder MergeFrom(MethodOptions other) {
         if (other == global::Google.ProtocolBuffers.DescriptorProtos.MethodOptions.DefaultInstance) return this;
         if (other.uninterpretedOption_.Count != 0) {
-          base.AddRange(other.uninterpretedOption_, result.uninterpretedOption_);
+          result.uninterpretedOption_.Add(other.uninterpretedOption_);
         }
           this.MergeExtensionFields(other);
         this.MergeUnknownFields(other.UnknownFields);
@@ -6656,7 +6656,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
         return this;
       }
       public Builder AddRangeUninterpretedOption(scg::IEnumerable<global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption> values) {
-        base.AddRange(values, result.uninterpretedOption_);
+        result.uninterpretedOption_.Add(values);
         return this;
       }
       public Builder ClearUninterpretedOption() {
@@ -7205,7 +7205,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
       public override Builder MergeFrom(UninterpretedOption other) {
         if (other == global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption.DefaultInstance) return this;
         if (other.name_.Count != 0) {
-          base.AddRange(other.name_, result.name_);
+          result.name_.Add(other.name_);
         }
         if (other.HasIdentifierValue) {
           IdentifierValue = other.IdentifierValue;
@@ -7328,7 +7328,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
         return this;
       }
       public Builder AddRangeName(scg::IEnumerable<global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption.Types.NamePart> values) {
-        base.AddRange(values, result.name_);
+        result.name_.Add(values);
         return this;
       }
       public Builder ClearName() {

+ 0 - 26
src/ProtocolBuffers/GeneratedBuilder.cs

@@ -84,32 +84,6 @@ namespace Google.ProtocolBuffers
             set { InternalFieldAccessors[field].SetValue(ThisBuilder, value); }
         }
 
-        /// <summary>
-        /// Adds all of the specified values to the given collection.
-        /// </summary>
-        /// <exception cref="ArgumentNullException">Any element of the list is null</exception>
-        protected void AddRange<T>(IEnumerable<T> source, IList<T> destination)
-        {
-            ThrowHelper.ThrowIfNull(source);
-            // We only need to check this for nullable types.
-            if (default(T) == null)
-            {
-                ThrowHelper.ThrowIfAnyNull(source);
-            }
-            List<T> list = destination as List<T>;
-            if (list != null)
-            {
-                list.AddRange(source);
-            }
-            else
-            {
-                foreach (T element in source)
-                {
-                    destination.Add(element);
-                }
-            }
-        }
-
         /// <summary>
         /// Called by derived classes to parse an unknown field.
         /// </summary>

+ 0 - 26
src/ProtocolBuffers/GeneratedBuilderLite.cs

@@ -66,32 +66,6 @@ namespace Google.ProtocolBuffers
             get { return MessageBeingBuilt.IsInitialized; }
         }
 
-        /// <summary>
-        /// Adds all of the specified values to the given collection.
-        /// </summary>
-        /// <exception cref="ArgumentNullException">Any element of the list is null</exception>
-        protected void AddRange<T>(IEnumerable<T> source, IList<T> destination)
-        {
-            ThrowHelper.ThrowIfNull(source);
-            // We only need to check this for nullable types.
-            if (default(T) == null)
-            {
-                ThrowHelper.ThrowIfAnyNull(source);
-            }
-            List<T> list = destination as List<T>;
-            if (list != null)
-            {
-                list.AddRange(source);
-            }
-            else
-            {
-                foreach (T element in source)
-                {
-                    destination.Add(element);
-                }
-            }
-        }
-
         /// <summary>
         /// Called by derived classes to parse an unknown field.
         /// </summary>

+ 5 - 5
src/ProtocolBuffersLite.Test/TestProtos/UnitTestExtrasFullProtoFile.cs

@@ -809,7 +809,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeCodes(scg::IEnumerable<int> values) {
-        base.AddRange(values, result.codes_);
+        result.codes_.Add(values);
         return this;
       }
       public Builder ClearCodes() {
@@ -847,7 +847,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangePhone(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.TestInteropPerson.Types.PhoneNumber> values) {
-        base.AddRange(values, result.phone_);
+        result.phone_.Add(values);
         return this;
       }
       public Builder ClearPhone() {
@@ -885,7 +885,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeAddresses(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.TestInteropPerson.Types.Addresses> values) {
-        base.AddRange(values, result.addresses_);
+        result.addresses_.Add(values);
         return this;
       }
       public Builder ClearAddresses() {
@@ -1231,7 +1231,7 @@ namespace Google.ProtocolBuffers.TestProtos {
             return this;
           }
           public Builder AddRangeValues(scg::IEnumerable<string> values) {
-            base.AddRange(values, result.values_);
+            result.values_.Add(values);
             return this;
           }
           public Builder ClearValues() {
@@ -1630,7 +1630,7 @@ namespace Google.ProtocolBuffers.TestProtos {
             return this;
           }
           public Builder AddRangeValues(scg::IEnumerable<string> values) {
-            base.AddRange(values, result.values_);
+            result.values_.Add(values);
             return this;
           }
           public Builder ClearValues() {

+ 6 - 6
src/ProtocolBuffersLite.Test/TestProtos/UnitTestExtrasLiteProtoFile.cs

@@ -1354,13 +1354,13 @@ namespace Google.ProtocolBuffers.TestProtos {
           Email = other.Email;
         }
         if (other.codes_.Count != 0) {
-          base.AddRange(other.codes_, result.codes_);
+          result.codes_.Add(other.codes_);
         }
         if (other.phone_.Count != 0) {
-          base.AddRange(other.phone_, result.phone_);
+          result.phone_.Add(other.phone_);
         }
         if (other.addresses_.Count != 0) {
-          base.AddRange(other.addresses_, result.addresses_);
+          result.addresses_.Add(other.addresses_);
         }
           this.MergeExtensionFields(other);
         return this;
@@ -1500,7 +1500,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeCodes(scg::IEnumerable<int> values) {
-        base.AddRange(values, result.codes_);
+        result.codes_.Add(values);
         return this;
       }
       public Builder ClearCodes() {
@@ -1538,7 +1538,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangePhone(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.TestInteropPersonLite.Types.PhoneNumber> values) {
-        base.AddRange(values, result.phone_);
+        result.phone_.Add(values);
         return this;
       }
       public Builder ClearPhone() {
@@ -1576,7 +1576,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeAddresses(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.TestInteropPersonLite.Types.Addresses> values) {
-        base.AddRange(values, result.addresses_);
+        result.addresses_.Add(values);
         return this;
       }
       public Builder ClearAddresses() {

+ 104 - 104
src/ProtocolBuffersLite.Test/TestProtos/UnitTestLiteProtoFile.cs

@@ -3690,76 +3690,76 @@ namespace Google.ProtocolBuffers.TestProtos {
           OptionalCord = other.OptionalCord;
         }
         if (other.repeatedInt32_.Count != 0) {
-          base.AddRange(other.repeatedInt32_, result.repeatedInt32_);
+          result.repeatedInt32_.Add(other.repeatedInt32_);
         }
         if (other.repeatedInt64_.Count != 0) {
-          base.AddRange(other.repeatedInt64_, result.repeatedInt64_);
+          result.repeatedInt64_.Add(other.repeatedInt64_);
         }
         if (other.repeatedUint32_.Count != 0) {
-          base.AddRange(other.repeatedUint32_, result.repeatedUint32_);
+          result.repeatedUint32_.Add(other.repeatedUint32_);
         }
         if (other.repeatedUint64_.Count != 0) {
-          base.AddRange(other.repeatedUint64_, result.repeatedUint64_);
+          result.repeatedUint64_.Add(other.repeatedUint64_);
         }
         if (other.repeatedSint32_.Count != 0) {
-          base.AddRange(other.repeatedSint32_, result.repeatedSint32_);
+          result.repeatedSint32_.Add(other.repeatedSint32_);
         }
         if (other.repeatedSint64_.Count != 0) {
-          base.AddRange(other.repeatedSint64_, result.repeatedSint64_);
+          result.repeatedSint64_.Add(other.repeatedSint64_);
         }
         if (other.repeatedFixed32_.Count != 0) {
-          base.AddRange(other.repeatedFixed32_, result.repeatedFixed32_);
+          result.repeatedFixed32_.Add(other.repeatedFixed32_);
         }
         if (other.repeatedFixed64_.Count != 0) {
-          base.AddRange(other.repeatedFixed64_, result.repeatedFixed64_);
+          result.repeatedFixed64_.Add(other.repeatedFixed64_);
         }
         if (other.repeatedSfixed32_.Count != 0) {
-          base.AddRange(other.repeatedSfixed32_, result.repeatedSfixed32_);
+          result.repeatedSfixed32_.Add(other.repeatedSfixed32_);
         }
         if (other.repeatedSfixed64_.Count != 0) {
-          base.AddRange(other.repeatedSfixed64_, result.repeatedSfixed64_);
+          result.repeatedSfixed64_.Add(other.repeatedSfixed64_);
         }
         if (other.repeatedFloat_.Count != 0) {
-          base.AddRange(other.repeatedFloat_, result.repeatedFloat_);
+          result.repeatedFloat_.Add(other.repeatedFloat_);
         }
         if (other.repeatedDouble_.Count != 0) {
-          base.AddRange(other.repeatedDouble_, result.repeatedDouble_);
+          result.repeatedDouble_.Add(other.repeatedDouble_);
         }
         if (other.repeatedBool_.Count != 0) {
-          base.AddRange(other.repeatedBool_, result.repeatedBool_);
+          result.repeatedBool_.Add(other.repeatedBool_);
         }
         if (other.repeatedString_.Count != 0) {
-          base.AddRange(other.repeatedString_, result.repeatedString_);
+          result.repeatedString_.Add(other.repeatedString_);
         }
         if (other.repeatedBytes_.Count != 0) {
-          base.AddRange(other.repeatedBytes_, result.repeatedBytes_);
+          result.repeatedBytes_.Add(other.repeatedBytes_);
         }
         if (other.repeatedGroup_.Count != 0) {
-          base.AddRange(other.repeatedGroup_, result.repeatedGroup_);
+          result.repeatedGroup_.Add(other.repeatedGroup_);
         }
         if (other.repeatedNestedMessage_.Count != 0) {
-          base.AddRange(other.repeatedNestedMessage_, result.repeatedNestedMessage_);
+          result.repeatedNestedMessage_.Add(other.repeatedNestedMessage_);
         }
         if (other.repeatedForeignMessage_.Count != 0) {
-          base.AddRange(other.repeatedForeignMessage_, result.repeatedForeignMessage_);
+          result.repeatedForeignMessage_.Add(other.repeatedForeignMessage_);
         }
         if (other.repeatedImportMessage_.Count != 0) {
-          base.AddRange(other.repeatedImportMessage_, result.repeatedImportMessage_);
+          result.repeatedImportMessage_.Add(other.repeatedImportMessage_);
         }
         if (other.repeatedNestedEnum_.Count != 0) {
-          base.AddRange(other.repeatedNestedEnum_, result.repeatedNestedEnum_);
+          result.repeatedNestedEnum_.Add(other.repeatedNestedEnum_);
         }
         if (other.repeatedForeignEnum_.Count != 0) {
-          base.AddRange(other.repeatedForeignEnum_, result.repeatedForeignEnum_);
+          result.repeatedForeignEnum_.Add(other.repeatedForeignEnum_);
         }
         if (other.repeatedImportEnum_.Count != 0) {
-          base.AddRange(other.repeatedImportEnum_, result.repeatedImportEnum_);
+          result.repeatedImportEnum_.Add(other.repeatedImportEnum_);
         }
         if (other.repeatedStringPiece_.Count != 0) {
-          base.AddRange(other.repeatedStringPiece_, result.repeatedStringPiece_);
+          result.repeatedStringPiece_.Add(other.repeatedStringPiece_);
         }
         if (other.repeatedCord_.Count != 0) {
-          base.AddRange(other.repeatedCord_, result.repeatedCord_);
+          result.repeatedCord_.Add(other.repeatedCord_);
         }
         if (other.HasDefaultInt32) {
           DefaultInt32 = other.DefaultInt32;
@@ -4728,7 +4728,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedInt32(scg::IEnumerable<int> values) {
-        base.AddRange(values, result.repeatedInt32_);
+        result.repeatedInt32_.Add(values);
         return this;
       }
       public Builder ClearRepeatedInt32() {
@@ -4754,7 +4754,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedInt64(scg::IEnumerable<long> values) {
-        base.AddRange(values, result.repeatedInt64_);
+        result.repeatedInt64_.Add(values);
         return this;
       }
       public Builder ClearRepeatedInt64() {
@@ -4785,7 +4785,7 @@ namespace Google.ProtocolBuffers.TestProtos {
       }
       [global::System.CLSCompliant(false)]
       public Builder AddRangeRepeatedUint32(scg::IEnumerable<uint> values) {
-        base.AddRange(values, result.repeatedUint32_);
+        result.repeatedUint32_.Add(values);
         return this;
       }
       public Builder ClearRepeatedUint32() {
@@ -4816,7 +4816,7 @@ namespace Google.ProtocolBuffers.TestProtos {
       }
       [global::System.CLSCompliant(false)]
       public Builder AddRangeRepeatedUint64(scg::IEnumerable<ulong> values) {
-        base.AddRange(values, result.repeatedUint64_);
+        result.repeatedUint64_.Add(values);
         return this;
       }
       public Builder ClearRepeatedUint64() {
@@ -4842,7 +4842,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedSint32(scg::IEnumerable<int> values) {
-        base.AddRange(values, result.repeatedSint32_);
+        result.repeatedSint32_.Add(values);
         return this;
       }
       public Builder ClearRepeatedSint32() {
@@ -4868,7 +4868,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedSint64(scg::IEnumerable<long> values) {
-        base.AddRange(values, result.repeatedSint64_);
+        result.repeatedSint64_.Add(values);
         return this;
       }
       public Builder ClearRepeatedSint64() {
@@ -4899,7 +4899,7 @@ namespace Google.ProtocolBuffers.TestProtos {
       }
       [global::System.CLSCompliant(false)]
       public Builder AddRangeRepeatedFixed32(scg::IEnumerable<uint> values) {
-        base.AddRange(values, result.repeatedFixed32_);
+        result.repeatedFixed32_.Add(values);
         return this;
       }
       public Builder ClearRepeatedFixed32() {
@@ -4930,7 +4930,7 @@ namespace Google.ProtocolBuffers.TestProtos {
       }
       [global::System.CLSCompliant(false)]
       public Builder AddRangeRepeatedFixed64(scg::IEnumerable<ulong> values) {
-        base.AddRange(values, result.repeatedFixed64_);
+        result.repeatedFixed64_.Add(values);
         return this;
       }
       public Builder ClearRepeatedFixed64() {
@@ -4956,7 +4956,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedSfixed32(scg::IEnumerable<int> values) {
-        base.AddRange(values, result.repeatedSfixed32_);
+        result.repeatedSfixed32_.Add(values);
         return this;
       }
       public Builder ClearRepeatedSfixed32() {
@@ -4982,7 +4982,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedSfixed64(scg::IEnumerable<long> values) {
-        base.AddRange(values, result.repeatedSfixed64_);
+        result.repeatedSfixed64_.Add(values);
         return this;
       }
       public Builder ClearRepeatedSfixed64() {
@@ -5008,7 +5008,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedFloat(scg::IEnumerable<float> values) {
-        base.AddRange(values, result.repeatedFloat_);
+        result.repeatedFloat_.Add(values);
         return this;
       }
       public Builder ClearRepeatedFloat() {
@@ -5034,7 +5034,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedDouble(scg::IEnumerable<double> values) {
-        base.AddRange(values, result.repeatedDouble_);
+        result.repeatedDouble_.Add(values);
         return this;
       }
       public Builder ClearRepeatedDouble() {
@@ -5060,7 +5060,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedBool(scg::IEnumerable<bool> values) {
-        base.AddRange(values, result.repeatedBool_);
+        result.repeatedBool_.Add(values);
         return this;
       }
       public Builder ClearRepeatedBool() {
@@ -5088,7 +5088,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedString(scg::IEnumerable<string> values) {
-        base.AddRange(values, result.repeatedString_);
+        result.repeatedString_.Add(values);
         return this;
       }
       public Builder ClearRepeatedString() {
@@ -5116,7 +5116,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedBytes(scg::IEnumerable<pb::ByteString> values) {
-        base.AddRange(values, result.repeatedBytes_);
+        result.repeatedBytes_.Add(values);
         return this;
       }
       public Builder ClearRepeatedBytes() {
@@ -5154,7 +5154,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedGroup(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.RepeatedGroup> values) {
-        base.AddRange(values, result.repeatedGroup_);
+        result.repeatedGroup_.Add(values);
         return this;
       }
       public Builder ClearRepeatedGroup() {
@@ -5192,7 +5192,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedNestedMessage(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage> values) {
-        base.AddRange(values, result.repeatedNestedMessage_);
+        result.repeatedNestedMessage_.Add(values);
         return this;
       }
       public Builder ClearRepeatedNestedMessage() {
@@ -5230,7 +5230,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedForeignMessage(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.ForeignMessageLite> values) {
-        base.AddRange(values, result.repeatedForeignMessage_);
+        result.repeatedForeignMessage_.Add(values);
         return this;
       }
       public Builder ClearRepeatedForeignMessage() {
@@ -5268,7 +5268,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedImportMessage(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.ImportMessageLite> values) {
-        base.AddRange(values, result.repeatedImportMessage_);
+        result.repeatedImportMessage_.Add(values);
         return this;
       }
       public Builder ClearRepeatedImportMessage() {
@@ -5294,7 +5294,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedNestedEnum(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedEnum> values) {
-        base.AddRange(values, result.repeatedNestedEnum_);
+        result.repeatedNestedEnum_.Add(values);
         return this;
       }
       public Builder ClearRepeatedNestedEnum() {
@@ -5320,7 +5320,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedForeignEnum(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite> values) {
-        base.AddRange(values, result.repeatedForeignEnum_);
+        result.repeatedForeignEnum_.Add(values);
         return this;
       }
       public Builder ClearRepeatedForeignEnum() {
@@ -5346,7 +5346,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedImportEnum(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.ImportEnumLite> values) {
-        base.AddRange(values, result.repeatedImportEnum_);
+        result.repeatedImportEnum_.Add(values);
         return this;
       }
       public Builder ClearRepeatedImportEnum() {
@@ -5374,7 +5374,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedStringPiece(scg::IEnumerable<string> values) {
-        base.AddRange(values, result.repeatedStringPiece_);
+        result.repeatedStringPiece_.Add(values);
         return this;
       }
       public Builder ClearRepeatedStringPiece() {
@@ -5402,7 +5402,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedCord(scg::IEnumerable<string> values) {
-        base.AddRange(values, result.repeatedCord_);
+        result.repeatedCord_.Add(values);
         return this;
       }
       public Builder ClearRepeatedCord() {
@@ -6632,46 +6632,46 @@ namespace Google.ProtocolBuffers.TestProtos {
       public override Builder MergeFrom(TestPackedTypesLite other) {
         if (other == global::Google.ProtocolBuffers.TestProtos.TestPackedTypesLite.DefaultInstance) return this;
         if (other.packedInt32_.Count != 0) {
-          base.AddRange(other.packedInt32_, result.packedInt32_);
+          result.packedInt32_.Add(other.packedInt32_);
         }
         if (other.packedInt64_.Count != 0) {
-          base.AddRange(other.packedInt64_, result.packedInt64_);
+          result.packedInt64_.Add(other.packedInt64_);
         }
         if (other.packedUint32_.Count != 0) {
-          base.AddRange(other.packedUint32_, result.packedUint32_);
+          result.packedUint32_.Add(other.packedUint32_);
         }
         if (other.packedUint64_.Count != 0) {
-          base.AddRange(other.packedUint64_, result.packedUint64_);
+          result.packedUint64_.Add(other.packedUint64_);
         }
         if (other.packedSint32_.Count != 0) {
-          base.AddRange(other.packedSint32_, result.packedSint32_);
+          result.packedSint32_.Add(other.packedSint32_);
         }
         if (other.packedSint64_.Count != 0) {
-          base.AddRange(other.packedSint64_, result.packedSint64_);
+          result.packedSint64_.Add(other.packedSint64_);
         }
         if (other.packedFixed32_.Count != 0) {
-          base.AddRange(other.packedFixed32_, result.packedFixed32_);
+          result.packedFixed32_.Add(other.packedFixed32_);
         }
         if (other.packedFixed64_.Count != 0) {
-          base.AddRange(other.packedFixed64_, result.packedFixed64_);
+          result.packedFixed64_.Add(other.packedFixed64_);
         }
         if (other.packedSfixed32_.Count != 0) {
-          base.AddRange(other.packedSfixed32_, result.packedSfixed32_);
+          result.packedSfixed32_.Add(other.packedSfixed32_);
         }
         if (other.packedSfixed64_.Count != 0) {
-          base.AddRange(other.packedSfixed64_, result.packedSfixed64_);
+          result.packedSfixed64_.Add(other.packedSfixed64_);
         }
         if (other.packedFloat_.Count != 0) {
-          base.AddRange(other.packedFloat_, result.packedFloat_);
+          result.packedFloat_.Add(other.packedFloat_);
         }
         if (other.packedDouble_.Count != 0) {
-          base.AddRange(other.packedDouble_, result.packedDouble_);
+          result.packedDouble_.Add(other.packedDouble_);
         }
         if (other.packedBool_.Count != 0) {
-          base.AddRange(other.packedBool_, result.packedBool_);
+          result.packedBool_.Add(other.packedBool_);
         }
         if (other.packedEnum_.Count != 0) {
-          base.AddRange(other.packedEnum_, result.packedEnum_);
+          result.packedEnum_.Add(other.packedEnum_);
         }
         return this;
       }
@@ -6800,7 +6800,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangePackedInt32(scg::IEnumerable<int> values) {
-        base.AddRange(values, result.packedInt32_);
+        result.packedInt32_.Add(values);
         return this;
       }
       public Builder ClearPackedInt32() {
@@ -6826,7 +6826,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangePackedInt64(scg::IEnumerable<long> values) {
-        base.AddRange(values, result.packedInt64_);
+        result.packedInt64_.Add(values);
         return this;
       }
       public Builder ClearPackedInt64() {
@@ -6857,7 +6857,7 @@ namespace Google.ProtocolBuffers.TestProtos {
       }
       [global::System.CLSCompliant(false)]
       public Builder AddRangePackedUint32(scg::IEnumerable<uint> values) {
-        base.AddRange(values, result.packedUint32_);
+        result.packedUint32_.Add(values);
         return this;
       }
       public Builder ClearPackedUint32() {
@@ -6888,7 +6888,7 @@ namespace Google.ProtocolBuffers.TestProtos {
       }
       [global::System.CLSCompliant(false)]
       public Builder AddRangePackedUint64(scg::IEnumerable<ulong> values) {
-        base.AddRange(values, result.packedUint64_);
+        result.packedUint64_.Add(values);
         return this;
       }
       public Builder ClearPackedUint64() {
@@ -6914,7 +6914,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangePackedSint32(scg::IEnumerable<int> values) {
-        base.AddRange(values, result.packedSint32_);
+        result.packedSint32_.Add(values);
         return this;
       }
       public Builder ClearPackedSint32() {
@@ -6940,7 +6940,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangePackedSint64(scg::IEnumerable<long> values) {
-        base.AddRange(values, result.packedSint64_);
+        result.packedSint64_.Add(values);
         return this;
       }
       public Builder ClearPackedSint64() {
@@ -6971,7 +6971,7 @@ namespace Google.ProtocolBuffers.TestProtos {
       }
       [global::System.CLSCompliant(false)]
       public Builder AddRangePackedFixed32(scg::IEnumerable<uint> values) {
-        base.AddRange(values, result.packedFixed32_);
+        result.packedFixed32_.Add(values);
         return this;
       }
       public Builder ClearPackedFixed32() {
@@ -7002,7 +7002,7 @@ namespace Google.ProtocolBuffers.TestProtos {
       }
       [global::System.CLSCompliant(false)]
       public Builder AddRangePackedFixed64(scg::IEnumerable<ulong> values) {
-        base.AddRange(values, result.packedFixed64_);
+        result.packedFixed64_.Add(values);
         return this;
       }
       public Builder ClearPackedFixed64() {
@@ -7028,7 +7028,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangePackedSfixed32(scg::IEnumerable<int> values) {
-        base.AddRange(values, result.packedSfixed32_);
+        result.packedSfixed32_.Add(values);
         return this;
       }
       public Builder ClearPackedSfixed32() {
@@ -7054,7 +7054,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangePackedSfixed64(scg::IEnumerable<long> values) {
-        base.AddRange(values, result.packedSfixed64_);
+        result.packedSfixed64_.Add(values);
         return this;
       }
       public Builder ClearPackedSfixed64() {
@@ -7080,7 +7080,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangePackedFloat(scg::IEnumerable<float> values) {
-        base.AddRange(values, result.packedFloat_);
+        result.packedFloat_.Add(values);
         return this;
       }
       public Builder ClearPackedFloat() {
@@ -7106,7 +7106,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangePackedDouble(scg::IEnumerable<double> values) {
-        base.AddRange(values, result.packedDouble_);
+        result.packedDouble_.Add(values);
         return this;
       }
       public Builder ClearPackedDouble() {
@@ -7132,7 +7132,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangePackedBool(scg::IEnumerable<bool> values) {
-        base.AddRange(values, result.packedBool_);
+        result.packedBool_.Add(values);
         return this;
       }
       public Builder ClearPackedBool() {
@@ -7158,7 +7158,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangePackedEnum(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite> values) {
-        base.AddRange(values, result.packedEnum_);
+        result.packedEnum_.Add(values);
         return this;
       }
       public Builder ClearPackedEnum() {
@@ -7731,46 +7731,46 @@ namespace Google.ProtocolBuffers.TestProtos {
       public override Builder MergeFrom(TestUnpackedTypesLite other) {
         if (other == global::Google.ProtocolBuffers.TestProtos.TestUnpackedTypesLite.DefaultInstance) return this;
         if (other.unpackedInt32_.Count != 0) {
-          base.AddRange(other.unpackedInt32_, result.unpackedInt32_);
+          result.unpackedInt32_.Add(other.unpackedInt32_);
         }
         if (other.unpackedInt64_.Count != 0) {
-          base.AddRange(other.unpackedInt64_, result.unpackedInt64_);
+          result.unpackedInt64_.Add(other.unpackedInt64_);
         }
         if (other.unpackedUint32_.Count != 0) {
-          base.AddRange(other.unpackedUint32_, result.unpackedUint32_);
+          result.unpackedUint32_.Add(other.unpackedUint32_);
         }
         if (other.unpackedUint64_.Count != 0) {
-          base.AddRange(other.unpackedUint64_, result.unpackedUint64_);
+          result.unpackedUint64_.Add(other.unpackedUint64_);
         }
         if (other.unpackedSint32_.Count != 0) {
-          base.AddRange(other.unpackedSint32_, result.unpackedSint32_);
+          result.unpackedSint32_.Add(other.unpackedSint32_);
         }
         if (other.unpackedSint64_.Count != 0) {
-          base.AddRange(other.unpackedSint64_, result.unpackedSint64_);
+          result.unpackedSint64_.Add(other.unpackedSint64_);
         }
         if (other.unpackedFixed32_.Count != 0) {
-          base.AddRange(other.unpackedFixed32_, result.unpackedFixed32_);
+          result.unpackedFixed32_.Add(other.unpackedFixed32_);
         }
         if (other.unpackedFixed64_.Count != 0) {
-          base.AddRange(other.unpackedFixed64_, result.unpackedFixed64_);
+          result.unpackedFixed64_.Add(other.unpackedFixed64_);
         }
         if (other.unpackedSfixed32_.Count != 0) {
-          base.AddRange(other.unpackedSfixed32_, result.unpackedSfixed32_);
+          result.unpackedSfixed32_.Add(other.unpackedSfixed32_);
         }
         if (other.unpackedSfixed64_.Count != 0) {
-          base.AddRange(other.unpackedSfixed64_, result.unpackedSfixed64_);
+          result.unpackedSfixed64_.Add(other.unpackedSfixed64_);
         }
         if (other.unpackedFloat_.Count != 0) {
-          base.AddRange(other.unpackedFloat_, result.unpackedFloat_);
+          result.unpackedFloat_.Add(other.unpackedFloat_);
         }
         if (other.unpackedDouble_.Count != 0) {
-          base.AddRange(other.unpackedDouble_, result.unpackedDouble_);
+          result.unpackedDouble_.Add(other.unpackedDouble_);
         }
         if (other.unpackedBool_.Count != 0) {
-          base.AddRange(other.unpackedBool_, result.unpackedBool_);
+          result.unpackedBool_.Add(other.unpackedBool_);
         }
         if (other.unpackedEnum_.Count != 0) {
-          base.AddRange(other.unpackedEnum_, result.unpackedEnum_);
+          result.unpackedEnum_.Add(other.unpackedEnum_);
         }
         return this;
       }
@@ -7899,7 +7899,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeUnpackedInt32(scg::IEnumerable<int> values) {
-        base.AddRange(values, result.unpackedInt32_);
+        result.unpackedInt32_.Add(values);
         return this;
       }
       public Builder ClearUnpackedInt32() {
@@ -7925,7 +7925,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeUnpackedInt64(scg::IEnumerable<long> values) {
-        base.AddRange(values, result.unpackedInt64_);
+        result.unpackedInt64_.Add(values);
         return this;
       }
       public Builder ClearUnpackedInt64() {
@@ -7956,7 +7956,7 @@ namespace Google.ProtocolBuffers.TestProtos {
       }
       [global::System.CLSCompliant(false)]
       public Builder AddRangeUnpackedUint32(scg::IEnumerable<uint> values) {
-        base.AddRange(values, result.unpackedUint32_);
+        result.unpackedUint32_.Add(values);
         return this;
       }
       public Builder ClearUnpackedUint32() {
@@ -7987,7 +7987,7 @@ namespace Google.ProtocolBuffers.TestProtos {
       }
       [global::System.CLSCompliant(false)]
       public Builder AddRangeUnpackedUint64(scg::IEnumerable<ulong> values) {
-        base.AddRange(values, result.unpackedUint64_);
+        result.unpackedUint64_.Add(values);
         return this;
       }
       public Builder ClearUnpackedUint64() {
@@ -8013,7 +8013,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeUnpackedSint32(scg::IEnumerable<int> values) {
-        base.AddRange(values, result.unpackedSint32_);
+        result.unpackedSint32_.Add(values);
         return this;
       }
       public Builder ClearUnpackedSint32() {
@@ -8039,7 +8039,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeUnpackedSint64(scg::IEnumerable<long> values) {
-        base.AddRange(values, result.unpackedSint64_);
+        result.unpackedSint64_.Add(values);
         return this;
       }
       public Builder ClearUnpackedSint64() {
@@ -8070,7 +8070,7 @@ namespace Google.ProtocolBuffers.TestProtos {
       }
       [global::System.CLSCompliant(false)]
       public Builder AddRangeUnpackedFixed32(scg::IEnumerable<uint> values) {
-        base.AddRange(values, result.unpackedFixed32_);
+        result.unpackedFixed32_.Add(values);
         return this;
       }
       public Builder ClearUnpackedFixed32() {
@@ -8101,7 +8101,7 @@ namespace Google.ProtocolBuffers.TestProtos {
       }
       [global::System.CLSCompliant(false)]
       public Builder AddRangeUnpackedFixed64(scg::IEnumerable<ulong> values) {
-        base.AddRange(values, result.unpackedFixed64_);
+        result.unpackedFixed64_.Add(values);
         return this;
       }
       public Builder ClearUnpackedFixed64() {
@@ -8127,7 +8127,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeUnpackedSfixed32(scg::IEnumerable<int> values) {
-        base.AddRange(values, result.unpackedSfixed32_);
+        result.unpackedSfixed32_.Add(values);
         return this;
       }
       public Builder ClearUnpackedSfixed32() {
@@ -8153,7 +8153,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeUnpackedSfixed64(scg::IEnumerable<long> values) {
-        base.AddRange(values, result.unpackedSfixed64_);
+        result.unpackedSfixed64_.Add(values);
         return this;
       }
       public Builder ClearUnpackedSfixed64() {
@@ -8179,7 +8179,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeUnpackedFloat(scg::IEnumerable<float> values) {
-        base.AddRange(values, result.unpackedFloat_);
+        result.unpackedFloat_.Add(values);
         return this;
       }
       public Builder ClearUnpackedFloat() {
@@ -8205,7 +8205,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeUnpackedDouble(scg::IEnumerable<double> values) {
-        base.AddRange(values, result.unpackedDouble_);
+        result.unpackedDouble_.Add(values);
         return this;
       }
       public Builder ClearUnpackedDouble() {
@@ -8231,7 +8231,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeUnpackedBool(scg::IEnumerable<bool> values) {
-        base.AddRange(values, result.unpackedBool_);
+        result.unpackedBool_.Add(values);
         return this;
       }
       public Builder ClearUnpackedBool() {
@@ -8257,7 +8257,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeUnpackedEnum(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite> values) {
-        base.AddRange(values, result.unpackedEnum_);
+        result.unpackedEnum_.Add(values);
         return this;
       }
       public Builder ClearUnpackedEnum() {

+ 138 - 138
src/ProtocolBuffersLite.Test/TestProtos/UnitTestProtoFile.cs

@@ -3333,76 +3333,76 @@ namespace Google.ProtocolBuffers.TestProtos {
           OptionalCord = other.OptionalCord;
         }
         if (other.repeatedInt32_.Count != 0) {
-          base.AddRange(other.repeatedInt32_, result.repeatedInt32_);
+          result.repeatedInt32_.Add(other.repeatedInt32_);
         }
         if (other.repeatedInt64_.Count != 0) {
-          base.AddRange(other.repeatedInt64_, result.repeatedInt64_);
+          result.repeatedInt64_.Add(other.repeatedInt64_);
         }
         if (other.repeatedUint32_.Count != 0) {
-          base.AddRange(other.repeatedUint32_, result.repeatedUint32_);
+          result.repeatedUint32_.Add(other.repeatedUint32_);
         }
         if (other.repeatedUint64_.Count != 0) {
-          base.AddRange(other.repeatedUint64_, result.repeatedUint64_);
+          result.repeatedUint64_.Add(other.repeatedUint64_);
         }
         if (other.repeatedSint32_.Count != 0) {
-          base.AddRange(other.repeatedSint32_, result.repeatedSint32_);
+          result.repeatedSint32_.Add(other.repeatedSint32_);
         }
         if (other.repeatedSint64_.Count != 0) {
-          base.AddRange(other.repeatedSint64_, result.repeatedSint64_);
+          result.repeatedSint64_.Add(other.repeatedSint64_);
         }
         if (other.repeatedFixed32_.Count != 0) {
-          base.AddRange(other.repeatedFixed32_, result.repeatedFixed32_);
+          result.repeatedFixed32_.Add(other.repeatedFixed32_);
         }
         if (other.repeatedFixed64_.Count != 0) {
-          base.AddRange(other.repeatedFixed64_, result.repeatedFixed64_);
+          result.repeatedFixed64_.Add(other.repeatedFixed64_);
         }
         if (other.repeatedSfixed32_.Count != 0) {
-          base.AddRange(other.repeatedSfixed32_, result.repeatedSfixed32_);
+          result.repeatedSfixed32_.Add(other.repeatedSfixed32_);
         }
         if (other.repeatedSfixed64_.Count != 0) {
-          base.AddRange(other.repeatedSfixed64_, result.repeatedSfixed64_);
+          result.repeatedSfixed64_.Add(other.repeatedSfixed64_);
         }
         if (other.repeatedFloat_.Count != 0) {
-          base.AddRange(other.repeatedFloat_, result.repeatedFloat_);
+          result.repeatedFloat_.Add(other.repeatedFloat_);
         }
         if (other.repeatedDouble_.Count != 0) {
-          base.AddRange(other.repeatedDouble_, result.repeatedDouble_);
+          result.repeatedDouble_.Add(other.repeatedDouble_);
         }
         if (other.repeatedBool_.Count != 0) {
-          base.AddRange(other.repeatedBool_, result.repeatedBool_);
+          result.repeatedBool_.Add(other.repeatedBool_);
         }
         if (other.repeatedString_.Count != 0) {
-          base.AddRange(other.repeatedString_, result.repeatedString_);
+          result.repeatedString_.Add(other.repeatedString_);
         }
         if (other.repeatedBytes_.Count != 0) {
-          base.AddRange(other.repeatedBytes_, result.repeatedBytes_);
+          result.repeatedBytes_.Add(other.repeatedBytes_);
         }
         if (other.repeatedGroup_.Count != 0) {
-          base.AddRange(other.repeatedGroup_, result.repeatedGroup_);
+          result.repeatedGroup_.Add(other.repeatedGroup_);
         }
         if (other.repeatedNestedMessage_.Count != 0) {
-          base.AddRange(other.repeatedNestedMessage_, result.repeatedNestedMessage_);
+          result.repeatedNestedMessage_.Add(other.repeatedNestedMessage_);
         }
         if (other.repeatedForeignMessage_.Count != 0) {
-          base.AddRange(other.repeatedForeignMessage_, result.repeatedForeignMessage_);
+          result.repeatedForeignMessage_.Add(other.repeatedForeignMessage_);
         }
         if (other.repeatedImportMessage_.Count != 0) {
-          base.AddRange(other.repeatedImportMessage_, result.repeatedImportMessage_);
+          result.repeatedImportMessage_.Add(other.repeatedImportMessage_);
         }
         if (other.repeatedNestedEnum_.Count != 0) {
-          base.AddRange(other.repeatedNestedEnum_, result.repeatedNestedEnum_);
+          result.repeatedNestedEnum_.Add(other.repeatedNestedEnum_);
         }
         if (other.repeatedForeignEnum_.Count != 0) {
-          base.AddRange(other.repeatedForeignEnum_, result.repeatedForeignEnum_);
+          result.repeatedForeignEnum_.Add(other.repeatedForeignEnum_);
         }
         if (other.repeatedImportEnum_.Count != 0) {
-          base.AddRange(other.repeatedImportEnum_, result.repeatedImportEnum_);
+          result.repeatedImportEnum_.Add(other.repeatedImportEnum_);
         }
         if (other.repeatedStringPiece_.Count != 0) {
-          base.AddRange(other.repeatedStringPiece_, result.repeatedStringPiece_);
+          result.repeatedStringPiece_.Add(other.repeatedStringPiece_);
         }
         if (other.repeatedCord_.Count != 0) {
-          base.AddRange(other.repeatedCord_, result.repeatedCord_);
+          result.repeatedCord_.Add(other.repeatedCord_);
         }
         if (other.HasDefaultInt32) {
           DefaultInt32 = other.DefaultInt32;
@@ -4433,7 +4433,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedInt32(scg::IEnumerable<int> values) {
-        base.AddRange(values, result.repeatedInt32_);
+        result.repeatedInt32_.Add(values);
         return this;
       }
       public Builder ClearRepeatedInt32() {
@@ -4459,7 +4459,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedInt64(scg::IEnumerable<long> values) {
-        base.AddRange(values, result.repeatedInt64_);
+        result.repeatedInt64_.Add(values);
         return this;
       }
       public Builder ClearRepeatedInt64() {
@@ -4490,7 +4490,7 @@ namespace Google.ProtocolBuffers.TestProtos {
       }
       [global::System.CLSCompliant(false)]
       public Builder AddRangeRepeatedUint32(scg::IEnumerable<uint> values) {
-        base.AddRange(values, result.repeatedUint32_);
+        result.repeatedUint32_.Add(values);
         return this;
       }
       public Builder ClearRepeatedUint32() {
@@ -4521,7 +4521,7 @@ namespace Google.ProtocolBuffers.TestProtos {
       }
       [global::System.CLSCompliant(false)]
       public Builder AddRangeRepeatedUint64(scg::IEnumerable<ulong> values) {
-        base.AddRange(values, result.repeatedUint64_);
+        result.repeatedUint64_.Add(values);
         return this;
       }
       public Builder ClearRepeatedUint64() {
@@ -4547,7 +4547,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedSint32(scg::IEnumerable<int> values) {
-        base.AddRange(values, result.repeatedSint32_);
+        result.repeatedSint32_.Add(values);
         return this;
       }
       public Builder ClearRepeatedSint32() {
@@ -4573,7 +4573,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedSint64(scg::IEnumerable<long> values) {
-        base.AddRange(values, result.repeatedSint64_);
+        result.repeatedSint64_.Add(values);
         return this;
       }
       public Builder ClearRepeatedSint64() {
@@ -4604,7 +4604,7 @@ namespace Google.ProtocolBuffers.TestProtos {
       }
       [global::System.CLSCompliant(false)]
       public Builder AddRangeRepeatedFixed32(scg::IEnumerable<uint> values) {
-        base.AddRange(values, result.repeatedFixed32_);
+        result.repeatedFixed32_.Add(values);
         return this;
       }
       public Builder ClearRepeatedFixed32() {
@@ -4635,7 +4635,7 @@ namespace Google.ProtocolBuffers.TestProtos {
       }
       [global::System.CLSCompliant(false)]
       public Builder AddRangeRepeatedFixed64(scg::IEnumerable<ulong> values) {
-        base.AddRange(values, result.repeatedFixed64_);
+        result.repeatedFixed64_.Add(values);
         return this;
       }
       public Builder ClearRepeatedFixed64() {
@@ -4661,7 +4661,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedSfixed32(scg::IEnumerable<int> values) {
-        base.AddRange(values, result.repeatedSfixed32_);
+        result.repeatedSfixed32_.Add(values);
         return this;
       }
       public Builder ClearRepeatedSfixed32() {
@@ -4687,7 +4687,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedSfixed64(scg::IEnumerable<long> values) {
-        base.AddRange(values, result.repeatedSfixed64_);
+        result.repeatedSfixed64_.Add(values);
         return this;
       }
       public Builder ClearRepeatedSfixed64() {
@@ -4713,7 +4713,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedFloat(scg::IEnumerable<float> values) {
-        base.AddRange(values, result.repeatedFloat_);
+        result.repeatedFloat_.Add(values);
         return this;
       }
       public Builder ClearRepeatedFloat() {
@@ -4739,7 +4739,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedDouble(scg::IEnumerable<double> values) {
-        base.AddRange(values, result.repeatedDouble_);
+        result.repeatedDouble_.Add(values);
         return this;
       }
       public Builder ClearRepeatedDouble() {
@@ -4765,7 +4765,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedBool(scg::IEnumerable<bool> values) {
-        base.AddRange(values, result.repeatedBool_);
+        result.repeatedBool_.Add(values);
         return this;
       }
       public Builder ClearRepeatedBool() {
@@ -4793,7 +4793,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedString(scg::IEnumerable<string> values) {
-        base.AddRange(values, result.repeatedString_);
+        result.repeatedString_.Add(values);
         return this;
       }
       public Builder ClearRepeatedString() {
@@ -4821,7 +4821,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedBytes(scg::IEnumerable<pb::ByteString> values) {
-        base.AddRange(values, result.repeatedBytes_);
+        result.repeatedBytes_.Add(values);
         return this;
       }
       public Builder ClearRepeatedBytes() {
@@ -4859,7 +4859,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedGroup(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.RepeatedGroup> values) {
-        base.AddRange(values, result.repeatedGroup_);
+        result.repeatedGroup_.Add(values);
         return this;
       }
       public Builder ClearRepeatedGroup() {
@@ -4897,7 +4897,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedNestedMessage(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage> values) {
-        base.AddRange(values, result.repeatedNestedMessage_);
+        result.repeatedNestedMessage_.Add(values);
         return this;
       }
       public Builder ClearRepeatedNestedMessage() {
@@ -4935,7 +4935,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedForeignMessage(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.ForeignMessage> values) {
-        base.AddRange(values, result.repeatedForeignMessage_);
+        result.repeatedForeignMessage_.Add(values);
         return this;
       }
       public Builder ClearRepeatedForeignMessage() {
@@ -4973,7 +4973,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedImportMessage(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.ImportMessage> values) {
-        base.AddRange(values, result.repeatedImportMessage_);
+        result.repeatedImportMessage_.Add(values);
         return this;
       }
       public Builder ClearRepeatedImportMessage() {
@@ -4999,7 +4999,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedNestedEnum(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedEnum> values) {
-        base.AddRange(values, result.repeatedNestedEnum_);
+        result.repeatedNestedEnum_.Add(values);
         return this;
       }
       public Builder ClearRepeatedNestedEnum() {
@@ -5025,7 +5025,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedForeignEnum(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.ForeignEnum> values) {
-        base.AddRange(values, result.repeatedForeignEnum_);
+        result.repeatedForeignEnum_.Add(values);
         return this;
       }
       public Builder ClearRepeatedForeignEnum() {
@@ -5051,7 +5051,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedImportEnum(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.ImportEnum> values) {
-        base.AddRange(values, result.repeatedImportEnum_);
+        result.repeatedImportEnum_.Add(values);
         return this;
       }
       public Builder ClearRepeatedImportEnum() {
@@ -5079,7 +5079,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedStringPiece(scg::IEnumerable<string> values) {
-        base.AddRange(values, result.repeatedStringPiece_);
+        result.repeatedStringPiece_.Add(values);
         return this;
       }
       public Builder ClearRepeatedStringPiece() {
@@ -5107,7 +5107,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedCord(scg::IEnumerable<string> values) {
-        base.AddRange(values, result.repeatedCord_);
+        result.repeatedCord_.Add(values);
         return this;
       }
       public Builder ClearRepeatedCord() {
@@ -8611,7 +8611,7 @@ namespace Google.ProtocolBuffers.TestProtos {
           MergeOptionalMessage(other.OptionalMessage);
         }
         if (other.repeatedMessage_.Count != 0) {
-          base.AddRange(other.repeatedMessage_, result.repeatedMessage_);
+          result.repeatedMessage_.Add(other.repeatedMessage_);
         }
         if (other.HasDummy) {
           Dummy = other.Dummy;
@@ -8751,7 +8751,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedMessage(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.TestRequired> values) {
-        base.AddRange(values, result.repeatedMessage_);
+        result.repeatedMessage_.Add(values);
         return this;
       }
       public Builder ClearRepeatedMessage() {
@@ -11868,10 +11868,10 @@ namespace Google.ProtocolBuffers.TestProtos {
           public override Builder MergeFrom(NestedMessage other) {
             if (other == global::Google.ProtocolBuffers.TestProtos.TestNestedMessageHasBits.Types.NestedMessage.DefaultInstance) return this;
             if (other.nestedmessageRepeatedInt32_.Count != 0) {
-              base.AddRange(other.nestedmessageRepeatedInt32_, result.nestedmessageRepeatedInt32_);
+              result.nestedmessageRepeatedInt32_.Add(other.nestedmessageRepeatedInt32_);
             }
             if (other.nestedmessageRepeatedForeignmessage_.Count != 0) {
-              base.AddRange(other.nestedmessageRepeatedForeignmessage_, result.nestedmessageRepeatedForeignmessage_);
+              result.nestedmessageRepeatedForeignmessage_.Add(other.nestedmessageRepeatedForeignmessage_);
             }
             this.MergeUnknownFields(other.UnknownFields);
             return this;
@@ -11952,7 +11952,7 @@ namespace Google.ProtocolBuffers.TestProtos {
             return this;
           }
           public Builder AddRangeNestedmessageRepeatedInt32(scg::IEnumerable<int> values) {
-            base.AddRange(values, result.nestedmessageRepeatedInt32_);
+            result.nestedmessageRepeatedInt32_.Add(values);
             return this;
           }
           public Builder ClearNestedmessageRepeatedInt32() {
@@ -11990,7 +11990,7 @@ namespace Google.ProtocolBuffers.TestProtos {
             return this;
           }
           public Builder AddRangeNestedmessageRepeatedForeignmessage(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.ForeignMessage> values) {
-            base.AddRange(values, result.nestedmessageRepeatedForeignmessage_);
+            result.nestedmessageRepeatedForeignmessage_.Add(values);
             return this;
           }
           public Builder ClearNestedmessageRepeatedForeignmessage() {
@@ -12638,22 +12638,22 @@ namespace Google.ProtocolBuffers.TestProtos {
           CordField = other.CordField;
         }
         if (other.repeatedPrimitiveField_.Count != 0) {
-          base.AddRange(other.repeatedPrimitiveField_, result.repeatedPrimitiveField_);
+          result.repeatedPrimitiveField_.Add(other.repeatedPrimitiveField_);
         }
         if (other.repeatedStringField_.Count != 0) {
-          base.AddRange(other.repeatedStringField_, result.repeatedStringField_);
+          result.repeatedStringField_.Add(other.repeatedStringField_);
         }
         if (other.repeatedEnumField_.Count != 0) {
-          base.AddRange(other.repeatedEnumField_, result.repeatedEnumField_);
+          result.repeatedEnumField_.Add(other.repeatedEnumField_);
         }
         if (other.repeatedMessageField_.Count != 0) {
-          base.AddRange(other.repeatedMessageField_, result.repeatedMessageField_);
+          result.repeatedMessageField_.Add(other.repeatedMessageField_);
         }
         if (other.repeatedStringPieceField_.Count != 0) {
-          base.AddRange(other.repeatedStringPieceField_, result.repeatedStringPieceField_);
+          result.repeatedStringPieceField_.Add(other.repeatedStringPieceField_);
         }
         if (other.repeatedCordField_.Count != 0) {
-          base.AddRange(other.repeatedCordField_, result.repeatedCordField_);
+          result.repeatedCordField_.Add(other.repeatedCordField_);
         }
         this.MergeUnknownFields(other.UnknownFields);
         return this;
@@ -12926,7 +12926,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedPrimitiveField(scg::IEnumerable<int> values) {
-        base.AddRange(values, result.repeatedPrimitiveField_);
+        result.repeatedPrimitiveField_.Add(values);
         return this;
       }
       public Builder ClearRepeatedPrimitiveField() {
@@ -12954,7 +12954,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedStringField(scg::IEnumerable<string> values) {
-        base.AddRange(values, result.repeatedStringField_);
+        result.repeatedStringField_.Add(values);
         return this;
       }
       public Builder ClearRepeatedStringField() {
@@ -12980,7 +12980,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedEnumField(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.ForeignEnum> values) {
-        base.AddRange(values, result.repeatedEnumField_);
+        result.repeatedEnumField_.Add(values);
         return this;
       }
       public Builder ClearRepeatedEnumField() {
@@ -13018,7 +13018,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedMessageField(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.ForeignMessage> values) {
-        base.AddRange(values, result.repeatedMessageField_);
+        result.repeatedMessageField_.Add(values);
         return this;
       }
       public Builder ClearRepeatedMessageField() {
@@ -13046,7 +13046,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedStringPieceField(scg::IEnumerable<string> values) {
-        base.AddRange(values, result.repeatedStringPieceField_);
+        result.repeatedStringPieceField_.Add(values);
         return this;
       }
       public Builder ClearRepeatedStringPieceField() {
@@ -13074,7 +13074,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedCordField(scg::IEnumerable<string> values) {
-        base.AddRange(values, result.repeatedCordField_);
+        result.repeatedCordField_.Add(values);
         return this;
       }
       public Builder ClearRepeatedCordField() {
@@ -15409,46 +15409,46 @@ namespace Google.ProtocolBuffers.TestProtos {
       public override Builder MergeFrom(TestPackedTypes other) {
         if (other == global::Google.ProtocolBuffers.TestProtos.TestPackedTypes.DefaultInstance) return this;
         if (other.packedInt32_.Count != 0) {
-          base.AddRange(other.packedInt32_, result.packedInt32_);
+          result.packedInt32_.Add(other.packedInt32_);
         }
         if (other.packedInt64_.Count != 0) {
-          base.AddRange(other.packedInt64_, result.packedInt64_);
+          result.packedInt64_.Add(other.packedInt64_);
         }
         if (other.packedUint32_.Count != 0) {
-          base.AddRange(other.packedUint32_, result.packedUint32_);
+          result.packedUint32_.Add(other.packedUint32_);
         }
         if (other.packedUint64_.Count != 0) {
-          base.AddRange(other.packedUint64_, result.packedUint64_);
+          result.packedUint64_.Add(other.packedUint64_);
         }
         if (other.packedSint32_.Count != 0) {
-          base.AddRange(other.packedSint32_, result.packedSint32_);
+          result.packedSint32_.Add(other.packedSint32_);
         }
         if (other.packedSint64_.Count != 0) {
-          base.AddRange(other.packedSint64_, result.packedSint64_);
+          result.packedSint64_.Add(other.packedSint64_);
         }
         if (other.packedFixed32_.Count != 0) {
-          base.AddRange(other.packedFixed32_, result.packedFixed32_);
+          result.packedFixed32_.Add(other.packedFixed32_);
         }
         if (other.packedFixed64_.Count != 0) {
-          base.AddRange(other.packedFixed64_, result.packedFixed64_);
+          result.packedFixed64_.Add(other.packedFixed64_);
         }
         if (other.packedSfixed32_.Count != 0) {
-          base.AddRange(other.packedSfixed32_, result.packedSfixed32_);
+          result.packedSfixed32_.Add(other.packedSfixed32_);
         }
         if (other.packedSfixed64_.Count != 0) {
-          base.AddRange(other.packedSfixed64_, result.packedSfixed64_);
+          result.packedSfixed64_.Add(other.packedSfixed64_);
         }
         if (other.packedFloat_.Count != 0) {
-          base.AddRange(other.packedFloat_, result.packedFloat_);
+          result.packedFloat_.Add(other.packedFloat_);
         }
         if (other.packedDouble_.Count != 0) {
-          base.AddRange(other.packedDouble_, result.packedDouble_);
+          result.packedDouble_.Add(other.packedDouble_);
         }
         if (other.packedBool_.Count != 0) {
-          base.AddRange(other.packedBool_, result.packedBool_);
+          result.packedBool_.Add(other.packedBool_);
         }
         if (other.packedEnum_.Count != 0) {
-          base.AddRange(other.packedEnum_, result.packedEnum_);
+          result.packedEnum_.Add(other.packedEnum_);
         }
         this.MergeUnknownFields(other.UnknownFields);
         return this;
@@ -15599,7 +15599,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangePackedInt32(scg::IEnumerable<int> values) {
-        base.AddRange(values, result.packedInt32_);
+        result.packedInt32_.Add(values);
         return this;
       }
       public Builder ClearPackedInt32() {
@@ -15625,7 +15625,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangePackedInt64(scg::IEnumerable<long> values) {
-        base.AddRange(values, result.packedInt64_);
+        result.packedInt64_.Add(values);
         return this;
       }
       public Builder ClearPackedInt64() {
@@ -15656,7 +15656,7 @@ namespace Google.ProtocolBuffers.TestProtos {
       }
       [global::System.CLSCompliant(false)]
       public Builder AddRangePackedUint32(scg::IEnumerable<uint> values) {
-        base.AddRange(values, result.packedUint32_);
+        result.packedUint32_.Add(values);
         return this;
       }
       public Builder ClearPackedUint32() {
@@ -15687,7 +15687,7 @@ namespace Google.ProtocolBuffers.TestProtos {
       }
       [global::System.CLSCompliant(false)]
       public Builder AddRangePackedUint64(scg::IEnumerable<ulong> values) {
-        base.AddRange(values, result.packedUint64_);
+        result.packedUint64_.Add(values);
         return this;
       }
       public Builder ClearPackedUint64() {
@@ -15713,7 +15713,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangePackedSint32(scg::IEnumerable<int> values) {
-        base.AddRange(values, result.packedSint32_);
+        result.packedSint32_.Add(values);
         return this;
       }
       public Builder ClearPackedSint32() {
@@ -15739,7 +15739,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangePackedSint64(scg::IEnumerable<long> values) {
-        base.AddRange(values, result.packedSint64_);
+        result.packedSint64_.Add(values);
         return this;
       }
       public Builder ClearPackedSint64() {
@@ -15770,7 +15770,7 @@ namespace Google.ProtocolBuffers.TestProtos {
       }
       [global::System.CLSCompliant(false)]
       public Builder AddRangePackedFixed32(scg::IEnumerable<uint> values) {
-        base.AddRange(values, result.packedFixed32_);
+        result.packedFixed32_.Add(values);
         return this;
       }
       public Builder ClearPackedFixed32() {
@@ -15801,7 +15801,7 @@ namespace Google.ProtocolBuffers.TestProtos {
       }
       [global::System.CLSCompliant(false)]
       public Builder AddRangePackedFixed64(scg::IEnumerable<ulong> values) {
-        base.AddRange(values, result.packedFixed64_);
+        result.packedFixed64_.Add(values);
         return this;
       }
       public Builder ClearPackedFixed64() {
@@ -15827,7 +15827,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangePackedSfixed32(scg::IEnumerable<int> values) {
-        base.AddRange(values, result.packedSfixed32_);
+        result.packedSfixed32_.Add(values);
         return this;
       }
       public Builder ClearPackedSfixed32() {
@@ -15853,7 +15853,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangePackedSfixed64(scg::IEnumerable<long> values) {
-        base.AddRange(values, result.packedSfixed64_);
+        result.packedSfixed64_.Add(values);
         return this;
       }
       public Builder ClearPackedSfixed64() {
@@ -15879,7 +15879,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangePackedFloat(scg::IEnumerable<float> values) {
-        base.AddRange(values, result.packedFloat_);
+        result.packedFloat_.Add(values);
         return this;
       }
       public Builder ClearPackedFloat() {
@@ -15905,7 +15905,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangePackedDouble(scg::IEnumerable<double> values) {
-        base.AddRange(values, result.packedDouble_);
+        result.packedDouble_.Add(values);
         return this;
       }
       public Builder ClearPackedDouble() {
@@ -15931,7 +15931,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangePackedBool(scg::IEnumerable<bool> values) {
-        base.AddRange(values, result.packedBool_);
+        result.packedBool_.Add(values);
         return this;
       }
       public Builder ClearPackedBool() {
@@ -15957,7 +15957,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangePackedEnum(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.ForeignEnum> values) {
-        base.AddRange(values, result.packedEnum_);
+        result.packedEnum_.Add(values);
         return this;
       }
       public Builder ClearPackedEnum() {
@@ -16444,46 +16444,46 @@ namespace Google.ProtocolBuffers.TestProtos {
       public override Builder MergeFrom(TestUnpackedTypes other) {
         if (other == global::Google.ProtocolBuffers.TestProtos.TestUnpackedTypes.DefaultInstance) return this;
         if (other.unpackedInt32_.Count != 0) {
-          base.AddRange(other.unpackedInt32_, result.unpackedInt32_);
+          result.unpackedInt32_.Add(other.unpackedInt32_);
         }
         if (other.unpackedInt64_.Count != 0) {
-          base.AddRange(other.unpackedInt64_, result.unpackedInt64_);
+          result.unpackedInt64_.Add(other.unpackedInt64_);
         }
         if (other.unpackedUint32_.Count != 0) {
-          base.AddRange(other.unpackedUint32_, result.unpackedUint32_);
+          result.unpackedUint32_.Add(other.unpackedUint32_);
         }
         if (other.unpackedUint64_.Count != 0) {
-          base.AddRange(other.unpackedUint64_, result.unpackedUint64_);
+          result.unpackedUint64_.Add(other.unpackedUint64_);
         }
         if (other.unpackedSint32_.Count != 0) {
-          base.AddRange(other.unpackedSint32_, result.unpackedSint32_);
+          result.unpackedSint32_.Add(other.unpackedSint32_);
         }
         if (other.unpackedSint64_.Count != 0) {
-          base.AddRange(other.unpackedSint64_, result.unpackedSint64_);
+          result.unpackedSint64_.Add(other.unpackedSint64_);
         }
         if (other.unpackedFixed32_.Count != 0) {
-          base.AddRange(other.unpackedFixed32_, result.unpackedFixed32_);
+          result.unpackedFixed32_.Add(other.unpackedFixed32_);
         }
         if (other.unpackedFixed64_.Count != 0) {
-          base.AddRange(other.unpackedFixed64_, result.unpackedFixed64_);
+          result.unpackedFixed64_.Add(other.unpackedFixed64_);
         }
         if (other.unpackedSfixed32_.Count != 0) {
-          base.AddRange(other.unpackedSfixed32_, result.unpackedSfixed32_);
+          result.unpackedSfixed32_.Add(other.unpackedSfixed32_);
         }
         if (other.unpackedSfixed64_.Count != 0) {
-          base.AddRange(other.unpackedSfixed64_, result.unpackedSfixed64_);
+          result.unpackedSfixed64_.Add(other.unpackedSfixed64_);
         }
         if (other.unpackedFloat_.Count != 0) {
-          base.AddRange(other.unpackedFloat_, result.unpackedFloat_);
+          result.unpackedFloat_.Add(other.unpackedFloat_);
         }
         if (other.unpackedDouble_.Count != 0) {
-          base.AddRange(other.unpackedDouble_, result.unpackedDouble_);
+          result.unpackedDouble_.Add(other.unpackedDouble_);
         }
         if (other.unpackedBool_.Count != 0) {
-          base.AddRange(other.unpackedBool_, result.unpackedBool_);
+          result.unpackedBool_.Add(other.unpackedBool_);
         }
         if (other.unpackedEnum_.Count != 0) {
-          base.AddRange(other.unpackedEnum_, result.unpackedEnum_);
+          result.unpackedEnum_.Add(other.unpackedEnum_);
         }
         this.MergeUnknownFields(other.UnknownFields);
         return this;
@@ -16634,7 +16634,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeUnpackedInt32(scg::IEnumerable<int> values) {
-        base.AddRange(values, result.unpackedInt32_);
+        result.unpackedInt32_.Add(values);
         return this;
       }
       public Builder ClearUnpackedInt32() {
@@ -16660,7 +16660,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeUnpackedInt64(scg::IEnumerable<long> values) {
-        base.AddRange(values, result.unpackedInt64_);
+        result.unpackedInt64_.Add(values);
         return this;
       }
       public Builder ClearUnpackedInt64() {
@@ -16691,7 +16691,7 @@ namespace Google.ProtocolBuffers.TestProtos {
       }
       [global::System.CLSCompliant(false)]
       public Builder AddRangeUnpackedUint32(scg::IEnumerable<uint> values) {
-        base.AddRange(values, result.unpackedUint32_);
+        result.unpackedUint32_.Add(values);
         return this;
       }
       public Builder ClearUnpackedUint32() {
@@ -16722,7 +16722,7 @@ namespace Google.ProtocolBuffers.TestProtos {
       }
       [global::System.CLSCompliant(false)]
       public Builder AddRangeUnpackedUint64(scg::IEnumerable<ulong> values) {
-        base.AddRange(values, result.unpackedUint64_);
+        result.unpackedUint64_.Add(values);
         return this;
       }
       public Builder ClearUnpackedUint64() {
@@ -16748,7 +16748,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeUnpackedSint32(scg::IEnumerable<int> values) {
-        base.AddRange(values, result.unpackedSint32_);
+        result.unpackedSint32_.Add(values);
         return this;
       }
       public Builder ClearUnpackedSint32() {
@@ -16774,7 +16774,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeUnpackedSint64(scg::IEnumerable<long> values) {
-        base.AddRange(values, result.unpackedSint64_);
+        result.unpackedSint64_.Add(values);
         return this;
       }
       public Builder ClearUnpackedSint64() {
@@ -16805,7 +16805,7 @@ namespace Google.ProtocolBuffers.TestProtos {
       }
       [global::System.CLSCompliant(false)]
       public Builder AddRangeUnpackedFixed32(scg::IEnumerable<uint> values) {
-        base.AddRange(values, result.unpackedFixed32_);
+        result.unpackedFixed32_.Add(values);
         return this;
       }
       public Builder ClearUnpackedFixed32() {
@@ -16836,7 +16836,7 @@ namespace Google.ProtocolBuffers.TestProtos {
       }
       [global::System.CLSCompliant(false)]
       public Builder AddRangeUnpackedFixed64(scg::IEnumerable<ulong> values) {
-        base.AddRange(values, result.unpackedFixed64_);
+        result.unpackedFixed64_.Add(values);
         return this;
       }
       public Builder ClearUnpackedFixed64() {
@@ -16862,7 +16862,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeUnpackedSfixed32(scg::IEnumerable<int> values) {
-        base.AddRange(values, result.unpackedSfixed32_);
+        result.unpackedSfixed32_.Add(values);
         return this;
       }
       public Builder ClearUnpackedSfixed32() {
@@ -16888,7 +16888,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeUnpackedSfixed64(scg::IEnumerable<long> values) {
-        base.AddRange(values, result.unpackedSfixed64_);
+        result.unpackedSfixed64_.Add(values);
         return this;
       }
       public Builder ClearUnpackedSfixed64() {
@@ -16914,7 +16914,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeUnpackedFloat(scg::IEnumerable<float> values) {
-        base.AddRange(values, result.unpackedFloat_);
+        result.unpackedFloat_.Add(values);
         return this;
       }
       public Builder ClearUnpackedFloat() {
@@ -16940,7 +16940,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeUnpackedDouble(scg::IEnumerable<double> values) {
-        base.AddRange(values, result.unpackedDouble_);
+        result.unpackedDouble_.Add(values);
         return this;
       }
       public Builder ClearUnpackedDouble() {
@@ -16966,7 +16966,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeUnpackedBool(scg::IEnumerable<bool> values) {
-        base.AddRange(values, result.unpackedBool_);
+        result.unpackedBool_.Add(values);
         return this;
       }
       public Builder ClearUnpackedBool() {
@@ -16992,7 +16992,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeUnpackedEnum(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.ForeignEnum> values) {
-        base.AddRange(values, result.unpackedEnum_);
+        result.unpackedEnum_.Add(values);
         return this;
       }
       public Builder ClearUnpackedEnum() {
@@ -17956,10 +17956,10 @@ namespace Google.ProtocolBuffers.TestProtos {
           MergeDynamicMessageExtension(other.DynamicMessageExtension);
         }
         if (other.repeatedExtension_.Count != 0) {
-          base.AddRange(other.repeatedExtension_, result.repeatedExtension_);
+          result.repeatedExtension_.Add(other.repeatedExtension_);
         }
         if (other.packedExtension_.Count != 0) {
-          base.AddRange(other.packedExtension_, result.packedExtension_);
+          result.packedExtension_.Add(other.packedExtension_);
         }
         this.MergeUnknownFields(other.UnknownFields);
         return this;
@@ -18216,7 +18216,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedExtension(scg::IEnumerable<string> values) {
-        base.AddRange(values, result.repeatedExtension_);
+        result.repeatedExtension_.Add(values);
         return this;
       }
       public Builder ClearRepeatedExtension() {
@@ -18242,7 +18242,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangePackedExtension(scg::IEnumerable<int> values) {
-        base.AddRange(values, result.packedExtension_);
+        result.packedExtension_.Add(values);
         return this;
       }
       public Builder ClearPackedExtension() {
@@ -18541,22 +18541,22 @@ namespace Google.ProtocolBuffers.TestProtos {
       public override Builder MergeFrom(TestRepeatedScalarDifferentTagSizes other) {
         if (other == global::Google.ProtocolBuffers.TestProtos.TestRepeatedScalarDifferentTagSizes.DefaultInstance) return this;
         if (other.repeatedFixed32_.Count != 0) {
-          base.AddRange(other.repeatedFixed32_, result.repeatedFixed32_);
+          result.repeatedFixed32_.Add(other.repeatedFixed32_);
         }
         if (other.repeatedInt32_.Count != 0) {
-          base.AddRange(other.repeatedInt32_, result.repeatedInt32_);
+          result.repeatedInt32_.Add(other.repeatedInt32_);
         }
         if (other.repeatedFixed64_.Count != 0) {
-          base.AddRange(other.repeatedFixed64_, result.repeatedFixed64_);
+          result.repeatedFixed64_.Add(other.repeatedFixed64_);
         }
         if (other.repeatedInt64_.Count != 0) {
-          base.AddRange(other.repeatedInt64_, result.repeatedInt64_);
+          result.repeatedInt64_.Add(other.repeatedInt64_);
         }
         if (other.repeatedFloat_.Count != 0) {
-          base.AddRange(other.repeatedFloat_, result.repeatedFloat_);
+          result.repeatedFloat_.Add(other.repeatedFloat_);
         }
         if (other.repeatedUint64_.Count != 0) {
-          base.AddRange(other.repeatedUint64_, result.repeatedUint64_);
+          result.repeatedUint64_.Add(other.repeatedUint64_);
         }
         this.MergeUnknownFields(other.UnknownFields);
         return this;
@@ -18663,7 +18663,7 @@ namespace Google.ProtocolBuffers.TestProtos {
       }
       [global::System.CLSCompliant(false)]
       public Builder AddRangeRepeatedFixed32(scg::IEnumerable<uint> values) {
-        base.AddRange(values, result.repeatedFixed32_);
+        result.repeatedFixed32_.Add(values);
         return this;
       }
       public Builder ClearRepeatedFixed32() {
@@ -18689,7 +18689,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedInt32(scg::IEnumerable<int> values) {
-        base.AddRange(values, result.repeatedInt32_);
+        result.repeatedInt32_.Add(values);
         return this;
       }
       public Builder ClearRepeatedInt32() {
@@ -18720,7 +18720,7 @@ namespace Google.ProtocolBuffers.TestProtos {
       }
       [global::System.CLSCompliant(false)]
       public Builder AddRangeRepeatedFixed64(scg::IEnumerable<ulong> values) {
-        base.AddRange(values, result.repeatedFixed64_);
+        result.repeatedFixed64_.Add(values);
         return this;
       }
       public Builder ClearRepeatedFixed64() {
@@ -18746,7 +18746,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedInt64(scg::IEnumerable<long> values) {
-        base.AddRange(values, result.repeatedInt64_);
+        result.repeatedInt64_.Add(values);
         return this;
       }
       public Builder ClearRepeatedInt64() {
@@ -18772,7 +18772,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
       public Builder AddRangeRepeatedFloat(scg::IEnumerable<float> values) {
-        base.AddRange(values, result.repeatedFloat_);
+        result.repeatedFloat_.Add(values);
         return this;
       }
       public Builder ClearRepeatedFloat() {
@@ -18803,7 +18803,7 @@ namespace Google.ProtocolBuffers.TestProtos {
       }
       [global::System.CLSCompliant(false)]
       public Builder AddRangeRepeatedUint64(scg::IEnumerable<ulong> values) {
-        base.AddRange(values, result.repeatedUint64_);
+        result.repeatedUint64_.Add(values);
         return this;
       }
       public Builder ClearRepeatedUint64() {