Fully converted over to ICodedOutputStream for all WriteTo derivations
diff --git a/src/ProtocolBuffersLite.Test/TestProtos/UnitTestProtoFile.cs b/src/ProtocolBuffersLite.Test/TestProtos/UnitTestProtoFile.cs
index ae9b1bb..a9a69f1 100644
--- a/src/ProtocolBuffersLite.Test/TestProtos/UnitTestProtoFile.cs
+++ b/src/ProtocolBuffersLite.Test/TestProtos/UnitTestProtoFile.cs
@@ -1103,7 +1103,7 @@
           }

         }

         

-        public override void WriteTo(pb::CodedOutputStream output) {

+        public override void WriteTo(pb::ICodedOutputStream output) {

           int size = SerializedSize;

           if (HasBb) {

             output.WriteInt32(1, "bb", Bb);

@@ -1324,7 +1324,7 @@
           }

         }

         

-        public override void WriteTo(pb::CodedOutputStream output) {

+        public override void WriteTo(pb::ICodedOutputStream output) {

           int size = SerializedSize;

           if (HasA) {

             output.WriteInt32(17, "a", A);

@@ -1545,7 +1545,7 @@
           }

         }

         

-        public override void WriteTo(pb::CodedOutputStream output) {

+        public override void WriteTo(pb::ICodedOutputStream output) {

           int size = SerializedSize;

           if (HasA) {

             output.WriteInt32(47, "a", A);

@@ -2478,7 +2478,7 @@
       }

     }

     

-    public override void WriteTo(pb::CodedOutputStream output) {

+    public override void WriteTo(pb::ICodedOutputStream output) {

       int size = SerializedSize;

       if (HasOptionalInt32) {

         output.WriteInt32(1, "optional_int32", OptionalInt32);

@@ -2598,16 +2598,16 @@
         output.WriteArray(pbd::FieldType.Bytes, 45, "repeated_bytes", repeatedBytes_);

       }

       if (repeatedGroup_.Count > 0) {

-        output.WriteGroupArray(46, "repeatedgroup", repeatedGroup_);

+        output.WriteArray(pbd::FieldType.Group, 46, "repeatedgroup", repeatedGroup_);

       }

       if (repeatedNestedMessage_.Count > 0) {

-        output.WriteMessageArray(48, "repeated_nested_message", repeatedNestedMessage_);

+        output.WriteArray(pbd::FieldType.Message, 48, "repeated_nested_message", repeatedNestedMessage_);

       }

       if (repeatedForeignMessage_.Count > 0) {

-        output.WriteMessageArray(49, "repeated_foreign_message", repeatedForeignMessage_);

+        output.WriteArray(pbd::FieldType.Message, 49, "repeated_foreign_message", repeatedForeignMessage_);

       }

       if (repeatedImportMessage_.Count > 0) {

-        output.WriteMessageArray(50, "repeated_import_message", repeatedImportMessage_);

+        output.WriteArray(pbd::FieldType.Message, 50, "repeated_import_message", repeatedImportMessage_);

       }

       if (repeatedNestedEnum_.Count > 0) {

         output.WriteArray(pbd::FieldType.Enum, 51, "repeated_nested_enum", repeatedNestedEnum_);

@@ -5356,7 +5356,7 @@
       }

     }

     

-    public override void WriteTo(pb::CodedOutputStream output) {

+    public override void WriteTo(pb::ICodedOutputStream output) {

       int size = SerializedSize;

       if (HasDeprecatedInt32) {

         output.WriteInt32(1, "deprecated_int32", DeprecatedInt32);

@@ -5577,7 +5577,7 @@
       }

     }

     

-    public override void WriteTo(pb::CodedOutputStream output) {

+    public override void WriteTo(pb::ICodedOutputStream output) {

       int size = SerializedSize;

       if (HasC) {

         output.WriteInt32(1, "c", C);

@@ -5789,7 +5789,7 @@
       }

     }

     

-    public override void WriteTo(pb::CodedOutputStream output) {

+    public override void WriteTo(pb::ICodedOutputStream output) {

       int size = SerializedSize;

       pb::ExtendableMessage<TestAllExtensions, TestAllExtensions.Builder>.ExtensionWriter extensionWriter = CreateExtensionWriter(this);

       extensionWriter.WriteUntil(536870912, output);

@@ -5983,7 +5983,7 @@
       }

     }

     

-    public override void WriteTo(pb::CodedOutputStream output) {

+    public override void WriteTo(pb::ICodedOutputStream output) {

       int size = SerializedSize;

       if (HasA) {

         output.WriteInt32(17, "a", A);

@@ -6204,7 +6204,7 @@
       }

     }

     

-    public override void WriteTo(pb::CodedOutputStream output) {

+    public override void WriteTo(pb::ICodedOutputStream output) {

       int size = SerializedSize;

       if (HasA) {

         output.WriteInt32(47, "a", A);

@@ -6417,7 +6417,7 @@
       }

     }

     

-    public override void WriteTo(pb::CodedOutputStream output) {

+    public override void WriteTo(pb::ICodedOutputStream output) {

       int size = SerializedSize;

       UnknownFields.WriteTo(output);

     }

@@ -6934,7 +6934,7 @@
       }

     }

     

-    public override void WriteTo(pb::CodedOutputStream output) {

+    public override void WriteTo(pb::ICodedOutputStream output) {

       int size = SerializedSize;

       if (HasA) {

         output.WriteInt32(1, "a", A);

@@ -8175,13 +8175,13 @@
       }

     }

     

-    public override void WriteTo(pb::CodedOutputStream output) {

+    public override void WriteTo(pb::ICodedOutputStream output) {

       int size = SerializedSize;

       if (HasOptionalMessage) {

         output.WriteMessage(1, "optional_message", OptionalMessage);

       }

       if (repeatedMessage_.Count > 0) {

-        output.WriteMessageArray(2, "repeated_message", repeatedMessage_);

+        output.WriteArray(pbd::FieldType.Message, 2, "repeated_message", repeatedMessage_);

       }

       if (HasDummy) {

         output.WriteInt32(3, "dummy", Dummy);

@@ -8504,7 +8504,7 @@
       }

     }

     

-    public override void WriteTo(pb::CodedOutputStream output) {

+    public override void WriteTo(pb::ICodedOutputStream output) {

       int size = SerializedSize;

       if (HasForeignNested) {

         output.WriteMessage(1, "foreign_nested", ForeignNested);

@@ -8738,7 +8738,7 @@
       }

     }

     

-    public override void WriteTo(pb::CodedOutputStream output) {

+    public override void WriteTo(pb::ICodedOutputStream output) {

       int size = SerializedSize;

       UnknownFields.WriteTo(output);

     }

@@ -8919,7 +8919,7 @@
       }

     }

     

-    public override void WriteTo(pb::CodedOutputStream output) {

+    public override void WriteTo(pb::ICodedOutputStream output) {

       int size = SerializedSize;

       pb::ExtendableMessage<TestEmptyMessageWithExtensions, TestEmptyMessageWithExtensions.Builder>.ExtensionWriter extensionWriter = CreateExtensionWriter(this);

       extensionWriter.WriteUntil(536870912, output);

@@ -9104,7 +9104,7 @@
       }

     }

     

-    public override void WriteTo(pb::CodedOutputStream output) {

+    public override void WriteTo(pb::ICodedOutputStream output) {

       int size = SerializedSize;

       pb::ExtendableMessage<TestMultipleExtensionRanges, TestMultipleExtensionRanges.Builder>.ExtensionWriter extensionWriter = CreateExtensionWriter(this);

       extensionWriter.WriteUntil(43, output);

@@ -9310,7 +9310,7 @@
       }

     }

     

-    public override void WriteTo(pb::CodedOutputStream output) {

+    public override void WriteTo(pb::ICodedOutputStream output) {

       int size = SerializedSize;

       if (HasA) {

         output.WriteInt32(1, "a", A);

@@ -9572,7 +9572,7 @@
       }

     }

     

-    public override void WriteTo(pb::CodedOutputStream output) {

+    public override void WriteTo(pb::ICodedOutputStream output) {

       int size = SerializedSize;

       if (HasA) {

         output.WriteMessage(1, "a", A);

@@ -9847,7 +9847,7 @@
       }

     }

     

-    public override void WriteTo(pb::CodedOutputStream output) {

+    public override void WriteTo(pb::ICodedOutputStream output) {

       int size = SerializedSize;

       if (HasBb) {

         output.WriteMessage(1, "bb", Bb);

@@ -10101,7 +10101,7 @@
       }

     }

     

-    public override void WriteTo(pb::CodedOutputStream output) {

+    public override void WriteTo(pb::ICodedOutputStream output) {

       int size = SerializedSize;

       if (HasA) {

         output.WriteMessage(1, "a", A);

@@ -10406,7 +10406,7 @@
           }

         }

         

-        public override void WriteTo(pb::CodedOutputStream output) {

+        public override void WriteTo(pb::ICodedOutputStream output) {

           int size = SerializedSize;

           if (HasA) {

             output.WriteInt32(1, "a", A);

@@ -10627,7 +10627,7 @@
           }

         }

         

-        public override void WriteTo(pb::CodedOutputStream output) {

+        public override void WriteTo(pb::ICodedOutputStream output) {

           int size = SerializedSize;

           if (HasA) {

             output.WriteInt32(1, "a", A);

@@ -10846,7 +10846,7 @@
       }

     }

     

-    public override void WriteTo(pb::CodedOutputStream output) {

+    public override void WriteTo(pb::ICodedOutputStream output) {

       int size = SerializedSize;

       if (HasA) {

         output.WriteInt32(1, "a", A);

@@ -11219,13 +11219,13 @@
           }

         }

         

-        public override void WriteTo(pb::CodedOutputStream output) {

+        public override void WriteTo(pb::ICodedOutputStream output) {

           int size = SerializedSize;

           if (nestedmessageRepeatedInt32_.Count > 0) {

             output.WriteArray(pbd::FieldType.Int32, 1, "nestedmessage_repeated_int32", nestedmessageRepeatedInt32_);

           }

           if (nestedmessageRepeatedForeignmessage_.Count > 0) {

-            output.WriteMessageArray(2, "nestedmessage_repeated_foreignmessage", nestedmessageRepeatedForeignmessage_);

+            output.WriteArray(pbd::FieldType.Message, 2, "nestedmessage_repeated_foreignmessage", nestedmessageRepeatedForeignmessage_);

           }

           UnknownFields.WriteTo(output);

         }

@@ -11486,7 +11486,7 @@
       }

     }

     

-    public override void WriteTo(pb::CodedOutputStream output) {

+    public override void WriteTo(pb::ICodedOutputStream output) {

       int size = SerializedSize;

       if (HasOptionalNestedMessage) {

         output.WriteMessage(1, "optional_nested_message", OptionalNestedMessage);

@@ -11852,7 +11852,7 @@
       }

     }

     

-    public override void WriteTo(pb::CodedOutputStream output) {

+    public override void WriteTo(pb::ICodedOutputStream output) {

       int size = SerializedSize;

       if (HasPrimitiveField) {

         output.WriteInt32(1, "PrimitiveField", PrimitiveField);

@@ -11882,7 +11882,7 @@
         output.WriteArray(pbd::FieldType.Enum, 9, "RepeatedEnumField", repeatedEnumField_);

       }

       if (repeatedMessageField_.Count > 0) {

-        output.WriteMessageArray(10, "RepeatedMessageField", repeatedMessageField_);

+        output.WriteArray(pbd::FieldType.Message, 10, "RepeatedMessageField", repeatedMessageField_);

       }

       if (repeatedStringPieceField_.Count > 0) {

         output.WriteArray(pbd::FieldType.String, 11, "RepeatedStringPieceField", repeatedStringPieceField_);

@@ -12578,7 +12578,7 @@
       }

     }

     

-    public override void WriteTo(pb::CodedOutputStream output) {

+    public override void WriteTo(pb::ICodedOutputStream output) {

       int size = SerializedSize;

       pb::ExtendableMessage<TestFieldOrderings, TestFieldOrderings.Builder>.ExtensionWriter extensionWriter = CreateExtensionWriter(this);

       if (HasMyInt) {

@@ -13049,7 +13049,7 @@
       }

     }

     

-    public override void WriteTo(pb::CodedOutputStream output) {

+    public override void WriteTo(pb::ICodedOutputStream output) {

       int size = SerializedSize;

       if (HasEscapedBytes) {

         output.WriteBytes(1, "escaped_bytes", EscapedBytes);

@@ -13834,7 +13834,7 @@
       }

     }

     

-    public override void WriteTo(pb::CodedOutputStream output) {

+    public override void WriteTo(pb::ICodedOutputStream output) {

       int size = SerializedSize;

       if (HasData) {

         output.WriteString(1, "data", Data);

@@ -14056,7 +14056,7 @@
       }

     }

     

-    public override void WriteTo(pb::CodedOutputStream output) {

+    public override void WriteTo(pb::ICodedOutputStream output) {

       int size = SerializedSize;

       if (HasData) {

         output.WriteBytes(1, "data", Data);

@@ -14458,7 +14458,7 @@
       }

     }

     

-    public override void WriteTo(pb::CodedOutputStream output) {

+    public override void WriteTo(pb::ICodedOutputStream output) {

       int size = SerializedSize;

       if (packedInt32_.Count > 0) {

         output.WritePackedArray(pbd::FieldType.Int32, 90, "packed_int32", packedInt32MemoizedSerializedSize, packedInt32_);

@@ -15571,7 +15571,7 @@
       }

     }

     

-    public override void WriteTo(pb::CodedOutputStream output) {

+    public override void WriteTo(pb::ICodedOutputStream output) {

       int size = SerializedSize;

       if (unpackedInt32_.Count > 0) {

         output.WriteArray(pbd::FieldType.Int32, 90, "unpacked_int32", unpackedInt32_);

@@ -16398,7 +16398,7 @@
       }

     }

     

-    public override void WriteTo(pb::CodedOutputStream output) {

+    public override void WriteTo(pb::ICodedOutputStream output) {

       int size = SerializedSize;

       pb::ExtendableMessage<TestPackedExtensions, TestPackedExtensions.Builder>.ExtensionWriter extensionWriter = CreateExtensionWriter(this);

       extensionWriter.WriteUntil(536870912, output);

@@ -16630,7 +16630,7 @@
           }

         }

         

-        public override void WriteTo(pb::CodedOutputStream output) {

+        public override void WriteTo(pb::ICodedOutputStream output) {

           int size = SerializedSize;

           if (HasDynamicField) {

             output.WriteInt32(2100, "dynamic_field", DynamicField);

@@ -16895,7 +16895,7 @@
       }

     }

     

-    public override void WriteTo(pb::CodedOutputStream output) {

+    public override void WriteTo(pb::ICodedOutputStream output) {

       int size = SerializedSize;

       if (HasScalarExtension) {

         output.WriteFixed32(2000, "scalar_extension", ScalarExtension);

@@ -17472,7 +17472,7 @@
       }

     }

     

-    public override void WriteTo(pb::CodedOutputStream output) {

+    public override void WriteTo(pb::ICodedOutputStream output) {

       int size = SerializedSize;

       if (repeatedFixed32_.Count > 0) {

         output.WriteArray(pbd::FieldType.Fixed32, 12, "repeated_fixed32", repeatedFixed32_);

@@ -17931,7 +17931,7 @@
       }

     }

     

-    public override void WriteTo(pb::CodedOutputStream output) {

+    public override void WriteTo(pb::ICodedOutputStream output) {

       int size = SerializedSize;

       UnknownFields.WriteTo(output);

     }

@@ -18111,7 +18111,7 @@
       }

     }

     

-    public override void WriteTo(pb::CodedOutputStream output) {

+    public override void WriteTo(pb::ICodedOutputStream output) {

       int size = SerializedSize;

       UnknownFields.WriteTo(output);

     }

@@ -18291,7 +18291,7 @@
       }

     }

     

-    public override void WriteTo(pb::CodedOutputStream output) {

+    public override void WriteTo(pb::ICodedOutputStream output) {

       int size = SerializedSize;

       UnknownFields.WriteTo(output);

     }

@@ -18471,7 +18471,7 @@
       }

     }

     

-    public override void WriteTo(pb::CodedOutputStream output) {

+    public override void WriteTo(pb::ICodedOutputStream output) {

       int size = SerializedSize;

       UnknownFields.WriteTo(output);

     }