Browse Source

Full rutime working, Lite generator and runtime building but untested

csharptest 15 năm trước cách đây
mục cha
commit
980ba8dcd4
39 tập tin đã thay đổi với 1971 bổ sung8339 xóa
  1. 2 2
      ProtocolBuffers.build
  2. 1 1
      src/AddressBook/AddressBookProtos.cs
  3. 6 4
      src/ProtoGen/EnumFieldGenerator.cs
  4. 35 7
      src/ProtoGen/ExtensionGenerator.cs
  5. 9 0
      src/ProtoGen/FieldGeneratorBase.cs
  6. 49 33
      src/ProtoGen/MessageGenerator.cs
  7. 7 5
      src/ProtoGen/RepeatedEnumFieldGenerator.cs
  8. 1 1
      src/ProtoGen/RepeatedPrimitiveFieldGenerator.cs
  9. 4 0
      src/ProtoGen/SourceGeneratorBase.cs
  10. 5 6
      src/ProtoGen/UmbrellaClassGenerator.cs
  11. 1 0
      src/ProtocolBuffers.Test/ProtocolBuffers.Test.csproj
  12. 1 1
      src/ProtocolBuffers.Test/TestProtos/UnitTestCSharpOptionsProtoFile.cs
  13. 1 1
      src/ProtocolBuffers.Test/TestProtos/UnitTestCustomOptionsProtoFile.cs
  14. 1 1
      src/ProtocolBuffers.Test/TestProtos/UnitTestEmbedOptimizeForProtoFile.cs
  15. 1 1
      src/ProtocolBuffers.Test/TestProtos/UnitTestEmptyProtoFile.cs
  16. 1 1
      src/ProtocolBuffers.Test/TestProtos/UnitTestEnormousDescriptorProtoFile.cs
  17. 1 1
      src/ProtocolBuffers.Test/TestProtos/UnitTestImportProtoFile.cs
  18. 24 75
      src/ProtocolBuffers.Test/TestProtos/UnitTestLiteImportNonLiteProtoFile.cs
  19. 1 1
      src/ProtocolBuffers.Test/TestProtos/UnitTestMessageSetProtoFile.cs
  20. 1 1
      src/ProtocolBuffers.Test/TestProtos/UnitTestNoGenericServicesProtoFile.cs
  21. 1 1
      src/ProtocolBuffers.Test/TestProtos/UnitTestOptimizeForProtoFile.cs
  22. 1 1
      src/ProtocolBuffers.Test/TestProtos/UnitTestProtoFile.cs
  23. 7 0
      src/ProtocolBuffers/ByteString.cs
  24. 1 1
      src/ProtocolBuffers/DescriptorProtos/CSharpOptions.cs
  25. 1 1
      src/ProtocolBuffers/DescriptorProtos/DescriptorProtoFile.cs
  26. 70 1
      src/ProtocolBuffers/EnumLite.cs
  27. 172 0
      src/ProtocolBuffers/ExtendableBuilderLite.cs
  28. 156 0
      src/ProtocolBuffers/ExtendableMessageLite.cs
  29. 117 0
      src/ProtocolBuffers/GeneratedBuilderLite.cs
  30. 125 12
      src/ProtocolBuffers/GeneratedExtensionLite.cs
  31. 52 0
      src/ProtocolBuffers/GeneratedMessageLite.cs
  32. 4 0
      src/ProtocolBuffers/ProtocolBuffers.csproj
  33. 5 0
      src/ProtocolBuffers/ProtocolBuffersLite.csproj
  34. 8 2
      src/ProtocolBuffers/UninitializedMessageException.cs
  35. 2 6
      src/ProtocolBuffersLite.Test/ProtocolBuffersLite.Test.csproj
  36. 227 0
      src/ProtocolBuffersLite.Test/TestProtos/UnitTestImportLiteProtoFile.cs
  37. 82 48
      src/ProtocolBuffersLite.Test/TestProtos/UnitTestLiteImportNonLiteProtoFile.cs
  38. 788 519
      src/ProtocolBuffersLite.Test/TestProtos/UnitTestLiteProtoFile.cs
  39. 0 7605
      src/ProtocolBuffersLite.Test/TestProtos/UnittestLite.cs

+ 2 - 2
ProtocolBuffers.build

@@ -177,8 +177,8 @@
         <include name="UnitTestEmbedOptimizeForProtoFile.cs" />
         <include name="UnitTestEmptyProtoFile.cs" />
         <include name="UnitTestEnormousDescriptorProtoFile.cs" />
-        <include name="UnitTestImportLiteProtoFile.cs" />
         <include name="UnitTestImportProtoFile.cs" />
+        <include name="UnitTestLiteImportNonLiteProtoFile.cs" />
         <include name="UnitTestMessageSetProtoFile.cs" />
         <include name="UnitTestNoGenericServicesProtoFile.cs" />
         <include name="UnitTestOptimizeForProtoFile.cs" />
@@ -188,7 +188,7 @@
 
     <copy todir="${src}/ProtocolBuffersLite.Test/TestProtos">
       <fileset basedir="${tmp-dir}">
-        <include name="UnitTestLiteImportNonLiteProtoFile.cs" />
+        <include name="UnitTestImportLiteProtoFile.cs" />
         <include name="UnitTestLiteProtoFile.cs" />
       </fileset>
     </copy>

+ 1 - 1
src/AddressBook/AddressBookProtos.cs

@@ -1,4 +1,4 @@
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// Generated by ProtoGen, Version=0.9.0.0, Culture=neutral, PublicKeyToken=8fd7408b07f8d2cd.  DO NOT EDIT!
 
 using pb = global::Google.ProtocolBuffers;
 using pbc = global::Google.ProtocolBuffers.Collections;

+ 6 - 4
src/ProtoGen/EnumFieldGenerator.cs

@@ -88,10 +88,12 @@ namespace Google.ProtocolBuffers.ProtoGen {
       // TODO(jonskeet): Make a more efficient way of doing this
       writer.WriteLine("int rawValue = input.ReadEnum();");
       writer.WriteLine("if (!global::System.Enum.IsDefined(typeof({0}), rawValue)) {{", TypeName);
-      writer.WriteLine("  if (unknownFields == null) {"); // First unknown field - create builder now
-      writer.WriteLine("    unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);");
-      writer.WriteLine("  }");
-      writer.WriteLine("  unknownFields.MergeVarintField({0}, (ulong) rawValue);", Number);
+      if (!UseLiteRuntime) {
+        writer.WriteLine("  if (unknownFields == null) {"); // First unknown field - create builder now
+        writer.WriteLine("    unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);");
+        writer.WriteLine("  }");
+        writer.WriteLine("  unknownFields.MergeVarintField({0}, (ulong) rawValue);", Number);
+      }
       writer.WriteLine("} else {");
       writer.WriteLine("  {0} = ({1}) rawValue;", PropertyName, TypeName);
       writer.WriteLine("}");

+ 35 - 7
src/ProtoGen/ExtensionGenerator.cs

@@ -32,16 +32,20 @@
 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 #endregion
 
+using System;
+using System.Globalization;
 using Google.ProtocolBuffers.Descriptors;
 
 namespace Google.ProtocolBuffers.ProtoGen {
-  internal class ExtensionGenerator : SourceGeneratorBase<FieldDescriptor>, ISourceGenerator {
+  internal class ExtensionGenerator : FieldGeneratorBase, ISourceGenerator {
 
+    private readonly string extends;
     private readonly string scope;
     private readonly string type;
     private readonly string name;
 
-    internal ExtensionGenerator(FieldDescriptor descriptor) : base(descriptor) {
+    internal ExtensionGenerator(FieldDescriptor descriptor)
+      : base(descriptor) {
       if (Descriptor.ExtensionScope != null) {
         scope = GetClassName(Descriptor.ExtensionScope);
       } else {
@@ -58,14 +62,20 @@ namespace Google.ProtocolBuffers.ProtoGen {
           type = DescriptorUtil.GetMappedTypeName(Descriptor.MappedType);
           break;
       }
+      extends = GetClassName(Descriptor.ContainingType);
       name = Descriptor.CSharpOptions.PropertyName;
     }
 
     public void Generate(TextGenerator writer) {
-      writer.WriteLine ("public const int {0} = {1};", GetFieldConstantName(Descriptor), Descriptor.FieldNumber);
-      if (Descriptor.IsRepeated) {
-        if (!Descriptor.IsCLSCompliant && Descriptor.File.CSharpOptions.ClsCompliance)
-          {
+      writer.WriteLine("public const int {0} = {1};", GetFieldConstantName(Descriptor), Descriptor.FieldNumber);
+
+      if (UseLiteRuntime) {
+        if (!Descriptor.IsCLSCompliant && Descriptor.File.CSharpOptions.ClsCompliance) {
+          writer.WriteLine("[global::System.CLSCompliant(false)]");
+        }
+        writer.WriteLine("{0} static pb::GeneratedExtensionLite<{1}, {2}> {3};", ClassAccessLevel, extends, type, name);
+      } else if (Descriptor.IsRepeated) {
+        if (!Descriptor.IsCLSCompliant && Descriptor.File.CSharpOptions.ClsCompliance) {
           writer.WriteLine("[global::System.CLSCompliant(false)]");
         }
         writer.WriteLine("{0} static pb::GeneratedExtensionBase<scg::IList<{1}>> {2};", ClassAccessLevel, type, name);
@@ -78,7 +88,25 @@ namespace Google.ProtocolBuffers.ProtoGen {
     }
 
     internal void GenerateStaticVariableInitializers(TextGenerator writer) {
-      if (Descriptor.IsRepeated) {
+      if (UseLiteRuntime) {
+        writer.WriteLine("{0}.{1} = ", scope, name);
+        writer.Indent();
+        writer.WriteLine("new pb::GeneratedExtensionLite<{0}, {1}>(", extends, type);
+        writer.Indent();
+        writer.WriteLine("{0}.DefaultInstance,", extends);
+        writer.WriteLine("{0},", Descriptor.HasDefaultValue ? DefaultValue : IsNullableType ? "null" : "default(" + type + ")");
+        writer.WriteLine("{0},", (Descriptor.MappedType == MappedType.Message) ? type + ".DefaultInstance" : "null");
+        writer.WriteLine("{0},", (Descriptor.MappedType == MappedType.Enum) ? "new EnumLiteMap<" + type + ">()" : "null");
+        writer.WriteLine("{0},", Descriptor.Index);
+        writer.Write("pbd::FieldType.{0}", Descriptor.FieldType);
+        if (Descriptor.IsRepeated) {
+          writer.WriteLine(",");
+          writer.Write(Descriptor.IsPacked ? "true" : "false");
+        }
+        writer.Outdent();
+        writer.WriteLine(");");
+        writer.Outdent();
+      } else if (Descriptor.IsRepeated) {
         writer.WriteLine("{0}.{1} = pb::GeneratedRepeatExtension<{2}>.CreateInstance({0}.Descriptor.Extensions[{3}]);", scope, name, type, Descriptor.Index);
       } else {
         writer.WriteLine("{0}.{1} = pb::GeneratedSingleExtension<{2}>.CreateInstance({0}.Descriptor.Extensions[{3}]);", scope, name, type, Descriptor.Index);

+ 9 - 0
src/ProtoGen/FieldGeneratorBase.cs

@@ -51,6 +51,7 @@ namespace Google.ProtocolBuffers.ProtoGen {
       return true;
     }
 
+    /// <remarks>Copy exists in ExtensionGenerator.cs</remarks>
     protected string DefaultValue {
       get {
         string suffix = "";
@@ -84,6 +85,10 @@ namespace Google.ProtocolBuffers.ProtoGen {
             if (!Descriptor.HasDefaultValue) {
               return "pb::ByteString.Empty";
             }
+            if (UseLiteRuntime && Descriptor.DefaultValue is ByteString) {
+              string temp = Convert.ToBase64String(((ByteString)Descriptor.DefaultValue).ToByteArray());
+              return String.Format("ByteString.FromBase64(\"{0}\")", temp);
+            }
             return string.Format("(pb::ByteString) {0}.Descriptor.Fields[{1}].DefaultValue", GetClassName(Descriptor.ContainingType), Descriptor.Index);
           case FieldType.String:
             if (AllPrintableAscii(Descriptor.Proto.DefaultValue)) {
@@ -95,6 +100,10 @@ namespace Google.ProtocolBuffers.ProtoGen {
                   .Replace("\"", "\\\"")
                   + "\"";
             }
+            if (UseLiteRuntime && Descriptor.DefaultValue is String) {
+              string temp = Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes((String)Descriptor.DefaultValue));
+              return String.Format("ByteString.FromBase64(\"{0}\").ToStringUtf8()", temp);
+            }
             return string.Format("(string) {0}.Descriptor.Fields[{1}].DefaultValue", GetClassName(Descriptor.ContainingType), Descriptor.Index);
           case FieldType.Enum:
             return TypeName + "." + ((EnumValueDescriptor) Descriptor.DefaultValue).Name;

+ 49 - 33
src/ProtoGen/MessageGenerator.cs

@@ -117,7 +117,7 @@ namespace Google.ProtocolBuffers.ProtoGen {
       writer.WriteLine("{0} sealed partial class {1} : pb::{2}Message{3}<{1}, {1}.Builder> {{",
           ClassAccessLevel, ClassName, 
           Descriptor.Proto.ExtensionRangeCount > 0 ? "Extendable" : "Generated",
-          UseLiteRuntime ? "Lite" : "");
+          RuntimeSuffix);
       writer.Indent();
       // Must call BuildPartial() to make sure all lists are made read-only
       writer.WriteLine("private static readonly {0} defaultInstance = new Builder().BuildPartial();", ClassName);
@@ -168,7 +168,7 @@ namespace Google.ProtocolBuffers.ProtoGen {
         writer.WriteLine();
       }
 
-      if (Descriptor.File.Options.OptimizeFor == FileOptions.Types.OptimizeMode.SPEED) {
+      if (OptimizeSpeed) {
         GenerateIsInitialized(writer);
         GenerateMessageSerializationMethods(writer);
       }
@@ -203,8 +203,8 @@ namespace Google.ProtocolBuffers.ProtoGen {
       // Make sure we've computed the serialized length, so that packed fields are generated correctly.
       writer.WriteLine("int size = SerializedSize;");
       if (Descriptor.Proto.ExtensionRangeList.Count > 0) {
-        writer.WriteLine("pb::ExtendableMessage<{0}, {0}.Builder>.ExtensionWriter extensionWriter = CreateExtensionWriter(this);",
-          ClassName);
+        writer.WriteLine("pb::ExtendableMessage{1}<{0}, {0}.Builder>.ExtensionWriter extensionWriter = CreateExtensionWriter(this);",
+          ClassName, RuntimeSuffix);
       }
 
       // Merge the fields and the extension ranges, both sorted by field number.
@@ -220,10 +220,12 @@ namespace Google.ProtocolBuffers.ProtoGen {
         }
       }
 
-      if (Descriptor.Proto.Options.MessageSetWireFormat) {
-        writer.WriteLine("UnknownFields.WriteAsMessageSetTo(output);");
-      } else {
-        writer.WriteLine("UnknownFields.WriteTo(output);");
+      if (!UseLiteRuntime) {
+        if (Descriptor.Proto.Options.MessageSetWireFormat) {
+          writer.WriteLine("UnknownFields.WriteAsMessageSetTo(output);");
+        } else {
+          writer.WriteLine("UnknownFields.WriteTo(output);");
+        }
       }
 
       writer.Outdent();
@@ -245,10 +247,12 @@ namespace Google.ProtocolBuffers.ProtoGen {
         writer.WriteLine("size += ExtensionsSerializedSize;");
       }
 
-      if (Descriptor.Options.MessageSetWireFormat) {
-        writer.WriteLine("size += UnknownFields.SerializedSizeAsMessageSet;");
-      } else {
-        writer.WriteLine("size += UnknownFields.SerializedSize;");
+      if (!UseLiteRuntime) {
+        if (Descriptor.Options.MessageSetWireFormat) {
+          writer.WriteLine("size += UnknownFields.SerializedSizeAsMessageSet;");
+        } else {
+          writer.WriteLine("size += UnknownFields.SerializedSize;");
+        }
       }
       writer.WriteLine("memoizedSerializedSize = size;");
       writer.WriteLine("return size;");
@@ -352,14 +356,14 @@ namespace Google.ProtocolBuffers.ProtoGen {
       writer.WriteLine("  return (Builder) new Builder().MergeFrom(prototype);");
       writer.WriteLine("}");
       writer.WriteLine();
-      writer.WriteLine("{0} sealed partial class Builder : pb::{2}Builder<{1}, Builder> {{",
-          ClassAccessLevel, ClassName, Descriptor.Proto.ExtensionRangeCount > 0 ? "Extendable" : "Generated");
+      writer.WriteLine("{0} sealed partial class Builder : pb::{2}Builder{3}<{1}, Builder> {{",
+          ClassAccessLevel, ClassName, Descriptor.Proto.ExtensionRangeCount > 0 ? "Extendable" : "Generated", RuntimeSuffix);
       writer.Indent();
       writer.WriteLine("protected override Builder ThisBuilder {");
       writer.WriteLine("  get { return this; }");
       writer.WriteLine("}");
       GenerateCommonBuilderMethods(writer);
-      if (Descriptor.File.Options.OptimizeFor == FileOptions.Types.OptimizeMode.SPEED) {
+      if (OptimizeSpeed) {
         GenerateBuilderParsingMethods(writer);
       }
       foreach (FieldDescriptor field in Descriptor.Fields) {
@@ -389,10 +393,12 @@ namespace Google.ProtocolBuffers.ProtoGen {
       writer.WriteLine("  return new Builder().MergeFrom(result);");
       writer.WriteLine("}");
       writer.WriteLine();
-      writer.WriteLine("public override pbd::MessageDescriptor DescriptorForType {");
-      writer.WriteLine("  get {{ return {0}.Descriptor; }}", FullClassName);
-      writer.WriteLine("}");
-      writer.WriteLine();
+      if (!UseLiteRuntime) {
+        writer.WriteLine("public override pbd::MessageDescriptor DescriptorForType {");
+        writer.WriteLine("  get {{ return {0}.Descriptor; }}", FullClassName);
+        writer.WriteLine("}");
+        writer.WriteLine();
+      }
       writer.WriteLine("public override {0} DefaultInstanceForType {{", ClassName);
       writer.WriteLine("  get {{ return {0}.DefaultInstance; }}", FullClassName);
       writer.WriteLine("}");
@@ -413,8 +419,8 @@ namespace Google.ProtocolBuffers.ProtoGen {
       writer.WriteLine("}");
       writer.WriteLine();
 
-      if (Descriptor.File.Options.OptimizeFor == FileOptions.Types.OptimizeMode.SPEED) {
-        writer.WriteLine("public override Builder MergeFrom(pb::IMessage other) {");
+      if (OptimizeSpeed) {
+        writer.WriteLine("public override Builder MergeFrom(pb::IMessage{0} other) {{", RuntimeSuffix);
         writer.WriteLine("  if (other is {0}) {{", ClassName);
         writer.WriteLine("    return MergeFrom(({0}) other);", ClassName);
         writer.WriteLine("  } else {");
@@ -435,7 +441,9 @@ namespace Google.ProtocolBuffers.ProtoGen {
         if (Descriptor.Proto.ExtensionRangeCount > 0) {
           writer.WriteLine("  this.MergeExtensionFields(other);");
         }
-        writer.WriteLine("this.MergeUnknownFields(other.UnknownFields);");
+        if (!UseLiteRuntime) {
+          writer.WriteLine("this.MergeUnknownFields(other.UnknownFields);");
+        }
         writer.WriteLine("return this;");
         writer.Outdent();
         writer.WriteLine("}");
@@ -453,29 +461,37 @@ namespace Google.ProtocolBuffers.ProtoGen {
       writer.WriteLine();
       writer.WriteLine("public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {");
       writer.Indent();
-      writer.WriteLine("pb::UnknownFieldSet.Builder unknownFields = null;");
+      if (!UseLiteRuntime) {
+        writer.WriteLine("pb::UnknownFieldSet.Builder unknownFields = null;");
+      }
       writer.WriteLine("while (true) {");
       writer.Indent();
       writer.WriteLine("uint tag = input.ReadTag();");
       writer.WriteLine("switch (tag) {");
       writer.Indent();
       writer.WriteLine("case 0: {"); // 0 signals EOF / limit reached
-      writer.WriteLine("  if (unknownFields != null) {");
-      writer.WriteLine("    this.UnknownFields = unknownFields.Build();");
-      writer.WriteLine("  }");
+      if (!UseLiteRuntime) {
+        writer.WriteLine("  if (unknownFields != null) {");
+        writer.WriteLine("    this.UnknownFields = unknownFields.Build();");
+        writer.WriteLine("  }");
+      }
       writer.WriteLine("  return this;");
       writer.WriteLine("}");
       writer.WriteLine("default: {");
       writer.WriteLine("  if (pb::WireFormat.IsEndGroupTag(tag)) {");
-      writer.WriteLine("    if (unknownFields != null) {");
-      writer.WriteLine("      this.UnknownFields = unknownFields.Build();");
-      writer.WriteLine("    }");
+      if (!UseLiteRuntime) {
+        writer.WriteLine("    if (unknownFields != null) {");
+        writer.WriteLine("      this.UnknownFields = unknownFields.Build();");
+        writer.WriteLine("    }");
+      }
       writer.WriteLine("    return this;"); // it's an endgroup tag
       writer.WriteLine("  }");
-      writer.WriteLine("  if (unknownFields == null) {"); // First unknown field - create builder now
-      writer.WriteLine("    unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);");
-      writer.WriteLine("  }");
-      writer.WriteLine("  ParseUnknownField(input, unknownFields, extensionRegistry, tag);");
+      if (!UseLiteRuntime) {
+        writer.WriteLine("  if (unknownFields == null) {"); // First unknown field - create builder now
+        writer.WriteLine("    unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);");
+        writer.WriteLine("  }");
+      }
+      writer.WriteLine("  ParseUnknownField(input, {0}extensionRegistry, tag);", UseLiteRuntime ? "" : "unknownFields, ");
       writer.WriteLine("  break;");
       writer.WriteLine("}");
       foreach (FieldDescriptor field in sortedFields) {

+ 7 - 5
src/ProtoGen/RepeatedEnumFieldGenerator.cs

@@ -43,7 +43,7 @@ namespace Google.ProtocolBuffers.ProtoGen {
     }
 
     public void GenerateMembers(TextGenerator writer) {
-      if (Descriptor.IsPacked && Descriptor.File.Options.OptimizeFor == FileOptions.Types.OptimizeMode.SPEED) {
+      if (Descriptor.IsPacked && OptimizeSpeed) {
         writer.WriteLine("private int {0}MemoizedSerializedSize;", Name);
       }
       writer.WriteLine("private pbc::PopsicleList<{0}> {1}_ = new pbc::PopsicleList<{0}>();", TypeName, Name);
@@ -114,10 +114,12 @@ namespace Google.ProtocolBuffers.ProtoGen {
       // TODO(jonskeet): Make a more efficient way of doing this
       writer.WriteLine("int rawValue = input.ReadEnum();");
       writer.WriteLine("if (!global::System.Enum.IsDefined(typeof({0}), rawValue)) {{", TypeName);
-      writer.WriteLine("  if (unknownFields == null) {"); // First unknown field - create builder now
-      writer.WriteLine("    unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);");
-      writer.WriteLine("  }");
-      writer.WriteLine("  unknownFields.MergeVarintField({0}, (ulong) rawValue);", Number);
+      if (!UseLiteRuntime) {
+        writer.WriteLine("  if (unknownFields == null) {"); // First unknown field - create builder now
+        writer.WriteLine("    unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);");
+        writer.WriteLine("  }");
+        writer.WriteLine("  unknownFields.MergeVarintField({0}, (ulong) rawValue);", Number);
+      }
       writer.WriteLine("} else {");
       writer.WriteLine("  Add{0}(({1}) rawValue);", PropertyName, TypeName);
       writer.WriteLine("}");

+ 1 - 1
src/ProtoGen/RepeatedPrimitiveFieldGenerator.cs

@@ -43,7 +43,7 @@ namespace Google.ProtocolBuffers.ProtoGen {
     }
 
     public void GenerateMembers(TextGenerator writer) {
-      if (Descriptor.IsPacked && Descriptor.File.Options.OptimizeFor == FileOptions.Types.OptimizeMode.SPEED) {
+      if (Descriptor.IsPacked && OptimizeSpeed) {
         writer.WriteLine("private int {0}MemoizedSerializedSize;", Name);
       }
       writer.WriteLine("private pbc::PopsicleList<{0}> {1}_ = new pbc::PopsicleList<{0}>();", TypeName, Name);

+ 4 - 0
src/ProtoGen/SourceGeneratorBase.cs

@@ -43,6 +43,7 @@ namespace Google.ProtocolBuffers.ProtoGen {
     protected readonly bool OptimizeSpeed;
     protected readonly bool OptimizeSize;
     protected readonly bool UseLiteRuntime;
+    protected readonly string RuntimeSuffix;
 
     protected SourceGeneratorBase(T descriptor) {
       this.descriptor = descriptor;
@@ -50,6 +51,9 @@ namespace Google.ProtocolBuffers.ProtoGen {
       OptimizeSize = descriptor.File.Options.OptimizeFor == Google.ProtocolBuffers.DescriptorProtos.FileOptions.Types.OptimizeMode.CODE_SIZE;
       OptimizeSpeed = descriptor.File.Options.OptimizeFor == Google.ProtocolBuffers.DescriptorProtos.FileOptions.Types.OptimizeMode.SPEED;
       UseLiteRuntime = descriptor.File.Options.OptimizeFor == Google.ProtocolBuffers.DescriptorProtos.FileOptions.Types.OptimizeMode.LITE_RUNTIME;
+      //Lite runtime uses OptimizeSpeed code branches
+      OptimizeSpeed |= UseLiteRuntime;
+      RuntimeSuffix = UseLiteRuntime ? "Lite" : "";
     }
 
     protected T Descriptor {

+ 5 - 6
src/ProtoGen/UmbrellaClassGenerator.cs

@@ -113,13 +113,11 @@ namespace Google.ProtocolBuffers.ProtoGen {
     }
 
     private void WriteIntroduction(TextGenerator writer) {
-      writer.WriteLine("// Generated by the protocol buffer compiler.  DO NOT EDIT!");
+      writer.WriteLine("// Generated by {0}.  DO NOT EDIT!", this.GetType().Assembly.FullName);
       writer.WriteLine();
       writer.WriteLine("using pb = global::Google.ProtocolBuffers;");
-      if (!UseLiteRuntime) {
-        writer.WriteLine("using pbc = global::Google.ProtocolBuffers.Collections;");
-        writer.WriteLine("using pbd = global::Google.ProtocolBuffers.Descriptors;");
-      }
+      writer.WriteLine("using pbc = global::Google.ProtocolBuffers.Collections;");
+      writer.WriteLine("using pbd = global::Google.ProtocolBuffers.Descriptors;");
       writer.WriteLine("using scg = global::System.Collections.Generic;");
 
       if (Descriptor.CSharpOptions.Namespace != "") {
@@ -223,9 +221,10 @@ namespace Google.ProtocolBuffers.ProtoGen {
 
     private void WriteLiteExtensions(TextGenerator writer) {
       writer.WriteLine("#region Extensions");
-
+      writer.WriteLine("internal static readonly object Descriptor;");
       writer.WriteLine("static {0}() {{", Descriptor.CSharpOptions.UmbrellaClassname);
       writer.Indent();
+      writer.WriteLine("Descriptor = null;");
 
       foreach (MessageDescriptor message in Descriptor.MessageTypes) {
         new MessageGenerator(message).GenerateStaticVariableInitializers(writer);

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

@@ -80,6 +80,7 @@
     <Compile Include="TestProtos\UnitTestEnormousDescriptorProtoFile.cs" />
     <Compile Include="TestProtos\UnitTestImportLiteProtoFile.cs" />
     <Compile Include="TestProtos\UnitTestImportProtoFile.cs" />
+    <Compile Include="TestProtos\UnitTestLiteImportNonLiteProtoFile.cs" />
     <Compile Include="TestProtos\UnitTestMessageSetProtoFile.cs" />
     <Compile Include="TestProtos\UnitTestNoGenericServicesProtoFile.cs" />
     <Compile Include="TestProtos\UnitTestOptimizeForProtoFile.cs" />

+ 1 - 1
src/ProtocolBuffers.Test/TestProtos/UnitTestCSharpOptionsProtoFile.cs

@@ -1,4 +1,4 @@
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// Generated by ProtoGen, Version=0.9.0.0, Culture=neutral, PublicKeyToken=8fd7408b07f8d2cd.  DO NOT EDIT!
 
 using pb = global::Google.ProtocolBuffers;
 using pbc = global::Google.ProtocolBuffers.Collections;

+ 1 - 1
src/ProtocolBuffers.Test/TestProtos/UnitTestCustomOptionsProtoFile.cs

@@ -1,4 +1,4 @@
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// Generated by ProtoGen, Version=0.9.0.0, Culture=neutral, PublicKeyToken=8fd7408b07f8d2cd.  DO NOT EDIT!
 
 using pb = global::Google.ProtocolBuffers;
 using pbc = global::Google.ProtocolBuffers.Collections;

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

@@ -1,4 +1,4 @@
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// Generated by ProtoGen, Version=0.9.0.0, Culture=neutral, PublicKeyToken=8fd7408b07f8d2cd.  DO NOT EDIT!
 
 using pb = global::Google.ProtocolBuffers;
 using pbc = global::Google.ProtocolBuffers.Collections;

+ 1 - 1
src/ProtocolBuffers.Test/TestProtos/UnitTestEmptyProtoFile.cs

@@ -1,4 +1,4 @@
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// Generated by ProtoGen, Version=0.9.0.0, Culture=neutral, PublicKeyToken=8fd7408b07f8d2cd.  DO NOT EDIT!
 
 using pb = global::Google.ProtocolBuffers;
 using pbc = global::Google.ProtocolBuffers.Collections;

+ 1 - 1
src/ProtocolBuffers.Test/TestProtos/UnitTestEnormousDescriptorProtoFile.cs

@@ -1,4 +1,4 @@
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// Generated by ProtoGen, Version=0.9.0.0, Culture=neutral, PublicKeyToken=8fd7408b07f8d2cd.  DO NOT EDIT!
 
 using pb = global::Google.ProtocolBuffers;
 using pbc = global::Google.ProtocolBuffers.Collections;

+ 1 - 1
src/ProtocolBuffers.Test/TestProtos/UnitTestImportProtoFile.cs

@@ -1,4 +1,4 @@
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// Generated by ProtoGen, Version=0.9.0.0, Culture=neutral, PublicKeyToken=8fd7408b07f8d2cd.  DO NOT EDIT!
 
 using pb = global::Google.ProtocolBuffers;
 using pbc = global::Google.ProtocolBuffers.Collections;

+ 24 - 75
src/ProtocolBuffersLite.Test/TestProtos/UnittestLiteImportsNonlite.cs → src/ProtocolBuffers.Test/TestProtos/UnitTestLiteImportNonLiteProtoFile.cs

@@ -1,55 +1,29 @@
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// Generated by ProtoGen, Version=0.9.0.0, Culture=neutral, PublicKeyToken=8fd7408b07f8d2cd.  DO NOT EDIT!
 
 using pb = global::Google.ProtocolBuffers;
 using pbc = global::Google.ProtocolBuffers.Collections;
 using pbd = global::Google.ProtocolBuffers.Descriptors;
 using scg = global::System.Collections.Generic;
-namespace protobuf_unittest {
+namespace Google.ProtocolBuffers.TestProtos {
   
-  public static partial class UnittestLiteImportsNonlite {
+  public static partial class UnitTestLiteImportNonLiteProtoFile {
   
     #region Extension registration
     public static void RegisterAllExtensions(pb::ExtensionRegistry registry) {
     }
     #endregion
     #region Static variables
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestLiteImportsNonlite__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::protobuf_unittest.TestLiteImportsNonlite, global::protobuf_unittest.TestLiteImportsNonlite.Builder> internal__static_protobuf_unittest_TestLiteImportsNonlite__FieldAccessorTable;
     #endregion
-    #region Descriptor
-    public static pbd::FileDescriptor Descriptor {
-      get { return descriptor; }
-    }
-    private static pbd::FileDescriptor descriptor;
-    
-    static UnittestLiteImportsNonlite() {
-      byte[] descriptorData = global::System.Convert.FromBase64String(
-          "CjNnb29nbGUvcHJvdG9idWYvdW5pdHRlc3RfbGl0ZV9pbXBvcnRzX25vbmxp" + 
-          "dGUucHJvdG8SEXByb3RvYnVmX3VuaXR0ZXN0Gh5nb29nbGUvcHJvdG9idWYv" + 
-          "dW5pdHRlc3QucHJvdG8iSgoWVGVzdExpdGVJbXBvcnRzTm9ubGl0ZRIwCgdt" + 
-          "ZXNzYWdlGAEgASgLMh8ucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbFR5cGVz" + 
-          "QgJIAw==");
-      pbd::FileDescriptor.InternalDescriptorAssigner assigner = delegate(pbd::FileDescriptor root) {
-        descriptor = root;
-        internal__static_protobuf_unittest_TestLiteImportsNonlite__Descriptor = Descriptor.MessageTypes[0];
-        internal__static_protobuf_unittest_TestLiteImportsNonlite__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::protobuf_unittest.TestLiteImportsNonlite, global::protobuf_unittest.TestLiteImportsNonlite.Builder>(internal__static_protobuf_unittest_TestLiteImportsNonlite__Descriptor,
-                new string[] { "Message", });
-        pb::ExtensionRegistry registry = pb::ExtensionRegistry.CreateInstance();
-        RegisterAllExtensions(registry);
-        global::protobuf_unittest.Unittest.RegisterAllExtensions(registry);
-        return registry;
-      };
-      pbd::FileDescriptor.InternalBuildGeneratedFileFrom(descriptorData,
-          new pbd::FileDescriptor[] {
-          global::protobuf_unittest.Unittest.Descriptor, 
-          }, assigner);
+    #region Extensions
+    internal static readonly object Descriptor;
+    static UnitTestLiteImportNonLiteProtoFile() {
+      Descriptor = null;
     }
     #endregion
     
   }
   #region Messages
-  public sealed partial class TestLiteImportsNonlite : pb::GeneratedMessage<TestLiteImportsNonlite, TestLiteImportsNonlite.Builder> {
+  public sealed partial class TestLiteImportsNonlite : pb::GeneratedMessageLite<TestLiteImportsNonlite, TestLiteImportsNonlite.Builder> {
     private static readonly TestLiteImportsNonlite defaultInstance = new Builder().BuildPartial();
     public static TestLiteImportsNonlite DefaultInstance {
       get { return defaultInstance; }
@@ -63,21 +37,13 @@ namespace protobuf_unittest {
       get { return this; }
     }
     
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::protobuf_unittest.UnittestLiteImportsNonlite.internal__static_protobuf_unittest_TestLiteImportsNonlite__Descriptor; }
-    }
-    
-    protected override pb::FieldAccess.FieldAccessorTable<TestLiteImportsNonlite, TestLiteImportsNonlite.Builder> InternalFieldAccessors {
-      get { return global::protobuf_unittest.UnittestLiteImportsNonlite.internal__static_protobuf_unittest_TestLiteImportsNonlite__FieldAccessorTable; }
-    }
-    
     public const int MessageFieldNumber = 1;
     private bool hasMessage;
-    private global::protobuf_unittest.TestAllTypes message_ = global::protobuf_unittest.TestAllTypes.DefaultInstance;
+    private global::Google.ProtocolBuffers.TestProtos.TestAllTypes message_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypes.DefaultInstance;
     public bool HasMessage {
       get { return hasMessage; }
     }
-    public global::protobuf_unittest.TestAllTypes Message {
+    public global::Google.ProtocolBuffers.TestProtos.TestAllTypes Message {
       get { return message_; }
     }
     
@@ -92,7 +58,6 @@ namespace protobuf_unittest {
       if (HasMessage) {
         output.WriteMessage(1, Message);
       }
-      UnknownFields.WriteTo(output);
     }
     
     private int memoizedSerializedSize = -1;
@@ -105,7 +70,6 @@ namespace protobuf_unittest {
         if (HasMessage) {
           size += pb::CodedOutputStream.ComputeMessageSize(1, Message);
         }
-        size += UnknownFields.SerializedSize;
         memoizedSerializedSize = size;
         return size;
       }
@@ -148,7 +112,7 @@ namespace protobuf_unittest {
       return (Builder) new Builder().MergeFrom(prototype);
     }
     
-    public sealed partial class Builder : pb::GeneratedBuilder<TestLiteImportsNonlite, Builder> {
+    public sealed partial class Builder : pb::GeneratedBuilderLite<TestLiteImportsNonlite, Builder> {
       protected override Builder ThisBuilder {
         get { return this; }
       }
@@ -169,12 +133,8 @@ namespace protobuf_unittest {
         return new Builder().MergeFrom(result);
       }
       
-      public override pbd::MessageDescriptor DescriptorForType {
-        get { return global::protobuf_unittest.TestLiteImportsNonlite.Descriptor; }
-      }
-      
       public override TestLiteImportsNonlite DefaultInstanceForType {
-        get { return global::protobuf_unittest.TestLiteImportsNonlite.DefaultInstance; }
+        get { return global::Google.ProtocolBuffers.TestProtos.TestLiteImportsNonlite.DefaultInstance; }
       }
       
       public override TestLiteImportsNonlite BuildPartial() {
@@ -186,7 +146,7 @@ namespace protobuf_unittest {
         return returnMe;
       }
       
-      public override Builder MergeFrom(pb::IMessage other) {
+      public override Builder MergeFrom(pb::IMessageLite other) {
         if (other is TestLiteImportsNonlite) {
           return MergeFrom((TestLiteImportsNonlite) other);
         } else {
@@ -196,11 +156,10 @@ namespace protobuf_unittest {
       }
       
       public override Builder MergeFrom(TestLiteImportsNonlite other) {
-        if (other == global::protobuf_unittest.TestLiteImportsNonlite.DefaultInstance) return this;
+        if (other == global::Google.ProtocolBuffers.TestProtos.TestLiteImportsNonlite.DefaultInstance) return this;
         if (other.HasMessage) {
           MergeMessage(other.Message);
         }
-        this.MergeUnknownFields(other.UnknownFields);
         return this;
       }
       
@@ -209,31 +168,21 @@ namespace protobuf_unittest {
       }
       
       public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-        pb::UnknownFieldSet.Builder unknownFields = null;
         while (true) {
           uint tag = input.ReadTag();
           switch (tag) {
             case 0: {
-              if (unknownFields != null) {
-                this.UnknownFields = unknownFields.Build();
-              }
               return this;
             }
             default: {
               if (pb::WireFormat.IsEndGroupTag(tag)) {
-                if (unknownFields != null) {
-                  this.UnknownFields = unknownFields.Build();
-                }
                 return this;
               }
-              if (unknownFields == null) {
-                unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-              }
-              ParseUnknownField(input, unknownFields, extensionRegistry, tag);
+              ParseUnknownField(input, extensionRegistry, tag);
               break;
             }
             case 10: {
-              global::protobuf_unittest.TestAllTypes.Builder subBuilder = global::protobuf_unittest.TestAllTypes.CreateBuilder();
+              global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Builder subBuilder = global::Google.ProtocolBuffers.TestProtos.TestAllTypes.CreateBuilder();
               if (HasMessage) {
                 subBuilder.MergeFrom(Message);
               }
@@ -249,27 +198,27 @@ namespace protobuf_unittest {
       public bool HasMessage {
        get { return result.HasMessage; }
       }
-      public global::protobuf_unittest.TestAllTypes Message {
+      public global::Google.ProtocolBuffers.TestProtos.TestAllTypes Message {
         get { return result.Message; }
         set { SetMessage(value); }
       }
-      public Builder SetMessage(global::protobuf_unittest.TestAllTypes value) {
+      public Builder SetMessage(global::Google.ProtocolBuffers.TestProtos.TestAllTypes value) {
         pb::ThrowHelper.ThrowIfNull(value, "value");
         result.hasMessage = true;
         result.message_ = value;
         return this;
       }
-      public Builder SetMessage(global::protobuf_unittest.TestAllTypes.Builder builderForValue) {
+      public Builder SetMessage(global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Builder builderForValue) {
         pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
         result.hasMessage = true;
         result.message_ = builderForValue.Build();
         return this;
       }
-      public Builder MergeMessage(global::protobuf_unittest.TestAllTypes value) {
+      public Builder MergeMessage(global::Google.ProtocolBuffers.TestProtos.TestAllTypes value) {
         pb::ThrowHelper.ThrowIfNull(value, "value");
         if (result.HasMessage &&
-            result.message_ != global::protobuf_unittest.TestAllTypes.DefaultInstance) {
-            result.message_ = global::protobuf_unittest.TestAllTypes.CreateBuilder(result.message_).MergeFrom(value).BuildPartial();
+            result.message_ != global::Google.ProtocolBuffers.TestProtos.TestAllTypes.DefaultInstance) {
+            result.message_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypes.CreateBuilder(result.message_).MergeFrom(value).BuildPartial();
         } else {
           result.message_ = value;
         }
@@ -278,12 +227,12 @@ namespace protobuf_unittest {
       }
       public Builder ClearMessage() {
         result.hasMessage = false;
-        result.message_ = global::protobuf_unittest.TestAllTypes.DefaultInstance;
+        result.message_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypes.DefaultInstance;
         return this;
       }
     }
     static TestLiteImportsNonlite() {
-      object.ReferenceEquals(global::protobuf_unittest.UnittestLiteImportsNonlite.Descriptor, null);
+      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteImportNonLiteProtoFile.Descriptor, null);
     }
   }
   

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

@@ -1,4 +1,4 @@
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// Generated by ProtoGen, Version=0.9.0.0, Culture=neutral, PublicKeyToken=8fd7408b07f8d2cd.  DO NOT EDIT!
 
 using pb = global::Google.ProtocolBuffers;
 using pbc = global::Google.ProtocolBuffers.Collections;

+ 1 - 1
src/ProtocolBuffers.Test/TestProtos/UnitTestNoGenericServicesProtoFile.cs

@@ -1,4 +1,4 @@
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// Generated by ProtoGen, Version=0.9.0.0, Culture=neutral, PublicKeyToken=8fd7408b07f8d2cd.  DO NOT EDIT!
 
 using pb = global::Google.ProtocolBuffers;
 using pbc = global::Google.ProtocolBuffers.Collections;

+ 1 - 1
src/ProtocolBuffers.Test/TestProtos/UnitTestOptimizeForProtoFile.cs

@@ -1,4 +1,4 @@
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// Generated by ProtoGen, Version=0.9.0.0, Culture=neutral, PublicKeyToken=8fd7408b07f8d2cd.  DO NOT EDIT!
 
 using pb = global::Google.ProtocolBuffers;
 using pbc = global::Google.ProtocolBuffers.Collections;

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

@@ -1,4 +1,4 @@
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// Generated by ProtoGen, Version=0.9.0.0, Culture=neutral, PublicKeyToken=8fd7408b07f8d2cd.  DO NOT EDIT!
 
 using pb = global::Google.ProtocolBuffers;
 using pbc = global::Google.ProtocolBuffers.Collections;

+ 7 - 0
src/ProtocolBuffers/ByteString.cs

@@ -78,6 +78,13 @@ namespace Google.ProtocolBuffers {
       return (byte[])bytes.Clone();
     }
 
+    /// <summary>
+    /// Constructs a ByteString from the Base64 Encoded String.
+    /// </summary>
+    public static ByteString FromBase64(string bytes) {
+      return new ByteString(System.Convert.FromBase64String(bytes));
+    }
+
     /// <summary>
     /// Constructs a ByteString from the given array. The contents
     /// are copied, so further modifications to the array will not

+ 1 - 1
src/ProtocolBuffers/DescriptorProtos/CSharpOptions.cs

@@ -1,4 +1,4 @@
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// Generated by ProtoGen, Version=0.9.0.0, Culture=neutral, PublicKeyToken=8fd7408b07f8d2cd.  DO NOT EDIT!
 
 using pb = global::Google.ProtocolBuffers;
 using pbc = global::Google.ProtocolBuffers.Collections;

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

@@ -1,4 +1,4 @@
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// Generated by ProtoGen, Version=0.9.0.0, Culture=neutral, PublicKeyToken=8fd7408b07f8d2cd.  DO NOT EDIT!
 
 using pb = global::Google.ProtocolBuffers;
 using pbc = global::Google.ProtocolBuffers.Collections;

+ 70 - 1
src/ProtocolBuffers/EnumLite.cs

@@ -1,5 +1,40 @@
-using System;
+#region Copyright notice and license
+// Protocol Buffers - Google's data interchange format
+// Copyright 2008 Google Inc.  All rights reserved.
+// http://github.com/jskeet/dotnet-protobufs/
+// Original C++/Java/Python code:
+// http://code.google.com/p/protobuf/
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#endregion
+
+using System;
 using System.Collections.Generic;
+using System.Globalization;
 using System.Text;
 
 namespace Google.ProtocolBuffers {
@@ -28,4 +63,38 @@ namespace Google.ProtocolBuffers {
   public interface IEnumLiteMap {
     bool IsValidValue(IEnumLite value);
   }
+
+  public class EnumLiteMap<TEnum> : IEnumLiteMap<IEnumLite>
+    where TEnum : struct, IComparable, IFormattable, IConvertible {
+    
+    struct EnumValue : IEnumLite, IComparable<IEnumLite> {
+      int _value;
+      public EnumValue(int value) {
+        _value = value;
+      }
+      int IEnumLite.Number {
+        get { return _value; }
+      }
+      int IComparable<IEnumLite>.CompareTo(IEnumLite other) {
+        return _value.CompareTo(other.Number);
+      }
+    }
+
+    private readonly SortedList<int, IEnumLite> items;
+
+    public EnumLiteMap() {
+      items = new SortedList<int, IEnumLite>();
+      foreach (TEnum evalue in Enum.GetValues(typeof(TEnum)))
+        items.Add(evalue.ToInt32(CultureInfo.InvariantCulture), new EnumValue(evalue.ToInt32(CultureInfo.InvariantCulture)));
+    }
+
+    IEnumLite IEnumLiteMap<IEnumLite>.FindValueByNumber(int number) {
+      IEnumLite val;
+      return items.TryGetValue(number, out val) ? val : null;
+    }
+
+    bool IEnumLiteMap.IsValidValue(IEnumLite value) {
+      return items.ContainsKey(value.Number);
+    }
+  }
 }

+ 172 - 0
src/ProtocolBuffers/ExtendableBuilderLite.cs

@@ -0,0 +1,172 @@
+#region Copyright notice and license
+// Protocol Buffers - Google's data interchange format
+// Copyright 2008 Google Inc.  All rights reserved.
+// http://github.com/jskeet/dotnet-protobufs/
+// Original C++/Java/Python code:
+// http://code.google.com/p/protobuf/
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#endregion
+
+using System;
+using System.Collections.Generic;
+
+namespace Google.ProtocolBuffers {
+  public abstract class ExtendableBuilderLite<TMessage, TBuilder> : GeneratedBuilderLite<TMessage, TBuilder>
+    where TMessage : ExtendableMessageLite<TMessage, TBuilder>
+    where TBuilder : GeneratedBuilderLite<TMessage, TBuilder> {
+
+    protected ExtendableBuilderLite() { }
+
+    /// <summary>
+    /// Checks if a singular extension is present
+    /// </summary>
+    public bool HasExtension<TExtension>(GeneratedExtensionLite<TMessage, TExtension> extension) {
+      return MessageBeingBuilt.HasExtension(extension);
+    }
+
+    /// <summary>
+    /// Returns the number of elements in a repeated extension.
+    /// </summary>
+    public int GetExtensionCount<TExtension>(GeneratedExtensionLite<TMessage, IList<TExtension>> extension) {
+      return MessageBeingBuilt.GetExtensionCount(extension);
+    }
+
+    /// <summary>
+    /// Returns the value of an extension.
+    /// </summary>
+    public TExtension GetExtension<TExtension>(GeneratedExtensionLite<TMessage, TExtension> extension) {
+      return MessageBeingBuilt.GetExtension(extension);
+    }
+
+    /// <summary>
+    /// Returns one element of a repeated extension.
+    /// </summary>
+    public TExtension GetExtension<TExtension>(GeneratedExtensionLite<TMessage, IList<TExtension>> extension, int index) {
+      return MessageBeingBuilt.GetExtension(extension, index);
+    }
+
+    /// <summary>
+    /// Sets the value of an extension.
+    /// </summary>
+    public TBuilder SetExtension<TExtension>(GeneratedExtensionLite<TMessage, TExtension> extension, TExtension value) {
+      ExtendableMessageLite<TMessage, TBuilder> message = MessageBeingBuilt;
+      message.VerifyExtensionContainingType(extension);
+      message.Extensions[extension.Descriptor] = (value);
+      return ThisBuilder;
+    }
+
+    /// <summary>
+    /// Sets the value of one element of a repeated extension.
+    /// </summary>
+    public TBuilder SetExtension<TExtension>(GeneratedExtensionLite<TMessage, IList<TExtension>> extension, int index, TExtension value) {
+      ExtendableMessageLite<TMessage, TBuilder> message = MessageBeingBuilt;
+      message.VerifyExtensionContainingType(extension);
+      message.Extensions[extension.Descriptor, index] = (value);
+      return ThisBuilder;
+    }
+
+    /// <summary>
+    /// Appends a value to a repeated extension.
+    /// </summary>
+    public ExtendableBuilderLite<TMessage, TBuilder> AddExtension<TExtension>(GeneratedExtensionLite<TMessage, IList<TExtension>> extension, TExtension value) {
+      ExtendableMessageLite<TMessage, TBuilder> message = MessageBeingBuilt;
+      message.VerifyExtensionContainingType(extension);
+      message.Extensions.AddRepeatedField(extension.Descriptor, (value));
+      return this;
+    }
+
+    /// <summary>
+    /// Clears an extension.
+    /// </summary>
+    public ExtendableBuilderLite<TMessage, TBuilder> ClearExtension<TExtension>(GeneratedExtensionLite<TMessage, TExtension> extension) {
+      ExtendableMessageLite<TMessage, TBuilder> message = MessageBeingBuilt;
+      message.VerifyExtensionContainingType(extension);
+      message.Extensions.ClearField(extension.Descriptor);
+      return this;
+    }
+
+    /// <summary>
+    /// Called by subclasses to parse an unknown field or an extension.
+    /// </summary>
+    /// <returns>true unless the tag is an end-group tag</returns>
+    [CLSCompliant(false)]
+    protected override bool ParseUnknownField(CodedInputStream input,
+        ExtensionRegistry extensionRegistry, uint tag) {
+      return input.SkipField(tag);
+    }
+
+    // ---------------------------------------------------------------
+    // Reflection
+
+    public object this[IFieldDescriptorLite field, int index] {
+      set {
+        if (field.IsExtension) {
+          ExtendableMessageLite<TMessage, TBuilder> message = MessageBeingBuilt;
+          message.Extensions[field, index] = value;
+        } else {
+          throw new NotSupportedException("Not supported in the lite runtime.");
+        }
+      }
+    }
+
+    public object this[IFieldDescriptorLite field] {
+      set {
+        if (field.IsExtension) {
+          ExtendableMessageLite<TMessage, TBuilder> message = MessageBeingBuilt;
+          message.Extensions[field] = value;
+        } else {
+          throw new NotSupportedException("Not supported in the lite runtime.");
+        }
+      }
+    }
+
+    public TBuilder ClearField(IFieldDescriptorLite field) {
+      if (field.IsExtension) {
+        ExtendableMessageLite<TMessage, TBuilder> message = MessageBeingBuilt;
+        message.Extensions.ClearField(field);
+        return ThisBuilder;
+      } else {
+        throw new NotSupportedException("Not supported in the lite runtime.");
+      }
+    }
+
+    public TBuilder AddRepeatedField(IFieldDescriptorLite field, object value) {
+      if (field.IsExtension) {
+        ExtendableMessageLite<TMessage, TBuilder> message = MessageBeingBuilt;
+        message.Extensions.AddRepeatedField(field, value);
+        return ThisBuilder;
+      } else {
+        throw new NotSupportedException("Not supported in the lite runtime.");
+      }
+    }
+
+    protected void MergeExtensionFields(ExtendableMessageLite<TMessage, TBuilder> other) {
+      MessageBeingBuilt.Extensions.MergeFrom(other.Extensions);
+    }
+  }
+}

+ 156 - 0
src/ProtocolBuffers/ExtendableMessageLite.cs

@@ -0,0 +1,156 @@
+#region Copyright notice and license
+// Protocol Buffers - Google's data interchange format
+// Copyright 2008 Google Inc.  All rights reserved.
+// http://github.com/jskeet/dotnet-protobufs/
+// Original C++/Java/Python code:
+// http://code.google.com/p/protobuf/
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#endregion
+
+using System;
+using System.Collections.Generic;
+namespace Google.ProtocolBuffers {
+  public abstract class ExtendableMessageLite<TMessage, TBuilder> : GeneratedMessageLite<TMessage, TBuilder>
+    where TMessage : GeneratedMessageLite<TMessage, TBuilder>
+    where TBuilder : GeneratedBuilderLite<TMessage, TBuilder> {
+
+    protected ExtendableMessageLite() { }
+    private readonly FieldSet extensions = FieldSet.CreateInstance();
+
+    /// <summary>
+    /// Access for the builder.
+    /// </summary>
+    internal FieldSet Extensions {
+      get { return extensions; }
+    }
+
+    /// <summary>
+    /// Checks if a singular extension is present.
+    /// </summary>
+    public bool HasExtension<TExtension>(GeneratedExtensionLite<TMessage, TExtension> extension) {
+      VerifyExtensionContainingType(extension);
+      return extensions.HasField(extension.Descriptor);
+    }
+
+    /// <summary>
+    /// Returns the number of elements in a repeated extension.
+    /// </summary>
+    public int GetExtensionCount<TExtension>(GeneratedExtensionLite<TMessage, IList<TExtension>> extension) {
+      VerifyExtensionContainingType(extension);
+      return extensions.GetRepeatedFieldCount(extension.Descriptor);
+    }
+
+    /// <summary>
+    /// Returns the value of an extension.
+    /// </summary>
+    public TExtension GetExtension<TExtension>(GeneratedExtensionLite<TMessage, TExtension> extension) {
+      VerifyExtensionContainingType(extension);
+      object value = extensions[extension.Descriptor];
+      if (value == null) {
+        return extension.DefaultValue;
+      } else {
+        return (TExtension)value;
+      }
+    }
+
+    /// <summary>
+    /// Returns one element of a repeated extension.
+    /// </summary>
+    public TExtension GetExtension<TExtension>(GeneratedExtensionLite<TMessage, IList<TExtension>> extension, int index) {
+      VerifyExtensionContainingType(extension);
+      return (TExtension)extensions[extension.Descriptor, index];
+    }
+
+    /// <summary>
+    /// Called to check if all extensions are initialized.
+    /// </summary>
+    protected bool ExtensionsAreInitialized {
+      get { return extensions.IsInitialized; }
+    }
+
+    public override bool IsInitialized {
+      get {
+        return ExtensionsAreInitialized;
+      }
+    }
+
+    /// <summary>
+    /// Used by subclasses to serialize extensions. Extension ranges may be
+    /// interleaves with field numbers, but we must write them in canonical
+    /// (sorted by field number) order. This class helps us to write individual
+    /// ranges of extensions at once.
+    /// 
+    /// TODO(jonskeet): See if we can improve this in terms of readability.
+    /// </summary>
+    protected class ExtensionWriter {
+      readonly IEnumerator<KeyValuePair<IFieldDescriptorLite, object>> iterator;
+      readonly FieldSet extensions;
+      KeyValuePair<IFieldDescriptorLite, object>? next = null;
+
+      internal ExtensionWriter(ExtendableMessageLite<TMessage, TBuilder> message) {
+        extensions = message.extensions;
+        iterator = message.extensions.GetEnumerator();
+        if (iterator.MoveNext()) {
+          next = iterator.Current;
+        }
+      }
+
+      public void WriteUntil(int end, CodedOutputStream output) {
+        while (next != null && next.Value.Key.FieldNumber < end) {
+          extensions.WriteField(next.Value.Key, next.Value.Value, output);
+          if (iterator.MoveNext()) {
+            next = iterator.Current;
+          } else {
+            next = null;
+          }
+        }
+      }
+    }
+
+    protected ExtensionWriter CreateExtensionWriter(ExtendableMessageLite<TMessage, TBuilder> message) {
+      return new ExtensionWriter(message);
+    }
+
+    /// <summary>
+    /// Called by subclasses to compute the size of extensions.
+    /// </summary>
+    protected int ExtensionsSerializedSize {
+      get { return extensions.SerializedSize; }
+    }
+
+    internal void VerifyExtensionContainingType<TExtension>(GeneratedExtensionLite<TMessage, TExtension> extension) {
+      if (!ReferenceEquals(extension.ContainingTypeDefaultInstance, DefaultInstanceForType)) {
+        // This can only happen if someone uses unchecked operations.
+        throw new ArgumentException(
+          String.Format("Extension is for type \"{0}\" which does not match message type \"{1}\".",
+          extension.ContainingTypeDefaultInstance, DefaultInstanceForType
+          ));
+      }
+    }
+  }
+}

+ 117 - 0
src/ProtocolBuffers/GeneratedBuilderLite.cs

@@ -0,0 +1,117 @@
+#region Copyright notice and license
+// Protocol Buffers - Google's data interchange format
+// Copyright 2008 Google Inc.  All rights reserved.
+// http://github.com/jskeet/dotnet-protobufs/
+// Original C++/Java/Python code:
+// http://code.google.com/p/protobuf/
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#endregion
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+
+namespace Google.ProtocolBuffers {
+  /// <summary>
+  /// All generated protocol message builder classes extend this class. It implements
+  /// most of the IBuilder interface using reflection. Users can ignore this class
+  /// as an implementation detail.
+  /// </summary>
+  public abstract class GeneratedBuilderLite<TMessage, TBuilder> : AbstractBuilderLite<TMessage, TBuilder>
+    where TMessage : GeneratedMessageLite<TMessage, TBuilder>
+    where TBuilder : GeneratedBuilderLite<TMessage, TBuilder> {
+
+    /// <summary>
+    /// Returns the message being built at the moment.
+    /// </summary>
+    protected abstract TMessage MessageBeingBuilt { get; }
+
+    public override TBuilder MergeFrom(IMessageLite other) {
+      //do nothing, Lite runtime does not support cross-message merges
+      return ThisBuilder;
+    }
+
+    public abstract TBuilder MergeFrom(TMessage other);
+
+    public override bool IsInitialized {
+      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>
+    /// <returns>true unless the tag is an end-group tag</returns>
+    [CLSCompliant(false)]
+    protected virtual bool ParseUnknownField(CodedInputStream input, 
+                                     ExtensionRegistry extensionRegistry, uint tag) {
+      return input.SkipField(tag);
+    }
+
+    /// <summary>
+    /// Like Build(), but will wrap UninitializedMessageException in
+    /// InvalidProtocolBufferException.
+    /// </summary>
+    public TMessage BuildParsed() {
+      if (!IsInitialized) {
+        throw new UninitializedMessageException(MessageBeingBuilt).AsInvalidProtocolBufferException();
+      }
+      return BuildPartial();
+    }
+
+    /// <summary>
+    /// Implementation of <see cref="IBuilder{TMessage, TBuilder}.Build" />.
+    /// </summary>
+    public override TMessage Build() {
+      // If the message is null, we'll throw a more appropriate exception in BuildPartial.
+      if (MessageBeingBuilt != null && !IsInitialized) {
+        throw new UninitializedMessageException(MessageBeingBuilt);
+      }
+      return BuildPartial();
+    }
+  }
+}

+ 125 - 12
src/ProtocolBuffers/GeneratedExtensionLite.cs

@@ -1,4 +1,40 @@
-using System;
+#region Copyright notice and license
+// Protocol Buffers - Google's data interchange format
+// Copyright 2008 Google Inc.  All rights reserved.
+// http://github.com/jskeet/dotnet-protobufs/
+// Original C++/Java/Python code:
+// http://code.google.com/p/protobuf/
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#endregion
+
+using System;
+using System.Collections.Generic;
+using Google.ProtocolBuffers.Collections;
 using Google.ProtocolBuffers.Descriptors;
 
 namespace Google.ProtocolBuffers {
@@ -9,28 +45,87 @@ namespace Google.ProtocolBuffers {
     IMessageLite MessageDefaultInstance { get; }
   }
 
-  public class ExtensionDescriptorLite {
-    private readonly EnumLiteMap enumTypeMap;
+  public class ExtensionDescriptorLite : IFieldDescriptorLite {
+    /// <summary>
+    /// Immutable mapping from field type to mapped type. Built using the attributes on
+    /// FieldType values.
+    /// </summary>
+    public static readonly IDictionary<FieldType, MappedType> FieldTypeToMappedTypeMap = MapFieldTypes();
+
+    private static IDictionary<FieldType, MappedType> MapFieldTypes() {
+      var map = new Dictionary<FieldType, MappedType>();
+      foreach (System.Reflection.FieldInfo field in typeof(FieldType).GetFields(System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.Public)) {
+        FieldType fieldType = (FieldType)field.GetValue(null);
+        FieldMappingAttribute mapping = (FieldMappingAttribute)field.GetCustomAttributes(typeof(FieldMappingAttribute), false)[0];
+        map[fieldType] = mapping.MappedType;
+      }
+      return Dictionaries.AsReadOnly(map);
+    }
+
+    private readonly IEnumLiteMap enumTypeMap;
     private readonly int number;
     private readonly FieldType type;
     private readonly bool isRepeated;
     private readonly bool isPacked;
+    private readonly MappedType mapType;
+    private readonly object defaultValue;
 
-    public ExtensionDescriptorLite(EnumLiteMap enumTypeMap, int number, FieldType type, bool isRepeated, bool isPacked) {
+    public ExtensionDescriptorLite(IEnumLiteMap enumTypeMap, int number, FieldType type, object defaultValue, bool isRepeated, bool isPacked) {
       this.enumTypeMap = enumTypeMap;
       this.number = number;
       this.type = type;
+      this.mapType = FieldTypeToMappedTypeMap[type];
       this.isRepeated = isRepeated;
       this.isPacked = isPacked;
+      this.defaultValue = defaultValue;
     }
 
-    public int Number {
+    public bool IsRepeated {
+      get { return isRepeated; }
+    }
+
+    public bool IsRequired {
+      get { return false; }
+    }
+
+    public bool IsPacked {
+      get { return isPacked; }
+    }
+
+    public bool IsExtension {
+      get { return true; }
+    }
+
+#warning ToDo - Discover the meaning and purpose of this durring serialization and return the correct value
+    public bool MessageSetWireFormat {
+      get { return true; }
+    }
+
+    public int FieldNumber {
       get { return number; }
     }
+
+    public IEnumLiteMap EnumType {
+      get { return enumTypeMap; }
+    }
+
+    public FieldType FieldType {
+      get { return type; }
+    }
+
+    public MappedType MappedType {
+      get { return mapType; }
+    }
+
+    public object DefaultValue {
+      get { return defaultValue; }
+    }
+
+    public int CompareTo(IFieldDescriptorLite other) {
+      return FieldNumber.CompareTo(other.FieldNumber);
+    }
   }
   
-  public class EnumLiteMap { }
-
   public class GeneratedExtensionLite<TContainingType, TExtensionType> : IGeneratedExtensionLite
     where TContainingType : IMessageLite {
 
@@ -62,11 +157,11 @@ namespace Google.ProtocolBuffers {
         TContainingType containingTypeDefaultInstance,
         TExtensionType defaultValue,
         IMessageLite messageDefaultInstance,
-      EnumLiteMap enumTypeMap,
+        IEnumLiteMap enumTypeMap,
         int number,
         FieldType type)
       : this(containingTypeDefaultInstance, defaultValue, messageDefaultInstance,
-          new ExtensionDescriptorLite(enumTypeMap, number, type,
+          new ExtensionDescriptorLite(enumTypeMap, number, type, defaultValue,
             false /* isRepeated */, false /* isPacked */)) {
     }
 
@@ -75,15 +170,29 @@ namespace Google.ProtocolBuffers {
       TContainingType containingTypeDefaultInstance,
       TExtensionType defaultValue,
       IMessageLite messageDefaultInstance,
-      EnumLiteMap enumTypeMap,
+      IEnumLiteMap enumTypeMap,
       int number,
       FieldType type,
       bool isPacked)
       : this(containingTypeDefaultInstance, defaultValue, messageDefaultInstance,
-          new ExtensionDescriptorLite(enumTypeMap, number, type,
+          new ExtensionDescriptorLite(enumTypeMap, number, type, defaultValue,
             true /* isRepeated */, isPacked)) {
     }
 
+    /// <summary>
+    /// Returns information about this extension
+    /// </summary>
+    public IFieldDescriptorLite Descriptor {
+      get { return descriptor; }
+    } 
+
+    /// <summary>
+    /// Returns the default value for this extension
+    /// </summary>
+    public TExtensionType DefaultValue {
+      get { return defaultValue; }
+    } 
+
     /// <summary>
     /// used for the extension registry
     /// </summary>
@@ -102,7 +211,7 @@ namespace Google.ProtocolBuffers {
     /** Get the field number. */
     public int Number {
       get {
-        return descriptor.Number;
+        return descriptor.FieldNumber;
       }
     }
     /**
@@ -114,5 +223,9 @@ namespace Google.ProtocolBuffers {
         return messageDefaultInstance;
       }
     }
+
+    public object SingularFromReflectionType(object value) {
+      return value;
+    }
   }
 }

+ 52 - 0
src/ProtocolBuffers/GeneratedMessageLite.cs

@@ -0,0 +1,52 @@
+#region Copyright notice and license
+// Protocol Buffers - Google's data interchange format
+// Copyright 2008 Google Inc.  All rights reserved.
+// http://github.com/jskeet/dotnet-protobufs/
+// Original C++/Java/Python code:
+// http://code.google.com/p/protobuf/
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Collections;
+
+namespace Google.ProtocolBuffers {
+
+  /// <summary>
+  /// All generated protocol message classes extend this class. It implements
+  /// most of the IMessage interface using reflection. Users
+  /// can ignore this class as an implementation detail.
+  /// </summary>
+  public abstract class GeneratedMessageLite<TMessage, TBuilder> : AbstractMessageLite<TMessage, TBuilder>
+    where TMessage : GeneratedMessageLite<TMessage, TBuilder>
+    where TBuilder : GeneratedBuilderLite<TMessage, TBuilder> {
+
+    protected abstract TMessage ThisMessage { get; }
+  }
+}

+ 4 - 0
src/ProtocolBuffers/ProtocolBuffers.csproj

@@ -92,7 +92,9 @@
     <Compile Include="DynamicMessage.cs" />
     <Compile Include="EnumLite.cs" />
     <Compile Include="ExtendableBuilder.cs" />
+    <Compile Include="ExtendableBuilderLite.cs" />
     <Compile Include="ExtendableMessage.cs" />
+    <Compile Include="ExtendableMessageLite.cs" />
     <Compile Include="ExtensionInfo.cs">
       <SubType>Code</SubType>
     </Compile>
@@ -109,7 +111,9 @@
     <Compile Include="FieldAccess\RepeatedMessageAccessor.cs" />
     <Compile Include="FieldSet.cs" />
     <Compile Include="GeneratedBuilder.cs" />
+    <Compile Include="GeneratedBuilderLite.cs" />
     <Compile Include="GeneratedExtensionLite.cs" />
+    <Compile Include="GeneratedMessageLite.cs" />
     <Compile Include="GeneratedRepeatExtension.cs" />
     <Compile Include="GeneratedSingleExtension.cs" />
     <Compile Include="GeneratedMessage.cs" />

+ 5 - 0
src/ProtocolBuffers/ProtocolBuffersLite.csproj

@@ -58,11 +58,16 @@
     <Compile Include="AbstractBuilderLite.cs" />
     <Compile Include="AbstractMessageLite.cs" />
     <Compile Include="Collections\Dictionaries.cs" />
+    <Compile Include="Collections\Enumerables.cs" />
+    <Compile Include="Collections\IPopsicleList.cs" />
     <Compile Include="Collections\Lists.cs" />
+    <Compile Include="Collections\PopsicleList.cs" />
+    <Compile Include="Collections\ReadOnlyDictionary.cs" />
     <Compile Include="Descriptors\FieldMappingAttribute.cs" />
     <Compile Include="Descriptors\FieldType.cs" />
     <Compile Include="Descriptors\MappedType.cs" />
     <Compile Include="EnumLite.cs" />
+    <Compile Include="ExtendableBuilderLite.cs" />
     <Compile Include="ExtendableMessageLite.cs" />
     <Compile Include="FieldSet.cs" />
     <Compile Include="GeneratedBuilderLite.cs" />

+ 8 - 2
src/ProtocolBuffers/UninitializedMessageException.cs

@@ -53,8 +53,6 @@ namespace Google.ProtocolBuffers {
         : base(BuildDescription(missingFields)) {
       this.missingFields = new List<string>(missingFields);
     }
-
-    
     /// <summary>
     /// Returns a read-only list of human-readable names of
     /// required fields missing from this message. Each name
@@ -90,6 +88,14 @@ namespace Google.ProtocolBuffers {
       return description.ToString();
     }
 
+    /// <summary>
+    /// For Lite exceptions that do not known how to enumerate missing fields
+    /// </summary>
+    public UninitializedMessageException(IMessageLite message)
+      : base(String.Format("Message {0} is missing required fields", message.GetType())) {
+      missingFields = new List<string>();
+    }
+
 #if !LITE
     public UninitializedMessageException(IMessage message)
         : this(FindMissingFields(message)) {

+ 2 - 6
src/ProtocolBuffersLite.Test/ProtocolBuffersLite.Test.csproj

@@ -54,15 +54,11 @@
     <Reference Include="System.Xml" />
   </ItemGroup>
   <ItemGroup>
-    <Compile Include="..\..\tmp\UnitTestLiteProtoFile.cs">
-      <Link>UnitTestLiteProtoFile.cs</Link>
-    </Compile>
     <Compile Include="..\ProtocolBuffers.Test\Properties\AssemblyInfo.cs">
       <Link>Properties\AssemblyInfo.cs</Link>
     </Compile>
-    <Compile Include="Todo.cs" />
-    <None Include="TestProtos\UnittestLite.cs" />
-    <None Include="TestProtos\UnittestLiteImportsNonlite.cs" />
+    <Compile Include="TestProtos\UnitTestImportLiteProtoFile.cs" />
+    <Compile Include="TestProtos\UnitTestLiteProtoFile.cs" />
   </ItemGroup>
   <ItemGroup>
     <None Include="..\ProtocolBuffers.Test\Properties\Google.ProtocolBuffers.Test.snk">

+ 227 - 0
src/ProtocolBuffersLite.Test/TestProtos/UnitTestImportLiteProtoFile.cs

@@ -0,0 +1,227 @@
+// Generated by ProtoGen, Version=0.9.0.0, Culture=neutral, PublicKeyToken=8fd7408b07f8d2cd.  DO NOT EDIT!
+
+using pb = global::Google.ProtocolBuffers;
+using pbc = global::Google.ProtocolBuffers.Collections;
+using pbd = global::Google.ProtocolBuffers.Descriptors;
+using scg = global::System.Collections.Generic;
+namespace Google.ProtocolBuffers.TestProtos {
+  
+  public static partial class UnitTestImportLiteProtoFile {
+  
+    #region Extension registration
+    public static void RegisterAllExtensions(pb::ExtensionRegistry registry) {
+    }
+    #endregion
+    #region Static variables
+    #endregion
+    #region Extensions
+    internal static readonly object Descriptor;
+    static UnitTestImportLiteProtoFile() {
+      Descriptor = null;
+    }
+    #endregion
+    
+  }
+  #region Enums
+  public enum ImportEnumLite {
+    IMPORT_LITE_FOO = 7,
+    IMPORT_LITE_BAR = 8,
+    IMPORT_LITE_BAZ = 9,
+  }
+  
+  #endregion
+  
+  #region Messages
+  public sealed partial class ImportMessageLite : pb::GeneratedMessageLite<ImportMessageLite, ImportMessageLite.Builder> {
+    private static readonly ImportMessageLite defaultInstance = new Builder().BuildPartial();
+    public static ImportMessageLite DefaultInstance {
+      get { return defaultInstance; }
+    }
+    
+    public override ImportMessageLite DefaultInstanceForType {
+      get { return defaultInstance; }
+    }
+    
+    protected override ImportMessageLite ThisMessage {
+      get { return this; }
+    }
+    
+    public const int DFieldNumber = 1;
+    private bool hasD;
+    private int d_ = 0;
+    public bool HasD {
+      get { return hasD; }
+    }
+    public int D {
+      get { return d_; }
+    }
+    
+    public override bool IsInitialized {
+      get {
+        return true;
+      }
+    }
+    
+    public override void WriteTo(pb::CodedOutputStream output) {
+      int size = SerializedSize;
+      if (HasD) {
+        output.WriteInt32(1, D);
+      }
+    }
+    
+    private int memoizedSerializedSize = -1;
+    public override int SerializedSize {
+      get {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+        
+        size = 0;
+        if (HasD) {
+          size += pb::CodedOutputStream.ComputeInt32Size(1, D);
+        }
+        memoizedSerializedSize = size;
+        return size;
+      }
+    }
+    
+    public static ImportMessageLite ParseFrom(pb::ByteString data) {
+      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
+    }
+    public static ImportMessageLite ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
+      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
+    }
+    public static ImportMessageLite ParseFrom(byte[] data) {
+      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
+    }
+    public static ImportMessageLite ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
+      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
+    }
+    public static ImportMessageLite ParseFrom(global::System.IO.Stream input) {
+      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
+    }
+    public static ImportMessageLite ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
+      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
+    }
+    public static ImportMessageLite ParseDelimitedFrom(global::System.IO.Stream input) {
+      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
+    }
+    public static ImportMessageLite ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
+      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
+    }
+    public static ImportMessageLite ParseFrom(pb::CodedInputStream input) {
+      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
+    }
+    public static ImportMessageLite ParseFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
+      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
+    }
+    public static Builder CreateBuilder() { return new Builder(); }
+    public override Builder ToBuilder() { return CreateBuilder(this); }
+    public override Builder CreateBuilderForType() { return new Builder(); }
+    public static Builder CreateBuilder(ImportMessageLite prototype) {
+      return (Builder) new Builder().MergeFrom(prototype);
+    }
+    
+    public sealed partial class Builder : pb::GeneratedBuilderLite<ImportMessageLite, Builder> {
+      protected override Builder ThisBuilder {
+        get { return this; }
+      }
+      public Builder() {}
+      
+      ImportMessageLite result = new ImportMessageLite();
+      
+      protected override ImportMessageLite MessageBeingBuilt {
+        get { return result; }
+      }
+      
+      public override Builder Clear() {
+        result = new ImportMessageLite();
+        return this;
+      }
+      
+      public override Builder Clone() {
+        return new Builder().MergeFrom(result);
+      }
+      
+      public override ImportMessageLite DefaultInstanceForType {
+        get { return global::Google.ProtocolBuffers.TestProtos.ImportMessageLite.DefaultInstance; }
+      }
+      
+      public override ImportMessageLite BuildPartial() {
+        if (result == null) {
+          throw new global::System.InvalidOperationException("build() has already been called on this Builder");
+        }
+        ImportMessageLite returnMe = result;
+        result = null;
+        return returnMe;
+      }
+      
+      public override Builder MergeFrom(pb::IMessageLite other) {
+        if (other is ImportMessageLite) {
+          return MergeFrom((ImportMessageLite) other);
+        } else {
+          base.MergeFrom(other);
+          return this;
+        }
+      }
+      
+      public override Builder MergeFrom(ImportMessageLite other) {
+        if (other == global::Google.ProtocolBuffers.TestProtos.ImportMessageLite.DefaultInstance) return this;
+        if (other.HasD) {
+          D = other.D;
+        }
+        return this;
+      }
+      
+      public override Builder MergeFrom(pb::CodedInputStream input) {
+        return MergeFrom(input, pb::ExtensionRegistry.Empty);
+      }
+      
+      public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
+        while (true) {
+          uint tag = input.ReadTag();
+          switch (tag) {
+            case 0: {
+              return this;
+            }
+            default: {
+              if (pb::WireFormat.IsEndGroupTag(tag)) {
+                return this;
+              }
+              ParseUnknownField(input, extensionRegistry, tag);
+              break;
+            }
+            case 8: {
+              D = input.ReadInt32();
+              break;
+            }
+          }
+        }
+      }
+      
+      
+      public bool HasD {
+        get { return result.HasD; }
+      }
+      public int D {
+        get { return result.D; }
+        set { SetD(value); }
+      }
+      public Builder SetD(int value) {
+        result.hasD = true;
+        result.d_ = value;
+        return this;
+      }
+      public Builder ClearD() {
+        result.hasD = false;
+        result.d_ = 0;
+        return this;
+      }
+    }
+    static ImportMessageLite() {
+      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnitTestImportLiteProtoFile.Descriptor, null);
+    }
+  }
+  
+  #endregion
+  
+}

+ 82 - 48
src/ProtocolBuffersLite.Test/TestProtos/UnitTestLiteImportNonLiteProtoFile.cs

@@ -1,4 +1,4 @@
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// Generated by ProtoGen, Version=0.9.0.0, Culture=neutral, PublicKeyToken=8fd7408b07f8d2cd.  DO NOT EDIT!
 
 using pb = global::Google.ProtocolBuffers;
 using pbc = global::Google.ProtocolBuffers.Collections;
@@ -13,47 +13,17 @@ namespace Google.ProtocolBuffers.TestProtos {
     }
     #endregion
     #region Static variables
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestLiteImportsNonlite__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestLiteImportsNonlite, global::Google.ProtocolBuffers.TestProtos.TestLiteImportsNonlite.Builder> internal__static_protobuf_unittest_TestLiteImportsNonlite__FieldAccessorTable;
     #endregion
-    #region Descriptor
-    public static pbd::FileDescriptor Descriptor {
-      get { return descriptor; }
-    }
-    private static pbd::FileDescriptor descriptor;
-    
+    #region Extensions
+    internal static readonly object Descriptor;
     static UnitTestLiteImportNonLiteProtoFile() {
-      byte[] descriptorData = global::System.Convert.FromBase64String(
-          "CjNnb29nbGUvcHJvdG9idWYvdW5pdHRlc3RfbGl0ZV9pbXBvcnRzX25vbmxp" + 
-          "dGUucHJvdG8SEXByb3RvYnVmX3VuaXR0ZXN0GiRnb29nbGUvcHJvdG9idWYv" + 
-          "Y3NoYXJwX29wdGlvbnMucHJvdG8aHmdvb2dsZS9wcm90b2J1Zi91bml0dGVz" + 
-          "dC5wcm90byJKChZUZXN0TGl0ZUltcG9ydHNOb25saXRlEjAKB21lc3NhZ2UY" + 
-          "ASABKAsyHy5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsVHlwZXNCTEgDwj5H" + 
-          "CiFHb29nbGUuUHJvdG9jb2xCdWZmZXJzLlRlc3RQcm90b3MSIlVuaXRUZXN0" + 
-          "TGl0ZUltcG9ydE5vbkxpdGVQcm90b0ZpbGU=");
-      pbd::FileDescriptor.InternalDescriptorAssigner assigner = delegate(pbd::FileDescriptor root) {
-        descriptor = root;
-        internal__static_protobuf_unittest_TestLiteImportsNonlite__Descriptor = Descriptor.MessageTypes[0];
-        internal__static_protobuf_unittest_TestLiteImportsNonlite__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestLiteImportsNonlite, global::Google.ProtocolBuffers.TestProtos.TestLiteImportsNonlite.Builder>(internal__static_protobuf_unittest_TestLiteImportsNonlite__Descriptor,
-                new string[] { "Message", });
-        pb::ExtensionRegistry registry = pb::ExtensionRegistry.CreateInstance();
-        RegisterAllExtensions(registry);
-        global::Google.ProtocolBuffers.DescriptorProtos.CSharpOptions.RegisterAllExtensions(registry);
-        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.RegisterAllExtensions(registry);
-        return registry;
-      };
-      pbd::FileDescriptor.InternalBuildGeneratedFileFrom(descriptorData,
-          new pbd::FileDescriptor[] {
-          global::Google.ProtocolBuffers.DescriptorProtos.CSharpOptions.Descriptor, 
-          global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor, 
-          }, assigner);
+      Descriptor = null;
     }
     #endregion
     
   }
   #region Messages
-  public sealed partial class TestLiteImportsNonlite : pb::GeneratedMessage<TestLiteImportsNonlite, TestLiteImportsNonlite.Builder> {
+  public sealed partial class TestLiteImportsNonlite : pb::GeneratedMessageLite<TestLiteImportsNonlite, TestLiteImportsNonlite.Builder> {
     private static readonly TestLiteImportsNonlite defaultInstance = new Builder().BuildPartial();
     public static TestLiteImportsNonlite DefaultInstance {
       get { return defaultInstance; }
@@ -67,14 +37,6 @@ namespace Google.ProtocolBuffers.TestProtos {
       get { return this; }
     }
     
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::Google.ProtocolBuffers.TestProtos.UnitTestLiteImportNonLiteProtoFile.internal__static_protobuf_unittest_TestLiteImportsNonlite__Descriptor; }
-    }
-    
-    protected override pb::FieldAccess.FieldAccessorTable<TestLiteImportsNonlite, TestLiteImportsNonlite.Builder> InternalFieldAccessors {
-      get { return global::Google.ProtocolBuffers.TestProtos.UnitTestLiteImportNonLiteProtoFile.internal__static_protobuf_unittest_TestLiteImportsNonlite__FieldAccessorTable; }
-    }
-    
     public const int MessageFieldNumber = 1;
     private bool hasMessage;
     private global::Google.ProtocolBuffers.TestProtos.TestAllTypes message_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypes.DefaultInstance;
@@ -85,6 +47,34 @@ namespace Google.ProtocolBuffers.TestProtos {
       get { return message_; }
     }
     
+    public override bool IsInitialized {
+      get {
+        return true;
+      }
+    }
+    
+    public override void WriteTo(pb::CodedOutputStream output) {
+      int size = SerializedSize;
+      if (HasMessage) {
+        output.WriteMessage(1, Message);
+      }
+    }
+    
+    private int memoizedSerializedSize = -1;
+    public override int SerializedSize {
+      get {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+        
+        size = 0;
+        if (HasMessage) {
+          size += pb::CodedOutputStream.ComputeMessageSize(1, Message);
+        }
+        memoizedSerializedSize = size;
+        return size;
+      }
+    }
+    
     public static TestLiteImportsNonlite ParseFrom(pb::ByteString data) {
       return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
     }
@@ -122,7 +112,7 @@ namespace Google.ProtocolBuffers.TestProtos {
       return (Builder) new Builder().MergeFrom(prototype);
     }
     
-    public sealed partial class Builder : pb::GeneratedBuilder<TestLiteImportsNonlite, Builder> {
+    public sealed partial class Builder : pb::GeneratedBuilderLite<TestLiteImportsNonlite, Builder> {
       protected override Builder ThisBuilder {
         get { return this; }
       }
@@ -143,10 +133,6 @@ namespace Google.ProtocolBuffers.TestProtos {
         return new Builder().MergeFrom(result);
       }
       
-      public override pbd::MessageDescriptor DescriptorForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.TestLiteImportsNonlite.Descriptor; }
-      }
-      
       public override TestLiteImportsNonlite DefaultInstanceForType {
         get { return global::Google.ProtocolBuffers.TestProtos.TestLiteImportsNonlite.DefaultInstance; }
       }
@@ -160,6 +146,54 @@ namespace Google.ProtocolBuffers.TestProtos {
         return returnMe;
       }
       
+      public override Builder MergeFrom(pb::IMessageLite other) {
+        if (other is TestLiteImportsNonlite) {
+          return MergeFrom((TestLiteImportsNonlite) other);
+        } else {
+          base.MergeFrom(other);
+          return this;
+        }
+      }
+      
+      public override Builder MergeFrom(TestLiteImportsNonlite other) {
+        if (other == global::Google.ProtocolBuffers.TestProtos.TestLiteImportsNonlite.DefaultInstance) return this;
+        if (other.HasMessage) {
+          MergeMessage(other.Message);
+        }
+        return this;
+      }
+      
+      public override Builder MergeFrom(pb::CodedInputStream input) {
+        return MergeFrom(input, pb::ExtensionRegistry.Empty);
+      }
+      
+      public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
+        while (true) {
+          uint tag = input.ReadTag();
+          switch (tag) {
+            case 0: {
+              return this;
+            }
+            default: {
+              if (pb::WireFormat.IsEndGroupTag(tag)) {
+                return this;
+              }
+              ParseUnknownField(input, extensionRegistry, tag);
+              break;
+            }
+            case 10: {
+              global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Builder subBuilder = global::Google.ProtocolBuffers.TestProtos.TestAllTypes.CreateBuilder();
+              if (HasMessage) {
+                subBuilder.MergeFrom(Message);
+              }
+              input.ReadMessage(subBuilder, extensionRegistry);
+              Message = subBuilder.BuildPartial();
+              break;
+            }
+          }
+        }
+      }
+      
       
       public bool HasMessage {
        get { return result.HasMessage; }

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 788 - 519
src/ProtocolBuffersLite.Test/TestProtos/UnitTestLiteProtoFile.cs


+ 0 - 7605
src/ProtocolBuffersLite.Test/TestProtos/UnittestLite.cs

@@ -1,7605 +0,0 @@
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
-
-using pb = global::Google.ProtocolBuffers;
-using pbc = global::Google.ProtocolBuffers.Collections;
-using pbd = global::Google.ProtocolBuffers.Descriptors;
-using scg = global::System.Collections.Generic;
-namespace protobuf_unittest {
-  
-  public static partial class UnittestLite {
-  
-    #region Extension registration
-    public static void RegisterAllExtensions(pb::ExtensionRegistry registry) {
-      registry.Add(global::protobuf_unittest.UnittestLite.OptionalInt32ExtensionLite);
-      registry.Add(global::protobuf_unittest.UnittestLite.OptionalInt64ExtensionLite);
-      registry.Add(global::protobuf_unittest.UnittestLite.OptionalUint32ExtensionLite);
-      registry.Add(global::protobuf_unittest.UnittestLite.OptionalUint64ExtensionLite);
-      registry.Add(global::protobuf_unittest.UnittestLite.OptionalSint32ExtensionLite);
-      registry.Add(global::protobuf_unittest.UnittestLite.OptionalSint64ExtensionLite);
-      registry.Add(global::protobuf_unittest.UnittestLite.OptionalFixed32ExtensionLite);
-      registry.Add(global::protobuf_unittest.UnittestLite.OptionalFixed64ExtensionLite);
-      registry.Add(global::protobuf_unittest.UnittestLite.OptionalSfixed32ExtensionLite);
-      registry.Add(global::protobuf_unittest.UnittestLite.OptionalSfixed64ExtensionLite);
-      registry.Add(global::protobuf_unittest.UnittestLite.OptionalFloatExtensionLite);
-      registry.Add(global::protobuf_unittest.UnittestLite.OptionalDoubleExtensionLite);
-      registry.Add(global::protobuf_unittest.UnittestLite.OptionalBoolExtensionLite);
-      registry.Add(global::protobuf_unittest.UnittestLite.OptionalStringExtensionLite);
-      registry.Add(global::protobuf_unittest.UnittestLite.OptionalBytesExtensionLite);
-      registry.Add(global::protobuf_unittest.UnittestLite.OptionalGroupExtensionLite);
-      registry.Add(global::protobuf_unittest.UnittestLite.OptionalNestedMessageExtensionLite);
-      registry.Add(global::protobuf_unittest.UnittestLite.OptionalForeignMessageExtensionLite);
-      registry.Add(global::protobuf_unittest.UnittestLite.OptionalImportMessageExtensionLite);
-      registry.Add(global::protobuf_unittest.UnittestLite.OptionalNestedEnumExtensionLite);
-      registry.Add(global::protobuf_unittest.UnittestLite.OptionalForeignEnumExtensionLite);
-      registry.Add(global::protobuf_unittest.UnittestLite.OptionalImportEnumExtensionLite);
-      registry.Add(global::protobuf_unittest.UnittestLite.OptionalStringPieceExtensionLite);
-      registry.Add(global::protobuf_unittest.UnittestLite.OptionalCordExtensionLite);
-      registry.Add(global::protobuf_unittest.UnittestLite.RepeatedInt32ExtensionLite);
-      registry.Add(global::protobuf_unittest.UnittestLite.RepeatedInt64ExtensionLite);
-      registry.Add(global::protobuf_unittest.UnittestLite.RepeatedUint32ExtensionLite);
-      registry.Add(global::protobuf_unittest.UnittestLite.RepeatedUint64ExtensionLite);
-      registry.Add(global::protobuf_unittest.UnittestLite.RepeatedSint32ExtensionLite);
-      registry.Add(global::protobuf_unittest.UnittestLite.RepeatedSint64ExtensionLite);
-      registry.Add(global::protobuf_unittest.UnittestLite.RepeatedFixed32ExtensionLite);
-      registry.Add(global::protobuf_unittest.UnittestLite.RepeatedFixed64ExtensionLite);
-      registry.Add(global::protobuf_unittest.UnittestLite.RepeatedSfixed32ExtensionLite);
-      registry.Add(global::protobuf_unittest.UnittestLite.RepeatedSfixed64ExtensionLite);
-      registry.Add(global::protobuf_unittest.UnittestLite.RepeatedFloatExtensionLite);
-      registry.Add(global::protobuf_unittest.UnittestLite.RepeatedDoubleExtensionLite);
-      registry.Add(global::protobuf_unittest.UnittestLite.RepeatedBoolExtensionLite);
-      registry.Add(global::protobuf_unittest.UnittestLite.RepeatedStringExtensionLite);
-      registry.Add(global::protobuf_unittest.UnittestLite.RepeatedBytesExtensionLite);
-      registry.Add(global::protobuf_unittest.UnittestLite.RepeatedGroupExtensionLite);
-      registry.Add(global::protobuf_unittest.UnittestLite.RepeatedNestedMessageExtensionLite);
-      registry.Add(global::protobuf_unittest.UnittestLite.RepeatedForeignMessageExtensionLite);
-      registry.Add(global::protobuf_unittest.UnittestLite.RepeatedImportMessageExtensionLite);
-      registry.Add(global::protobuf_unittest.UnittestLite.RepeatedNestedEnumExtensionLite);
-      registry.Add(global::protobuf_unittest.UnittestLite.RepeatedForeignEnumExtensionLite);
-      registry.Add(global::protobuf_unittest.UnittestLite.RepeatedImportEnumExtensionLite);
-      registry.Add(global::protobuf_unittest.UnittestLite.RepeatedStringPieceExtensionLite);
-      registry.Add(global::protobuf_unittest.UnittestLite.RepeatedCordExtensionLite);
-      registry.Add(global::protobuf_unittest.UnittestLite.DefaultInt32ExtensionLite);
-      registry.Add(global::protobuf_unittest.UnittestLite.DefaultInt64ExtensionLite);
-      registry.Add(global::protobuf_unittest.UnittestLite.DefaultUint32ExtensionLite);
-      registry.Add(global::protobuf_unittest.UnittestLite.DefaultUint64ExtensionLite);
-      registry.Add(global::protobuf_unittest.UnittestLite.DefaultSint32ExtensionLite);
-      registry.Add(global::protobuf_unittest.UnittestLite.DefaultSint64ExtensionLite);
-      registry.Add(global::protobuf_unittest.UnittestLite.DefaultFixed32ExtensionLite);
-      registry.Add(global::protobuf_unittest.UnittestLite.DefaultFixed64ExtensionLite);
-      registry.Add(global::protobuf_unittest.UnittestLite.DefaultSfixed32ExtensionLite);
-      registry.Add(global::protobuf_unittest.UnittestLite.DefaultSfixed64ExtensionLite);
-      registry.Add(global::protobuf_unittest.UnittestLite.DefaultFloatExtensionLite);
-      registry.Add(global::protobuf_unittest.UnittestLite.DefaultDoubleExtensionLite);
-      registry.Add(global::protobuf_unittest.UnittestLite.DefaultBoolExtensionLite);
-      registry.Add(global::protobuf_unittest.UnittestLite.DefaultStringExtensionLite);
-      registry.Add(global::protobuf_unittest.UnittestLite.DefaultBytesExtensionLite);
-      registry.Add(global::protobuf_unittest.UnittestLite.DefaultNestedEnumExtensionLite);
-      registry.Add(global::protobuf_unittest.UnittestLite.DefaultForeignEnumExtensionLite);
-      registry.Add(global::protobuf_unittest.UnittestLite.DefaultImportEnumExtensionLite);
-      registry.Add(global::protobuf_unittest.UnittestLite.DefaultStringPieceExtensionLite);
-      registry.Add(global::protobuf_unittest.UnittestLite.DefaultCordExtensionLite);
-      registry.Add(global::protobuf_unittest.UnittestLite.PackedInt32ExtensionLite);
-      registry.Add(global::protobuf_unittest.UnittestLite.PackedInt64ExtensionLite);
-      registry.Add(global::protobuf_unittest.UnittestLite.PackedUint32ExtensionLite);
-      registry.Add(global::protobuf_unittest.UnittestLite.PackedUint64ExtensionLite);
-      registry.Add(global::protobuf_unittest.UnittestLite.PackedSint32ExtensionLite);
-      registry.Add(global::protobuf_unittest.UnittestLite.PackedSint64ExtensionLite);
-      registry.Add(global::protobuf_unittest.UnittestLite.PackedFixed32ExtensionLite);
-      registry.Add(global::protobuf_unittest.UnittestLite.PackedFixed64ExtensionLite);
-      registry.Add(global::protobuf_unittest.UnittestLite.PackedSfixed32ExtensionLite);
-      registry.Add(global::protobuf_unittest.UnittestLite.PackedSfixed64ExtensionLite);
-      registry.Add(global::protobuf_unittest.UnittestLite.PackedFloatExtensionLite);
-      registry.Add(global::protobuf_unittest.UnittestLite.PackedDoubleExtensionLite);
-      registry.Add(global::protobuf_unittest.UnittestLite.PackedBoolExtensionLite);
-      registry.Add(global::protobuf_unittest.UnittestLite.PackedEnumExtensionLite);
-      registry.Add(global::protobuf_unittest.TestNestedExtensionLite.NestedExtension);
-    }
-    #endregion
-    #region Extensions
-    public const int OptionalInt32ExtensionLiteFieldNumber = 1;
-    public static pb::GeneratedExtensionBase<int> OptionalInt32ExtensionLite;
-    public const int OptionalInt64ExtensionLiteFieldNumber = 2;
-    public static pb::GeneratedExtensionBase<long> OptionalInt64ExtensionLite;
-    public const int OptionalUint32ExtensionLiteFieldNumber = 3;
-    [global::System.CLSCompliant(false)]
-    public static pb::GeneratedExtensionBase<uint> OptionalUint32ExtensionLite;
-    public const int OptionalUint64ExtensionLiteFieldNumber = 4;
-    [global::System.CLSCompliant(false)]
-    public static pb::GeneratedExtensionBase<ulong> OptionalUint64ExtensionLite;
-    public const int OptionalSint32ExtensionLiteFieldNumber = 5;
-    public static pb::GeneratedExtensionBase<int> OptionalSint32ExtensionLite;
-    public const int OptionalSint64ExtensionLiteFieldNumber = 6;
-    public static pb::GeneratedExtensionBase<long> OptionalSint64ExtensionLite;
-    public const int OptionalFixed32ExtensionLiteFieldNumber = 7;
-    [global::System.CLSCompliant(false)]
-    public static pb::GeneratedExtensionBase<uint> OptionalFixed32ExtensionLite;
-    public const int OptionalFixed64ExtensionLiteFieldNumber = 8;
-    [global::System.CLSCompliant(false)]
-    public static pb::GeneratedExtensionBase<ulong> OptionalFixed64ExtensionLite;
-    public const int OptionalSfixed32ExtensionLiteFieldNumber = 9;
-    public static pb::GeneratedExtensionBase<int> OptionalSfixed32ExtensionLite;
-    public const int OptionalSfixed64ExtensionLiteFieldNumber = 10;
-    public static pb::GeneratedExtensionBase<long> OptionalSfixed64ExtensionLite;
-    public const int OptionalFloatExtensionLiteFieldNumber = 11;
-    public static pb::GeneratedExtensionBase<float> OptionalFloatExtensionLite;
-    public const int OptionalDoubleExtensionLiteFieldNumber = 12;
-    public static pb::GeneratedExtensionBase<double> OptionalDoubleExtensionLite;
-    public const int OptionalBoolExtensionLiteFieldNumber = 13;
-    public static pb::GeneratedExtensionBase<bool> OptionalBoolExtensionLite;
-    public const int OptionalStringExtensionLiteFieldNumber = 14;
-    public static pb::GeneratedExtensionBase<string> OptionalStringExtensionLite;
-    public const int OptionalBytesExtensionLiteFieldNumber = 15;
-    public static pb::GeneratedExtensionBase<pb::ByteString> OptionalBytesExtensionLite;
-    public const int OptionalGroupExtensionLiteFieldNumber = 16;
-    public static pb::GeneratedExtensionBase<global::protobuf_unittest.OptionalGroup_extension_lite> OptionalGroupExtensionLite;
-    public const int OptionalNestedMessageExtensionLiteFieldNumber = 18;
-    public static pb::GeneratedExtensionBase<global::protobuf_unittest.TestAllTypesLite.Types.NestedMessage> OptionalNestedMessageExtensionLite;
-    public const int OptionalForeignMessageExtensionLiteFieldNumber = 19;
-    public static pb::GeneratedExtensionBase<global::protobuf_unittest.ForeignMessageLite> OptionalForeignMessageExtensionLite;
-    public const int OptionalImportMessageExtensionLiteFieldNumber = 20;
-    public static pb::GeneratedExtensionBase<global::protobuf_unittest_import.ImportMessageLite> OptionalImportMessageExtensionLite;
-    public const int OptionalNestedEnumExtensionLiteFieldNumber = 21;
-    public static pb::GeneratedExtensionBase<global::protobuf_unittest.TestAllTypesLite.Types.NestedEnum> OptionalNestedEnumExtensionLite;
-    public const int OptionalForeignEnumExtensionLiteFieldNumber = 22;
-    public static pb::GeneratedExtensionBase<global::protobuf_unittest.ForeignEnumLite> OptionalForeignEnumExtensionLite;
-    public const int OptionalImportEnumExtensionLiteFieldNumber = 23;
-    public static pb::GeneratedExtensionBase<global::protobuf_unittest_import.ImportEnumLite> OptionalImportEnumExtensionLite;
-    public const int OptionalStringPieceExtensionLiteFieldNumber = 24;
-    public static pb::GeneratedExtensionBase<string> OptionalStringPieceExtensionLite;
-    public const int OptionalCordExtensionLiteFieldNumber = 25;
-    public static pb::GeneratedExtensionBase<string> OptionalCordExtensionLite;
-    public const int RepeatedInt32ExtensionLiteFieldNumber = 31;
-    public static pb::GeneratedExtensionBase<scg::IList<int>> RepeatedInt32ExtensionLite;
-    public const int RepeatedInt64ExtensionLiteFieldNumber = 32;
-    public static pb::GeneratedExtensionBase<scg::IList<long>> RepeatedInt64ExtensionLite;
-    public const int RepeatedUint32ExtensionLiteFieldNumber = 33;
-    [global::System.CLSCompliant(false)]
-    public static pb::GeneratedExtensionBase<scg::IList<uint>> RepeatedUint32ExtensionLite;
-    public const int RepeatedUint64ExtensionLiteFieldNumber = 34;
-    [global::System.CLSCompliant(false)]
-    public static pb::GeneratedExtensionBase<scg::IList<ulong>> RepeatedUint64ExtensionLite;
-    public const int RepeatedSint32ExtensionLiteFieldNumber = 35;
-    public static pb::GeneratedExtensionBase<scg::IList<int>> RepeatedSint32ExtensionLite;
-    public const int RepeatedSint64ExtensionLiteFieldNumber = 36;
-    public static pb::GeneratedExtensionBase<scg::IList<long>> RepeatedSint64ExtensionLite;
-    public const int RepeatedFixed32ExtensionLiteFieldNumber = 37;
-    [global::System.CLSCompliant(false)]
-    public static pb::GeneratedExtensionBase<scg::IList<uint>> RepeatedFixed32ExtensionLite;
-    public const int RepeatedFixed64ExtensionLiteFieldNumber = 38;
-    [global::System.CLSCompliant(false)]
-    public static pb::GeneratedExtensionBase<scg::IList<ulong>> RepeatedFixed64ExtensionLite;
-    public const int RepeatedSfixed32ExtensionLiteFieldNumber = 39;
-    public static pb::GeneratedExtensionBase<scg::IList<int>> RepeatedSfixed32ExtensionLite;
-    public const int RepeatedSfixed64ExtensionLiteFieldNumber = 40;
-    public static pb::GeneratedExtensionBase<scg::IList<long>> RepeatedSfixed64ExtensionLite;
-    public const int RepeatedFloatExtensionLiteFieldNumber = 41;
-    public static pb::GeneratedExtensionBase<scg::IList<float>> RepeatedFloatExtensionLite;
-    public const int RepeatedDoubleExtensionLiteFieldNumber = 42;
-    public static pb::GeneratedExtensionBase<scg::IList<double>> RepeatedDoubleExtensionLite;
-    public const int RepeatedBoolExtensionLiteFieldNumber = 43;
-    public static pb::GeneratedExtensionBase<scg::IList<bool>> RepeatedBoolExtensionLite;
-    public const int RepeatedStringExtensionLiteFieldNumber = 44;
-    public static pb::GeneratedExtensionBase<scg::IList<string>> RepeatedStringExtensionLite;
-    public const int RepeatedBytesExtensionLiteFieldNumber = 45;
-    public static pb::GeneratedExtensionBase<scg::IList<pb::ByteString>> RepeatedBytesExtensionLite;
-    public const int RepeatedGroupExtensionLiteFieldNumber = 46;
-    public static pb::GeneratedExtensionBase<scg::IList<global::protobuf_unittest.RepeatedGroup_extension_lite>> RepeatedGroupExtensionLite;
-    public const int RepeatedNestedMessageExtensionLiteFieldNumber = 48;
-    public static pb::GeneratedExtensionBase<scg::IList<global::protobuf_unittest.TestAllTypesLite.Types.NestedMessage>> RepeatedNestedMessageExtensionLite;
-    public const int RepeatedForeignMessageExtensionLiteFieldNumber = 49;
-    public static pb::GeneratedExtensionBase<scg::IList<global::protobuf_unittest.ForeignMessageLite>> RepeatedForeignMessageExtensionLite;
-    public const int RepeatedImportMessageExtensionLiteFieldNumber = 50;
-    public static pb::GeneratedExtensionBase<scg::IList<global::protobuf_unittest_import.ImportMessageLite>> RepeatedImportMessageExtensionLite;
-    public const int RepeatedNestedEnumExtensionLiteFieldNumber = 51;
-    public static pb::GeneratedExtensionBase<scg::IList<global::protobuf_unittest.TestAllTypesLite.Types.NestedEnum>> RepeatedNestedEnumExtensionLite;
-    public const int RepeatedForeignEnumExtensionLiteFieldNumber = 52;
-    public static pb::GeneratedExtensionBase<scg::IList<global::protobuf_unittest.ForeignEnumLite>> RepeatedForeignEnumExtensionLite;
-    public const int RepeatedImportEnumExtensionLiteFieldNumber = 53;
-    public static pb::GeneratedExtensionBase<scg::IList<global::protobuf_unittest_import.ImportEnumLite>> RepeatedImportEnumExtensionLite;
-    public const int RepeatedStringPieceExtensionLiteFieldNumber = 54;
-    public static pb::GeneratedExtensionBase<scg::IList<string>> RepeatedStringPieceExtensionLite;
-    public const int RepeatedCordExtensionLiteFieldNumber = 55;
-    public static pb::GeneratedExtensionBase<scg::IList<string>> RepeatedCordExtensionLite;
-    public const int DefaultInt32ExtensionLiteFieldNumber = 61;
-    public static pb::GeneratedExtensionBase<int> DefaultInt32ExtensionLite;
-    public const int DefaultInt64ExtensionLiteFieldNumber = 62;
-    public static pb::GeneratedExtensionBase<long> DefaultInt64ExtensionLite;
-    public const int DefaultUint32ExtensionLiteFieldNumber = 63;
-    [global::System.CLSCompliant(false)]
-    public static pb::GeneratedExtensionBase<uint> DefaultUint32ExtensionLite;
-    public const int DefaultUint64ExtensionLiteFieldNumber = 64;
-    [global::System.CLSCompliant(false)]
-    public static pb::GeneratedExtensionBase<ulong> DefaultUint64ExtensionLite;
-    public const int DefaultSint32ExtensionLiteFieldNumber = 65;
-    public static pb::GeneratedExtensionBase<int> DefaultSint32ExtensionLite;
-    public const int DefaultSint64ExtensionLiteFieldNumber = 66;
-    public static pb::GeneratedExtensionBase<long> DefaultSint64ExtensionLite;
-    public const int DefaultFixed32ExtensionLiteFieldNumber = 67;
-    [global::System.CLSCompliant(false)]
-    public static pb::GeneratedExtensionBase<uint> DefaultFixed32ExtensionLite;
-    public const int DefaultFixed64ExtensionLiteFieldNumber = 68;
-    [global::System.CLSCompliant(false)]
-    public static pb::GeneratedExtensionBase<ulong> DefaultFixed64ExtensionLite;
-    public const int DefaultSfixed32ExtensionLiteFieldNumber = 69;
-    public static pb::GeneratedExtensionBase<int> DefaultSfixed32ExtensionLite;
-    public const int DefaultSfixed64ExtensionLiteFieldNumber = 70;
-    public static pb::GeneratedExtensionBase<long> DefaultSfixed64ExtensionLite;
-    public const int DefaultFloatExtensionLiteFieldNumber = 71;
-    public static pb::GeneratedExtensionBase<float> DefaultFloatExtensionLite;
-    public const int DefaultDoubleExtensionLiteFieldNumber = 72;
-    public static pb::GeneratedExtensionBase<double> DefaultDoubleExtensionLite;
-    public const int DefaultBoolExtensionLiteFieldNumber = 73;
-    public static pb::GeneratedExtensionBase<bool> DefaultBoolExtensionLite;
-    public const int DefaultStringExtensionLiteFieldNumber = 74;
-    public static pb::GeneratedExtensionBase<string> DefaultStringExtensionLite;
-    public const int DefaultBytesExtensionLiteFieldNumber = 75;
-    public static pb::GeneratedExtensionBase<pb::ByteString> DefaultBytesExtensionLite;
-    public const int DefaultNestedEnumExtensionLiteFieldNumber = 81;
-    public static pb::GeneratedExtensionBase<global::protobuf_unittest.TestAllTypesLite.Types.NestedEnum> DefaultNestedEnumExtensionLite;
-    public const int DefaultForeignEnumExtensionLiteFieldNumber = 82;
-    public static pb::GeneratedExtensionBase<global::protobuf_unittest.ForeignEnumLite> DefaultForeignEnumExtensionLite;
-    public const int DefaultImportEnumExtensionLiteFieldNumber = 83;
-    public static pb::GeneratedExtensionBase<global::protobuf_unittest_import.ImportEnumLite> DefaultImportEnumExtensionLite;
-    public const int DefaultStringPieceExtensionLiteFieldNumber = 84;
-    public static pb::GeneratedExtensionBase<string> DefaultStringPieceExtensionLite;
-    public const int DefaultCordExtensionLiteFieldNumber = 85;
-    public static pb::GeneratedExtensionBase<string> DefaultCordExtensionLite;
-    public const int PackedInt32ExtensionLiteFieldNumber = 90;
-    public static pb::GeneratedExtensionBase<scg::IList<int>> PackedInt32ExtensionLite;
-    public const int PackedInt64ExtensionLiteFieldNumber = 91;
-    public static pb::GeneratedExtensionBase<scg::IList<long>> PackedInt64ExtensionLite;
-    public const int PackedUint32ExtensionLiteFieldNumber = 92;
-    [global::System.CLSCompliant(false)]
-    public static pb::GeneratedExtensionBase<scg::IList<uint>> PackedUint32ExtensionLite;
-    public const int PackedUint64ExtensionLiteFieldNumber = 93;
-    [global::System.CLSCompliant(false)]
-    public static pb::GeneratedExtensionBase<scg::IList<ulong>> PackedUint64ExtensionLite;
-    public const int PackedSint32ExtensionLiteFieldNumber = 94;
-    public static pb::GeneratedExtensionBase<scg::IList<int>> PackedSint32ExtensionLite;
-    public const int PackedSint64ExtensionLiteFieldNumber = 95;
-    public static pb::GeneratedExtensionBase<scg::IList<long>> PackedSint64ExtensionLite;
-    public const int PackedFixed32ExtensionLiteFieldNumber = 96;
-    [global::System.CLSCompliant(false)]
-    public static pb::GeneratedExtensionBase<scg::IList<uint>> PackedFixed32ExtensionLite;
-    public const int PackedFixed64ExtensionLiteFieldNumber = 97;
-    [global::System.CLSCompliant(false)]
-    public static pb::GeneratedExtensionBase<scg::IList<ulong>> PackedFixed64ExtensionLite;
-    public const int PackedSfixed32ExtensionLiteFieldNumber = 98;
-    public static pb::GeneratedExtensionBase<scg::IList<int>> PackedSfixed32ExtensionLite;
-    public const int PackedSfixed64ExtensionLiteFieldNumber = 99;
-    public static pb::GeneratedExtensionBase<scg::IList<long>> PackedSfixed64ExtensionLite;
-    public const int PackedFloatExtensionLiteFieldNumber = 100;
-    public static pb::GeneratedExtensionBase<scg::IList<float>> PackedFloatExtensionLite;
-    public const int PackedDoubleExtensionLiteFieldNumber = 101;
-    public static pb::GeneratedExtensionBase<scg::IList<double>> PackedDoubleExtensionLite;
-    public const int PackedBoolExtensionLiteFieldNumber = 102;
-    public static pb::GeneratedExtensionBase<scg::IList<bool>> PackedBoolExtensionLite;
-    public const int PackedEnumExtensionLiteFieldNumber = 103;
-    public static pb::GeneratedExtensionBase<scg::IList<global::protobuf_unittest.ForeignEnumLite>> PackedEnumExtensionLite;
-    #endregion
-    
-    #region Static variables
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestAllTypesLite__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::protobuf_unittest.TestAllTypesLite, global::protobuf_unittest.TestAllTypesLite.Builder> internal__static_protobuf_unittest_TestAllTypesLite__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestAllTypesLite_NestedMessage__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::protobuf_unittest.TestAllTypesLite.Types.NestedMessage, global::protobuf_unittest.TestAllTypesLite.Types.NestedMessage.Builder> internal__static_protobuf_unittest_TestAllTypesLite_NestedMessage__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestAllTypesLite_OptionalGroup__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::protobuf_unittest.TestAllTypesLite.Types.OptionalGroup, global::protobuf_unittest.TestAllTypesLite.Types.OptionalGroup.Builder> internal__static_protobuf_unittest_TestAllTypesLite_OptionalGroup__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestAllTypesLite_RepeatedGroup__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::protobuf_unittest.TestAllTypesLite.Types.RepeatedGroup, global::protobuf_unittest.TestAllTypesLite.Types.RepeatedGroup.Builder> internal__static_protobuf_unittest_TestAllTypesLite_RepeatedGroup__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_ForeignMessageLite__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::protobuf_unittest.ForeignMessageLite, global::protobuf_unittest.ForeignMessageLite.Builder> internal__static_protobuf_unittest_ForeignMessageLite__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestPackedTypesLite__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::protobuf_unittest.TestPackedTypesLite, global::protobuf_unittest.TestPackedTypesLite.Builder> internal__static_protobuf_unittest_TestPackedTypesLite__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestAllExtensionsLite__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::protobuf_unittest.TestAllExtensionsLite, global::protobuf_unittest.TestAllExtensionsLite.Builder> internal__static_protobuf_unittest_TestAllExtensionsLite__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_OptionalGroup_extension_lite__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::protobuf_unittest.OptionalGroup_extension_lite, global::protobuf_unittest.OptionalGroup_extension_lite.Builder> internal__static_protobuf_unittest_OptionalGroup_extension_lite__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_RepeatedGroup_extension_lite__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::protobuf_unittest.RepeatedGroup_extension_lite, global::protobuf_unittest.RepeatedGroup_extension_lite.Builder> internal__static_protobuf_unittest_RepeatedGroup_extension_lite__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestPackedExtensionsLite__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::protobuf_unittest.TestPackedExtensionsLite, global::protobuf_unittest.TestPackedExtensionsLite.Builder> internal__static_protobuf_unittest_TestPackedExtensionsLite__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestNestedExtensionLite__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::protobuf_unittest.TestNestedExtensionLite, global::protobuf_unittest.TestNestedExtensionLite.Builder> internal__static_protobuf_unittest_TestNestedExtensionLite__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestDeprecatedLite__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::protobuf_unittest.TestDeprecatedLite, global::protobuf_unittest.TestDeprecatedLite.Builder> internal__static_protobuf_unittest_TestDeprecatedLite__FieldAccessorTable;
-    #endregion
-    #region Descriptor
-    public static pbd::FileDescriptor Descriptor {
-      get { return descriptor; }
-    }
-    private static pbd::FileDescriptor descriptor;
-    
-    static UnittestLite() {
-      byte[] descriptorData = global::System.Convert.FromBase64String(
-          "CiNnb29nbGUvcHJvdG9idWYvdW5pdHRlc3RfbGl0ZS5wcm90bxIRcHJvdG9i" + 
-          "dWZfdW5pdHRlc3QaKmdvb2dsZS9wcm90b2J1Zi91bml0dGVzdF9pbXBvcnRf" + 
-          "bGl0ZS5wcm90byKNFgoQVGVzdEFsbFR5cGVzTGl0ZRIWCg5vcHRpb25hbF9p" + 
-          "bnQzMhgBIAEoBRIWCg5vcHRpb25hbF9pbnQ2NBgCIAEoAxIXCg9vcHRpb25h" + 
-          "bF91aW50MzIYAyABKA0SFwoPb3B0aW9uYWxfdWludDY0GAQgASgEEhcKD29w" + 
-          "dGlvbmFsX3NpbnQzMhgFIAEoERIXCg9vcHRpb25hbF9zaW50NjQYBiABKBIS" + 
-          "GAoQb3B0aW9uYWxfZml4ZWQzMhgHIAEoBxIYChBvcHRpb25hbF9maXhlZDY0" + 
-          "GAggASgGEhkKEW9wdGlvbmFsX3NmaXhlZDMyGAkgASgPEhkKEW9wdGlvbmFs" + 
-          "X3NmaXhlZDY0GAogASgQEhYKDm9wdGlvbmFsX2Zsb2F0GAsgASgCEhcKD29w" + 
-          "dGlvbmFsX2RvdWJsZRgMIAEoARIVCg1vcHRpb25hbF9ib29sGA0gASgIEhcK" + 
-          "D29wdGlvbmFsX3N0cmluZxgOIAEoCRIWCg5vcHRpb25hbF9ieXRlcxgPIAEo" + 
-          "DBJICg1vcHRpb25hbGdyb3VwGBAgASgKMjEucHJvdG9idWZfdW5pdHRlc3Qu" + 
-          "VGVzdEFsbFR5cGVzTGl0ZS5PcHRpb25hbEdyb3VwElIKF29wdGlvbmFsX25l" + 
-          "c3RlZF9tZXNzYWdlGBIgASgLMjEucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFs" + 
-          "bFR5cGVzTGl0ZS5OZXN0ZWRNZXNzYWdlEkcKGG9wdGlvbmFsX2ZvcmVpZ25f" + 
-          "bWVzc2FnZRgTIAEoCzIlLnByb3RvYnVmX3VuaXR0ZXN0LkZvcmVpZ25NZXNz" + 
-          "YWdlTGl0ZRJMChdvcHRpb25hbF9pbXBvcnRfbWVzc2FnZRgUIAEoCzIrLnBy" + 
-          "b3RvYnVmX3VuaXR0ZXN0X2ltcG9ydC5JbXBvcnRNZXNzYWdlTGl0ZRJMChRv" + 
-          "cHRpb25hbF9uZXN0ZWRfZW51bRgVIAEoDjIuLnByb3RvYnVmX3VuaXR0ZXN0" + 
-          "LlRlc3RBbGxUeXBlc0xpdGUuTmVzdGVkRW51bRJBChVvcHRpb25hbF9mb3Jl" + 
-          "aWduX2VudW0YFiABKA4yIi5wcm90b2J1Zl91bml0dGVzdC5Gb3JlaWduRW51" + 
-          "bUxpdGUSRgoUb3B0aW9uYWxfaW1wb3J0X2VudW0YFyABKA4yKC5wcm90b2J1" + 
-          "Zl91bml0dGVzdF9pbXBvcnQuSW1wb3J0RW51bUxpdGUSIQoVb3B0aW9uYWxf" + 
-          "c3RyaW5nX3BpZWNlGBggASgJQgIIAhIZCg1vcHRpb25hbF9jb3JkGBkgASgJ" + 
-          "QgIIARIWCg5yZXBlYXRlZF9pbnQzMhgfIAMoBRIWCg5yZXBlYXRlZF9pbnQ2" + 
-          "NBggIAMoAxIXCg9yZXBlYXRlZF91aW50MzIYISADKA0SFwoPcmVwZWF0ZWRf" + 
-          "dWludDY0GCIgAygEEhcKD3JlcGVhdGVkX3NpbnQzMhgjIAMoERIXCg9yZXBl" + 
-          "YXRlZF9zaW50NjQYJCADKBISGAoQcmVwZWF0ZWRfZml4ZWQzMhglIAMoBxIY" + 
-          "ChByZXBlYXRlZF9maXhlZDY0GCYgAygGEhkKEXJlcGVhdGVkX3NmaXhlZDMy" + 
-          "GCcgAygPEhkKEXJlcGVhdGVkX3NmaXhlZDY0GCggAygQEhYKDnJlcGVhdGVk" + 
-          "X2Zsb2F0GCkgAygCEhcKD3JlcGVhdGVkX2RvdWJsZRgqIAMoARIVCg1yZXBl" + 
-          "YXRlZF9ib29sGCsgAygIEhcKD3JlcGVhdGVkX3N0cmluZxgsIAMoCRIWCg5y" + 
-          "ZXBlYXRlZF9ieXRlcxgtIAMoDBJICg1yZXBlYXRlZGdyb3VwGC4gAygKMjEu" + 
-          "cHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbFR5cGVzTGl0ZS5SZXBlYXRlZEdy" + 
-          "b3VwElIKF3JlcGVhdGVkX25lc3RlZF9tZXNzYWdlGDAgAygLMjEucHJvdG9i" + 
-          "dWZfdW5pdHRlc3QuVGVzdEFsbFR5cGVzTGl0ZS5OZXN0ZWRNZXNzYWdlEkcK" + 
-          "GHJlcGVhdGVkX2ZvcmVpZ25fbWVzc2FnZRgxIAMoCzIlLnByb3RvYnVmX3Vu" + 
-          "aXR0ZXN0LkZvcmVpZ25NZXNzYWdlTGl0ZRJMChdyZXBlYXRlZF9pbXBvcnRf" + 
-          "bWVzc2FnZRgyIAMoCzIrLnByb3RvYnVmX3VuaXR0ZXN0X2ltcG9ydC5JbXBv" + 
-          "cnRNZXNzYWdlTGl0ZRJMChRyZXBlYXRlZF9uZXN0ZWRfZW51bRgzIAMoDjIu" + 
-          "LnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxUeXBlc0xpdGUuTmVzdGVkRW51" + 
-          "bRJBChVyZXBlYXRlZF9mb3JlaWduX2VudW0YNCADKA4yIi5wcm90b2J1Zl91" + 
-          "bml0dGVzdC5Gb3JlaWduRW51bUxpdGUSRgoUcmVwZWF0ZWRfaW1wb3J0X2Vu" + 
-          "dW0YNSADKA4yKC5wcm90b2J1Zl91bml0dGVzdF9pbXBvcnQuSW1wb3J0RW51" + 
-          "bUxpdGUSIQoVcmVwZWF0ZWRfc3RyaW5nX3BpZWNlGDYgAygJQgIIAhIZCg1y" + 
-          "ZXBlYXRlZF9jb3JkGDcgAygJQgIIARIZCg1kZWZhdWx0X2ludDMyGD0gASgF" + 
-          "OgI0MRIZCg1kZWZhdWx0X2ludDY0GD4gASgDOgI0MhIaCg5kZWZhdWx0X3Vp" + 
-          "bnQzMhg/IAEoDToCNDMSGgoOZGVmYXVsdF91aW50NjQYQCABKAQ6AjQ0EhsK" + 
-          "DmRlZmF1bHRfc2ludDMyGEEgASgROgMtNDUSGgoOZGVmYXVsdF9zaW50NjQY" + 
-          "QiABKBI6AjQ2EhsKD2RlZmF1bHRfZml4ZWQzMhhDIAEoBzoCNDcSGwoPZGVm" + 
-          "YXVsdF9maXhlZDY0GEQgASgGOgI0OBIcChBkZWZhdWx0X3NmaXhlZDMyGEUg" + 
-          "ASgPOgI0ORIdChBkZWZhdWx0X3NmaXhlZDY0GEYgASgQOgMtNTASGwoNZGVm" + 
-          "YXVsdF9mbG9hdBhHIAEoAjoENTEuNRIdCg5kZWZhdWx0X2RvdWJsZRhIIAEo" + 
-          "AToFNTIwMDASGgoMZGVmYXVsdF9ib29sGEkgASgIOgR0cnVlEh0KDmRlZmF1" + 
-          "bHRfc3RyaW5nGEogASgJOgVoZWxsbxIcCg1kZWZhdWx0X2J5dGVzGEsgASgM" + 
-          "OgV3b3JsZBJQChNkZWZhdWx0X25lc3RlZF9lbnVtGFEgASgOMi4ucHJvdG9i" + 
-          "dWZfdW5pdHRlc3QuVGVzdEFsbFR5cGVzTGl0ZS5OZXN0ZWRFbnVtOgNCQVIS" + 
-          "UgoUZGVmYXVsdF9mb3JlaWduX2VudW0YUiABKA4yIi5wcm90b2J1Zl91bml0" + 
-          "dGVzdC5Gb3JlaWduRW51bUxpdGU6EEZPUkVJR05fTElURV9CQVISVgoTZGVm" + 
-          "YXVsdF9pbXBvcnRfZW51bRhTIAEoDjIoLnByb3RvYnVmX3VuaXR0ZXN0X2lt" + 
-          "cG9ydC5JbXBvcnRFbnVtTGl0ZToPSU1QT1JUX0xJVEVfQkFSEiUKFGRlZmF1" + 
-          "bHRfc3RyaW5nX3BpZWNlGFQgASgJOgNhYmNCAggCEh0KDGRlZmF1bHRfY29y" + 
-          "ZBhVIAEoCToDMTIzQgIIARobCg1OZXN0ZWRNZXNzYWdlEgoKAmJiGAEgASgF" + 
-          "GhoKDU9wdGlvbmFsR3JvdXASCQoBYRgRIAEoBRoaCg1SZXBlYXRlZEdyb3Vw" + 
-          "EgkKAWEYLyABKAUiJwoKTmVzdGVkRW51bRIHCgNGT08QARIHCgNCQVIQAhIH" + 
-          "CgNCQVoQAyIfChJGb3JlaWduTWVzc2FnZUxpdGUSCQoBYxgBIAEoBSKyAwoT" + 
-          "VGVzdFBhY2tlZFR5cGVzTGl0ZRIYCgxwYWNrZWRfaW50MzIYWiADKAVCAhAB" + 
-          "EhgKDHBhY2tlZF9pbnQ2NBhbIAMoA0ICEAESGQoNcGFja2VkX3VpbnQzMhhc" + 
-          "IAMoDUICEAESGQoNcGFja2VkX3VpbnQ2NBhdIAMoBEICEAESGQoNcGFja2Vk" + 
-          "X3NpbnQzMhheIAMoEUICEAESGQoNcGFja2VkX3NpbnQ2NBhfIAMoEkICEAES" + 
-          "GgoOcGFja2VkX2ZpeGVkMzIYYCADKAdCAhABEhoKDnBhY2tlZF9maXhlZDY0" + 
-          "GGEgAygGQgIQARIbCg9wYWNrZWRfc2ZpeGVkMzIYYiADKA9CAhABEhsKD3Bh" + 
-          "Y2tlZF9zZml4ZWQ2NBhjIAMoEEICEAESGAoMcGFja2VkX2Zsb2F0GGQgAygC" + 
-          "QgIQARIZCg1wYWNrZWRfZG91YmxlGGUgAygBQgIQARIXCgtwYWNrZWRfYm9v" + 
-          "bBhmIAMoCEICEAESOwoLcGFja2VkX2VudW0YZyADKA4yIi5wcm90b2J1Zl91" + 
-          "bml0dGVzdC5Gb3JlaWduRW51bUxpdGVCAhABIiEKFVRlc3RBbGxFeHRlbnNp" + 
-          "b25zTGl0ZSoICAEQgICAgAIiKQocT3B0aW9uYWxHcm91cF9leHRlbnNpb25f" + 
-          "bGl0ZRIJCgFhGBEgASgFIikKHFJlcGVhdGVkR3JvdXBfZXh0ZW5zaW9uX2xp" + 
-          "dGUSCQoBYRgvIAEoBSIkChhUZXN0UGFja2VkRXh0ZW5zaW9uc0xpdGUqCAgB" + 
-          "EICAgIACIl4KF1Rlc3ROZXN0ZWRFeHRlbnNpb25MaXRlMkMKEG5lc3RlZF9l" + 
-          "eHRlbnNpb24SKC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9u" + 
-          "c0xpdGUYuWAgASgFIjIKElRlc3REZXByZWNhdGVkTGl0ZRIcChBkZXByZWNh" + 
-          "dGVkX2ZpZWxkGAEgASgFQgIYASpTCg9Gb3JlaWduRW51bUxpdGUSFAoQRk9S" + 
-          "RUlHTl9MSVRFX0ZPTxAEEhQKEEZPUkVJR05fTElURV9CQVIQBRIUChBGT1JF" + 
-          "SUdOX0xJVEVfQkFaEAY6Twodb3B0aW9uYWxfaW50MzJfZXh0ZW5zaW9uX2xp" + 
-          "dGUSKC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9uc0xpdGUY" + 
-          "ASABKAU6Twodb3B0aW9uYWxfaW50NjRfZXh0ZW5zaW9uX2xpdGUSKC5wcm90" + 
-          "b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9uc0xpdGUYAiABKAM6UAoe" + 
-          "b3B0aW9uYWxfdWludDMyX2V4dGVuc2lvbl9saXRlEigucHJvdG9idWZfdW5p" + 
-          "dHRlc3QuVGVzdEFsbEV4dGVuc2lvbnNMaXRlGAMgASgNOlAKHm9wdGlvbmFs" + 
-          "X3VpbnQ2NF9leHRlbnNpb25fbGl0ZRIoLnByb3RvYnVmX3VuaXR0ZXN0LlRl" + 
-          "c3RBbGxFeHRlbnNpb25zTGl0ZRgEIAEoBDpQCh5vcHRpb25hbF9zaW50MzJf" + 
-          "ZXh0ZW5zaW9uX2xpdGUSKC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0" + 
-          "ZW5zaW9uc0xpdGUYBSABKBE6UAoeb3B0aW9uYWxfc2ludDY0X2V4dGVuc2lv" + 
-          "bl9saXRlEigucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnNM" + 
-          "aXRlGAYgASgSOlEKH29wdGlvbmFsX2ZpeGVkMzJfZXh0ZW5zaW9uX2xpdGUS" + 
-          "KC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9uc0xpdGUYByAB" + 
-          "KAc6UQofb3B0aW9uYWxfZml4ZWQ2NF9leHRlbnNpb25fbGl0ZRIoLnByb3Rv" + 
-          "YnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zTGl0ZRgIIAEoBjpSCiBv" + 
-          "cHRpb25hbF9zZml4ZWQzMl9leHRlbnNpb25fbGl0ZRIoLnByb3RvYnVmX3Vu" + 
-          "aXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zTGl0ZRgJIAEoDzpSCiBvcHRpb25h" + 
-          "bF9zZml4ZWQ2NF9leHRlbnNpb25fbGl0ZRIoLnByb3RvYnVmX3VuaXR0ZXN0" + 
-          "LlRlc3RBbGxFeHRlbnNpb25zTGl0ZRgKIAEoEDpPCh1vcHRpb25hbF9mbG9h" + 
-          "dF9leHRlbnNpb25fbGl0ZRIoLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxF" + 
-          "eHRlbnNpb25zTGl0ZRgLIAEoAjpQCh5vcHRpb25hbF9kb3VibGVfZXh0ZW5z" + 
-          "aW9uX2xpdGUSKC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9u" + 
-          "c0xpdGUYDCABKAE6Tgocb3B0aW9uYWxfYm9vbF9leHRlbnNpb25fbGl0ZRIo" + 
-          "LnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zTGl0ZRgNIAEo" + 
-          "CDpQCh5vcHRpb25hbF9zdHJpbmdfZXh0ZW5zaW9uX2xpdGUSKC5wcm90b2J1" + 
-          "Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9uc0xpdGUYDiABKAk6Twodb3B0" + 
-          "aW9uYWxfYnl0ZXNfZXh0ZW5zaW9uX2xpdGUSKC5wcm90b2J1Zl91bml0dGVz" + 
-          "dC5UZXN0QWxsRXh0ZW5zaW9uc0xpdGUYDyABKAw6fwocb3B0aW9uYWxncm91" + 
-          "cF9leHRlbnNpb25fbGl0ZRIoLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxF" + 
-          "eHRlbnNpb25zTGl0ZRgQIAEoCjIvLnByb3RvYnVmX3VuaXR0ZXN0Lk9wdGlv" + 
-          "bmFsR3JvdXBfZXh0ZW5zaW9uX2xpdGU6iwEKJm9wdGlvbmFsX25lc3RlZF9t" + 
-          "ZXNzYWdlX2V4dGVuc2lvbl9saXRlEigucHJvdG9idWZfdW5pdHRlc3QuVGVz" + 
-          "dEFsbEV4dGVuc2lvbnNMaXRlGBIgASgLMjEucHJvdG9idWZfdW5pdHRlc3Qu" + 
-          "VGVzdEFsbFR5cGVzTGl0ZS5OZXN0ZWRNZXNzYWdlOoABCidvcHRpb25hbF9m" + 
-          "b3JlaWduX21lc3NhZ2VfZXh0ZW5zaW9uX2xpdGUSKC5wcm90b2J1Zl91bml0" + 
-          "dGVzdC5UZXN0QWxsRXh0ZW5zaW9uc0xpdGUYEyABKAsyJS5wcm90b2J1Zl91" + 
-          "bml0dGVzdC5Gb3JlaWduTWVzc2FnZUxpdGU6hQEKJm9wdGlvbmFsX2ltcG9y" + 
-          "dF9tZXNzYWdlX2V4dGVuc2lvbl9saXRlEigucHJvdG9idWZfdW5pdHRlc3Qu" + 
-          "VGVzdEFsbEV4dGVuc2lvbnNMaXRlGBQgASgLMisucHJvdG9idWZfdW5pdHRl" + 
-          "c3RfaW1wb3J0LkltcG9ydE1lc3NhZ2VMaXRlOoUBCiNvcHRpb25hbF9uZXN0" + 
-          "ZWRfZW51bV9leHRlbnNpb25fbGl0ZRIoLnByb3RvYnVmX3VuaXR0ZXN0LlRl" + 
-          "c3RBbGxFeHRlbnNpb25zTGl0ZRgVIAEoDjIuLnByb3RvYnVmX3VuaXR0ZXN0" + 
-          "LlRlc3RBbGxUeXBlc0xpdGUuTmVzdGVkRW51bTp6CiRvcHRpb25hbF9mb3Jl" + 
-          "aWduX2VudW1fZXh0ZW5zaW9uX2xpdGUSKC5wcm90b2J1Zl91bml0dGVzdC5U" + 
-          "ZXN0QWxsRXh0ZW5zaW9uc0xpdGUYFiABKA4yIi5wcm90b2J1Zl91bml0dGVz" + 
-          "dC5Gb3JlaWduRW51bUxpdGU6fwojb3B0aW9uYWxfaW1wb3J0X2VudW1fZXh0" + 
-          "ZW5zaW9uX2xpdGUSKC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5z" + 
-          "aW9uc0xpdGUYFyABKA4yKC5wcm90b2J1Zl91bml0dGVzdF9pbXBvcnQuSW1w" + 
-          "b3J0RW51bUxpdGU6Wgokb3B0aW9uYWxfc3RyaW5nX3BpZWNlX2V4dGVuc2lv" + 
-          "bl9saXRlEigucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnNM" + 
-          "aXRlGBggASgJQgIIAjpSChxvcHRpb25hbF9jb3JkX2V4dGVuc2lvbl9saXRl" + 
-          "EigucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnNMaXRlGBkg" + 
-          "ASgJQgIIATpPCh1yZXBlYXRlZF9pbnQzMl9leHRlbnNpb25fbGl0ZRIoLnBy" + 
-          "b3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zTGl0ZRgfIAMoBTpP" + 
-          "Ch1yZXBlYXRlZF9pbnQ2NF9leHRlbnNpb25fbGl0ZRIoLnByb3RvYnVmX3Vu" + 
-          "aXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zTGl0ZRggIAMoAzpQCh5yZXBlYXRl" + 
-          "ZF91aW50MzJfZXh0ZW5zaW9uX2xpdGUSKC5wcm90b2J1Zl91bml0dGVzdC5U" + 
-          "ZXN0QWxsRXh0ZW5zaW9uc0xpdGUYISADKA06UAoecmVwZWF0ZWRfdWludDY0" + 
-          "X2V4dGVuc2lvbl9saXRlEigucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4" + 
-          "dGVuc2lvbnNMaXRlGCIgAygEOlAKHnJlcGVhdGVkX3NpbnQzMl9leHRlbnNp" + 
-          "b25fbGl0ZRIoLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25z" + 
-          "TGl0ZRgjIAMoETpQCh5yZXBlYXRlZF9zaW50NjRfZXh0ZW5zaW9uX2xpdGUS" + 
-          "KC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9uc0xpdGUYJCAD" + 
-          "KBI6UQofcmVwZWF0ZWRfZml4ZWQzMl9leHRlbnNpb25fbGl0ZRIoLnByb3Rv" + 
-          "YnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zTGl0ZRglIAMoBzpRCh9y" + 
-          "ZXBlYXRlZF9maXhlZDY0X2V4dGVuc2lvbl9saXRlEigucHJvdG9idWZfdW5p" + 
-          "dHRlc3QuVGVzdEFsbEV4dGVuc2lvbnNMaXRlGCYgAygGOlIKIHJlcGVhdGVk" + 
-          "X3NmaXhlZDMyX2V4dGVuc2lvbl9saXRlEigucHJvdG9idWZfdW5pdHRlc3Qu" + 
-          "VGVzdEFsbEV4dGVuc2lvbnNMaXRlGCcgAygPOlIKIHJlcGVhdGVkX3NmaXhl" + 
-          "ZDY0X2V4dGVuc2lvbl9saXRlEigucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFs" + 
-          "bEV4dGVuc2lvbnNMaXRlGCggAygQOk8KHXJlcGVhdGVkX2Zsb2F0X2V4dGVu" + 
-          "c2lvbl9saXRlEigucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lv" + 
-          "bnNMaXRlGCkgAygCOlAKHnJlcGVhdGVkX2RvdWJsZV9leHRlbnNpb25fbGl0" + 
-          "ZRIoLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zTGl0ZRgq" + 
-          "IAMoATpOChxyZXBlYXRlZF9ib29sX2V4dGVuc2lvbl9saXRlEigucHJvdG9i" + 
-          "dWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnNMaXRlGCsgAygIOlAKHnJl" + 
-          "cGVhdGVkX3N0cmluZ19leHRlbnNpb25fbGl0ZRIoLnByb3RvYnVmX3VuaXR0" + 
-          "ZXN0LlRlc3RBbGxFeHRlbnNpb25zTGl0ZRgsIAMoCTpPCh1yZXBlYXRlZF9i" + 
-          "eXRlc19leHRlbnNpb25fbGl0ZRIoLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RB" + 
-          "bGxFeHRlbnNpb25zTGl0ZRgtIAMoDDp/ChxyZXBlYXRlZGdyb3VwX2V4dGVu" + 
-          "c2lvbl9saXRlEigucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lv" + 
-          "bnNMaXRlGC4gAygKMi8ucHJvdG9idWZfdW5pdHRlc3QuUmVwZWF0ZWRHcm91" + 
-          "cF9leHRlbnNpb25fbGl0ZTqLAQomcmVwZWF0ZWRfbmVzdGVkX21lc3NhZ2Vf" + 
-          "ZXh0ZW5zaW9uX2xpdGUSKC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0" + 
-          "ZW5zaW9uc0xpdGUYMCADKAsyMS5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxs" + 
-          "VHlwZXNMaXRlLk5lc3RlZE1lc3NhZ2U6gAEKJ3JlcGVhdGVkX2ZvcmVpZ25f" + 
-          "bWVzc2FnZV9leHRlbnNpb25fbGl0ZRIoLnByb3RvYnVmX3VuaXR0ZXN0LlRl" + 
-          "c3RBbGxFeHRlbnNpb25zTGl0ZRgxIAMoCzIlLnByb3RvYnVmX3VuaXR0ZXN0" + 
-          "LkZvcmVpZ25NZXNzYWdlTGl0ZTqFAQomcmVwZWF0ZWRfaW1wb3J0X21lc3Nh" + 
-          "Z2VfZXh0ZW5zaW9uX2xpdGUSKC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxs" + 
-          "RXh0ZW5zaW9uc0xpdGUYMiADKAsyKy5wcm90b2J1Zl91bml0dGVzdF9pbXBv" + 
-          "cnQuSW1wb3J0TWVzc2FnZUxpdGU6hQEKI3JlcGVhdGVkX25lc3RlZF9lbnVt" + 
-          "X2V4dGVuc2lvbl9saXRlEigucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4" + 
-          "dGVuc2lvbnNMaXRlGDMgAygOMi4ucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFs" + 
-          "bFR5cGVzTGl0ZS5OZXN0ZWRFbnVtOnoKJHJlcGVhdGVkX2ZvcmVpZ25fZW51" + 
-          "bV9leHRlbnNpb25fbGl0ZRIoLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxF" + 
-          "eHRlbnNpb25zTGl0ZRg0IAMoDjIiLnByb3RvYnVmX3VuaXR0ZXN0LkZvcmVp" + 
-          "Z25FbnVtTGl0ZTp/CiNyZXBlYXRlZF9pbXBvcnRfZW51bV9leHRlbnNpb25f" + 
-          "bGl0ZRIoLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zTGl0" + 
-          "ZRg1IAMoDjIoLnByb3RvYnVmX3VuaXR0ZXN0X2ltcG9ydC5JbXBvcnRFbnVt" + 
-          "TGl0ZTpaCiRyZXBlYXRlZF9zdHJpbmdfcGllY2VfZXh0ZW5zaW9uX2xpdGUS" + 
-          "KC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9uc0xpdGUYNiAD" + 
-          "KAlCAggCOlIKHHJlcGVhdGVkX2NvcmRfZXh0ZW5zaW9uX2xpdGUSKC5wcm90" + 
-          "b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9uc0xpdGUYNyADKAlCAggB" + 
-          "OlIKHGRlZmF1bHRfaW50MzJfZXh0ZW5zaW9uX2xpdGUSKC5wcm90b2J1Zl91" + 
-          "bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9uc0xpdGUYPSABKAU6AjQxOlIKHGRl" + 
-          "ZmF1bHRfaW50NjRfZXh0ZW5zaW9uX2xpdGUSKC5wcm90b2J1Zl91bml0dGVz" + 
-          "dC5UZXN0QWxsRXh0ZW5zaW9uc0xpdGUYPiABKAM6AjQyOlMKHWRlZmF1bHRf" + 
-          "dWludDMyX2V4dGVuc2lvbl9saXRlEigucHJvdG9idWZfdW5pdHRlc3QuVGVz" + 
-          "dEFsbEV4dGVuc2lvbnNMaXRlGD8gASgNOgI0MzpTCh1kZWZhdWx0X3VpbnQ2" + 
-          "NF9leHRlbnNpb25fbGl0ZRIoLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxF" + 
-          "eHRlbnNpb25zTGl0ZRhAIAEoBDoCNDQ6VAodZGVmYXVsdF9zaW50MzJfZXh0" + 
-          "ZW5zaW9uX2xpdGUSKC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5z" + 
-          "aW9uc0xpdGUYQSABKBE6Ay00NTpTCh1kZWZhdWx0X3NpbnQ2NF9leHRlbnNp" + 
-          "b25fbGl0ZRIoLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25z" + 
-          "TGl0ZRhCIAEoEjoCNDY6VAoeZGVmYXVsdF9maXhlZDMyX2V4dGVuc2lvbl9s" + 
-          "aXRlEigucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnNMaXRl" + 
-          "GEMgASgHOgI0NzpUCh5kZWZhdWx0X2ZpeGVkNjRfZXh0ZW5zaW9uX2xpdGUS" + 
-          "KC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9uc0xpdGUYRCAB" + 
-          "KAY6AjQ4OlUKH2RlZmF1bHRfc2ZpeGVkMzJfZXh0ZW5zaW9uX2xpdGUSKC5w" + 
-          "cm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9uc0xpdGUYRSABKA86" + 
-          "AjQ5OlYKH2RlZmF1bHRfc2ZpeGVkNjRfZXh0ZW5zaW9uX2xpdGUSKC5wcm90" + 
-          "b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9uc0xpdGUYRiABKBA6Ay01" + 
-          "MDpUChxkZWZhdWx0X2Zsb2F0X2V4dGVuc2lvbl9saXRlEigucHJvdG9idWZf" + 
-          "dW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnNMaXRlGEcgASgCOgQ1MS41OlYK" + 
-          "HWRlZmF1bHRfZG91YmxlX2V4dGVuc2lvbl9saXRlEigucHJvdG9idWZfdW5p" + 
-          "dHRlc3QuVGVzdEFsbEV4dGVuc2lvbnNMaXRlGEggASgBOgU1MjAwMDpTChtk" + 
-          "ZWZhdWx0X2Jvb2xfZXh0ZW5zaW9uX2xpdGUSKC5wcm90b2J1Zl91bml0dGVz" + 
-          "dC5UZXN0QWxsRXh0ZW5zaW9uc0xpdGUYSSABKAg6BHRydWU6VgodZGVmYXVs" + 
-          "dF9zdHJpbmdfZXh0ZW5zaW9uX2xpdGUSKC5wcm90b2J1Zl91bml0dGVzdC5U" + 
-          "ZXN0QWxsRXh0ZW5zaW9uc0xpdGUYSiABKAk6BWhlbGxvOlUKHGRlZmF1bHRf" + 
-          "Ynl0ZXNfZXh0ZW5zaW9uX2xpdGUSKC5wcm90b2J1Zl91bml0dGVzdC5UZXN0" + 
-          "QWxsRXh0ZW5zaW9uc0xpdGUYSyABKAw6BXdvcmxkOokBCiJkZWZhdWx0X25l" + 
-          "c3RlZF9lbnVtX2V4dGVuc2lvbl9saXRlEigucHJvdG9idWZfdW5pdHRlc3Qu" + 
-          "VGVzdEFsbEV4dGVuc2lvbnNMaXRlGFEgASgOMi4ucHJvdG9idWZfdW5pdHRl" + 
-          "c3QuVGVzdEFsbFR5cGVzTGl0ZS5OZXN0ZWRFbnVtOgNCQVI6iwEKI2RlZmF1" + 
-          "bHRfZm9yZWlnbl9lbnVtX2V4dGVuc2lvbl9saXRlEigucHJvdG9idWZfdW5p" + 
-          "dHRlc3QuVGVzdEFsbEV4dGVuc2lvbnNMaXRlGFIgASgOMiIucHJvdG9idWZf" + 
-          "dW5pdHRlc3QuRm9yZWlnbkVudW1MaXRlOhBGT1JFSUdOX0xJVEVfQkFSOo8B" + 
-          "CiJkZWZhdWx0X2ltcG9ydF9lbnVtX2V4dGVuc2lvbl9saXRlEigucHJvdG9i" + 
-          "dWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnNMaXRlGFMgASgOMigucHJv" + 
-          "dG9idWZfdW5pdHRlc3RfaW1wb3J0LkltcG9ydEVudW1MaXRlOg9JTVBPUlRf" + 
-          "TElURV9CQVI6XgojZGVmYXVsdF9zdHJpbmdfcGllY2VfZXh0ZW5zaW9uX2xp" + 
-          "dGUSKC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9uc0xpdGUY" + 
-          "VCABKAk6A2FiY0ICCAI6VgobZGVmYXVsdF9jb3JkX2V4dGVuc2lvbl9saXRl" + 
-          "EigucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnNMaXRlGFUg" + 
-          "ASgJOgMxMjNCAggBOlQKG3BhY2tlZF9pbnQzMl9leHRlbnNpb25fbGl0ZRIr" + 
-          "LnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RQYWNrZWRFeHRlbnNpb25zTGl0ZRha" + 
-          "IAMoBUICEAE6VAobcGFja2VkX2ludDY0X2V4dGVuc2lvbl9saXRlEisucHJv" + 
-          "dG9idWZfdW5pdHRlc3QuVGVzdFBhY2tlZEV4dGVuc2lvbnNMaXRlGFsgAygD" + 
-          "QgIQATpVChxwYWNrZWRfdWludDMyX2V4dGVuc2lvbl9saXRlEisucHJvdG9i" + 
-          "dWZfdW5pdHRlc3QuVGVzdFBhY2tlZEV4dGVuc2lvbnNMaXRlGFwgAygNQgIQ" + 
-          "ATpVChxwYWNrZWRfdWludDY0X2V4dGVuc2lvbl9saXRlEisucHJvdG9idWZf" + 
-          "dW5pdHRlc3QuVGVzdFBhY2tlZEV4dGVuc2lvbnNMaXRlGF0gAygEQgIQATpV" + 
-          "ChxwYWNrZWRfc2ludDMyX2V4dGVuc2lvbl9saXRlEisucHJvdG9idWZfdW5p" + 
-          "dHRlc3QuVGVzdFBhY2tlZEV4dGVuc2lvbnNMaXRlGF4gAygRQgIQATpVChxw" + 
-          "YWNrZWRfc2ludDY0X2V4dGVuc2lvbl9saXRlEisucHJvdG9idWZfdW5pdHRl" + 
-          "c3QuVGVzdFBhY2tlZEV4dGVuc2lvbnNMaXRlGF8gAygSQgIQATpWCh1wYWNr" + 
-          "ZWRfZml4ZWQzMl9leHRlbnNpb25fbGl0ZRIrLnByb3RvYnVmX3VuaXR0ZXN0" + 
-          "LlRlc3RQYWNrZWRFeHRlbnNpb25zTGl0ZRhgIAMoB0ICEAE6VgodcGFja2Vk" + 
-          "X2ZpeGVkNjRfZXh0ZW5zaW9uX2xpdGUSKy5wcm90b2J1Zl91bml0dGVzdC5U" + 
-          "ZXN0UGFja2VkRXh0ZW5zaW9uc0xpdGUYYSADKAZCAhABOlcKHnBhY2tlZF9z" + 
-          "Zml4ZWQzMl9leHRlbnNpb25fbGl0ZRIrLnByb3RvYnVmX3VuaXR0ZXN0LlRl" + 
-          "c3RQYWNrZWRFeHRlbnNpb25zTGl0ZRhiIAMoD0ICEAE6VwoecGFja2VkX3Nm" + 
-          "aXhlZDY0X2V4dGVuc2lvbl9saXRlEisucHJvdG9idWZfdW5pdHRlc3QuVGVz" + 
-          "dFBhY2tlZEV4dGVuc2lvbnNMaXRlGGMgAygQQgIQATpUChtwYWNrZWRfZmxv" + 
-          "YXRfZXh0ZW5zaW9uX2xpdGUSKy5wcm90b2J1Zl91bml0dGVzdC5UZXN0UGFj" + 
-          "a2VkRXh0ZW5zaW9uc0xpdGUYZCADKAJCAhABOlUKHHBhY2tlZF9kb3VibGVf" + 
-          "ZXh0ZW5zaW9uX2xpdGUSKy5wcm90b2J1Zl91bml0dGVzdC5UZXN0UGFja2Vk" + 
-          "RXh0ZW5zaW9uc0xpdGUYZSADKAFCAhABOlMKGnBhY2tlZF9ib29sX2V4dGVu" + 
-          "c2lvbl9saXRlEisucHJvdG9idWZfdW5pdHRlc3QuVGVzdFBhY2tlZEV4dGVu" + 
-          "c2lvbnNMaXRlGGYgAygIQgIQATp3ChpwYWNrZWRfZW51bV9leHRlbnNpb25f" + 
-          "bGl0ZRIrLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RQYWNrZWRFeHRlbnNpb25z" + 
-          "TGl0ZRhnIAMoDjIiLnByb3RvYnVmX3VuaXR0ZXN0LkZvcmVpZ25FbnVtTGl0" + 
-          "ZUICEAFCFwoTY29tLmdvb2dsZS5wcm90b2J1ZkgD");
-      pbd::FileDescriptor.InternalDescriptorAssigner assigner = delegate(pbd::FileDescriptor root) {
-        descriptor = root;
-        internal__static_protobuf_unittest_TestAllTypesLite__Descriptor = Descriptor.MessageTypes[0];
-        internal__static_protobuf_unittest_TestAllTypesLite__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::protobuf_unittest.TestAllTypesLite, global::protobuf_unittest.TestAllTypesLite.Builder>(internal__static_protobuf_unittest_TestAllTypesLite__Descriptor,
-                new string[] { "OptionalInt32", "OptionalInt64", "OptionalUint32", "OptionalUint64", "OptionalSint32", "OptionalSint64", "OptionalFixed32", "OptionalFixed64", "OptionalSfixed32", "OptionalSfixed64", "OptionalFloat", "OptionalDouble", "OptionalBool", "OptionalString", "OptionalBytes", "OptionalGroup", "OptionalNestedMessage", "OptionalForeignMessage", "OptionalImportMessage", "OptionalNestedEnum", "OptionalForeignEnum", "OptionalImportEnum", "OptionalStringPiece", "OptionalCord", "RepeatedInt32", "RepeatedInt64", "RepeatedUint32", "RepeatedUint64", "RepeatedSint32", "RepeatedSint64", "RepeatedFixed32", "RepeatedFixed64", "RepeatedSfixed32", "RepeatedSfixed64", "RepeatedFloat", "RepeatedDouble", "RepeatedBool", "RepeatedString", "RepeatedBytes", "RepeatedGroup", "RepeatedNestedMessage", "RepeatedForeignMessage", "RepeatedImportMessage", "RepeatedNestedEnum", "RepeatedForeignEnum", "RepeatedImportEnum", "RepeatedStringPiece", "RepeatedCord", "DefaultInt32", "DefaultInt64", "DefaultUint32", "DefaultUint64", "DefaultSint32", "DefaultSint64", "DefaultFixed32", "DefaultFixed64", "DefaultSfixed32", "DefaultSfixed64", "DefaultFloat", "DefaultDouble", "DefaultBool", "DefaultString", "DefaultBytes", "DefaultNestedEnum", "DefaultForeignEnum", "DefaultImportEnum", "DefaultStringPiece", "DefaultCord", });
-        internal__static_protobuf_unittest_TestAllTypesLite_NestedMessage__Descriptor = internal__static_protobuf_unittest_TestAllTypesLite__Descriptor.NestedTypes[0];
-        internal__static_protobuf_unittest_TestAllTypesLite_NestedMessage__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::protobuf_unittest.TestAllTypesLite.Types.NestedMessage, global::protobuf_unittest.TestAllTypesLite.Types.NestedMessage.Builder>(internal__static_protobuf_unittest_TestAllTypesLite_NestedMessage__Descriptor,
-                new string[] { "Bb", });
-        internal__static_protobuf_unittest_TestAllTypesLite_OptionalGroup__Descriptor = internal__static_protobuf_unittest_TestAllTypesLite__Descriptor.NestedTypes[1];
-        internal__static_protobuf_unittest_TestAllTypesLite_OptionalGroup__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::protobuf_unittest.TestAllTypesLite.Types.OptionalGroup, global::protobuf_unittest.TestAllTypesLite.Types.OptionalGroup.Builder>(internal__static_protobuf_unittest_TestAllTypesLite_OptionalGroup__Descriptor,
-                new string[] { "A", });
-        internal__static_protobuf_unittest_TestAllTypesLite_RepeatedGroup__Descriptor = internal__static_protobuf_unittest_TestAllTypesLite__Descriptor.NestedTypes[2];
-        internal__static_protobuf_unittest_TestAllTypesLite_RepeatedGroup__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::protobuf_unittest.TestAllTypesLite.Types.RepeatedGroup, global::protobuf_unittest.TestAllTypesLite.Types.RepeatedGroup.Builder>(internal__static_protobuf_unittest_TestAllTypesLite_RepeatedGroup__Descriptor,
-                new string[] { "A", });
-        internal__static_protobuf_unittest_ForeignMessageLite__Descriptor = Descriptor.MessageTypes[1];
-        internal__static_protobuf_unittest_ForeignMessageLite__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::protobuf_unittest.ForeignMessageLite, global::protobuf_unittest.ForeignMessageLite.Builder>(internal__static_protobuf_unittest_ForeignMessageLite__Descriptor,
-                new string[] { "C", });
-        internal__static_protobuf_unittest_TestPackedTypesLite__Descriptor = Descriptor.MessageTypes[2];
-        internal__static_protobuf_unittest_TestPackedTypesLite__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::protobuf_unittest.TestPackedTypesLite, global::protobuf_unittest.TestPackedTypesLite.Builder>(internal__static_protobuf_unittest_TestPackedTypesLite__Descriptor,
-                new string[] { "PackedInt32", "PackedInt64", "PackedUint32", "PackedUint64", "PackedSint32", "PackedSint64", "PackedFixed32", "PackedFixed64", "PackedSfixed32", "PackedSfixed64", "PackedFloat", "PackedDouble", "PackedBool", "PackedEnum", });
-        internal__static_protobuf_unittest_TestAllExtensionsLite__Descriptor = Descriptor.MessageTypes[3];
-        internal__static_protobuf_unittest_TestAllExtensionsLite__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::protobuf_unittest.TestAllExtensionsLite, global::protobuf_unittest.TestAllExtensionsLite.Builder>(internal__static_protobuf_unittest_TestAllExtensionsLite__Descriptor,
-                new string[] { });
-        internal__static_protobuf_unittest_OptionalGroup_extension_lite__Descriptor = Descriptor.MessageTypes[4];
-        internal__static_protobuf_unittest_OptionalGroup_extension_lite__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::protobuf_unittest.OptionalGroup_extension_lite, global::protobuf_unittest.OptionalGroup_extension_lite.Builder>(internal__static_protobuf_unittest_OptionalGroup_extension_lite__Descriptor,
-                new string[] { "A", });
-        internal__static_protobuf_unittest_RepeatedGroup_extension_lite__Descriptor = Descriptor.MessageTypes[5];
-        internal__static_protobuf_unittest_RepeatedGroup_extension_lite__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::protobuf_unittest.RepeatedGroup_extension_lite, global::protobuf_unittest.RepeatedGroup_extension_lite.Builder>(internal__static_protobuf_unittest_RepeatedGroup_extension_lite__Descriptor,
-                new string[] { "A", });
-        internal__static_protobuf_unittest_TestPackedExtensionsLite__Descriptor = Descriptor.MessageTypes[6];
-        internal__static_protobuf_unittest_TestPackedExtensionsLite__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::protobuf_unittest.TestPackedExtensionsLite, global::protobuf_unittest.TestPackedExtensionsLite.Builder>(internal__static_protobuf_unittest_TestPackedExtensionsLite__Descriptor,
-                new string[] { });
-        internal__static_protobuf_unittest_TestNestedExtensionLite__Descriptor = Descriptor.MessageTypes[7];
-        internal__static_protobuf_unittest_TestNestedExtensionLite__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::protobuf_unittest.TestNestedExtensionLite, global::protobuf_unittest.TestNestedExtensionLite.Builder>(internal__static_protobuf_unittest_TestNestedExtensionLite__Descriptor,
-                new string[] { });
-        global::protobuf_unittest.TestNestedExtensionLite.NestedExtension = pb::GeneratedSingleExtension<int>.CreateInstance(global::protobuf_unittest.TestNestedExtensionLite.Descriptor.Extensions[0]);
-        internal__static_protobuf_unittest_TestDeprecatedLite__Descriptor = Descriptor.MessageTypes[8];
-        internal__static_protobuf_unittest_TestDeprecatedLite__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::protobuf_unittest.TestDeprecatedLite, global::protobuf_unittest.TestDeprecatedLite.Builder>(internal__static_protobuf_unittest_TestDeprecatedLite__Descriptor,
-                new string[] { "DeprecatedField", });
-        global::protobuf_unittest.UnittestLite.OptionalInt32ExtensionLite = pb::GeneratedSingleExtension<int>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[0]);
-        global::protobuf_unittest.UnittestLite.OptionalInt64ExtensionLite = pb::GeneratedSingleExtension<long>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[1]);
-        global::protobuf_unittest.UnittestLite.OptionalUint32ExtensionLite = pb::GeneratedSingleExtension<uint>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[2]);
-        global::protobuf_unittest.UnittestLite.OptionalUint64ExtensionLite = pb::GeneratedSingleExtension<ulong>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[3]);
-        global::protobuf_unittest.UnittestLite.OptionalSint32ExtensionLite = pb::GeneratedSingleExtension<int>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[4]);
-        global::protobuf_unittest.UnittestLite.OptionalSint64ExtensionLite = pb::GeneratedSingleExtension<long>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[5]);
-        global::protobuf_unittest.UnittestLite.OptionalFixed32ExtensionLite = pb::GeneratedSingleExtension<uint>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[6]);
-        global::protobuf_unittest.UnittestLite.OptionalFixed64ExtensionLite = pb::GeneratedSingleExtension<ulong>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[7]);
-        global::protobuf_unittest.UnittestLite.OptionalSfixed32ExtensionLite = pb::GeneratedSingleExtension<int>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[8]);
-        global::protobuf_unittest.UnittestLite.OptionalSfixed64ExtensionLite = pb::GeneratedSingleExtension<long>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[9]);
-        global::protobuf_unittest.UnittestLite.OptionalFloatExtensionLite = pb::GeneratedSingleExtension<float>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[10]);
-        global::protobuf_unittest.UnittestLite.OptionalDoubleExtensionLite = pb::GeneratedSingleExtension<double>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[11]);
-        global::protobuf_unittest.UnittestLite.OptionalBoolExtensionLite = pb::GeneratedSingleExtension<bool>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[12]);
-        global::protobuf_unittest.UnittestLite.OptionalStringExtensionLite = pb::GeneratedSingleExtension<string>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[13]);
-        global::protobuf_unittest.UnittestLite.OptionalBytesExtensionLite = pb::GeneratedSingleExtension<pb::ByteString>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[14]);
-        global::protobuf_unittest.UnittestLite.OptionalGroupExtensionLite = pb::GeneratedSingleExtension<global::protobuf_unittest.OptionalGroup_extension_lite>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[15]);
-        global::protobuf_unittest.UnittestLite.OptionalNestedMessageExtensionLite = pb::GeneratedSingleExtension<global::protobuf_unittest.TestAllTypesLite.Types.NestedMessage>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[16]);
-        global::protobuf_unittest.UnittestLite.OptionalForeignMessageExtensionLite = pb::GeneratedSingleExtension<global::protobuf_unittest.ForeignMessageLite>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[17]);
-        global::protobuf_unittest.UnittestLite.OptionalImportMessageExtensionLite = pb::GeneratedSingleExtension<global::protobuf_unittest_import.ImportMessageLite>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[18]);
-        global::protobuf_unittest.UnittestLite.OptionalNestedEnumExtensionLite = pb::GeneratedSingleExtension<global::protobuf_unittest.TestAllTypesLite.Types.NestedEnum>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[19]);
-        global::protobuf_unittest.UnittestLite.OptionalForeignEnumExtensionLite = pb::GeneratedSingleExtension<global::protobuf_unittest.ForeignEnumLite>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[20]);
-        global::protobuf_unittest.UnittestLite.OptionalImportEnumExtensionLite = pb::GeneratedSingleExtension<global::protobuf_unittest_import.ImportEnumLite>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[21]);
-        global::protobuf_unittest.UnittestLite.OptionalStringPieceExtensionLite = pb::GeneratedSingleExtension<string>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[22]);
-        global::protobuf_unittest.UnittestLite.OptionalCordExtensionLite = pb::GeneratedSingleExtension<string>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[23]);
-        global::protobuf_unittest.UnittestLite.RepeatedInt32ExtensionLite = pb::GeneratedRepeatExtension<int>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[24]);
-        global::protobuf_unittest.UnittestLite.RepeatedInt64ExtensionLite = pb::GeneratedRepeatExtension<long>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[25]);
-        global::protobuf_unittest.UnittestLite.RepeatedUint32ExtensionLite = pb::GeneratedRepeatExtension<uint>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[26]);
-        global::protobuf_unittest.UnittestLite.RepeatedUint64ExtensionLite = pb::GeneratedRepeatExtension<ulong>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[27]);
-        global::protobuf_unittest.UnittestLite.RepeatedSint32ExtensionLite = pb::GeneratedRepeatExtension<int>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[28]);
-        global::protobuf_unittest.UnittestLite.RepeatedSint64ExtensionLite = pb::GeneratedRepeatExtension<long>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[29]);
-        global::protobuf_unittest.UnittestLite.RepeatedFixed32ExtensionLite = pb::GeneratedRepeatExtension<uint>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[30]);
-        global::protobuf_unittest.UnittestLite.RepeatedFixed64ExtensionLite = pb::GeneratedRepeatExtension<ulong>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[31]);
-        global::protobuf_unittest.UnittestLite.RepeatedSfixed32ExtensionLite = pb::GeneratedRepeatExtension<int>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[32]);
-        global::protobuf_unittest.UnittestLite.RepeatedSfixed64ExtensionLite = pb::GeneratedRepeatExtension<long>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[33]);
-        global::protobuf_unittest.UnittestLite.RepeatedFloatExtensionLite = pb::GeneratedRepeatExtension<float>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[34]);
-        global::protobuf_unittest.UnittestLite.RepeatedDoubleExtensionLite = pb::GeneratedRepeatExtension<double>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[35]);
-        global::protobuf_unittest.UnittestLite.RepeatedBoolExtensionLite = pb::GeneratedRepeatExtension<bool>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[36]);
-        global::protobuf_unittest.UnittestLite.RepeatedStringExtensionLite = pb::GeneratedRepeatExtension<string>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[37]);
-        global::protobuf_unittest.UnittestLite.RepeatedBytesExtensionLite = pb::GeneratedRepeatExtension<pb::ByteString>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[38]);
-        global::protobuf_unittest.UnittestLite.RepeatedGroupExtensionLite = pb::GeneratedRepeatExtension<global::protobuf_unittest.RepeatedGroup_extension_lite>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[39]);
-        global::protobuf_unittest.UnittestLite.RepeatedNestedMessageExtensionLite = pb::GeneratedRepeatExtension<global::protobuf_unittest.TestAllTypesLite.Types.NestedMessage>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[40]);
-        global::protobuf_unittest.UnittestLite.RepeatedForeignMessageExtensionLite = pb::GeneratedRepeatExtension<global::protobuf_unittest.ForeignMessageLite>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[41]);
-        global::protobuf_unittest.UnittestLite.RepeatedImportMessageExtensionLite = pb::GeneratedRepeatExtension<global::protobuf_unittest_import.ImportMessageLite>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[42]);
-        global::protobuf_unittest.UnittestLite.RepeatedNestedEnumExtensionLite = pb::GeneratedRepeatExtension<global::protobuf_unittest.TestAllTypesLite.Types.NestedEnum>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[43]);
-        global::protobuf_unittest.UnittestLite.RepeatedForeignEnumExtensionLite = pb::GeneratedRepeatExtension<global::protobuf_unittest.ForeignEnumLite>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[44]);
-        global::protobuf_unittest.UnittestLite.RepeatedImportEnumExtensionLite = pb::GeneratedRepeatExtension<global::protobuf_unittest_import.ImportEnumLite>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[45]);
-        global::protobuf_unittest.UnittestLite.RepeatedStringPieceExtensionLite = pb::GeneratedRepeatExtension<string>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[46]);
-        global::protobuf_unittest.UnittestLite.RepeatedCordExtensionLite = pb::GeneratedRepeatExtension<string>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[47]);
-        global::protobuf_unittest.UnittestLite.DefaultInt32ExtensionLite = pb::GeneratedSingleExtension<int>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[48]);
-        global::protobuf_unittest.UnittestLite.DefaultInt64ExtensionLite = pb::GeneratedSingleExtension<long>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[49]);
-        global::protobuf_unittest.UnittestLite.DefaultUint32ExtensionLite = pb::GeneratedSingleExtension<uint>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[50]);
-        global::protobuf_unittest.UnittestLite.DefaultUint64ExtensionLite = pb::GeneratedSingleExtension<ulong>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[51]);
-        global::protobuf_unittest.UnittestLite.DefaultSint32ExtensionLite = pb::GeneratedSingleExtension<int>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[52]);
-        global::protobuf_unittest.UnittestLite.DefaultSint64ExtensionLite = pb::GeneratedSingleExtension<long>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[53]);
-        global::protobuf_unittest.UnittestLite.DefaultFixed32ExtensionLite = pb::GeneratedSingleExtension<uint>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[54]);
-        global::protobuf_unittest.UnittestLite.DefaultFixed64ExtensionLite = pb::GeneratedSingleExtension<ulong>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[55]);
-        global::protobuf_unittest.UnittestLite.DefaultSfixed32ExtensionLite = pb::GeneratedSingleExtension<int>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[56]);
-        global::protobuf_unittest.UnittestLite.DefaultSfixed64ExtensionLite = pb::GeneratedSingleExtension<long>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[57]);
-        global::protobuf_unittest.UnittestLite.DefaultFloatExtensionLite = pb::GeneratedSingleExtension<float>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[58]);
-        global::protobuf_unittest.UnittestLite.DefaultDoubleExtensionLite = pb::GeneratedSingleExtension<double>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[59]);
-        global::protobuf_unittest.UnittestLite.DefaultBoolExtensionLite = pb::GeneratedSingleExtension<bool>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[60]);
-        global::protobuf_unittest.UnittestLite.DefaultStringExtensionLite = pb::GeneratedSingleExtension<string>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[61]);
-        global::protobuf_unittest.UnittestLite.DefaultBytesExtensionLite = pb::GeneratedSingleExtension<pb::ByteString>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[62]);
-        global::protobuf_unittest.UnittestLite.DefaultNestedEnumExtensionLite = pb::GeneratedSingleExtension<global::protobuf_unittest.TestAllTypesLite.Types.NestedEnum>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[63]);
-        global::protobuf_unittest.UnittestLite.DefaultForeignEnumExtensionLite = pb::GeneratedSingleExtension<global::protobuf_unittest.ForeignEnumLite>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[64]);
-        global::protobuf_unittest.UnittestLite.DefaultImportEnumExtensionLite = pb::GeneratedSingleExtension<global::protobuf_unittest_import.ImportEnumLite>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[65]);
-        global::protobuf_unittest.UnittestLite.DefaultStringPieceExtensionLite = pb::GeneratedSingleExtension<string>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[66]);
-        global::protobuf_unittest.UnittestLite.DefaultCordExtensionLite = pb::GeneratedSingleExtension<string>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[67]);
-        global::protobuf_unittest.UnittestLite.PackedInt32ExtensionLite = pb::GeneratedRepeatExtension<int>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[68]);
-        global::protobuf_unittest.UnittestLite.PackedInt64ExtensionLite = pb::GeneratedRepeatExtension<long>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[69]);
-        global::protobuf_unittest.UnittestLite.PackedUint32ExtensionLite = pb::GeneratedRepeatExtension<uint>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[70]);
-        global::protobuf_unittest.UnittestLite.PackedUint64ExtensionLite = pb::GeneratedRepeatExtension<ulong>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[71]);
-        global::protobuf_unittest.UnittestLite.PackedSint32ExtensionLite = pb::GeneratedRepeatExtension<int>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[72]);
-        global::protobuf_unittest.UnittestLite.PackedSint64ExtensionLite = pb::GeneratedRepeatExtension<long>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[73]);
-        global::protobuf_unittest.UnittestLite.PackedFixed32ExtensionLite = pb::GeneratedRepeatExtension<uint>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[74]);
-        global::protobuf_unittest.UnittestLite.PackedFixed64ExtensionLite = pb::GeneratedRepeatExtension<ulong>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[75]);
-        global::protobuf_unittest.UnittestLite.PackedSfixed32ExtensionLite = pb::GeneratedRepeatExtension<int>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[76]);
-        global::protobuf_unittest.UnittestLite.PackedSfixed64ExtensionLite = pb::GeneratedRepeatExtension<long>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[77]);
-        global::protobuf_unittest.UnittestLite.PackedFloatExtensionLite = pb::GeneratedRepeatExtension<float>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[78]);
-        global::protobuf_unittest.UnittestLite.PackedDoubleExtensionLite = pb::GeneratedRepeatExtension<double>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[79]);
-        global::protobuf_unittest.UnittestLite.PackedBoolExtensionLite = pb::GeneratedRepeatExtension<bool>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[80]);
-        global::protobuf_unittest.UnittestLite.PackedEnumExtensionLite = pb::GeneratedRepeatExtension<global::protobuf_unittest.ForeignEnumLite>.CreateInstance(global::protobuf_unittest.UnittestLite.Descriptor.Extensions[81]);
-        pb::ExtensionRegistry registry = pb::ExtensionRegistry.CreateInstance();
-        RegisterAllExtensions(registry);
-        global::protobuf_unittest_import.UnittestImportLite.RegisterAllExtensions(registry);
-        return registry;
-      };
-      pbd::FileDescriptor.InternalBuildGeneratedFileFrom(descriptorData,
-          new pbd::FileDescriptor[] {
-          global::protobuf_unittest_import.UnittestImportLite.Descriptor, 
-          }, assigner);
-    }
-    #endregion
-    
-  }
-  #region Enums
-  public enum ForeignEnumLite {
-    FOREIGN_LITE_FOO = 4,
-    FOREIGN_LITE_BAR = 5,
-    FOREIGN_LITE_BAZ = 6,
-  }
-  
-  #endregion
-  
-  #region Messages
-  public sealed partial class TestAllTypesLite : pb::GeneratedMessage<TestAllTypesLite, TestAllTypesLite.Builder> {
-    private static readonly TestAllTypesLite defaultInstance = new Builder().BuildPartial();
-    public static TestAllTypesLite DefaultInstance {
-      get { return defaultInstance; }
-    }
-    
-    public override TestAllTypesLite DefaultInstanceForType {
-      get { return defaultInstance; }
-    }
-    
-    protected override TestAllTypesLite ThisMessage {
-      get { return this; }
-    }
-    
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::protobuf_unittest.UnittestLite.internal__static_protobuf_unittest_TestAllTypesLite__Descriptor; }
-    }
-    
-    protected override pb::FieldAccess.FieldAccessorTable<TestAllTypesLite, TestAllTypesLite.Builder> InternalFieldAccessors {
-      get { return global::protobuf_unittest.UnittestLite.internal__static_protobuf_unittest_TestAllTypesLite__FieldAccessorTable; }
-    }
-    
-    #region Nested types
-    public static class Types {
-      public enum NestedEnum {
-        FOO = 1,
-        BAR = 2,
-        BAZ = 3,
-      }
-      
-      public sealed partial class NestedMessage : pb::GeneratedMessage<NestedMessage, NestedMessage.Builder> {
-        private static readonly NestedMessage defaultInstance = new Builder().BuildPartial();
-        public static NestedMessage DefaultInstance {
-          get { return defaultInstance; }
-        }
-        
-        public override NestedMessage DefaultInstanceForType {
-          get { return defaultInstance; }
-        }
-        
-        protected override NestedMessage ThisMessage {
-          get { return this; }
-        }
-        
-        public static pbd::MessageDescriptor Descriptor {
-          get { return global::protobuf_unittest.UnittestLite.internal__static_protobuf_unittest_TestAllTypesLite_NestedMessage__Descriptor; }
-        }
-        
-        protected override pb::FieldAccess.FieldAccessorTable<NestedMessage, NestedMessage.Builder> InternalFieldAccessors {
-          get { return global::protobuf_unittest.UnittestLite.internal__static_protobuf_unittest_TestAllTypesLite_NestedMessage__FieldAccessorTable; }
-        }
-        
-        public const int BbFieldNumber = 1;
-        private bool hasBb;
-        private int bb_ = 0;
-        public bool HasBb {
-          get { return hasBb; }
-        }
-        public int Bb {
-          get { return bb_; }
-        }
-        
-        public override bool IsInitialized {
-          get {
-            return true;
-          }
-        }
-        
-        public override void WriteTo(pb::CodedOutputStream output) {
-          int size = SerializedSize;
-          if (HasBb) {
-            output.WriteInt32(1, Bb);
-          }
-          UnknownFields.WriteTo(output);
-        }
-        
-        private int memoizedSerializedSize = -1;
-        public override int SerializedSize {
-          get {
-            int size = memoizedSerializedSize;
-            if (size != -1) return size;
-            
-            size = 0;
-            if (HasBb) {
-              size += pb::CodedOutputStream.ComputeInt32Size(1, Bb);
-            }
-            size += UnknownFields.SerializedSize;
-            memoizedSerializedSize = size;
-            return size;
-          }
-        }
-        
-        public static NestedMessage ParseFrom(pb::ByteString data) {
-          return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-        }
-        public static NestedMessage ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-        }
-        public static NestedMessage ParseFrom(byte[] data) {
-          return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-        }
-        public static NestedMessage ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-        }
-        public static NestedMessage ParseFrom(global::System.IO.Stream input) {
-          return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-        }
-        public static NestedMessage ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-        }
-        public static NestedMessage ParseDelimitedFrom(global::System.IO.Stream input) {
-          return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-        }
-        public static NestedMessage ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-          return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-        }
-        public static NestedMessage ParseFrom(pb::CodedInputStream input) {
-          return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-        }
-        public static NestedMessage ParseFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-        }
-        public static Builder CreateBuilder() { return new Builder(); }
-        public override Builder ToBuilder() { return CreateBuilder(this); }
-        public override Builder CreateBuilderForType() { return new Builder(); }
-        public static Builder CreateBuilder(NestedMessage prototype) {
-          return (Builder) new Builder().MergeFrom(prototype);
-        }
-        
-        public sealed partial class Builder : pb::GeneratedBuilder<NestedMessage, Builder> {
-          protected override Builder ThisBuilder {
-            get { return this; }
-          }
-          public Builder() {}
-          
-          NestedMessage result = new NestedMessage();
-          
-          protected override NestedMessage MessageBeingBuilt {
-            get { return result; }
-          }
-          
-          public override Builder Clear() {
-            result = new NestedMessage();
-            return this;
-          }
-          
-          public override Builder Clone() {
-            return new Builder().MergeFrom(result);
-          }
-          
-          public override pbd::MessageDescriptor DescriptorForType {
-            get { return global::protobuf_unittest.TestAllTypesLite.Types.NestedMessage.Descriptor; }
-          }
-          
-          public override NestedMessage DefaultInstanceForType {
-            get { return global::protobuf_unittest.TestAllTypesLite.Types.NestedMessage.DefaultInstance; }
-          }
-          
-          public override NestedMessage BuildPartial() {
-            if (result == null) {
-              throw new global::System.InvalidOperationException("build() has already been called on this Builder");
-            }
-            NestedMessage returnMe = result;
-            result = null;
-            return returnMe;
-          }
-          
-          public override Builder MergeFrom(pb::IMessage other) {
-            if (other is NestedMessage) {
-              return MergeFrom((NestedMessage) other);
-            } else {
-              base.MergeFrom(other);
-              return this;
-            }
-          }
-          
-          public override Builder MergeFrom(NestedMessage other) {
-            if (other == global::protobuf_unittest.TestAllTypesLite.Types.NestedMessage.DefaultInstance) return this;
-            if (other.HasBb) {
-              Bb = other.Bb;
-            }
-            this.MergeUnknownFields(other.UnknownFields);
-            return this;
-          }
-          
-          public override Builder MergeFrom(pb::CodedInputStream input) {
-            return MergeFrom(input, pb::ExtensionRegistry.Empty);
-          }
-          
-          public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-            pb::UnknownFieldSet.Builder unknownFields = null;
-            while (true) {
-              uint tag = input.ReadTag();
-              switch (tag) {
-                case 0: {
-                  if (unknownFields != null) {
-                    this.UnknownFields = unknownFields.Build();
-                  }
-                  return this;
-                }
-                default: {
-                  if (pb::WireFormat.IsEndGroupTag(tag)) {
-                    if (unknownFields != null) {
-                      this.UnknownFields = unknownFields.Build();
-                    }
-                    return this;
-                  }
-                  if (unknownFields == null) {
-                    unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-                  }
-                  ParseUnknownField(input, unknownFields, extensionRegistry, tag);
-                  break;
-                }
-                case 8: {
-                  Bb = input.ReadInt32();
-                  break;
-                }
-              }
-            }
-          }
-          
-          
-          public bool HasBb {
-            get { return result.HasBb; }
-          }
-          public int Bb {
-            get { return result.Bb; }
-            set { SetBb(value); }
-          }
-          public Builder SetBb(int value) {
-            result.hasBb = true;
-            result.bb_ = value;
-            return this;
-          }
-          public Builder ClearBb() {
-            result.hasBb = false;
-            result.bb_ = 0;
-            return this;
-          }
-        }
-        static NestedMessage() {
-          object.ReferenceEquals(global::protobuf_unittest.UnittestLite.Descriptor, null);
-        }
-      }
-      
-      public sealed partial class OptionalGroup : pb::GeneratedMessage<OptionalGroup, OptionalGroup.Builder> {
-        private static readonly OptionalGroup defaultInstance = new Builder().BuildPartial();
-        public static OptionalGroup DefaultInstance {
-          get { return defaultInstance; }
-        }
-        
-        public override OptionalGroup DefaultInstanceForType {
-          get { return defaultInstance; }
-        }
-        
-        protected override OptionalGroup ThisMessage {
-          get { return this; }
-        }
-        
-        public static pbd::MessageDescriptor Descriptor {
-          get { return global::protobuf_unittest.UnittestLite.internal__static_protobuf_unittest_TestAllTypesLite_OptionalGroup__Descriptor; }
-        }
-        
-        protected override pb::FieldAccess.FieldAccessorTable<OptionalGroup, OptionalGroup.Builder> InternalFieldAccessors {
-          get { return global::protobuf_unittest.UnittestLite.internal__static_protobuf_unittest_TestAllTypesLite_OptionalGroup__FieldAccessorTable; }
-        }
-        
-        public const int AFieldNumber = 17;
-        private bool hasA;
-        private int a_ = 0;
-        public bool HasA {
-          get { return hasA; }
-        }
-        public int A {
-          get { return a_; }
-        }
-        
-        public override bool IsInitialized {
-          get {
-            return true;
-          }
-        }
-        
-        public override void WriteTo(pb::CodedOutputStream output) {
-          int size = SerializedSize;
-          if (HasA) {
-            output.WriteInt32(17, A);
-          }
-          UnknownFields.WriteTo(output);
-        }
-        
-        private int memoizedSerializedSize = -1;
-        public override int SerializedSize {
-          get {
-            int size = memoizedSerializedSize;
-            if (size != -1) return size;
-            
-            size = 0;
-            if (HasA) {
-              size += pb::CodedOutputStream.ComputeInt32Size(17, A);
-            }
-            size += UnknownFields.SerializedSize;
-            memoizedSerializedSize = size;
-            return size;
-          }
-        }
-        
-        public static OptionalGroup ParseFrom(pb::ByteString data) {
-          return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-        }
-        public static OptionalGroup ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-        }
-        public static OptionalGroup ParseFrom(byte[] data) {
-          return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-        }
-        public static OptionalGroup ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-        }
-        public static OptionalGroup ParseFrom(global::System.IO.Stream input) {
-          return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-        }
-        public static OptionalGroup ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-        }
-        public static OptionalGroup ParseDelimitedFrom(global::System.IO.Stream input) {
-          return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-        }
-        public static OptionalGroup ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-          return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-        }
-        public static OptionalGroup ParseFrom(pb::CodedInputStream input) {
-          return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-        }
-        public static OptionalGroup ParseFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-        }
-        public static Builder CreateBuilder() { return new Builder(); }
-        public override Builder ToBuilder() { return CreateBuilder(this); }
-        public override Builder CreateBuilderForType() { return new Builder(); }
-        public static Builder CreateBuilder(OptionalGroup prototype) {
-          return (Builder) new Builder().MergeFrom(prototype);
-        }
-        
-        public sealed partial class Builder : pb::GeneratedBuilder<OptionalGroup, Builder> {
-          protected override Builder ThisBuilder {
-            get { return this; }
-          }
-          public Builder() {}
-          
-          OptionalGroup result = new OptionalGroup();
-          
-          protected override OptionalGroup MessageBeingBuilt {
-            get { return result; }
-          }
-          
-          public override Builder Clear() {
-            result = new OptionalGroup();
-            return this;
-          }
-          
-          public override Builder Clone() {
-            return new Builder().MergeFrom(result);
-          }
-          
-          public override pbd::MessageDescriptor DescriptorForType {
-            get { return global::protobuf_unittest.TestAllTypesLite.Types.OptionalGroup.Descriptor; }
-          }
-          
-          public override OptionalGroup DefaultInstanceForType {
-            get { return global::protobuf_unittest.TestAllTypesLite.Types.OptionalGroup.DefaultInstance; }
-          }
-          
-          public override OptionalGroup BuildPartial() {
-            if (result == null) {
-              throw new global::System.InvalidOperationException("build() has already been called on this Builder");
-            }
-            OptionalGroup returnMe = result;
-            result = null;
-            return returnMe;
-          }
-          
-          public override Builder MergeFrom(pb::IMessage other) {
-            if (other is OptionalGroup) {
-              return MergeFrom((OptionalGroup) other);
-            } else {
-              base.MergeFrom(other);
-              return this;
-            }
-          }
-          
-          public override Builder MergeFrom(OptionalGroup other) {
-            if (other == global::protobuf_unittest.TestAllTypesLite.Types.OptionalGroup.DefaultInstance) return this;
-            if (other.HasA) {
-              A = other.A;
-            }
-            this.MergeUnknownFields(other.UnknownFields);
-            return this;
-          }
-          
-          public override Builder MergeFrom(pb::CodedInputStream input) {
-            return MergeFrom(input, pb::ExtensionRegistry.Empty);
-          }
-          
-          public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-            pb::UnknownFieldSet.Builder unknownFields = null;
-            while (true) {
-              uint tag = input.ReadTag();
-              switch (tag) {
-                case 0: {
-                  if (unknownFields != null) {
-                    this.UnknownFields = unknownFields.Build();
-                  }
-                  return this;
-                }
-                default: {
-                  if (pb::WireFormat.IsEndGroupTag(tag)) {
-                    if (unknownFields != null) {
-                      this.UnknownFields = unknownFields.Build();
-                    }
-                    return this;
-                  }
-                  if (unknownFields == null) {
-                    unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-                  }
-                  ParseUnknownField(input, unknownFields, extensionRegistry, tag);
-                  break;
-                }
-                case 136: {
-                  A = input.ReadInt32();
-                  break;
-                }
-              }
-            }
-          }
-          
-          
-          public bool HasA {
-            get { return result.HasA; }
-          }
-          public int A {
-            get { return result.A; }
-            set { SetA(value); }
-          }
-          public Builder SetA(int value) {
-            result.hasA = true;
-            result.a_ = value;
-            return this;
-          }
-          public Builder ClearA() {
-            result.hasA = false;
-            result.a_ = 0;
-            return this;
-          }
-        }
-        static OptionalGroup() {
-          object.ReferenceEquals(global::protobuf_unittest.UnittestLite.Descriptor, null);
-        }
-      }
-      
-      public sealed partial class RepeatedGroup : pb::GeneratedMessage<RepeatedGroup, RepeatedGroup.Builder> {
-        private static readonly RepeatedGroup defaultInstance = new Builder().BuildPartial();
-        public static RepeatedGroup DefaultInstance {
-          get { return defaultInstance; }
-        }
-        
-        public override RepeatedGroup DefaultInstanceForType {
-          get { return defaultInstance; }
-        }
-        
-        protected override RepeatedGroup ThisMessage {
-          get { return this; }
-        }
-        
-        public static pbd::MessageDescriptor Descriptor {
-          get { return global::protobuf_unittest.UnittestLite.internal__static_protobuf_unittest_TestAllTypesLite_RepeatedGroup__Descriptor; }
-        }
-        
-        protected override pb::FieldAccess.FieldAccessorTable<RepeatedGroup, RepeatedGroup.Builder> InternalFieldAccessors {
-          get { return global::protobuf_unittest.UnittestLite.internal__static_protobuf_unittest_TestAllTypesLite_RepeatedGroup__FieldAccessorTable; }
-        }
-        
-        public const int AFieldNumber = 47;
-        private bool hasA;
-        private int a_ = 0;
-        public bool HasA {
-          get { return hasA; }
-        }
-        public int A {
-          get { return a_; }
-        }
-        
-        public override bool IsInitialized {
-          get {
-            return true;
-          }
-        }
-        
-        public override void WriteTo(pb::CodedOutputStream output) {
-          int size = SerializedSize;
-          if (HasA) {
-            output.WriteInt32(47, A);
-          }
-          UnknownFields.WriteTo(output);
-        }
-        
-        private int memoizedSerializedSize = -1;
-        public override int SerializedSize {
-          get {
-            int size = memoizedSerializedSize;
-            if (size != -1) return size;
-            
-            size = 0;
-            if (HasA) {
-              size += pb::CodedOutputStream.ComputeInt32Size(47, A);
-            }
-            size += UnknownFields.SerializedSize;
-            memoizedSerializedSize = size;
-            return size;
-          }
-        }
-        
-        public static RepeatedGroup ParseFrom(pb::ByteString data) {
-          return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-        }
-        public static RepeatedGroup ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-        }
-        public static RepeatedGroup ParseFrom(byte[] data) {
-          return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-        }
-        public static RepeatedGroup ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-        }
-        public static RepeatedGroup ParseFrom(global::System.IO.Stream input) {
-          return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-        }
-        public static RepeatedGroup ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-        }
-        public static RepeatedGroup ParseDelimitedFrom(global::System.IO.Stream input) {
-          return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-        }
-        public static RepeatedGroup ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-          return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-        }
-        public static RepeatedGroup ParseFrom(pb::CodedInputStream input) {
-          return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-        }
-        public static RepeatedGroup ParseFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-        }
-        public static Builder CreateBuilder() { return new Builder(); }
-        public override Builder ToBuilder() { return CreateBuilder(this); }
-        public override Builder CreateBuilderForType() { return new Builder(); }
-        public static Builder CreateBuilder(RepeatedGroup prototype) {
-          return (Builder) new Builder().MergeFrom(prototype);
-        }
-        
-        public sealed partial class Builder : pb::GeneratedBuilder<RepeatedGroup, Builder> {
-          protected override Builder ThisBuilder {
-            get { return this; }
-          }
-          public Builder() {}
-          
-          RepeatedGroup result = new RepeatedGroup();
-          
-          protected override RepeatedGroup MessageBeingBuilt {
-            get { return result; }
-          }
-          
-          public override Builder Clear() {
-            result = new RepeatedGroup();
-            return this;
-          }
-          
-          public override Builder Clone() {
-            return new Builder().MergeFrom(result);
-          }
-          
-          public override pbd::MessageDescriptor DescriptorForType {
-            get { return global::protobuf_unittest.TestAllTypesLite.Types.RepeatedGroup.Descriptor; }
-          }
-          
-          public override RepeatedGroup DefaultInstanceForType {
-            get { return global::protobuf_unittest.TestAllTypesLite.Types.RepeatedGroup.DefaultInstance; }
-          }
-          
-          public override RepeatedGroup BuildPartial() {
-            if (result == null) {
-              throw new global::System.InvalidOperationException("build() has already been called on this Builder");
-            }
-            RepeatedGroup returnMe = result;
-            result = null;
-            return returnMe;
-          }
-          
-          public override Builder MergeFrom(pb::IMessage other) {
-            if (other is RepeatedGroup) {
-              return MergeFrom((RepeatedGroup) other);
-            } else {
-              base.MergeFrom(other);
-              return this;
-            }
-          }
-          
-          public override Builder MergeFrom(RepeatedGroup other) {
-            if (other == global::protobuf_unittest.TestAllTypesLite.Types.RepeatedGroup.DefaultInstance) return this;
-            if (other.HasA) {
-              A = other.A;
-            }
-            this.MergeUnknownFields(other.UnknownFields);
-            return this;
-          }
-          
-          public override Builder MergeFrom(pb::CodedInputStream input) {
-            return MergeFrom(input, pb::ExtensionRegistry.Empty);
-          }
-          
-          public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-            pb::UnknownFieldSet.Builder unknownFields = null;
-            while (true) {
-              uint tag = input.ReadTag();
-              switch (tag) {
-                case 0: {
-                  if (unknownFields != null) {
-                    this.UnknownFields = unknownFields.Build();
-                  }
-                  return this;
-                }
-                default: {
-                  if (pb::WireFormat.IsEndGroupTag(tag)) {
-                    if (unknownFields != null) {
-                      this.UnknownFields = unknownFields.Build();
-                    }
-                    return this;
-                  }
-                  if (unknownFields == null) {
-                    unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-                  }
-                  ParseUnknownField(input, unknownFields, extensionRegistry, tag);
-                  break;
-                }
-                case 376: {
-                  A = input.ReadInt32();
-                  break;
-                }
-              }
-            }
-          }
-          
-          
-          public bool HasA {
-            get { return result.HasA; }
-          }
-          public int A {
-            get { return result.A; }
-            set { SetA(value); }
-          }
-          public Builder SetA(int value) {
-            result.hasA = true;
-            result.a_ = value;
-            return this;
-          }
-          public Builder ClearA() {
-            result.hasA = false;
-            result.a_ = 0;
-            return this;
-          }
-        }
-        static RepeatedGroup() {
-          object.ReferenceEquals(global::protobuf_unittest.UnittestLite.Descriptor, null);
-        }
-      }
-      
-    }
-    #endregion
-    
-    public const int OptionalInt32FieldNumber = 1;
-    private bool hasOptionalInt32;
-    private int optionalInt32_ = 0;
-    public bool HasOptionalInt32 {
-      get { return hasOptionalInt32; }
-    }
-    public int OptionalInt32 {
-      get { return optionalInt32_; }
-    }
-    
-    public const int OptionalInt64FieldNumber = 2;
-    private bool hasOptionalInt64;
-    private long optionalInt64_ = 0L;
-    public bool HasOptionalInt64 {
-      get { return hasOptionalInt64; }
-    }
-    public long OptionalInt64 {
-      get { return optionalInt64_; }
-    }
-    
-    public const int OptionalUint32FieldNumber = 3;
-    private bool hasOptionalUint32;
-    private uint optionalUint32_ = 0;
-    public bool HasOptionalUint32 {
-      get { return hasOptionalUint32; }
-    }
-    [global::System.CLSCompliant(false)]
-    public uint OptionalUint32 {
-      get { return optionalUint32_; }
-    }
-    
-    public const int OptionalUint64FieldNumber = 4;
-    private bool hasOptionalUint64;
-    private ulong optionalUint64_ = 0UL;
-    public bool HasOptionalUint64 {
-      get { return hasOptionalUint64; }
-    }
-    [global::System.CLSCompliant(false)]
-    public ulong OptionalUint64 {
-      get { return optionalUint64_; }
-    }
-    
-    public const int OptionalSint32FieldNumber = 5;
-    private bool hasOptionalSint32;
-    private int optionalSint32_ = 0;
-    public bool HasOptionalSint32 {
-      get { return hasOptionalSint32; }
-    }
-    public int OptionalSint32 {
-      get { return optionalSint32_; }
-    }
-    
-    public const int OptionalSint64FieldNumber = 6;
-    private bool hasOptionalSint64;
-    private long optionalSint64_ = 0;
-    public bool HasOptionalSint64 {
-      get { return hasOptionalSint64; }
-    }
-    public long OptionalSint64 {
-      get { return optionalSint64_; }
-    }
-    
-    public const int OptionalFixed32FieldNumber = 7;
-    private bool hasOptionalFixed32;
-    private uint optionalFixed32_ = 0;
-    public bool HasOptionalFixed32 {
-      get { return hasOptionalFixed32; }
-    }
-    [global::System.CLSCompliant(false)]
-    public uint OptionalFixed32 {
-      get { return optionalFixed32_; }
-    }
-    
-    public const int OptionalFixed64FieldNumber = 8;
-    private bool hasOptionalFixed64;
-    private ulong optionalFixed64_ = 0;
-    public bool HasOptionalFixed64 {
-      get { return hasOptionalFixed64; }
-    }
-    [global::System.CLSCompliant(false)]
-    public ulong OptionalFixed64 {
-      get { return optionalFixed64_; }
-    }
-    
-    public const int OptionalSfixed32FieldNumber = 9;
-    private bool hasOptionalSfixed32;
-    private int optionalSfixed32_ = 0;
-    public bool HasOptionalSfixed32 {
-      get { return hasOptionalSfixed32; }
-    }
-    public int OptionalSfixed32 {
-      get { return optionalSfixed32_; }
-    }
-    
-    public const int OptionalSfixed64FieldNumber = 10;
-    private bool hasOptionalSfixed64;
-    private long optionalSfixed64_ = 0;
-    public bool HasOptionalSfixed64 {
-      get { return hasOptionalSfixed64; }
-    }
-    public long OptionalSfixed64 {
-      get { return optionalSfixed64_; }
-    }
-    
-    public const int OptionalFloatFieldNumber = 11;
-    private bool hasOptionalFloat;
-    private float optionalFloat_ = 0F;
-    public bool HasOptionalFloat {
-      get { return hasOptionalFloat; }
-    }
-    public float OptionalFloat {
-      get { return optionalFloat_; }
-    }
-    
-    public const int OptionalDoubleFieldNumber = 12;
-    private bool hasOptionalDouble;
-    private double optionalDouble_ = 0D;
-    public bool HasOptionalDouble {
-      get { return hasOptionalDouble; }
-    }
-    public double OptionalDouble {
-      get { return optionalDouble_; }
-    }
-    
-    public const int OptionalBoolFieldNumber = 13;
-    private bool hasOptionalBool;
-    private bool optionalBool_ = false;
-    public bool HasOptionalBool {
-      get { return hasOptionalBool; }
-    }
-    public bool OptionalBool {
-      get { return optionalBool_; }
-    }
-    
-    public const int OptionalStringFieldNumber = 14;
-    private bool hasOptionalString;
-    private string optionalString_ = "";
-    public bool HasOptionalString {
-      get { return hasOptionalString; }
-    }
-    public string OptionalString {
-      get { return optionalString_; }
-    }
-    
-    public const int OptionalBytesFieldNumber = 15;
-    private bool hasOptionalBytes;
-    private pb::ByteString optionalBytes_ = pb::ByteString.Empty;
-    public bool HasOptionalBytes {
-      get { return hasOptionalBytes; }
-    }
-    public pb::ByteString OptionalBytes {
-      get { return optionalBytes_; }
-    }
-    
-    public const int OptionalGroupFieldNumber = 16;
-    private bool hasOptionalGroup;
-    private global::protobuf_unittest.TestAllTypesLite.Types.OptionalGroup optionalGroup_ = global::protobuf_unittest.TestAllTypesLite.Types.OptionalGroup.DefaultInstance;
-    public bool HasOptionalGroup {
-      get { return hasOptionalGroup; }
-    }
-    public global::protobuf_unittest.TestAllTypesLite.Types.OptionalGroup OptionalGroup {
-      get { return optionalGroup_; }
-    }
-    
-    public const int OptionalNestedMessageFieldNumber = 18;
-    private bool hasOptionalNestedMessage;
-    private global::protobuf_unittest.TestAllTypesLite.Types.NestedMessage optionalNestedMessage_ = global::protobuf_unittest.TestAllTypesLite.Types.NestedMessage.DefaultInstance;
-    public bool HasOptionalNestedMessage {
-      get { return hasOptionalNestedMessage; }
-    }
-    public global::protobuf_unittest.TestAllTypesLite.Types.NestedMessage OptionalNestedMessage {
-      get { return optionalNestedMessage_; }
-    }
-    
-    public const int OptionalForeignMessageFieldNumber = 19;
-    private bool hasOptionalForeignMessage;
-    private global::protobuf_unittest.ForeignMessageLite optionalForeignMessage_ = global::protobuf_unittest.ForeignMessageLite.DefaultInstance;
-    public bool HasOptionalForeignMessage {
-      get { return hasOptionalForeignMessage; }
-    }
-    public global::protobuf_unittest.ForeignMessageLite OptionalForeignMessage {
-      get { return optionalForeignMessage_; }
-    }
-    
-    public const int OptionalImportMessageFieldNumber = 20;
-    private bool hasOptionalImportMessage;
-    private global::protobuf_unittest_import.ImportMessageLite optionalImportMessage_ = global::protobuf_unittest_import.ImportMessageLite.DefaultInstance;
-    public bool HasOptionalImportMessage {
-      get { return hasOptionalImportMessage; }
-    }
-    public global::protobuf_unittest_import.ImportMessageLite OptionalImportMessage {
-      get { return optionalImportMessage_; }
-    }
-    
-    public const int OptionalNestedEnumFieldNumber = 21;
-    private bool hasOptionalNestedEnum;
-    private global::protobuf_unittest.TestAllTypesLite.Types.NestedEnum optionalNestedEnum_ = global::protobuf_unittest.TestAllTypesLite.Types.NestedEnum.FOO;
-    public bool HasOptionalNestedEnum {
-      get { return hasOptionalNestedEnum; }
-    }
-    public global::protobuf_unittest.TestAllTypesLite.Types.NestedEnum OptionalNestedEnum {
-      get { return optionalNestedEnum_; }
-    }
-    
-    public const int OptionalForeignEnumFieldNumber = 22;
-    private bool hasOptionalForeignEnum;
-    private global::protobuf_unittest.ForeignEnumLite optionalForeignEnum_ = global::protobuf_unittest.ForeignEnumLite.FOREIGN_LITE_FOO;
-    public bool HasOptionalForeignEnum {
-      get { return hasOptionalForeignEnum; }
-    }
-    public global::protobuf_unittest.ForeignEnumLite OptionalForeignEnum {
-      get { return optionalForeignEnum_; }
-    }
-    
-    public const int OptionalImportEnumFieldNumber = 23;
-    private bool hasOptionalImportEnum;
-    private global::protobuf_unittest_import.ImportEnumLite optionalImportEnum_ = global::protobuf_unittest_import.ImportEnumLite.IMPORT_LITE_FOO;
-    public bool HasOptionalImportEnum {
-      get { return hasOptionalImportEnum; }
-    }
-    public global::protobuf_unittest_import.ImportEnumLite OptionalImportEnum {
-      get { return optionalImportEnum_; }
-    }
-    
-    public const int OptionalStringPieceFieldNumber = 24;
-    private bool hasOptionalStringPiece;
-    private string optionalStringPiece_ = "";
-    public bool HasOptionalStringPiece {
-      get { return hasOptionalStringPiece; }
-    }
-    public string OptionalStringPiece {
-      get { return optionalStringPiece_; }
-    }
-    
-    public const int OptionalCordFieldNumber = 25;
-    private bool hasOptionalCord;
-    private string optionalCord_ = "";
-    public bool HasOptionalCord {
-      get { return hasOptionalCord; }
-    }
-    public string OptionalCord {
-      get { return optionalCord_; }
-    }
-    
-    public const int RepeatedInt32FieldNumber = 31;
-    private pbc::PopsicleList<int> repeatedInt32_ = new pbc::PopsicleList<int>();
-    public scg::IList<int> RepeatedInt32List {
-      get { return pbc::Lists.AsReadOnly(repeatedInt32_); }
-    }
-    public int RepeatedInt32Count {
-      get { return repeatedInt32_.Count; }
-    }
-    public int GetRepeatedInt32(int index) {
-      return repeatedInt32_[index];
-    }
-    
-    public const int RepeatedInt64FieldNumber = 32;
-    private pbc::PopsicleList<long> repeatedInt64_ = new pbc::PopsicleList<long>();
-    public scg::IList<long> RepeatedInt64List {
-      get { return pbc::Lists.AsReadOnly(repeatedInt64_); }
-    }
-    public int RepeatedInt64Count {
-      get { return repeatedInt64_.Count; }
-    }
-    public long GetRepeatedInt64(int index) {
-      return repeatedInt64_[index];
-    }
-    
-    public const int RepeatedUint32FieldNumber = 33;
-    private pbc::PopsicleList<uint> repeatedUint32_ = new pbc::PopsicleList<uint>();
-    [global::System.CLSCompliant(false)]
-    public scg::IList<uint> RepeatedUint32List {
-      get { return pbc::Lists.AsReadOnly(repeatedUint32_); }
-    }
-    public int RepeatedUint32Count {
-      get { return repeatedUint32_.Count; }
-    }
-    [global::System.CLSCompliant(false)]
-    public uint GetRepeatedUint32(int index) {
-      return repeatedUint32_[index];
-    }
-    
-    public const int RepeatedUint64FieldNumber = 34;
-    private pbc::PopsicleList<ulong> repeatedUint64_ = new pbc::PopsicleList<ulong>();
-    [global::System.CLSCompliant(false)]
-    public scg::IList<ulong> RepeatedUint64List {
-      get { return pbc::Lists.AsReadOnly(repeatedUint64_); }
-    }
-    public int RepeatedUint64Count {
-      get { return repeatedUint64_.Count; }
-    }
-    [global::System.CLSCompliant(false)]
-    public ulong GetRepeatedUint64(int index) {
-      return repeatedUint64_[index];
-    }
-    
-    public const int RepeatedSint32FieldNumber = 35;
-    private pbc::PopsicleList<int> repeatedSint32_ = new pbc::PopsicleList<int>();
-    public scg::IList<int> RepeatedSint32List {
-      get { return pbc::Lists.AsReadOnly(repeatedSint32_); }
-    }
-    public int RepeatedSint32Count {
-      get { return repeatedSint32_.Count; }
-    }
-    public int GetRepeatedSint32(int index) {
-      return repeatedSint32_[index];
-    }
-    
-    public const int RepeatedSint64FieldNumber = 36;
-    private pbc::PopsicleList<long> repeatedSint64_ = new pbc::PopsicleList<long>();
-    public scg::IList<long> RepeatedSint64List {
-      get { return pbc::Lists.AsReadOnly(repeatedSint64_); }
-    }
-    public int RepeatedSint64Count {
-      get { return repeatedSint64_.Count; }
-    }
-    public long GetRepeatedSint64(int index) {
-      return repeatedSint64_[index];
-    }
-    
-    public const int RepeatedFixed32FieldNumber = 37;
-    private pbc::PopsicleList<uint> repeatedFixed32_ = new pbc::PopsicleList<uint>();
-    [global::System.CLSCompliant(false)]
-    public scg::IList<uint> RepeatedFixed32List {
-      get { return pbc::Lists.AsReadOnly(repeatedFixed32_); }
-    }
-    public int RepeatedFixed32Count {
-      get { return repeatedFixed32_.Count; }
-    }
-    [global::System.CLSCompliant(false)]
-    public uint GetRepeatedFixed32(int index) {
-      return repeatedFixed32_[index];
-    }
-    
-    public const int RepeatedFixed64FieldNumber = 38;
-    private pbc::PopsicleList<ulong> repeatedFixed64_ = new pbc::PopsicleList<ulong>();
-    [global::System.CLSCompliant(false)]
-    public scg::IList<ulong> RepeatedFixed64List {
-      get { return pbc::Lists.AsReadOnly(repeatedFixed64_); }
-    }
-    public int RepeatedFixed64Count {
-      get { return repeatedFixed64_.Count; }
-    }
-    [global::System.CLSCompliant(false)]
-    public ulong GetRepeatedFixed64(int index) {
-      return repeatedFixed64_[index];
-    }
-    
-    public const int RepeatedSfixed32FieldNumber = 39;
-    private pbc::PopsicleList<int> repeatedSfixed32_ = new pbc::PopsicleList<int>();
-    public scg::IList<int> RepeatedSfixed32List {
-      get { return pbc::Lists.AsReadOnly(repeatedSfixed32_); }
-    }
-    public int RepeatedSfixed32Count {
-      get { return repeatedSfixed32_.Count; }
-    }
-    public int GetRepeatedSfixed32(int index) {
-      return repeatedSfixed32_[index];
-    }
-    
-    public const int RepeatedSfixed64FieldNumber = 40;
-    private pbc::PopsicleList<long> repeatedSfixed64_ = new pbc::PopsicleList<long>();
-    public scg::IList<long> RepeatedSfixed64List {
-      get { return pbc::Lists.AsReadOnly(repeatedSfixed64_); }
-    }
-    public int RepeatedSfixed64Count {
-      get { return repeatedSfixed64_.Count; }
-    }
-    public long GetRepeatedSfixed64(int index) {
-      return repeatedSfixed64_[index];
-    }
-    
-    public const int RepeatedFloatFieldNumber = 41;
-    private pbc::PopsicleList<float> repeatedFloat_ = new pbc::PopsicleList<float>();
-    public scg::IList<float> RepeatedFloatList {
-      get { return pbc::Lists.AsReadOnly(repeatedFloat_); }
-    }
-    public int RepeatedFloatCount {
-      get { return repeatedFloat_.Count; }
-    }
-    public float GetRepeatedFloat(int index) {
-      return repeatedFloat_[index];
-    }
-    
-    public const int RepeatedDoubleFieldNumber = 42;
-    private pbc::PopsicleList<double> repeatedDouble_ = new pbc::PopsicleList<double>();
-    public scg::IList<double> RepeatedDoubleList {
-      get { return pbc::Lists.AsReadOnly(repeatedDouble_); }
-    }
-    public int RepeatedDoubleCount {
-      get { return repeatedDouble_.Count; }
-    }
-    public double GetRepeatedDouble(int index) {
-      return repeatedDouble_[index];
-    }
-    
-    public const int RepeatedBoolFieldNumber = 43;
-    private pbc::PopsicleList<bool> repeatedBool_ = new pbc::PopsicleList<bool>();
-    public scg::IList<bool> RepeatedBoolList {
-      get { return pbc::Lists.AsReadOnly(repeatedBool_); }
-    }
-    public int RepeatedBoolCount {
-      get { return repeatedBool_.Count; }
-    }
-    public bool GetRepeatedBool(int index) {
-      return repeatedBool_[index];
-    }
-    
-    public const int RepeatedStringFieldNumber = 44;
-    private pbc::PopsicleList<string> repeatedString_ = new pbc::PopsicleList<string>();
-    public scg::IList<string> RepeatedStringList {
-      get { return pbc::Lists.AsReadOnly(repeatedString_); }
-    }
-    public int RepeatedStringCount {
-      get { return repeatedString_.Count; }
-    }
-    public string GetRepeatedString(int index) {
-      return repeatedString_[index];
-    }
-    
-    public const int RepeatedBytesFieldNumber = 45;
-    private pbc::PopsicleList<pb::ByteString> repeatedBytes_ = new pbc::PopsicleList<pb::ByteString>();
-    public scg::IList<pb::ByteString> RepeatedBytesList {
-      get { return pbc::Lists.AsReadOnly(repeatedBytes_); }
-    }
-    public int RepeatedBytesCount {
-      get { return repeatedBytes_.Count; }
-    }
-    public pb::ByteString GetRepeatedBytes(int index) {
-      return repeatedBytes_[index];
-    }
-    
-    public const int RepeatedGroupFieldNumber = 46;
-    private pbc::PopsicleList<global::protobuf_unittest.TestAllTypesLite.Types.RepeatedGroup> repeatedGroup_ = new pbc::PopsicleList<global::protobuf_unittest.TestAllTypesLite.Types.RepeatedGroup>();
-    public scg::IList<global::protobuf_unittest.TestAllTypesLite.Types.RepeatedGroup> RepeatedGroupList {
-      get { return repeatedGroup_; }
-    }
-    public int RepeatedGroupCount {
-      get { return repeatedGroup_.Count; }
-    }
-    public global::protobuf_unittest.TestAllTypesLite.Types.RepeatedGroup GetRepeatedGroup(int index) {
-      return repeatedGroup_[index];
-    }
-    
-    public const int RepeatedNestedMessageFieldNumber = 48;
-    private pbc::PopsicleList<global::protobuf_unittest.TestAllTypesLite.Types.NestedMessage> repeatedNestedMessage_ = new pbc::PopsicleList<global::protobuf_unittest.TestAllTypesLite.Types.NestedMessage>();
-    public scg::IList<global::protobuf_unittest.TestAllTypesLite.Types.NestedMessage> RepeatedNestedMessageList {
-      get { return repeatedNestedMessage_; }
-    }
-    public int RepeatedNestedMessageCount {
-      get { return repeatedNestedMessage_.Count; }
-    }
-    public global::protobuf_unittest.TestAllTypesLite.Types.NestedMessage GetRepeatedNestedMessage(int index) {
-      return repeatedNestedMessage_[index];
-    }
-    
-    public const int RepeatedForeignMessageFieldNumber = 49;
-    private pbc::PopsicleList<global::protobuf_unittest.ForeignMessageLite> repeatedForeignMessage_ = new pbc::PopsicleList<global::protobuf_unittest.ForeignMessageLite>();
-    public scg::IList<global::protobuf_unittest.ForeignMessageLite> RepeatedForeignMessageList {
-      get { return repeatedForeignMessage_; }
-    }
-    public int RepeatedForeignMessageCount {
-      get { return repeatedForeignMessage_.Count; }
-    }
-    public global::protobuf_unittest.ForeignMessageLite GetRepeatedForeignMessage(int index) {
-      return repeatedForeignMessage_[index];
-    }
-    
-    public const int RepeatedImportMessageFieldNumber = 50;
-    private pbc::PopsicleList<global::protobuf_unittest_import.ImportMessageLite> repeatedImportMessage_ = new pbc::PopsicleList<global::protobuf_unittest_import.ImportMessageLite>();
-    public scg::IList<global::protobuf_unittest_import.ImportMessageLite> RepeatedImportMessageList {
-      get { return repeatedImportMessage_; }
-    }
-    public int RepeatedImportMessageCount {
-      get { return repeatedImportMessage_.Count; }
-    }
-    public global::protobuf_unittest_import.ImportMessageLite GetRepeatedImportMessage(int index) {
-      return repeatedImportMessage_[index];
-    }
-    
-    public const int RepeatedNestedEnumFieldNumber = 51;
-    private pbc::PopsicleList<global::protobuf_unittest.TestAllTypesLite.Types.NestedEnum> repeatedNestedEnum_ = new pbc::PopsicleList<global::protobuf_unittest.TestAllTypesLite.Types.NestedEnum>();
-    public scg::IList<global::protobuf_unittest.TestAllTypesLite.Types.NestedEnum> RepeatedNestedEnumList {
-      get { return pbc::Lists.AsReadOnly(repeatedNestedEnum_); }
-    }
-    public int RepeatedNestedEnumCount {
-      get { return repeatedNestedEnum_.Count; }
-    }
-    public global::protobuf_unittest.TestAllTypesLite.Types.NestedEnum GetRepeatedNestedEnum(int index) {
-      return repeatedNestedEnum_[index];
-    }
-    
-    public const int RepeatedForeignEnumFieldNumber = 52;
-    private pbc::PopsicleList<global::protobuf_unittest.ForeignEnumLite> repeatedForeignEnum_ = new pbc::PopsicleList<global::protobuf_unittest.ForeignEnumLite>();
-    public scg::IList<global::protobuf_unittest.ForeignEnumLite> RepeatedForeignEnumList {
-      get { return pbc::Lists.AsReadOnly(repeatedForeignEnum_); }
-    }
-    public int RepeatedForeignEnumCount {
-      get { return repeatedForeignEnum_.Count; }
-    }
-    public global::protobuf_unittest.ForeignEnumLite GetRepeatedForeignEnum(int index) {
-      return repeatedForeignEnum_[index];
-    }
-    
-    public const int RepeatedImportEnumFieldNumber = 53;
-    private pbc::PopsicleList<global::protobuf_unittest_import.ImportEnumLite> repeatedImportEnum_ = new pbc::PopsicleList<global::protobuf_unittest_import.ImportEnumLite>();
-    public scg::IList<global::protobuf_unittest_import.ImportEnumLite> RepeatedImportEnumList {
-      get { return pbc::Lists.AsReadOnly(repeatedImportEnum_); }
-    }
-    public int RepeatedImportEnumCount {
-      get { return repeatedImportEnum_.Count; }
-    }
-    public global::protobuf_unittest_import.ImportEnumLite GetRepeatedImportEnum(int index) {
-      return repeatedImportEnum_[index];
-    }
-    
-    public const int RepeatedStringPieceFieldNumber = 54;
-    private pbc::PopsicleList<string> repeatedStringPiece_ = new pbc::PopsicleList<string>();
-    public scg::IList<string> RepeatedStringPieceList {
-      get { return pbc::Lists.AsReadOnly(repeatedStringPiece_); }
-    }
-    public int RepeatedStringPieceCount {
-      get { return repeatedStringPiece_.Count; }
-    }
-    public string GetRepeatedStringPiece(int index) {
-      return repeatedStringPiece_[index];
-    }
-    
-    public const int RepeatedCordFieldNumber = 55;
-    private pbc::PopsicleList<string> repeatedCord_ = new pbc::PopsicleList<string>();
-    public scg::IList<string> RepeatedCordList {
-      get { return pbc::Lists.AsReadOnly(repeatedCord_); }
-    }
-    public int RepeatedCordCount {
-      get { return repeatedCord_.Count; }
-    }
-    public string GetRepeatedCord(int index) {
-      return repeatedCord_[index];
-    }
-    
-    public const int DefaultInt32FieldNumber = 61;
-    private bool hasDefaultInt32;
-    private int defaultInt32_ = 41;
-    public bool HasDefaultInt32 {
-      get { return hasDefaultInt32; }
-    }
-    public int DefaultInt32 {
-      get { return defaultInt32_; }
-    }
-    
-    public const int DefaultInt64FieldNumber = 62;
-    private bool hasDefaultInt64;
-    private long defaultInt64_ = 42L;
-    public bool HasDefaultInt64 {
-      get { return hasDefaultInt64; }
-    }
-    public long DefaultInt64 {
-      get { return defaultInt64_; }
-    }
-    
-    public const int DefaultUint32FieldNumber = 63;
-    private bool hasDefaultUint32;
-    private uint defaultUint32_ = 43;
-    public bool HasDefaultUint32 {
-      get { return hasDefaultUint32; }
-    }
-    [global::System.CLSCompliant(false)]
-    public uint DefaultUint32 {
-      get { return defaultUint32_; }
-    }
-    
-    public const int DefaultUint64FieldNumber = 64;
-    private bool hasDefaultUint64;
-    private ulong defaultUint64_ = 44UL;
-    public bool HasDefaultUint64 {
-      get { return hasDefaultUint64; }
-    }
-    [global::System.CLSCompliant(false)]
-    public ulong DefaultUint64 {
-      get { return defaultUint64_; }
-    }
-    
-    public const int DefaultSint32FieldNumber = 65;
-    private bool hasDefaultSint32;
-    private int defaultSint32_ = -45;
-    public bool HasDefaultSint32 {
-      get { return hasDefaultSint32; }
-    }
-    public int DefaultSint32 {
-      get { return defaultSint32_; }
-    }
-    
-    public const int DefaultSint64FieldNumber = 66;
-    private bool hasDefaultSint64;
-    private long defaultSint64_ = 46;
-    public bool HasDefaultSint64 {
-      get { return hasDefaultSint64; }
-    }
-    public long DefaultSint64 {
-      get { return defaultSint64_; }
-    }
-    
-    public const int DefaultFixed32FieldNumber = 67;
-    private bool hasDefaultFixed32;
-    private uint defaultFixed32_ = 47;
-    public bool HasDefaultFixed32 {
-      get { return hasDefaultFixed32; }
-    }
-    [global::System.CLSCompliant(false)]
-    public uint DefaultFixed32 {
-      get { return defaultFixed32_; }
-    }
-    
-    public const int DefaultFixed64FieldNumber = 68;
-    private bool hasDefaultFixed64;
-    private ulong defaultFixed64_ = 48;
-    public bool HasDefaultFixed64 {
-      get { return hasDefaultFixed64; }
-    }
-    [global::System.CLSCompliant(false)]
-    public ulong DefaultFixed64 {
-      get { return defaultFixed64_; }
-    }
-    
-    public const int DefaultSfixed32FieldNumber = 69;
-    private bool hasDefaultSfixed32;
-    private int defaultSfixed32_ = 49;
-    public bool HasDefaultSfixed32 {
-      get { return hasDefaultSfixed32; }
-    }
-    public int DefaultSfixed32 {
-      get { return defaultSfixed32_; }
-    }
-    
-    public const int DefaultSfixed64FieldNumber = 70;
-    private bool hasDefaultSfixed64;
-    private long defaultSfixed64_ = -50;
-    public bool HasDefaultSfixed64 {
-      get { return hasDefaultSfixed64; }
-    }
-    public long DefaultSfixed64 {
-      get { return defaultSfixed64_; }
-    }
-    
-    public const int DefaultFloatFieldNumber = 71;
-    private bool hasDefaultFloat;
-    private float defaultFloat_ = 51.5F;
-    public bool HasDefaultFloat {
-      get { return hasDefaultFloat; }
-    }
-    public float DefaultFloat {
-      get { return defaultFloat_; }
-    }
-    
-    public const int DefaultDoubleFieldNumber = 72;
-    private bool hasDefaultDouble;
-    private double defaultDouble_ = 52000D;
-    public bool HasDefaultDouble {
-      get { return hasDefaultDouble; }
-    }
-    public double DefaultDouble {
-      get { return defaultDouble_; }
-    }
-    
-    public const int DefaultBoolFieldNumber = 73;
-    private bool hasDefaultBool;
-    private bool defaultBool_ = true;
-    public bool HasDefaultBool {
-      get { return hasDefaultBool; }
-    }
-    public bool DefaultBool {
-      get { return defaultBool_; }
-    }
-    
-    public const int DefaultStringFieldNumber = 74;
-    private bool hasDefaultString;
-    private string defaultString_ = "hello";
-    public bool HasDefaultString {
-      get { return hasDefaultString; }
-    }
-    public string DefaultString {
-      get { return defaultString_; }
-    }
-    
-    public const int DefaultBytesFieldNumber = 75;
-    private bool hasDefaultBytes;
-    private pb::ByteString defaultBytes_ = (pb::ByteString) global::protobuf_unittest.TestAllTypesLite.Descriptor.Fields[62].DefaultValue;
-    public bool HasDefaultBytes {
-      get { return hasDefaultBytes; }
-    }
-    public pb::ByteString DefaultBytes {
-      get { return defaultBytes_; }
-    }
-    
-    public const int DefaultNestedEnumFieldNumber = 81;
-    private bool hasDefaultNestedEnum;
-    private global::protobuf_unittest.TestAllTypesLite.Types.NestedEnum defaultNestedEnum_ = global::protobuf_unittest.TestAllTypesLite.Types.NestedEnum.BAR;
-    public bool HasDefaultNestedEnum {
-      get { return hasDefaultNestedEnum; }
-    }
-    public global::protobuf_unittest.TestAllTypesLite.Types.NestedEnum DefaultNestedEnum {
-      get { return defaultNestedEnum_; }
-    }
-    
-    public const int DefaultForeignEnumFieldNumber = 82;
-    private bool hasDefaultForeignEnum;
-    private global::protobuf_unittest.ForeignEnumLite defaultForeignEnum_ = global::protobuf_unittest.ForeignEnumLite.FOREIGN_LITE_BAR;
-    public bool HasDefaultForeignEnum {
-      get { return hasDefaultForeignEnum; }
-    }
-    public global::protobuf_unittest.ForeignEnumLite DefaultForeignEnum {
-      get { return defaultForeignEnum_; }
-    }
-    
-    public const int DefaultImportEnumFieldNumber = 83;
-    private bool hasDefaultImportEnum;
-    private global::protobuf_unittest_import.ImportEnumLite defaultImportEnum_ = global::protobuf_unittest_import.ImportEnumLite.IMPORT_LITE_BAR;
-    public bool HasDefaultImportEnum {
-      get { return hasDefaultImportEnum; }
-    }
-    public global::protobuf_unittest_import.ImportEnumLite DefaultImportEnum {
-      get { return defaultImportEnum_; }
-    }
-    
-    public const int DefaultStringPieceFieldNumber = 84;
-    private bool hasDefaultStringPiece;
-    private string defaultStringPiece_ = "abc";
-    public bool HasDefaultStringPiece {
-      get { return hasDefaultStringPiece; }
-    }
-    public string DefaultStringPiece {
-      get { return defaultStringPiece_; }
-    }
-    
-    public const int DefaultCordFieldNumber = 85;
-    private bool hasDefaultCord;
-    private string defaultCord_ = "123";
-    public bool HasDefaultCord {
-      get { return hasDefaultCord; }
-    }
-    public string DefaultCord {
-      get { return defaultCord_; }
-    }
-    
-    public override bool IsInitialized {
-      get {
-        return true;
-      }
-    }
-    
-    public override void WriteTo(pb::CodedOutputStream output) {
-      int size = SerializedSize;
-      if (HasOptionalInt32) {
-        output.WriteInt32(1, OptionalInt32);
-      }
-      if (HasOptionalInt64) {
-        output.WriteInt64(2, OptionalInt64);
-      }
-      if (HasOptionalUint32) {
-        output.WriteUInt32(3, OptionalUint32);
-      }
-      if (HasOptionalUint64) {
-        output.WriteUInt64(4, OptionalUint64);
-      }
-      if (HasOptionalSint32) {
-        output.WriteSInt32(5, OptionalSint32);
-      }
-      if (HasOptionalSint64) {
-        output.WriteSInt64(6, OptionalSint64);
-      }
-      if (HasOptionalFixed32) {
-        output.WriteFixed32(7, OptionalFixed32);
-      }
-      if (HasOptionalFixed64) {
-        output.WriteFixed64(8, OptionalFixed64);
-      }
-      if (HasOptionalSfixed32) {
-        output.WriteSFixed32(9, OptionalSfixed32);
-      }
-      if (HasOptionalSfixed64) {
-        output.WriteSFixed64(10, OptionalSfixed64);
-      }
-      if (HasOptionalFloat) {
-        output.WriteFloat(11, OptionalFloat);
-      }
-      if (HasOptionalDouble) {
-        output.WriteDouble(12, OptionalDouble);
-      }
-      if (HasOptionalBool) {
-        output.WriteBool(13, OptionalBool);
-      }
-      if (HasOptionalString) {
-        output.WriteString(14, OptionalString);
-      }
-      if (HasOptionalBytes) {
-        output.WriteBytes(15, OptionalBytes);
-      }
-      if (HasOptionalGroup) {
-        output.WriteGroup(16, OptionalGroup);
-      }
-      if (HasOptionalNestedMessage) {
-        output.WriteMessage(18, OptionalNestedMessage);
-      }
-      if (HasOptionalForeignMessage) {
-        output.WriteMessage(19, OptionalForeignMessage);
-      }
-      if (HasOptionalImportMessage) {
-        output.WriteMessage(20, OptionalImportMessage);
-      }
-      if (HasOptionalNestedEnum) {
-        output.WriteEnum(21, (int) OptionalNestedEnum);
-      }
-      if (HasOptionalForeignEnum) {
-        output.WriteEnum(22, (int) OptionalForeignEnum);
-      }
-      if (HasOptionalImportEnum) {
-        output.WriteEnum(23, (int) OptionalImportEnum);
-      }
-      if (HasOptionalStringPiece) {
-        output.WriteString(24, OptionalStringPiece);
-      }
-      if (HasOptionalCord) {
-        output.WriteString(25, OptionalCord);
-      }
-      if (repeatedInt32_.Count > 0) {
-        foreach (int element in repeatedInt32_) {
-          output.WriteInt32(31, element);
-        }
-      }
-      if (repeatedInt64_.Count > 0) {
-        foreach (long element in repeatedInt64_) {
-          output.WriteInt64(32, element);
-        }
-      }
-      if (repeatedUint32_.Count > 0) {
-        foreach (uint element in repeatedUint32_) {
-          output.WriteUInt32(33, element);
-        }
-      }
-      if (repeatedUint64_.Count > 0) {
-        foreach (ulong element in repeatedUint64_) {
-          output.WriteUInt64(34, element);
-        }
-      }
-      if (repeatedSint32_.Count > 0) {
-        foreach (int element in repeatedSint32_) {
-          output.WriteSInt32(35, element);
-        }
-      }
-      if (repeatedSint64_.Count > 0) {
-        foreach (long element in repeatedSint64_) {
-          output.WriteSInt64(36, element);
-        }
-      }
-      if (repeatedFixed32_.Count > 0) {
-        foreach (uint element in repeatedFixed32_) {
-          output.WriteFixed32(37, element);
-        }
-      }
-      if (repeatedFixed64_.Count > 0) {
-        foreach (ulong element in repeatedFixed64_) {
-          output.WriteFixed64(38, element);
-        }
-      }
-      if (repeatedSfixed32_.Count > 0) {
-        foreach (int element in repeatedSfixed32_) {
-          output.WriteSFixed32(39, element);
-        }
-      }
-      if (repeatedSfixed64_.Count > 0) {
-        foreach (long element in repeatedSfixed64_) {
-          output.WriteSFixed64(40, element);
-        }
-      }
-      if (repeatedFloat_.Count > 0) {
-        foreach (float element in repeatedFloat_) {
-          output.WriteFloat(41, element);
-        }
-      }
-      if (repeatedDouble_.Count > 0) {
-        foreach (double element in repeatedDouble_) {
-          output.WriteDouble(42, element);
-        }
-      }
-      if (repeatedBool_.Count > 0) {
-        foreach (bool element in repeatedBool_) {
-          output.WriteBool(43, element);
-        }
-      }
-      if (repeatedString_.Count > 0) {
-        foreach (string element in repeatedString_) {
-          output.WriteString(44, element);
-        }
-      }
-      if (repeatedBytes_.Count > 0) {
-        foreach (pb::ByteString element in repeatedBytes_) {
-          output.WriteBytes(45, element);
-        }
-      }
-      foreach (global::protobuf_unittest.TestAllTypesLite.Types.RepeatedGroup element in RepeatedGroupList) {
-        output.WriteGroup(46, element);
-      }
-      foreach (global::protobuf_unittest.TestAllTypesLite.Types.NestedMessage element in RepeatedNestedMessageList) {
-        output.WriteMessage(48, element);
-      }
-      foreach (global::protobuf_unittest.ForeignMessageLite element in RepeatedForeignMessageList) {
-        output.WriteMessage(49, element);
-      }
-      foreach (global::protobuf_unittest_import.ImportMessageLite element in RepeatedImportMessageList) {
-        output.WriteMessage(50, element);
-      }
-      if (repeatedNestedEnum_.Count > 0) {
-        foreach (int element in repeatedNestedEnum_) {
-          output.WriteEnum(51, element);
-        }
-      }
-      if (repeatedForeignEnum_.Count > 0) {
-        foreach (int element in repeatedForeignEnum_) {
-          output.WriteEnum(52, element);
-        }
-      }
-      if (repeatedImportEnum_.Count > 0) {
-        foreach (int element in repeatedImportEnum_) {
-          output.WriteEnum(53, element);
-        }
-      }
-      if (repeatedStringPiece_.Count > 0) {
-        foreach (string element in repeatedStringPiece_) {
-          output.WriteString(54, element);
-        }
-      }
-      if (repeatedCord_.Count > 0) {
-        foreach (string element in repeatedCord_) {
-          output.WriteString(55, element);
-        }
-      }
-      if (HasDefaultInt32) {
-        output.WriteInt32(61, DefaultInt32);
-      }
-      if (HasDefaultInt64) {
-        output.WriteInt64(62, DefaultInt64);
-      }
-      if (HasDefaultUint32) {
-        output.WriteUInt32(63, DefaultUint32);
-      }
-      if (HasDefaultUint64) {
-        output.WriteUInt64(64, DefaultUint64);
-      }
-      if (HasDefaultSint32) {
-        output.WriteSInt32(65, DefaultSint32);
-      }
-      if (HasDefaultSint64) {
-        output.WriteSInt64(66, DefaultSint64);
-      }
-      if (HasDefaultFixed32) {
-        output.WriteFixed32(67, DefaultFixed32);
-      }
-      if (HasDefaultFixed64) {
-        output.WriteFixed64(68, DefaultFixed64);
-      }
-      if (HasDefaultSfixed32) {
-        output.WriteSFixed32(69, DefaultSfixed32);
-      }
-      if (HasDefaultSfixed64) {
-        output.WriteSFixed64(70, DefaultSfixed64);
-      }
-      if (HasDefaultFloat) {
-        output.WriteFloat(71, DefaultFloat);
-      }
-      if (HasDefaultDouble) {
-        output.WriteDouble(72, DefaultDouble);
-      }
-      if (HasDefaultBool) {
-        output.WriteBool(73, DefaultBool);
-      }
-      if (HasDefaultString) {
-        output.WriteString(74, DefaultString);
-      }
-      if (HasDefaultBytes) {
-        output.WriteBytes(75, DefaultBytes);
-      }
-      if (HasDefaultNestedEnum) {
-        output.WriteEnum(81, (int) DefaultNestedEnum);
-      }
-      if (HasDefaultForeignEnum) {
-        output.WriteEnum(82, (int) DefaultForeignEnum);
-      }
-      if (HasDefaultImportEnum) {
-        output.WriteEnum(83, (int) DefaultImportEnum);
-      }
-      if (HasDefaultStringPiece) {
-        output.WriteString(84, DefaultStringPiece);
-      }
-      if (HasDefaultCord) {
-        output.WriteString(85, DefaultCord);
-      }
-      UnknownFields.WriteTo(output);
-    }
-    
-    private int memoizedSerializedSize = -1;
-    public override int SerializedSize {
-      get {
-        int size = memoizedSerializedSize;
-        if (size != -1) return size;
-        
-        size = 0;
-        if (HasOptionalInt32) {
-          size += pb::CodedOutputStream.ComputeInt32Size(1, OptionalInt32);
-        }
-        if (HasOptionalInt64) {
-          size += pb::CodedOutputStream.ComputeInt64Size(2, OptionalInt64);
-        }
-        if (HasOptionalUint32) {
-          size += pb::CodedOutputStream.ComputeUInt32Size(3, OptionalUint32);
-        }
-        if (HasOptionalUint64) {
-          size += pb::CodedOutputStream.ComputeUInt64Size(4, OptionalUint64);
-        }
-        if (HasOptionalSint32) {
-          size += pb::CodedOutputStream.ComputeSInt32Size(5, OptionalSint32);
-        }
-        if (HasOptionalSint64) {
-          size += pb::CodedOutputStream.ComputeSInt64Size(6, OptionalSint64);
-        }
-        if (HasOptionalFixed32) {
-          size += pb::CodedOutputStream.ComputeFixed32Size(7, OptionalFixed32);
-        }
-        if (HasOptionalFixed64) {
-          size += pb::CodedOutputStream.ComputeFixed64Size(8, OptionalFixed64);
-        }
-        if (HasOptionalSfixed32) {
-          size += pb::CodedOutputStream.ComputeSFixed32Size(9, OptionalSfixed32);
-        }
-        if (HasOptionalSfixed64) {
-          size += pb::CodedOutputStream.ComputeSFixed64Size(10, OptionalSfixed64);
-        }
-        if (HasOptionalFloat) {
-          size += pb::CodedOutputStream.ComputeFloatSize(11, OptionalFloat);
-        }
-        if (HasOptionalDouble) {
-          size += pb::CodedOutputStream.ComputeDoubleSize(12, OptionalDouble);
-        }
-        if (HasOptionalBool) {
-          size += pb::CodedOutputStream.ComputeBoolSize(13, OptionalBool);
-        }
-        if (HasOptionalString) {
-          size += pb::CodedOutputStream.ComputeStringSize(14, OptionalString);
-        }
-        if (HasOptionalBytes) {
-          size += pb::CodedOutputStream.ComputeBytesSize(15, OptionalBytes);
-        }
-        if (HasOptionalGroup) {
-          size += pb::CodedOutputStream.ComputeGroupSize(16, OptionalGroup);
-        }
-        if (HasOptionalNestedMessage) {
-          size += pb::CodedOutputStream.ComputeMessageSize(18, OptionalNestedMessage);
-        }
-        if (HasOptionalForeignMessage) {
-          size += pb::CodedOutputStream.ComputeMessageSize(19, OptionalForeignMessage);
-        }
-        if (HasOptionalImportMessage) {
-          size += pb::CodedOutputStream.ComputeMessageSize(20, OptionalImportMessage);
-        }
-        if (HasOptionalNestedEnum) {
-          size += pb::CodedOutputStream.ComputeEnumSize(21, (int) OptionalNestedEnum);
-        }
-        if (HasOptionalForeignEnum) {
-          size += pb::CodedOutputStream.ComputeEnumSize(22, (int) OptionalForeignEnum);
-        }
-        if (HasOptionalImportEnum) {
-          size += pb::CodedOutputStream.ComputeEnumSize(23, (int) OptionalImportEnum);
-        }
-        if (HasOptionalStringPiece) {
-          size += pb::CodedOutputStream.ComputeStringSize(24, OptionalStringPiece);
-        }
-        if (HasOptionalCord) {
-          size += pb::CodedOutputStream.ComputeStringSize(25, OptionalCord);
-        }
-        {
-          int dataSize = 0;
-          foreach (int element in RepeatedInt32List) {
-            dataSize += pb::CodedOutputStream.ComputeInt32SizeNoTag(element);
-          }
-          size += dataSize;
-          size += 2 * repeatedInt32_.Count;
-        }
-        {
-          int dataSize = 0;
-          foreach (long element in RepeatedInt64List) {
-            dataSize += pb::CodedOutputStream.ComputeInt64SizeNoTag(element);
-          }
-          size += dataSize;
-          size += 2 * repeatedInt64_.Count;
-        }
-        {
-          int dataSize = 0;
-          foreach (uint element in RepeatedUint32List) {
-            dataSize += pb::CodedOutputStream.ComputeUInt32SizeNoTag(element);
-          }
-          size += dataSize;
-          size += 2 * repeatedUint32_.Count;
-        }
-        {
-          int dataSize = 0;
-          foreach (ulong element in RepeatedUint64List) {
-            dataSize += pb::CodedOutputStream.ComputeUInt64SizeNoTag(element);
-          }
-          size += dataSize;
-          size += 2 * repeatedUint64_.Count;
-        }
-        {
-          int dataSize = 0;
-          foreach (int element in RepeatedSint32List) {
-            dataSize += pb::CodedOutputStream.ComputeSInt32SizeNoTag(element);
-          }
-          size += dataSize;
-          size += 2 * repeatedSint32_.Count;
-        }
-        {
-          int dataSize = 0;
-          foreach (long element in RepeatedSint64List) {
-            dataSize += pb::CodedOutputStream.ComputeSInt64SizeNoTag(element);
-          }
-          size += dataSize;
-          size += 2 * repeatedSint64_.Count;
-        }
-        {
-          int dataSize = 0;
-          dataSize = 4 * repeatedFixed32_.Count;
-          size += dataSize;
-          size += 2 * repeatedFixed32_.Count;
-        }
-        {
-          int dataSize = 0;
-          dataSize = 8 * repeatedFixed64_.Count;
-          size += dataSize;
-          size += 2 * repeatedFixed64_.Count;
-        }
-        {
-          int dataSize = 0;
-          dataSize = 4 * repeatedSfixed32_.Count;
-          size += dataSize;
-          size += 2 * repeatedSfixed32_.Count;
-        }
-        {
-          int dataSize = 0;
-          dataSize = 8 * repeatedSfixed64_.Count;
-          size += dataSize;
-          size += 2 * repeatedSfixed64_.Count;
-        }
-        {
-          int dataSize = 0;
-          dataSize = 4 * repeatedFloat_.Count;
-          size += dataSize;
-          size += 2 * repeatedFloat_.Count;
-        }
-        {
-          int dataSize = 0;
-          dataSize = 8 * repeatedDouble_.Count;
-          size += dataSize;
-          size += 2 * repeatedDouble_.Count;
-        }
-        {
-          int dataSize = 0;
-          dataSize = 1 * repeatedBool_.Count;
-          size += dataSize;
-          size += 2 * repeatedBool_.Count;
-        }
-        {
-          int dataSize = 0;
-          foreach (string element in RepeatedStringList) {
-            dataSize += pb::CodedOutputStream.ComputeStringSizeNoTag(element);
-          }
-          size += dataSize;
-          size += 2 * repeatedString_.Count;
-        }
-        {
-          int dataSize = 0;
-          foreach (pb::ByteString element in RepeatedBytesList) {
-            dataSize += pb::CodedOutputStream.ComputeBytesSizeNoTag(element);
-          }
-          size += dataSize;
-          size += 2 * repeatedBytes_.Count;
-        }
-        foreach (global::protobuf_unittest.TestAllTypesLite.Types.RepeatedGroup element in RepeatedGroupList) {
-          size += pb::CodedOutputStream.ComputeGroupSize(46, element);
-        }
-        foreach (global::protobuf_unittest.TestAllTypesLite.Types.NestedMessage element in RepeatedNestedMessageList) {
-          size += pb::CodedOutputStream.ComputeMessageSize(48, element);
-        }
-        foreach (global::protobuf_unittest.ForeignMessageLite element in RepeatedForeignMessageList) {
-          size += pb::CodedOutputStream.ComputeMessageSize(49, element);
-        }
-        foreach (global::protobuf_unittest_import.ImportMessageLite element in RepeatedImportMessageList) {
-          size += pb::CodedOutputStream.ComputeMessageSize(50, element);
-        }
-        {
-          int dataSize = 0;
-          if (repeatedNestedEnum_.Count > 0) {
-            foreach (global::protobuf_unittest.TestAllTypesLite.Types.NestedEnum element in repeatedNestedEnum_) {
-              dataSize += pb::CodedOutputStream.ComputeEnumSizeNoTag((int) element);
-            }
-            size += dataSize;
-            size += 2 * repeatedNestedEnum_.Count;
-          }
-        }
-        {
-          int dataSize = 0;
-          if (repeatedForeignEnum_.Count > 0) {
-            foreach (global::protobuf_unittest.ForeignEnumLite element in repeatedForeignEnum_) {
-              dataSize += pb::CodedOutputStream.ComputeEnumSizeNoTag((int) element);
-            }
-            size += dataSize;
-            size += 2 * repeatedForeignEnum_.Count;
-          }
-        }
-        {
-          int dataSize = 0;
-          if (repeatedImportEnum_.Count > 0) {
-            foreach (global::protobuf_unittest_import.ImportEnumLite element in repeatedImportEnum_) {
-              dataSize += pb::CodedOutputStream.ComputeEnumSizeNoTag((int) element);
-            }
-            size += dataSize;
-            size += 2 * repeatedImportEnum_.Count;
-          }
-        }
-        {
-          int dataSize = 0;
-          foreach (string element in RepeatedStringPieceList) {
-            dataSize += pb::CodedOutputStream.ComputeStringSizeNoTag(element);
-          }
-          size += dataSize;
-          size += 2 * repeatedStringPiece_.Count;
-        }
-        {
-          int dataSize = 0;
-          foreach (string element in RepeatedCordList) {
-            dataSize += pb::CodedOutputStream.ComputeStringSizeNoTag(element);
-          }
-          size += dataSize;
-          size += 2 * repeatedCord_.Count;
-        }
-        if (HasDefaultInt32) {
-          size += pb::CodedOutputStream.ComputeInt32Size(61, DefaultInt32);
-        }
-        if (HasDefaultInt64) {
-          size += pb::CodedOutputStream.ComputeInt64Size(62, DefaultInt64);
-        }
-        if (HasDefaultUint32) {
-          size += pb::CodedOutputStream.ComputeUInt32Size(63, DefaultUint32);
-        }
-        if (HasDefaultUint64) {
-          size += pb::CodedOutputStream.ComputeUInt64Size(64, DefaultUint64);
-        }
-        if (HasDefaultSint32) {
-          size += pb::CodedOutputStream.ComputeSInt32Size(65, DefaultSint32);
-        }
-        if (HasDefaultSint64) {
-          size += pb::CodedOutputStream.ComputeSInt64Size(66, DefaultSint64);
-        }
-        if (HasDefaultFixed32) {
-          size += pb::CodedOutputStream.ComputeFixed32Size(67, DefaultFixed32);
-        }
-        if (HasDefaultFixed64) {
-          size += pb::CodedOutputStream.ComputeFixed64Size(68, DefaultFixed64);
-        }
-        if (HasDefaultSfixed32) {
-          size += pb::CodedOutputStream.ComputeSFixed32Size(69, DefaultSfixed32);
-        }
-        if (HasDefaultSfixed64) {
-          size += pb::CodedOutputStream.ComputeSFixed64Size(70, DefaultSfixed64);
-        }
-        if (HasDefaultFloat) {
-          size += pb::CodedOutputStream.ComputeFloatSize(71, DefaultFloat);
-        }
-        if (HasDefaultDouble) {
-          size += pb::CodedOutputStream.ComputeDoubleSize(72, DefaultDouble);
-        }
-        if (HasDefaultBool) {
-          size += pb::CodedOutputStream.ComputeBoolSize(73, DefaultBool);
-        }
-        if (HasDefaultString) {
-          size += pb::CodedOutputStream.ComputeStringSize(74, DefaultString);
-        }
-        if (HasDefaultBytes) {
-          size += pb::CodedOutputStream.ComputeBytesSize(75, DefaultBytes);
-        }
-        if (HasDefaultNestedEnum) {
-          size += pb::CodedOutputStream.ComputeEnumSize(81, (int) DefaultNestedEnum);
-        }
-        if (HasDefaultForeignEnum) {
-          size += pb::CodedOutputStream.ComputeEnumSize(82, (int) DefaultForeignEnum);
-        }
-        if (HasDefaultImportEnum) {
-          size += pb::CodedOutputStream.ComputeEnumSize(83, (int) DefaultImportEnum);
-        }
-        if (HasDefaultStringPiece) {
-          size += pb::CodedOutputStream.ComputeStringSize(84, DefaultStringPiece);
-        }
-        if (HasDefaultCord) {
-          size += pb::CodedOutputStream.ComputeStringSize(85, DefaultCord);
-        }
-        size += UnknownFields.SerializedSize;
-        memoizedSerializedSize = size;
-        return size;
-      }
-    }
-    
-    public static TestAllTypesLite ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestAllTypesLite ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestAllTypesLite ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestAllTypesLite ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestAllTypesLite ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestAllTypesLite ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static TestAllTypesLite ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static TestAllTypesLite ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static TestAllTypesLite ParseFrom(pb::CodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestAllTypesLite ParseFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static Builder CreateBuilder() { return new Builder(); }
-    public override Builder ToBuilder() { return CreateBuilder(this); }
-    public override Builder CreateBuilderForType() { return new Builder(); }
-    public static Builder CreateBuilder(TestAllTypesLite prototype) {
-      return (Builder) new Builder().MergeFrom(prototype);
-    }
-    
-    public sealed partial class Builder : pb::GeneratedBuilder<TestAllTypesLite, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {}
-      
-      TestAllTypesLite result = new TestAllTypesLite();
-      
-      protected override TestAllTypesLite MessageBeingBuilt {
-        get { return result; }
-      }
-      
-      public override Builder Clear() {
-        result = new TestAllTypesLite();
-        return this;
-      }
-      
-      public override Builder Clone() {
-        return new Builder().MergeFrom(result);
-      }
-      
-      public override pbd::MessageDescriptor DescriptorForType {
-        get { return global::protobuf_unittest.TestAllTypesLite.Descriptor; }
-      }
-      
-      public override TestAllTypesLite DefaultInstanceForType {
-        get { return global::protobuf_unittest.TestAllTypesLite.DefaultInstance; }
-      }
-      
-      public override TestAllTypesLite BuildPartial() {
-        if (result == null) {
-          throw new global::System.InvalidOperationException("build() has already been called on this Builder");
-        }
-        result.repeatedInt32_.MakeReadOnly();
-        result.repeatedInt64_.MakeReadOnly();
-        result.repeatedUint32_.MakeReadOnly();
-        result.repeatedUint64_.MakeReadOnly();
-        result.repeatedSint32_.MakeReadOnly();
-        result.repeatedSint64_.MakeReadOnly();
-        result.repeatedFixed32_.MakeReadOnly();
-        result.repeatedFixed64_.MakeReadOnly();
-        result.repeatedSfixed32_.MakeReadOnly();
-        result.repeatedSfixed64_.MakeReadOnly();
-        result.repeatedFloat_.MakeReadOnly();
-        result.repeatedDouble_.MakeReadOnly();
-        result.repeatedBool_.MakeReadOnly();
-        result.repeatedString_.MakeReadOnly();
-        result.repeatedBytes_.MakeReadOnly();
-        result.repeatedGroup_.MakeReadOnly();
-        result.repeatedNestedMessage_.MakeReadOnly();
-        result.repeatedForeignMessage_.MakeReadOnly();
-        result.repeatedImportMessage_.MakeReadOnly();
-        result.repeatedNestedEnum_.MakeReadOnly();
-        result.repeatedForeignEnum_.MakeReadOnly();
-        result.repeatedImportEnum_.MakeReadOnly();
-        result.repeatedStringPiece_.MakeReadOnly();
-        result.repeatedCord_.MakeReadOnly();
-        TestAllTypesLite returnMe = result;
-        result = null;
-        return returnMe;
-      }
-      
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is TestAllTypesLite) {
-          return MergeFrom((TestAllTypesLite) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-      
-      public override Builder MergeFrom(TestAllTypesLite other) {
-        if (other == global::protobuf_unittest.TestAllTypesLite.DefaultInstance) return this;
-        if (other.HasOptionalInt32) {
-          OptionalInt32 = other.OptionalInt32;
-        }
-        if (other.HasOptionalInt64) {
-          OptionalInt64 = other.OptionalInt64;
-        }
-        if (other.HasOptionalUint32) {
-          OptionalUint32 = other.OptionalUint32;
-        }
-        if (other.HasOptionalUint64) {
-          OptionalUint64 = other.OptionalUint64;
-        }
-        if (other.HasOptionalSint32) {
-          OptionalSint32 = other.OptionalSint32;
-        }
-        if (other.HasOptionalSint64) {
-          OptionalSint64 = other.OptionalSint64;
-        }
-        if (other.HasOptionalFixed32) {
-          OptionalFixed32 = other.OptionalFixed32;
-        }
-        if (other.HasOptionalFixed64) {
-          OptionalFixed64 = other.OptionalFixed64;
-        }
-        if (other.HasOptionalSfixed32) {
-          OptionalSfixed32 = other.OptionalSfixed32;
-        }
-        if (other.HasOptionalSfixed64) {
-          OptionalSfixed64 = other.OptionalSfixed64;
-        }
-        if (other.HasOptionalFloat) {
-          OptionalFloat = other.OptionalFloat;
-        }
-        if (other.HasOptionalDouble) {
-          OptionalDouble = other.OptionalDouble;
-        }
-        if (other.HasOptionalBool) {
-          OptionalBool = other.OptionalBool;
-        }
-        if (other.HasOptionalString) {
-          OptionalString = other.OptionalString;
-        }
-        if (other.HasOptionalBytes) {
-          OptionalBytes = other.OptionalBytes;
-        }
-        if (other.HasOptionalGroup) {
-          MergeOptionalGroup(other.OptionalGroup);
-        }
-        if (other.HasOptionalNestedMessage) {
-          MergeOptionalNestedMessage(other.OptionalNestedMessage);
-        }
-        if (other.HasOptionalForeignMessage) {
-          MergeOptionalForeignMessage(other.OptionalForeignMessage);
-        }
-        if (other.HasOptionalImportMessage) {
-          MergeOptionalImportMessage(other.OptionalImportMessage);
-        }
-        if (other.HasOptionalNestedEnum) {
-          OptionalNestedEnum = other.OptionalNestedEnum;
-        }
-        if (other.HasOptionalForeignEnum) {
-          OptionalForeignEnum = other.OptionalForeignEnum;
-        }
-        if (other.HasOptionalImportEnum) {
-          OptionalImportEnum = other.OptionalImportEnum;
-        }
-        if (other.HasOptionalStringPiece) {
-          OptionalStringPiece = other.OptionalStringPiece;
-        }
-        if (other.HasOptionalCord) {
-          OptionalCord = other.OptionalCord;
-        }
-        if (other.repeatedInt32_.Count != 0) {
-          base.AddRange(other.repeatedInt32_, result.repeatedInt32_);
-        }
-        if (other.repeatedInt64_.Count != 0) {
-          base.AddRange(other.repeatedInt64_, result.repeatedInt64_);
-        }
-        if (other.repeatedUint32_.Count != 0) {
-          base.AddRange(other.repeatedUint32_, result.repeatedUint32_);
-        }
-        if (other.repeatedUint64_.Count != 0) {
-          base.AddRange(other.repeatedUint64_, result.repeatedUint64_);
-        }
-        if (other.repeatedSint32_.Count != 0) {
-          base.AddRange(other.repeatedSint32_, result.repeatedSint32_);
-        }
-        if (other.repeatedSint64_.Count != 0) {
-          base.AddRange(other.repeatedSint64_, result.repeatedSint64_);
-        }
-        if (other.repeatedFixed32_.Count != 0) {
-          base.AddRange(other.repeatedFixed32_, result.repeatedFixed32_);
-        }
-        if (other.repeatedFixed64_.Count != 0) {
-          base.AddRange(other.repeatedFixed64_, result.repeatedFixed64_);
-        }
-        if (other.repeatedSfixed32_.Count != 0) {
-          base.AddRange(other.repeatedSfixed32_, result.repeatedSfixed32_);
-        }
-        if (other.repeatedSfixed64_.Count != 0) {
-          base.AddRange(other.repeatedSfixed64_, result.repeatedSfixed64_);
-        }
-        if (other.repeatedFloat_.Count != 0) {
-          base.AddRange(other.repeatedFloat_, result.repeatedFloat_);
-        }
-        if (other.repeatedDouble_.Count != 0) {
-          base.AddRange(other.repeatedDouble_, result.repeatedDouble_);
-        }
-        if (other.repeatedBool_.Count != 0) {
-          base.AddRange(other.repeatedBool_, result.repeatedBool_);
-        }
-        if (other.repeatedString_.Count != 0) {
-          base.AddRange(other.repeatedString_, result.repeatedString_);
-        }
-        if (other.repeatedBytes_.Count != 0) {
-          base.AddRange(other.repeatedBytes_, result.repeatedBytes_);
-        }
-        if (other.repeatedGroup_.Count != 0) {
-          base.AddRange(other.repeatedGroup_, result.repeatedGroup_);
-        }
-        if (other.repeatedNestedMessage_.Count != 0) {
-          base.AddRange(other.repeatedNestedMessage_, result.repeatedNestedMessage_);
-        }
-        if (other.repeatedForeignMessage_.Count != 0) {
-          base.AddRange(other.repeatedForeignMessage_, result.repeatedForeignMessage_);
-        }
-        if (other.repeatedImportMessage_.Count != 0) {
-          base.AddRange(other.repeatedImportMessage_, result.repeatedImportMessage_);
-        }
-        if (other.repeatedNestedEnum_.Count != 0) {
-          base.AddRange(other.repeatedNestedEnum_, result.repeatedNestedEnum_);
-        }
-        if (other.repeatedForeignEnum_.Count != 0) {
-          base.AddRange(other.repeatedForeignEnum_, result.repeatedForeignEnum_);
-        }
-        if (other.repeatedImportEnum_.Count != 0) {
-          base.AddRange(other.repeatedImportEnum_, result.repeatedImportEnum_);
-        }
-        if (other.repeatedStringPiece_.Count != 0) {
-          base.AddRange(other.repeatedStringPiece_, result.repeatedStringPiece_);
-        }
-        if (other.repeatedCord_.Count != 0) {
-          base.AddRange(other.repeatedCord_, result.repeatedCord_);
-        }
-        if (other.HasDefaultInt32) {
-          DefaultInt32 = other.DefaultInt32;
-        }
-        if (other.HasDefaultInt64) {
-          DefaultInt64 = other.DefaultInt64;
-        }
-        if (other.HasDefaultUint32) {
-          DefaultUint32 = other.DefaultUint32;
-        }
-        if (other.HasDefaultUint64) {
-          DefaultUint64 = other.DefaultUint64;
-        }
-        if (other.HasDefaultSint32) {
-          DefaultSint32 = other.DefaultSint32;
-        }
-        if (other.HasDefaultSint64) {
-          DefaultSint64 = other.DefaultSint64;
-        }
-        if (other.HasDefaultFixed32) {
-          DefaultFixed32 = other.DefaultFixed32;
-        }
-        if (other.HasDefaultFixed64) {
-          DefaultFixed64 = other.DefaultFixed64;
-        }
-        if (other.HasDefaultSfixed32) {
-          DefaultSfixed32 = other.DefaultSfixed32;
-        }
-        if (other.HasDefaultSfixed64) {
-          DefaultSfixed64 = other.DefaultSfixed64;
-        }
-        if (other.HasDefaultFloat) {
-          DefaultFloat = other.DefaultFloat;
-        }
-        if (other.HasDefaultDouble) {
-          DefaultDouble = other.DefaultDouble;
-        }
-        if (other.HasDefaultBool) {
-          DefaultBool = other.DefaultBool;
-        }
-        if (other.HasDefaultString) {
-          DefaultString = other.DefaultString;
-        }
-        if (other.HasDefaultBytes) {
-          DefaultBytes = other.DefaultBytes;
-        }
-        if (other.HasDefaultNestedEnum) {
-          DefaultNestedEnum = other.DefaultNestedEnum;
-        }
-        if (other.HasDefaultForeignEnum) {
-          DefaultForeignEnum = other.DefaultForeignEnum;
-        }
-        if (other.HasDefaultImportEnum) {
-          DefaultImportEnum = other.DefaultImportEnum;
-        }
-        if (other.HasDefaultStringPiece) {
-          DefaultStringPiece = other.DefaultStringPiece;
-        }
-        if (other.HasDefaultCord) {
-          DefaultCord = other.DefaultCord;
-        }
-        this.MergeUnknownFields(other.UnknownFields);
-        return this;
-      }
-      
-      public override Builder MergeFrom(pb::CodedInputStream input) {
-        return MergeFrom(input, pb::ExtensionRegistry.Empty);
-      }
-      
-      public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-        pb::UnknownFieldSet.Builder unknownFields = null;
-        while (true) {
-          uint tag = input.ReadTag();
-          switch (tag) {
-            case 0: {
-              if (unknownFields != null) {
-                this.UnknownFields = unknownFields.Build();
-              }
-              return this;
-            }
-            default: {
-              if (pb::WireFormat.IsEndGroupTag(tag)) {
-                if (unknownFields != null) {
-                  this.UnknownFields = unknownFields.Build();
-                }
-                return this;
-              }
-              if (unknownFields == null) {
-                unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-              }
-              ParseUnknownField(input, unknownFields, extensionRegistry, tag);
-              break;
-            }
-            case 8: {
-              OptionalInt32 = input.ReadInt32();
-              break;
-            }
-            case 16: {
-              OptionalInt64 = input.ReadInt64();
-              break;
-            }
-            case 24: {
-              OptionalUint32 = input.ReadUInt32();
-              break;
-            }
-            case 32: {
-              OptionalUint64 = input.ReadUInt64();
-              break;
-            }
-            case 40: {
-              OptionalSint32 = input.ReadSInt32();
-              break;
-            }
-            case 48: {
-              OptionalSint64 = input.ReadSInt64();
-              break;
-            }
-            case 61: {
-              OptionalFixed32 = input.ReadFixed32();
-              break;
-            }
-            case 65: {
-              OptionalFixed64 = input.ReadFixed64();
-              break;
-            }
-            case 77: {
-              OptionalSfixed32 = input.ReadSFixed32();
-              break;
-            }
-            case 81: {
-              OptionalSfixed64 = input.ReadSFixed64();
-              break;
-            }
-            case 93: {
-              OptionalFloat = input.ReadFloat();
-              break;
-            }
-            case 97: {
-              OptionalDouble = input.ReadDouble();
-              break;
-            }
-            case 104: {
-              OptionalBool = input.ReadBool();
-              break;
-            }
-            case 114: {
-              OptionalString = input.ReadString();
-              break;
-            }
-            case 122: {
-              OptionalBytes = input.ReadBytes();
-              break;
-            }
-            case 131: {
-              global::protobuf_unittest.TestAllTypesLite.Types.OptionalGroup.Builder subBuilder = global::protobuf_unittest.TestAllTypesLite.Types.OptionalGroup.CreateBuilder();
-              if (HasOptionalGroup) {
-                subBuilder.MergeFrom(OptionalGroup);
-              }
-              input.ReadGroup(16, subBuilder, extensionRegistry);
-              OptionalGroup = subBuilder.BuildPartial();
-              break;
-            }
-            case 146: {
-              global::protobuf_unittest.TestAllTypesLite.Types.NestedMessage.Builder subBuilder = global::protobuf_unittest.TestAllTypesLite.Types.NestedMessage.CreateBuilder();
-              if (HasOptionalNestedMessage) {
-                subBuilder.MergeFrom(OptionalNestedMessage);
-              }
-              input.ReadMessage(subBuilder, extensionRegistry);
-              OptionalNestedMessage = subBuilder.BuildPartial();
-              break;
-            }
-            case 154: {
-              global::protobuf_unittest.ForeignMessageLite.Builder subBuilder = global::protobuf_unittest.ForeignMessageLite.CreateBuilder();
-              if (HasOptionalForeignMessage) {
-                subBuilder.MergeFrom(OptionalForeignMessage);
-              }
-              input.ReadMessage(subBuilder, extensionRegistry);
-              OptionalForeignMessage = subBuilder.BuildPartial();
-              break;
-            }
-            case 162: {
-              global::protobuf_unittest_import.ImportMessageLite.Builder subBuilder = global::protobuf_unittest_import.ImportMessageLite.CreateBuilder();
-              if (HasOptionalImportMessage) {
-                subBuilder.MergeFrom(OptionalImportMessage);
-              }
-              input.ReadMessage(subBuilder, extensionRegistry);
-              OptionalImportMessage = subBuilder.BuildPartial();
-              break;
-            }
-            case 168: {
-              int rawValue = input.ReadEnum();
-              if (!global::System.Enum.IsDefined(typeof(global::protobuf_unittest.TestAllTypesLite.Types.NestedEnum), rawValue)) {
-                if (unknownFields == null) {
-                  unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-                }
-                unknownFields.MergeVarintField(21, (ulong) rawValue);
-              } else {
-                OptionalNestedEnum = (global::protobuf_unittest.TestAllTypesLite.Types.NestedEnum) rawValue;
-              }
-              break;
-            }
-            case 176: {
-              int rawValue = input.ReadEnum();
-              if (!global::System.Enum.IsDefined(typeof(global::protobuf_unittest.ForeignEnumLite), rawValue)) {
-                if (unknownFields == null) {
-                  unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-                }
-                unknownFields.MergeVarintField(22, (ulong) rawValue);
-              } else {
-                OptionalForeignEnum = (global::protobuf_unittest.ForeignEnumLite) rawValue;
-              }
-              break;
-            }
-            case 184: {
-              int rawValue = input.ReadEnum();
-              if (!global::System.Enum.IsDefined(typeof(global::protobuf_unittest_import.ImportEnumLite), rawValue)) {
-                if (unknownFields == null) {
-                  unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-                }
-                unknownFields.MergeVarintField(23, (ulong) rawValue);
-              } else {
-                OptionalImportEnum = (global::protobuf_unittest_import.ImportEnumLite) rawValue;
-              }
-              break;
-            }
-            case 194: {
-              OptionalStringPiece = input.ReadString();
-              break;
-            }
-            case 202: {
-              OptionalCord = input.ReadString();
-              break;
-            }
-            case 248: {
-              AddRepeatedInt32(input.ReadInt32());
-              break;
-            }
-            case 256: {
-              AddRepeatedInt64(input.ReadInt64());
-              break;
-            }
-            case 264: {
-              AddRepeatedUint32(input.ReadUInt32());
-              break;
-            }
-            case 272: {
-              AddRepeatedUint64(input.ReadUInt64());
-              break;
-            }
-            case 280: {
-              AddRepeatedSint32(input.ReadSInt32());
-              break;
-            }
-            case 288: {
-              AddRepeatedSint64(input.ReadSInt64());
-              break;
-            }
-            case 301: {
-              AddRepeatedFixed32(input.ReadFixed32());
-              break;
-            }
-            case 305: {
-              AddRepeatedFixed64(input.ReadFixed64());
-              break;
-            }
-            case 317: {
-              AddRepeatedSfixed32(input.ReadSFixed32());
-              break;
-            }
-            case 321: {
-              AddRepeatedSfixed64(input.ReadSFixed64());
-              break;
-            }
-            case 333: {
-              AddRepeatedFloat(input.ReadFloat());
-              break;
-            }
-            case 337: {
-              AddRepeatedDouble(input.ReadDouble());
-              break;
-            }
-            case 344: {
-              AddRepeatedBool(input.ReadBool());
-              break;
-            }
-            case 354: {
-              AddRepeatedString(input.ReadString());
-              break;
-            }
-            case 362: {
-              AddRepeatedBytes(input.ReadBytes());
-              break;
-            }
-            case 371: {
-              global::protobuf_unittest.TestAllTypesLite.Types.RepeatedGroup.Builder subBuilder = global::protobuf_unittest.TestAllTypesLite.Types.RepeatedGroup.CreateBuilder();
-              input.ReadGroup(46, subBuilder, extensionRegistry);
-              AddRepeatedGroup(subBuilder.BuildPartial());
-              break;
-            }
-            case 386: {
-              global::protobuf_unittest.TestAllTypesLite.Types.NestedMessage.Builder subBuilder = global::protobuf_unittest.TestAllTypesLite.Types.NestedMessage.CreateBuilder();
-              input.ReadMessage(subBuilder, extensionRegistry);
-              AddRepeatedNestedMessage(subBuilder.BuildPartial());
-              break;
-            }
-            case 394: {
-              global::protobuf_unittest.ForeignMessageLite.Builder subBuilder = global::protobuf_unittest.ForeignMessageLite.CreateBuilder();
-              input.ReadMessage(subBuilder, extensionRegistry);
-              AddRepeatedForeignMessage(subBuilder.BuildPartial());
-              break;
-            }
-            case 402: {
-              global::protobuf_unittest_import.ImportMessageLite.Builder subBuilder = global::protobuf_unittest_import.ImportMessageLite.CreateBuilder();
-              input.ReadMessage(subBuilder, extensionRegistry);
-              AddRepeatedImportMessage(subBuilder.BuildPartial());
-              break;
-            }
-            case 408: {
-              int rawValue = input.ReadEnum();
-              if (!global::System.Enum.IsDefined(typeof(global::protobuf_unittest.TestAllTypesLite.Types.NestedEnum), rawValue)) {
-                if (unknownFields == null) {
-                  unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-                }
-                unknownFields.MergeVarintField(51, (ulong) rawValue);
-              } else {
-                AddRepeatedNestedEnum((global::protobuf_unittest.TestAllTypesLite.Types.NestedEnum) rawValue);
-              }
-              break;
-            }
-            case 416: {
-              int rawValue = input.ReadEnum();
-              if (!global::System.Enum.IsDefined(typeof(global::protobuf_unittest.ForeignEnumLite), rawValue)) {
-                if (unknownFields == null) {
-                  unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-                }
-                unknownFields.MergeVarintField(52, (ulong) rawValue);
-              } else {
-                AddRepeatedForeignEnum((global::protobuf_unittest.ForeignEnumLite) rawValue);
-              }
-              break;
-            }
-            case 424: {
-              int rawValue = input.ReadEnum();
-              if (!global::System.Enum.IsDefined(typeof(global::protobuf_unittest_import.ImportEnumLite), rawValue)) {
-                if (unknownFields == null) {
-                  unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-                }
-                unknownFields.MergeVarintField(53, (ulong) rawValue);
-              } else {
-                AddRepeatedImportEnum((global::protobuf_unittest_import.ImportEnumLite) rawValue);
-              }
-              break;
-            }
-            case 434: {
-              AddRepeatedStringPiece(input.ReadString());
-              break;
-            }
-            case 442: {
-              AddRepeatedCord(input.ReadString());
-              break;
-            }
-            case 488: {
-              DefaultInt32 = input.ReadInt32();
-              break;
-            }
-            case 496: {
-              DefaultInt64 = input.ReadInt64();
-              break;
-            }
-            case 504: {
-              DefaultUint32 = input.ReadUInt32();
-              break;
-            }
-            case 512: {
-              DefaultUint64 = input.ReadUInt64();
-              break;
-            }
-            case 520: {
-              DefaultSint32 = input.ReadSInt32();
-              break;
-            }
-            case 528: {
-              DefaultSint64 = input.ReadSInt64();
-              break;
-            }
-            case 541: {
-              DefaultFixed32 = input.ReadFixed32();
-              break;
-            }
-            case 545: {
-              DefaultFixed64 = input.ReadFixed64();
-              break;
-            }
-            case 557: {
-              DefaultSfixed32 = input.ReadSFixed32();
-              break;
-            }
-            case 561: {
-              DefaultSfixed64 = input.ReadSFixed64();
-              break;
-            }
-            case 573: {
-              DefaultFloat = input.ReadFloat();
-              break;
-            }
-            case 577: {
-              DefaultDouble = input.ReadDouble();
-              break;
-            }
-            case 584: {
-              DefaultBool = input.ReadBool();
-              break;
-            }
-            case 594: {
-              DefaultString = input.ReadString();
-              break;
-            }
-            case 602: {
-              DefaultBytes = input.ReadBytes();
-              break;
-            }
-            case 648: {
-              int rawValue = input.ReadEnum();
-              if (!global::System.Enum.IsDefined(typeof(global::protobuf_unittest.TestAllTypesLite.Types.NestedEnum), rawValue)) {
-                if (unknownFields == null) {
-                  unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-                }
-                unknownFields.MergeVarintField(81, (ulong) rawValue);
-              } else {
-                DefaultNestedEnum = (global::protobuf_unittest.TestAllTypesLite.Types.NestedEnum) rawValue;
-              }
-              break;
-            }
-            case 656: {
-              int rawValue = input.ReadEnum();
-              if (!global::System.Enum.IsDefined(typeof(global::protobuf_unittest.ForeignEnumLite), rawValue)) {
-                if (unknownFields == null) {
-                  unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-                }
-                unknownFields.MergeVarintField(82, (ulong) rawValue);
-              } else {
-                DefaultForeignEnum = (global::protobuf_unittest.ForeignEnumLite) rawValue;
-              }
-              break;
-            }
-            case 664: {
-              int rawValue = input.ReadEnum();
-              if (!global::System.Enum.IsDefined(typeof(global::protobuf_unittest_import.ImportEnumLite), rawValue)) {
-                if (unknownFields == null) {
-                  unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-                }
-                unknownFields.MergeVarintField(83, (ulong) rawValue);
-              } else {
-                DefaultImportEnum = (global::protobuf_unittest_import.ImportEnumLite) rawValue;
-              }
-              break;
-            }
-            case 674: {
-              DefaultStringPiece = input.ReadString();
-              break;
-            }
-            case 682: {
-              DefaultCord = input.ReadString();
-              break;
-            }
-          }
-        }
-      }
-      
-      
-      public bool HasOptionalInt32 {
-        get { return result.HasOptionalInt32; }
-      }
-      public int OptionalInt32 {
-        get { return result.OptionalInt32; }
-        set { SetOptionalInt32(value); }
-      }
-      public Builder SetOptionalInt32(int value) {
-        result.hasOptionalInt32 = true;
-        result.optionalInt32_ = value;
-        return this;
-      }
-      public Builder ClearOptionalInt32() {
-        result.hasOptionalInt32 = false;
-        result.optionalInt32_ = 0;
-        return this;
-      }
-      
-      public bool HasOptionalInt64 {
-        get { return result.HasOptionalInt64; }
-      }
-      public long OptionalInt64 {
-        get { return result.OptionalInt64; }
-        set { SetOptionalInt64(value); }
-      }
-      public Builder SetOptionalInt64(long value) {
-        result.hasOptionalInt64 = true;
-        result.optionalInt64_ = value;
-        return this;
-      }
-      public Builder ClearOptionalInt64() {
-        result.hasOptionalInt64 = false;
-        result.optionalInt64_ = 0L;
-        return this;
-      }
-      
-      public bool HasOptionalUint32 {
-        get { return result.HasOptionalUint32; }
-      }
-      [global::System.CLSCompliant(false)]
-      public uint OptionalUint32 {
-        get { return result.OptionalUint32; }
-        set { SetOptionalUint32(value); }
-      }
-      [global::System.CLSCompliant(false)]
-      public Builder SetOptionalUint32(uint value) {
-        result.hasOptionalUint32 = true;
-        result.optionalUint32_ = value;
-        return this;
-      }
-      public Builder ClearOptionalUint32() {
-        result.hasOptionalUint32 = false;
-        result.optionalUint32_ = 0;
-        return this;
-      }
-      
-      public bool HasOptionalUint64 {
-        get { return result.HasOptionalUint64; }
-      }
-      [global::System.CLSCompliant(false)]
-      public ulong OptionalUint64 {
-        get { return result.OptionalUint64; }
-        set { SetOptionalUint64(value); }
-      }
-      [global::System.CLSCompliant(false)]
-      public Builder SetOptionalUint64(ulong value) {
-        result.hasOptionalUint64 = true;
-        result.optionalUint64_ = value;
-        return this;
-      }
-      public Builder ClearOptionalUint64() {
-        result.hasOptionalUint64 = false;
-        result.optionalUint64_ = 0UL;
-        return this;
-      }
-      
-      public bool HasOptionalSint32 {
-        get { return result.HasOptionalSint32; }
-      }
-      public int OptionalSint32 {
-        get { return result.OptionalSint32; }
-        set { SetOptionalSint32(value); }
-      }
-      public Builder SetOptionalSint32(int value) {
-        result.hasOptionalSint32 = true;
-        result.optionalSint32_ = value;
-        return this;
-      }
-      public Builder ClearOptionalSint32() {
-        result.hasOptionalSint32 = false;
-        result.optionalSint32_ = 0;
-        return this;
-      }
-      
-      public bool HasOptionalSint64 {
-        get { return result.HasOptionalSint64; }
-      }
-      public long OptionalSint64 {
-        get { return result.OptionalSint64; }
-        set { SetOptionalSint64(value); }
-      }
-      public Builder SetOptionalSint64(long value) {
-        result.hasOptionalSint64 = true;
-        result.optionalSint64_ = value;
-        return this;
-      }
-      public Builder ClearOptionalSint64() {
-        result.hasOptionalSint64 = false;
-        result.optionalSint64_ = 0;
-        return this;
-      }
-      
-      public bool HasOptionalFixed32 {
-        get { return result.HasOptionalFixed32; }
-      }
-      [global::System.CLSCompliant(false)]
-      public uint OptionalFixed32 {
-        get { return result.OptionalFixed32; }
-        set { SetOptionalFixed32(value); }
-      }
-      [global::System.CLSCompliant(false)]
-      public Builder SetOptionalFixed32(uint value) {
-        result.hasOptionalFixed32 = true;
-        result.optionalFixed32_ = value;
-        return this;
-      }
-      public Builder ClearOptionalFixed32() {
-        result.hasOptionalFixed32 = false;
-        result.optionalFixed32_ = 0;
-        return this;
-      }
-      
-      public bool HasOptionalFixed64 {
-        get { return result.HasOptionalFixed64; }
-      }
-      [global::System.CLSCompliant(false)]
-      public ulong OptionalFixed64 {
-        get { return result.OptionalFixed64; }
-        set { SetOptionalFixed64(value); }
-      }
-      [global::System.CLSCompliant(false)]
-      public Builder SetOptionalFixed64(ulong value) {
-        result.hasOptionalFixed64 = true;
-        result.optionalFixed64_ = value;
-        return this;
-      }
-      public Builder ClearOptionalFixed64() {
-        result.hasOptionalFixed64 = false;
-        result.optionalFixed64_ = 0;
-        return this;
-      }
-      
-      public bool HasOptionalSfixed32 {
-        get { return result.HasOptionalSfixed32; }
-      }
-      public int OptionalSfixed32 {
-        get { return result.OptionalSfixed32; }
-        set { SetOptionalSfixed32(value); }
-      }
-      public Builder SetOptionalSfixed32(int value) {
-        result.hasOptionalSfixed32 = true;
-        result.optionalSfixed32_ = value;
-        return this;
-      }
-      public Builder ClearOptionalSfixed32() {
-        result.hasOptionalSfixed32 = false;
-        result.optionalSfixed32_ = 0;
-        return this;
-      }
-      
-      public bool HasOptionalSfixed64 {
-        get { return result.HasOptionalSfixed64; }
-      }
-      public long OptionalSfixed64 {
-        get { return result.OptionalSfixed64; }
-        set { SetOptionalSfixed64(value); }
-      }
-      public Builder SetOptionalSfixed64(long value) {
-        result.hasOptionalSfixed64 = true;
-        result.optionalSfixed64_ = value;
-        return this;
-      }
-      public Builder ClearOptionalSfixed64() {
-        result.hasOptionalSfixed64 = false;
-        result.optionalSfixed64_ = 0;
-        return this;
-      }
-      
-      public bool HasOptionalFloat {
-        get { return result.HasOptionalFloat; }
-      }
-      public float OptionalFloat {
-        get { return result.OptionalFloat; }
-        set { SetOptionalFloat(value); }
-      }
-      public Builder SetOptionalFloat(float value) {
-        result.hasOptionalFloat = true;
-        result.optionalFloat_ = value;
-        return this;
-      }
-      public Builder ClearOptionalFloat() {
-        result.hasOptionalFloat = false;
-        result.optionalFloat_ = 0F;
-        return this;
-      }
-      
-      public bool HasOptionalDouble {
-        get { return result.HasOptionalDouble; }
-      }
-      public double OptionalDouble {
-        get { return result.OptionalDouble; }
-        set { SetOptionalDouble(value); }
-      }
-      public Builder SetOptionalDouble(double value) {
-        result.hasOptionalDouble = true;
-        result.optionalDouble_ = value;
-        return this;
-      }
-      public Builder ClearOptionalDouble() {
-        result.hasOptionalDouble = false;
-        result.optionalDouble_ = 0D;
-        return this;
-      }
-      
-      public bool HasOptionalBool {
-        get { return result.HasOptionalBool; }
-      }
-      public bool OptionalBool {
-        get { return result.OptionalBool; }
-        set { SetOptionalBool(value); }
-      }
-      public Builder SetOptionalBool(bool value) {
-        result.hasOptionalBool = true;
-        result.optionalBool_ = value;
-        return this;
-      }
-      public Builder ClearOptionalBool() {
-        result.hasOptionalBool = false;
-        result.optionalBool_ = false;
-        return this;
-      }
-      
-      public bool HasOptionalString {
-        get { return result.HasOptionalString; }
-      }
-      public string OptionalString {
-        get { return result.OptionalString; }
-        set { SetOptionalString(value); }
-      }
-      public Builder SetOptionalString(string value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        result.hasOptionalString = true;
-        result.optionalString_ = value;
-        return this;
-      }
-      public Builder ClearOptionalString() {
-        result.hasOptionalString = false;
-        result.optionalString_ = "";
-        return this;
-      }
-      
-      public bool HasOptionalBytes {
-        get { return result.HasOptionalBytes; }
-      }
-      public pb::ByteString OptionalBytes {
-        get { return result.OptionalBytes; }
-        set { SetOptionalBytes(value); }
-      }
-      public Builder SetOptionalBytes(pb::ByteString value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        result.hasOptionalBytes = true;
-        result.optionalBytes_ = value;
-        return this;
-      }
-      public Builder ClearOptionalBytes() {
-        result.hasOptionalBytes = false;
-        result.optionalBytes_ = pb::ByteString.Empty;
-        return this;
-      }
-      
-      public bool HasOptionalGroup {
-       get { return result.HasOptionalGroup; }
-      }
-      public global::protobuf_unittest.TestAllTypesLite.Types.OptionalGroup OptionalGroup {
-        get { return result.OptionalGroup; }
-        set { SetOptionalGroup(value); }
-      }
-      public Builder SetOptionalGroup(global::protobuf_unittest.TestAllTypesLite.Types.OptionalGroup value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        result.hasOptionalGroup = true;
-        result.optionalGroup_ = value;
-        return this;
-      }
-      public Builder SetOptionalGroup(global::protobuf_unittest.TestAllTypesLite.Types.OptionalGroup.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        result.hasOptionalGroup = true;
-        result.optionalGroup_ = builderForValue.Build();
-        return this;
-      }
-      public Builder MergeOptionalGroup(global::protobuf_unittest.TestAllTypesLite.Types.OptionalGroup value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        if (result.HasOptionalGroup &&
-            result.optionalGroup_ != global::protobuf_unittest.TestAllTypesLite.Types.OptionalGroup.DefaultInstance) {
-            result.optionalGroup_ = global::protobuf_unittest.TestAllTypesLite.Types.OptionalGroup.CreateBuilder(result.optionalGroup_).MergeFrom(value).BuildPartial();
-        } else {
-          result.optionalGroup_ = value;
-        }
-        result.hasOptionalGroup = true;
-        return this;
-      }
-      public Builder ClearOptionalGroup() {
-        result.hasOptionalGroup = false;
-        result.optionalGroup_ = global::protobuf_unittest.TestAllTypesLite.Types.OptionalGroup.DefaultInstance;
-        return this;
-      }
-      
-      public bool HasOptionalNestedMessage {
-       get { return result.HasOptionalNestedMessage; }
-      }
-      public global::protobuf_unittest.TestAllTypesLite.Types.NestedMessage OptionalNestedMessage {
-        get { return result.OptionalNestedMessage; }
-        set { SetOptionalNestedMessage(value); }
-      }
-      public Builder SetOptionalNestedMessage(global::protobuf_unittest.TestAllTypesLite.Types.NestedMessage value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        result.hasOptionalNestedMessage = true;
-        result.optionalNestedMessage_ = value;
-        return this;
-      }
-      public Builder SetOptionalNestedMessage(global::protobuf_unittest.TestAllTypesLite.Types.NestedMessage.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        result.hasOptionalNestedMessage = true;
-        result.optionalNestedMessage_ = builderForValue.Build();
-        return this;
-      }
-      public Builder MergeOptionalNestedMessage(global::protobuf_unittest.TestAllTypesLite.Types.NestedMessage value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        if (result.HasOptionalNestedMessage &&
-            result.optionalNestedMessage_ != global::protobuf_unittest.TestAllTypesLite.Types.NestedMessage.DefaultInstance) {
-            result.optionalNestedMessage_ = global::protobuf_unittest.TestAllTypesLite.Types.NestedMessage.CreateBuilder(result.optionalNestedMessage_).MergeFrom(value).BuildPartial();
-        } else {
-          result.optionalNestedMessage_ = value;
-        }
-        result.hasOptionalNestedMessage = true;
-        return this;
-      }
-      public Builder ClearOptionalNestedMessage() {
-        result.hasOptionalNestedMessage = false;
-        result.optionalNestedMessage_ = global::protobuf_unittest.TestAllTypesLite.Types.NestedMessage.DefaultInstance;
-        return this;
-      }
-      
-      public bool HasOptionalForeignMessage {
-       get { return result.HasOptionalForeignMessage; }
-      }
-      public global::protobuf_unittest.ForeignMessageLite OptionalForeignMessage {
-        get { return result.OptionalForeignMessage; }
-        set { SetOptionalForeignMessage(value); }
-      }
-      public Builder SetOptionalForeignMessage(global::protobuf_unittest.ForeignMessageLite value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        result.hasOptionalForeignMessage = true;
-        result.optionalForeignMessage_ = value;
-        return this;
-      }
-      public Builder SetOptionalForeignMessage(global::protobuf_unittest.ForeignMessageLite.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        result.hasOptionalForeignMessage = true;
-        result.optionalForeignMessage_ = builderForValue.Build();
-        return this;
-      }
-      public Builder MergeOptionalForeignMessage(global::protobuf_unittest.ForeignMessageLite value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        if (result.HasOptionalForeignMessage &&
-            result.optionalForeignMessage_ != global::protobuf_unittest.ForeignMessageLite.DefaultInstance) {
-            result.optionalForeignMessage_ = global::protobuf_unittest.ForeignMessageLite.CreateBuilder(result.optionalForeignMessage_).MergeFrom(value).BuildPartial();
-        } else {
-          result.optionalForeignMessage_ = value;
-        }
-        result.hasOptionalForeignMessage = true;
-        return this;
-      }
-      public Builder ClearOptionalForeignMessage() {
-        result.hasOptionalForeignMessage = false;
-        result.optionalForeignMessage_ = global::protobuf_unittest.ForeignMessageLite.DefaultInstance;
-        return this;
-      }
-      
-      public bool HasOptionalImportMessage {
-       get { return result.HasOptionalImportMessage; }
-      }
-      public global::protobuf_unittest_import.ImportMessageLite OptionalImportMessage {
-        get { return result.OptionalImportMessage; }
-        set { SetOptionalImportMessage(value); }
-      }
-      public Builder SetOptionalImportMessage(global::protobuf_unittest_import.ImportMessageLite value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        result.hasOptionalImportMessage = true;
-        result.optionalImportMessage_ = value;
-        return this;
-      }
-      public Builder SetOptionalImportMessage(global::protobuf_unittest_import.ImportMessageLite.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        result.hasOptionalImportMessage = true;
-        result.optionalImportMessage_ = builderForValue.Build();
-        return this;
-      }
-      public Builder MergeOptionalImportMessage(global::protobuf_unittest_import.ImportMessageLite value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        if (result.HasOptionalImportMessage &&
-            result.optionalImportMessage_ != global::protobuf_unittest_import.ImportMessageLite.DefaultInstance) {
-            result.optionalImportMessage_ = global::protobuf_unittest_import.ImportMessageLite.CreateBuilder(result.optionalImportMessage_).MergeFrom(value).BuildPartial();
-        } else {
-          result.optionalImportMessage_ = value;
-        }
-        result.hasOptionalImportMessage = true;
-        return this;
-      }
-      public Builder ClearOptionalImportMessage() {
-        result.hasOptionalImportMessage = false;
-        result.optionalImportMessage_ = global::protobuf_unittest_import.ImportMessageLite.DefaultInstance;
-        return this;
-      }
-      
-      public bool HasOptionalNestedEnum {
-       get { return result.HasOptionalNestedEnum; }
-      }
-      public global::protobuf_unittest.TestAllTypesLite.Types.NestedEnum OptionalNestedEnum {
-        get { return result.OptionalNestedEnum; }
-        set { SetOptionalNestedEnum(value); }
-      }
-      public Builder SetOptionalNestedEnum(global::protobuf_unittest.TestAllTypesLite.Types.NestedEnum value) {
-        result.hasOptionalNestedEnum = true;
-        result.optionalNestedEnum_ = value;
-        return this;
-      }
-      public Builder ClearOptionalNestedEnum() {
-        result.hasOptionalNestedEnum = false;
-        result.optionalNestedEnum_ = global::protobuf_unittest.TestAllTypesLite.Types.NestedEnum.FOO;
-        return this;
-      }
-      
-      public bool HasOptionalForeignEnum {
-       get { return result.HasOptionalForeignEnum; }
-      }
-      public global::protobuf_unittest.ForeignEnumLite OptionalForeignEnum {
-        get { return result.OptionalForeignEnum; }
-        set { SetOptionalForeignEnum(value); }
-      }
-      public Builder SetOptionalForeignEnum(global::protobuf_unittest.ForeignEnumLite value) {
-        result.hasOptionalForeignEnum = true;
-        result.optionalForeignEnum_ = value;
-        return this;
-      }
-      public Builder ClearOptionalForeignEnum() {
-        result.hasOptionalForeignEnum = false;
-        result.optionalForeignEnum_ = global::protobuf_unittest.ForeignEnumLite.FOREIGN_LITE_FOO;
-        return this;
-      }
-      
-      public bool HasOptionalImportEnum {
-       get { return result.HasOptionalImportEnum; }
-      }
-      public global::protobuf_unittest_import.ImportEnumLite OptionalImportEnum {
-        get { return result.OptionalImportEnum; }
-        set { SetOptionalImportEnum(value); }
-      }
-      public Builder SetOptionalImportEnum(global::protobuf_unittest_import.ImportEnumLite value) {
-        result.hasOptionalImportEnum = true;
-        result.optionalImportEnum_ = value;
-        return this;
-      }
-      public Builder ClearOptionalImportEnum() {
-        result.hasOptionalImportEnum = false;
-        result.optionalImportEnum_ = global::protobuf_unittest_import.ImportEnumLite.IMPORT_LITE_FOO;
-        return this;
-      }
-      
-      public bool HasOptionalStringPiece {
-        get { return result.HasOptionalStringPiece; }
-      }
-      public string OptionalStringPiece {
-        get { return result.OptionalStringPiece; }
-        set { SetOptionalStringPiece(value); }
-      }
-      public Builder SetOptionalStringPiece(string value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        result.hasOptionalStringPiece = true;
-        result.optionalStringPiece_ = value;
-        return this;
-      }
-      public Builder ClearOptionalStringPiece() {
-        result.hasOptionalStringPiece = false;
-        result.optionalStringPiece_ = "";
-        return this;
-      }
-      
-      public bool HasOptionalCord {
-        get { return result.HasOptionalCord; }
-      }
-      public string OptionalCord {
-        get { return result.OptionalCord; }
-        set { SetOptionalCord(value); }
-      }
-      public Builder SetOptionalCord(string value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        result.hasOptionalCord = true;
-        result.optionalCord_ = value;
-        return this;
-      }
-      public Builder ClearOptionalCord() {
-        result.hasOptionalCord = false;
-        result.optionalCord_ = "";
-        return this;
-      }
-      
-      public pbc::IPopsicleList<int> RepeatedInt32List {
-        get { return result.repeatedInt32_; }
-      }
-      public int RepeatedInt32Count {
-        get { return result.RepeatedInt32Count; }
-      }
-      public int GetRepeatedInt32(int index) {
-        return result.GetRepeatedInt32(index);
-      }
-      public Builder SetRepeatedInt32(int index, int value) {
-        result.repeatedInt32_[index] = value;
-        return this;
-      }
-      public Builder AddRepeatedInt32(int value) {
-        result.repeatedInt32_.Add(value);
-        return this;
-      }
-      public Builder AddRangeRepeatedInt32(scg::IEnumerable<int> values) {
-        base.AddRange(values, result.repeatedInt32_);
-        return this;
-      }
-      public Builder ClearRepeatedInt32() {
-        result.repeatedInt32_.Clear();
-        return this;
-      }
-      
-      public pbc::IPopsicleList<long> RepeatedInt64List {
-        get { return result.repeatedInt64_; }
-      }
-      public int RepeatedInt64Count {
-        get { return result.RepeatedInt64Count; }
-      }
-      public long GetRepeatedInt64(int index) {
-        return result.GetRepeatedInt64(index);
-      }
-      public Builder SetRepeatedInt64(int index, long value) {
-        result.repeatedInt64_[index] = value;
-        return this;
-      }
-      public Builder AddRepeatedInt64(long value) {
-        result.repeatedInt64_.Add(value);
-        return this;
-      }
-      public Builder AddRangeRepeatedInt64(scg::IEnumerable<long> values) {
-        base.AddRange(values, result.repeatedInt64_);
-        return this;
-      }
-      public Builder ClearRepeatedInt64() {
-        result.repeatedInt64_.Clear();
-        return this;
-      }
-      
-      [global::System.CLSCompliant(false)]
-      public pbc::IPopsicleList<uint> RepeatedUint32List {
-        get { return result.repeatedUint32_; }
-      }
-      public int RepeatedUint32Count {
-        get { return result.RepeatedUint32Count; }
-      }
-      [global::System.CLSCompliant(false)]
-      public uint GetRepeatedUint32(int index) {
-        return result.GetRepeatedUint32(index);
-      }
-      [global::System.CLSCompliant(false)]
-      public Builder SetRepeatedUint32(int index, uint value) {
-        result.repeatedUint32_[index] = value;
-        return this;
-      }
-      [global::System.CLSCompliant(false)]
-      public Builder AddRepeatedUint32(uint value) {
-        result.repeatedUint32_.Add(value);
-        return this;
-      }
-      [global::System.CLSCompliant(false)]
-      public Builder AddRangeRepeatedUint32(scg::IEnumerable<uint> values) {
-        base.AddRange(values, result.repeatedUint32_);
-        return this;
-      }
-      public Builder ClearRepeatedUint32() {
-        result.repeatedUint32_.Clear();
-        return this;
-      }
-      
-      [global::System.CLSCompliant(false)]
-      public pbc::IPopsicleList<ulong> RepeatedUint64List {
-        get { return result.repeatedUint64_; }
-      }
-      public int RepeatedUint64Count {
-        get { return result.RepeatedUint64Count; }
-      }
-      [global::System.CLSCompliant(false)]
-      public ulong GetRepeatedUint64(int index) {
-        return result.GetRepeatedUint64(index);
-      }
-      [global::System.CLSCompliant(false)]
-      public Builder SetRepeatedUint64(int index, ulong value) {
-        result.repeatedUint64_[index] = value;
-        return this;
-      }
-      [global::System.CLSCompliant(false)]
-      public Builder AddRepeatedUint64(ulong value) {
-        result.repeatedUint64_.Add(value);
-        return this;
-      }
-      [global::System.CLSCompliant(false)]
-      public Builder AddRangeRepeatedUint64(scg::IEnumerable<ulong> values) {
-        base.AddRange(values, result.repeatedUint64_);
-        return this;
-      }
-      public Builder ClearRepeatedUint64() {
-        result.repeatedUint64_.Clear();
-        return this;
-      }
-      
-      public pbc::IPopsicleList<int> RepeatedSint32List {
-        get { return result.repeatedSint32_; }
-      }
-      public int RepeatedSint32Count {
-        get { return result.RepeatedSint32Count; }
-      }
-      public int GetRepeatedSint32(int index) {
-        return result.GetRepeatedSint32(index);
-      }
-      public Builder SetRepeatedSint32(int index, int value) {
-        result.repeatedSint32_[index] = value;
-        return this;
-      }
-      public Builder AddRepeatedSint32(int value) {
-        result.repeatedSint32_.Add(value);
-        return this;
-      }
-      public Builder AddRangeRepeatedSint32(scg::IEnumerable<int> values) {
-        base.AddRange(values, result.repeatedSint32_);
-        return this;
-      }
-      public Builder ClearRepeatedSint32() {
-        result.repeatedSint32_.Clear();
-        return this;
-      }
-      
-      public pbc::IPopsicleList<long> RepeatedSint64List {
-        get { return result.repeatedSint64_; }
-      }
-      public int RepeatedSint64Count {
-        get { return result.RepeatedSint64Count; }
-      }
-      public long GetRepeatedSint64(int index) {
-        return result.GetRepeatedSint64(index);
-      }
-      public Builder SetRepeatedSint64(int index, long value) {
-        result.repeatedSint64_[index] = value;
-        return this;
-      }
-      public Builder AddRepeatedSint64(long value) {
-        result.repeatedSint64_.Add(value);
-        return this;
-      }
-      public Builder AddRangeRepeatedSint64(scg::IEnumerable<long> values) {
-        base.AddRange(values, result.repeatedSint64_);
-        return this;
-      }
-      public Builder ClearRepeatedSint64() {
-        result.repeatedSint64_.Clear();
-        return this;
-      }
-      
-      [global::System.CLSCompliant(false)]
-      public pbc::IPopsicleList<uint> RepeatedFixed32List {
-        get { return result.repeatedFixed32_; }
-      }
-      public int RepeatedFixed32Count {
-        get { return result.RepeatedFixed32Count; }
-      }
-      [global::System.CLSCompliant(false)]
-      public uint GetRepeatedFixed32(int index) {
-        return result.GetRepeatedFixed32(index);
-      }
-      [global::System.CLSCompliant(false)]
-      public Builder SetRepeatedFixed32(int index, uint value) {
-        result.repeatedFixed32_[index] = value;
-        return this;
-      }
-      [global::System.CLSCompliant(false)]
-      public Builder AddRepeatedFixed32(uint value) {
-        result.repeatedFixed32_.Add(value);
-        return this;
-      }
-      [global::System.CLSCompliant(false)]
-      public Builder AddRangeRepeatedFixed32(scg::IEnumerable<uint> values) {
-        base.AddRange(values, result.repeatedFixed32_);
-        return this;
-      }
-      public Builder ClearRepeatedFixed32() {
-        result.repeatedFixed32_.Clear();
-        return this;
-      }
-      
-      [global::System.CLSCompliant(false)]
-      public pbc::IPopsicleList<ulong> RepeatedFixed64List {
-        get { return result.repeatedFixed64_; }
-      }
-      public int RepeatedFixed64Count {
-        get { return result.RepeatedFixed64Count; }
-      }
-      [global::System.CLSCompliant(false)]
-      public ulong GetRepeatedFixed64(int index) {
-        return result.GetRepeatedFixed64(index);
-      }
-      [global::System.CLSCompliant(false)]
-      public Builder SetRepeatedFixed64(int index, ulong value) {
-        result.repeatedFixed64_[index] = value;
-        return this;
-      }
-      [global::System.CLSCompliant(false)]
-      public Builder AddRepeatedFixed64(ulong value) {
-        result.repeatedFixed64_.Add(value);
-        return this;
-      }
-      [global::System.CLSCompliant(false)]
-      public Builder AddRangeRepeatedFixed64(scg::IEnumerable<ulong> values) {
-        base.AddRange(values, result.repeatedFixed64_);
-        return this;
-      }
-      public Builder ClearRepeatedFixed64() {
-        result.repeatedFixed64_.Clear();
-        return this;
-      }
-      
-      public pbc::IPopsicleList<int> RepeatedSfixed32List {
-        get { return result.repeatedSfixed32_; }
-      }
-      public int RepeatedSfixed32Count {
-        get { return result.RepeatedSfixed32Count; }
-      }
-      public int GetRepeatedSfixed32(int index) {
-        return result.GetRepeatedSfixed32(index);
-      }
-      public Builder SetRepeatedSfixed32(int index, int value) {
-        result.repeatedSfixed32_[index] = value;
-        return this;
-      }
-      public Builder AddRepeatedSfixed32(int value) {
-        result.repeatedSfixed32_.Add(value);
-        return this;
-      }
-      public Builder AddRangeRepeatedSfixed32(scg::IEnumerable<int> values) {
-        base.AddRange(values, result.repeatedSfixed32_);
-        return this;
-      }
-      public Builder ClearRepeatedSfixed32() {
-        result.repeatedSfixed32_.Clear();
-        return this;
-      }
-      
-      public pbc::IPopsicleList<long> RepeatedSfixed64List {
-        get { return result.repeatedSfixed64_; }
-      }
-      public int RepeatedSfixed64Count {
-        get { return result.RepeatedSfixed64Count; }
-      }
-      public long GetRepeatedSfixed64(int index) {
-        return result.GetRepeatedSfixed64(index);
-      }
-      public Builder SetRepeatedSfixed64(int index, long value) {
-        result.repeatedSfixed64_[index] = value;
-        return this;
-      }
-      public Builder AddRepeatedSfixed64(long value) {
-        result.repeatedSfixed64_.Add(value);
-        return this;
-      }
-      public Builder AddRangeRepeatedSfixed64(scg::IEnumerable<long> values) {
-        base.AddRange(values, result.repeatedSfixed64_);
-        return this;
-      }
-      public Builder ClearRepeatedSfixed64() {
-        result.repeatedSfixed64_.Clear();
-        return this;
-      }
-      
-      public pbc::IPopsicleList<float> RepeatedFloatList {
-        get { return result.repeatedFloat_; }
-      }
-      public int RepeatedFloatCount {
-        get { return result.RepeatedFloatCount; }
-      }
-      public float GetRepeatedFloat(int index) {
-        return result.GetRepeatedFloat(index);
-      }
-      public Builder SetRepeatedFloat(int index, float value) {
-        result.repeatedFloat_[index] = value;
-        return this;
-      }
-      public Builder AddRepeatedFloat(float value) {
-        result.repeatedFloat_.Add(value);
-        return this;
-      }
-      public Builder AddRangeRepeatedFloat(scg::IEnumerable<float> values) {
-        base.AddRange(values, result.repeatedFloat_);
-        return this;
-      }
-      public Builder ClearRepeatedFloat() {
-        result.repeatedFloat_.Clear();
-        return this;
-      }
-      
-      public pbc::IPopsicleList<double> RepeatedDoubleList {
-        get { return result.repeatedDouble_; }
-      }
-      public int RepeatedDoubleCount {
-        get { return result.RepeatedDoubleCount; }
-      }
-      public double GetRepeatedDouble(int index) {
-        return result.GetRepeatedDouble(index);
-      }
-      public Builder SetRepeatedDouble(int index, double value) {
-        result.repeatedDouble_[index] = value;
-        return this;
-      }
-      public Builder AddRepeatedDouble(double value) {
-        result.repeatedDouble_.Add(value);
-        return this;
-      }
-      public Builder AddRangeRepeatedDouble(scg::IEnumerable<double> values) {
-        base.AddRange(values, result.repeatedDouble_);
-        return this;
-      }
-      public Builder ClearRepeatedDouble() {
-        result.repeatedDouble_.Clear();
-        return this;
-      }
-      
-      public pbc::IPopsicleList<bool> RepeatedBoolList {
-        get { return result.repeatedBool_; }
-      }
-      public int RepeatedBoolCount {
-        get { return result.RepeatedBoolCount; }
-      }
-      public bool GetRepeatedBool(int index) {
-        return result.GetRepeatedBool(index);
-      }
-      public Builder SetRepeatedBool(int index, bool value) {
-        result.repeatedBool_[index] = value;
-        return this;
-      }
-      public Builder AddRepeatedBool(bool value) {
-        result.repeatedBool_.Add(value);
-        return this;
-      }
-      public Builder AddRangeRepeatedBool(scg::IEnumerable<bool> values) {
-        base.AddRange(values, result.repeatedBool_);
-        return this;
-      }
-      public Builder ClearRepeatedBool() {
-        result.repeatedBool_.Clear();
-        return this;
-      }
-      
-      public pbc::IPopsicleList<string> RepeatedStringList {
-        get { return result.repeatedString_; }
-      }
-      public int RepeatedStringCount {
-        get { return result.RepeatedStringCount; }
-      }
-      public string GetRepeatedString(int index) {
-        return result.GetRepeatedString(index);
-      }
-      public Builder SetRepeatedString(int index, string value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        result.repeatedString_[index] = value;
-        return this;
-      }
-      public Builder AddRepeatedString(string value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        result.repeatedString_.Add(value);
-        return this;
-      }
-      public Builder AddRangeRepeatedString(scg::IEnumerable<string> values) {
-        base.AddRange(values, result.repeatedString_);
-        return this;
-      }
-      public Builder ClearRepeatedString() {
-        result.repeatedString_.Clear();
-        return this;
-      }
-      
-      public pbc::IPopsicleList<pb::ByteString> RepeatedBytesList {
-        get { return result.repeatedBytes_; }
-      }
-      public int RepeatedBytesCount {
-        get { return result.RepeatedBytesCount; }
-      }
-      public pb::ByteString GetRepeatedBytes(int index) {
-        return result.GetRepeatedBytes(index);
-      }
-      public Builder SetRepeatedBytes(int index, pb::ByteString value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        result.repeatedBytes_[index] = value;
-        return this;
-      }
-      public Builder AddRepeatedBytes(pb::ByteString value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        result.repeatedBytes_.Add(value);
-        return this;
-      }
-      public Builder AddRangeRepeatedBytes(scg::IEnumerable<pb::ByteString> values) {
-        base.AddRange(values, result.repeatedBytes_);
-        return this;
-      }
-      public Builder ClearRepeatedBytes() {
-        result.repeatedBytes_.Clear();
-        return this;
-      }
-      
-      public pbc::IPopsicleList<global::protobuf_unittest.TestAllTypesLite.Types.RepeatedGroup> RepeatedGroupList {
-        get { return result.repeatedGroup_; }
-      }
-      public int RepeatedGroupCount {
-        get { return result.RepeatedGroupCount; }
-      }
-      public global::protobuf_unittest.TestAllTypesLite.Types.RepeatedGroup GetRepeatedGroup(int index) {
-        return result.GetRepeatedGroup(index);
-      }
-      public Builder SetRepeatedGroup(int index, global::protobuf_unittest.TestAllTypesLite.Types.RepeatedGroup value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        result.repeatedGroup_[index] = value;
-        return this;
-      }
-      public Builder SetRepeatedGroup(int index, global::protobuf_unittest.TestAllTypesLite.Types.RepeatedGroup.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        result.repeatedGroup_[index] = builderForValue.Build();
-        return this;
-      }
-      public Builder AddRepeatedGroup(global::protobuf_unittest.TestAllTypesLite.Types.RepeatedGroup value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        result.repeatedGroup_.Add(value);
-        return this;
-      }
-      public Builder AddRepeatedGroup(global::protobuf_unittest.TestAllTypesLite.Types.RepeatedGroup.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        result.repeatedGroup_.Add(builderForValue.Build());
-        return this;
-      }
-      public Builder AddRangeRepeatedGroup(scg::IEnumerable<global::protobuf_unittest.TestAllTypesLite.Types.RepeatedGroup> values) {
-        base.AddRange(values, result.repeatedGroup_);
-        return this;
-      }
-      public Builder ClearRepeatedGroup() {
-        result.repeatedGroup_.Clear();
-        return this;
-      }
-      
-      public pbc::IPopsicleList<global::protobuf_unittest.TestAllTypesLite.Types.NestedMessage> RepeatedNestedMessageList {
-        get { return result.repeatedNestedMessage_; }
-      }
-      public int RepeatedNestedMessageCount {
-        get { return result.RepeatedNestedMessageCount; }
-      }
-      public global::protobuf_unittest.TestAllTypesLite.Types.NestedMessage GetRepeatedNestedMessage(int index) {
-        return result.GetRepeatedNestedMessage(index);
-      }
-      public Builder SetRepeatedNestedMessage(int index, global::protobuf_unittest.TestAllTypesLite.Types.NestedMessage value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        result.repeatedNestedMessage_[index] = value;
-        return this;
-      }
-      public Builder SetRepeatedNestedMessage(int index, global::protobuf_unittest.TestAllTypesLite.Types.NestedMessage.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        result.repeatedNestedMessage_[index] = builderForValue.Build();
-        return this;
-      }
-      public Builder AddRepeatedNestedMessage(global::protobuf_unittest.TestAllTypesLite.Types.NestedMessage value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        result.repeatedNestedMessage_.Add(value);
-        return this;
-      }
-      public Builder AddRepeatedNestedMessage(global::protobuf_unittest.TestAllTypesLite.Types.NestedMessage.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        result.repeatedNestedMessage_.Add(builderForValue.Build());
-        return this;
-      }
-      public Builder AddRangeRepeatedNestedMessage(scg::IEnumerable<global::protobuf_unittest.TestAllTypesLite.Types.NestedMessage> values) {
-        base.AddRange(values, result.repeatedNestedMessage_);
-        return this;
-      }
-      public Builder ClearRepeatedNestedMessage() {
-        result.repeatedNestedMessage_.Clear();
-        return this;
-      }
-      
-      public pbc::IPopsicleList<global::protobuf_unittest.ForeignMessageLite> RepeatedForeignMessageList {
-        get { return result.repeatedForeignMessage_; }
-      }
-      public int RepeatedForeignMessageCount {
-        get { return result.RepeatedForeignMessageCount; }
-      }
-      public global::protobuf_unittest.ForeignMessageLite GetRepeatedForeignMessage(int index) {
-        return result.GetRepeatedForeignMessage(index);
-      }
-      public Builder SetRepeatedForeignMessage(int index, global::protobuf_unittest.ForeignMessageLite value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        result.repeatedForeignMessage_[index] = value;
-        return this;
-      }
-      public Builder SetRepeatedForeignMessage(int index, global::protobuf_unittest.ForeignMessageLite.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        result.repeatedForeignMessage_[index] = builderForValue.Build();
-        return this;
-      }
-      public Builder AddRepeatedForeignMessage(global::protobuf_unittest.ForeignMessageLite value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        result.repeatedForeignMessage_.Add(value);
-        return this;
-      }
-      public Builder AddRepeatedForeignMessage(global::protobuf_unittest.ForeignMessageLite.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        result.repeatedForeignMessage_.Add(builderForValue.Build());
-        return this;
-      }
-      public Builder AddRangeRepeatedForeignMessage(scg::IEnumerable<global::protobuf_unittest.ForeignMessageLite> values) {
-        base.AddRange(values, result.repeatedForeignMessage_);
-        return this;
-      }
-      public Builder ClearRepeatedForeignMessage() {
-        result.repeatedForeignMessage_.Clear();
-        return this;
-      }
-      
-      public pbc::IPopsicleList<global::protobuf_unittest_import.ImportMessageLite> RepeatedImportMessageList {
-        get { return result.repeatedImportMessage_; }
-      }
-      public int RepeatedImportMessageCount {
-        get { return result.RepeatedImportMessageCount; }
-      }
-      public global::protobuf_unittest_import.ImportMessageLite GetRepeatedImportMessage(int index) {
-        return result.GetRepeatedImportMessage(index);
-      }
-      public Builder SetRepeatedImportMessage(int index, global::protobuf_unittest_import.ImportMessageLite value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        result.repeatedImportMessage_[index] = value;
-        return this;
-      }
-      public Builder SetRepeatedImportMessage(int index, global::protobuf_unittest_import.ImportMessageLite.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        result.repeatedImportMessage_[index] = builderForValue.Build();
-        return this;
-      }
-      public Builder AddRepeatedImportMessage(global::protobuf_unittest_import.ImportMessageLite value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        result.repeatedImportMessage_.Add(value);
-        return this;
-      }
-      public Builder AddRepeatedImportMessage(global::protobuf_unittest_import.ImportMessageLite.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        result.repeatedImportMessage_.Add(builderForValue.Build());
-        return this;
-      }
-      public Builder AddRangeRepeatedImportMessage(scg::IEnumerable<global::protobuf_unittest_import.ImportMessageLite> values) {
-        base.AddRange(values, result.repeatedImportMessage_);
-        return this;
-      }
-      public Builder ClearRepeatedImportMessage() {
-        result.repeatedImportMessage_.Clear();
-        return this;
-      }
-      
-      public pbc::IPopsicleList<global::protobuf_unittest.TestAllTypesLite.Types.NestedEnum> RepeatedNestedEnumList {
-        get { return result.repeatedNestedEnum_; }
-      }
-      public int RepeatedNestedEnumCount {
-        get { return result.RepeatedNestedEnumCount; }
-      }
-      public global::protobuf_unittest.TestAllTypesLite.Types.NestedEnum GetRepeatedNestedEnum(int index) {
-        return result.GetRepeatedNestedEnum(index);
-      }
-      public Builder SetRepeatedNestedEnum(int index, global::protobuf_unittest.TestAllTypesLite.Types.NestedEnum value) {
-        result.repeatedNestedEnum_[index] = value;
-        return this;
-      }
-      public Builder AddRepeatedNestedEnum(global::protobuf_unittest.TestAllTypesLite.Types.NestedEnum value) {
-        result.repeatedNestedEnum_.Add(value);
-        return this;
-      }
-      public Builder AddRangeRepeatedNestedEnum(scg::IEnumerable<global::protobuf_unittest.TestAllTypesLite.Types.NestedEnum> values) {
-        base.AddRange(values, result.repeatedNestedEnum_);
-        return this;
-      }
-      public Builder ClearRepeatedNestedEnum() {
-        result.repeatedNestedEnum_.Clear();
-        return this;
-      }
-      
-      public pbc::IPopsicleList<global::protobuf_unittest.ForeignEnumLite> RepeatedForeignEnumList {
-        get { return result.repeatedForeignEnum_; }
-      }
-      public int RepeatedForeignEnumCount {
-        get { return result.RepeatedForeignEnumCount; }
-      }
-      public global::protobuf_unittest.ForeignEnumLite GetRepeatedForeignEnum(int index) {
-        return result.GetRepeatedForeignEnum(index);
-      }
-      public Builder SetRepeatedForeignEnum(int index, global::protobuf_unittest.ForeignEnumLite value) {
-        result.repeatedForeignEnum_[index] = value;
-        return this;
-      }
-      public Builder AddRepeatedForeignEnum(global::protobuf_unittest.ForeignEnumLite value) {
-        result.repeatedForeignEnum_.Add(value);
-        return this;
-      }
-      public Builder AddRangeRepeatedForeignEnum(scg::IEnumerable<global::protobuf_unittest.ForeignEnumLite> values) {
-        base.AddRange(values, result.repeatedForeignEnum_);
-        return this;
-      }
-      public Builder ClearRepeatedForeignEnum() {
-        result.repeatedForeignEnum_.Clear();
-        return this;
-      }
-      
-      public pbc::IPopsicleList<global::protobuf_unittest_import.ImportEnumLite> RepeatedImportEnumList {
-        get { return result.repeatedImportEnum_; }
-      }
-      public int RepeatedImportEnumCount {
-        get { return result.RepeatedImportEnumCount; }
-      }
-      public global::protobuf_unittest_import.ImportEnumLite GetRepeatedImportEnum(int index) {
-        return result.GetRepeatedImportEnum(index);
-      }
-      public Builder SetRepeatedImportEnum(int index, global::protobuf_unittest_import.ImportEnumLite value) {
-        result.repeatedImportEnum_[index] = value;
-        return this;
-      }
-      public Builder AddRepeatedImportEnum(global::protobuf_unittest_import.ImportEnumLite value) {
-        result.repeatedImportEnum_.Add(value);
-        return this;
-      }
-      public Builder AddRangeRepeatedImportEnum(scg::IEnumerable<global::protobuf_unittest_import.ImportEnumLite> values) {
-        base.AddRange(values, result.repeatedImportEnum_);
-        return this;
-      }
-      public Builder ClearRepeatedImportEnum() {
-        result.repeatedImportEnum_.Clear();
-        return this;
-      }
-      
-      public pbc::IPopsicleList<string> RepeatedStringPieceList {
-        get { return result.repeatedStringPiece_; }
-      }
-      public int RepeatedStringPieceCount {
-        get { return result.RepeatedStringPieceCount; }
-      }
-      public string GetRepeatedStringPiece(int index) {
-        return result.GetRepeatedStringPiece(index);
-      }
-      public Builder SetRepeatedStringPiece(int index, string value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        result.repeatedStringPiece_[index] = value;
-        return this;
-      }
-      public Builder AddRepeatedStringPiece(string value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        result.repeatedStringPiece_.Add(value);
-        return this;
-      }
-      public Builder AddRangeRepeatedStringPiece(scg::IEnumerable<string> values) {
-        base.AddRange(values, result.repeatedStringPiece_);
-        return this;
-      }
-      public Builder ClearRepeatedStringPiece() {
-        result.repeatedStringPiece_.Clear();
-        return this;
-      }
-      
-      public pbc::IPopsicleList<string> RepeatedCordList {
-        get { return result.repeatedCord_; }
-      }
-      public int RepeatedCordCount {
-        get { return result.RepeatedCordCount; }
-      }
-      public string GetRepeatedCord(int index) {
-        return result.GetRepeatedCord(index);
-      }
-      public Builder SetRepeatedCord(int index, string value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        result.repeatedCord_[index] = value;
-        return this;
-      }
-      public Builder AddRepeatedCord(string value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        result.repeatedCord_.Add(value);
-        return this;
-      }
-      public Builder AddRangeRepeatedCord(scg::IEnumerable<string> values) {
-        base.AddRange(values, result.repeatedCord_);
-        return this;
-      }
-      public Builder ClearRepeatedCord() {
-        result.repeatedCord_.Clear();
-        return this;
-      }
-      
-      public bool HasDefaultInt32 {
-        get { return result.HasDefaultInt32; }
-      }
-      public int DefaultInt32 {
-        get { return result.DefaultInt32; }
-        set { SetDefaultInt32(value); }
-      }
-      public Builder SetDefaultInt32(int value) {
-        result.hasDefaultInt32 = true;
-        result.defaultInt32_ = value;
-        return this;
-      }
-      public Builder ClearDefaultInt32() {
-        result.hasDefaultInt32 = false;
-        result.defaultInt32_ = 41;
-        return this;
-      }
-      
-      public bool HasDefaultInt64 {
-        get { return result.HasDefaultInt64; }
-      }
-      public long DefaultInt64 {
-        get { return result.DefaultInt64; }
-        set { SetDefaultInt64(value); }
-      }
-      public Builder SetDefaultInt64(long value) {
-        result.hasDefaultInt64 = true;
-        result.defaultInt64_ = value;
-        return this;
-      }
-      public Builder ClearDefaultInt64() {
-        result.hasDefaultInt64 = false;
-        result.defaultInt64_ = 42L;
-        return this;
-      }
-      
-      public bool HasDefaultUint32 {
-        get { return result.HasDefaultUint32; }
-      }
-      [global::System.CLSCompliant(false)]
-      public uint DefaultUint32 {
-        get { return result.DefaultUint32; }
-        set { SetDefaultUint32(value); }
-      }
-      [global::System.CLSCompliant(false)]
-      public Builder SetDefaultUint32(uint value) {
-        result.hasDefaultUint32 = true;
-        result.defaultUint32_ = value;
-        return this;
-      }
-      public Builder ClearDefaultUint32() {
-        result.hasDefaultUint32 = false;
-        result.defaultUint32_ = 43;
-        return this;
-      }
-      
-      public bool HasDefaultUint64 {
-        get { return result.HasDefaultUint64; }
-      }
-      [global::System.CLSCompliant(false)]
-      public ulong DefaultUint64 {
-        get { return result.DefaultUint64; }
-        set { SetDefaultUint64(value); }
-      }
-      [global::System.CLSCompliant(false)]
-      public Builder SetDefaultUint64(ulong value) {
-        result.hasDefaultUint64 = true;
-        result.defaultUint64_ = value;
-        return this;
-      }
-      public Builder ClearDefaultUint64() {
-        result.hasDefaultUint64 = false;
-        result.defaultUint64_ = 44UL;
-        return this;
-      }
-      
-      public bool HasDefaultSint32 {
-        get { return result.HasDefaultSint32; }
-      }
-      public int DefaultSint32 {
-        get { return result.DefaultSint32; }
-        set { SetDefaultSint32(value); }
-      }
-      public Builder SetDefaultSint32(int value) {
-        result.hasDefaultSint32 = true;
-        result.defaultSint32_ = value;
-        return this;
-      }
-      public Builder ClearDefaultSint32() {
-        result.hasDefaultSint32 = false;
-        result.defaultSint32_ = -45;
-        return this;
-      }
-      
-      public bool HasDefaultSint64 {
-        get { return result.HasDefaultSint64; }
-      }
-      public long DefaultSint64 {
-        get { return result.DefaultSint64; }
-        set { SetDefaultSint64(value); }
-      }
-      public Builder SetDefaultSint64(long value) {
-        result.hasDefaultSint64 = true;
-        result.defaultSint64_ = value;
-        return this;
-      }
-      public Builder ClearDefaultSint64() {
-        result.hasDefaultSint64 = false;
-        result.defaultSint64_ = 46;
-        return this;
-      }
-      
-      public bool HasDefaultFixed32 {
-        get { return result.HasDefaultFixed32; }
-      }
-      [global::System.CLSCompliant(false)]
-      public uint DefaultFixed32 {
-        get { return result.DefaultFixed32; }
-        set { SetDefaultFixed32(value); }
-      }
-      [global::System.CLSCompliant(false)]
-      public Builder SetDefaultFixed32(uint value) {
-        result.hasDefaultFixed32 = true;
-        result.defaultFixed32_ = value;
-        return this;
-      }
-      public Builder ClearDefaultFixed32() {
-        result.hasDefaultFixed32 = false;
-        result.defaultFixed32_ = 47;
-        return this;
-      }
-      
-      public bool HasDefaultFixed64 {
-        get { return result.HasDefaultFixed64; }
-      }
-      [global::System.CLSCompliant(false)]
-      public ulong DefaultFixed64 {
-        get { return result.DefaultFixed64; }
-        set { SetDefaultFixed64(value); }
-      }
-      [global::System.CLSCompliant(false)]
-      public Builder SetDefaultFixed64(ulong value) {
-        result.hasDefaultFixed64 = true;
-        result.defaultFixed64_ = value;
-        return this;
-      }
-      public Builder ClearDefaultFixed64() {
-        result.hasDefaultFixed64 = false;
-        result.defaultFixed64_ = 48;
-        return this;
-      }
-      
-      public bool HasDefaultSfixed32 {
-        get { return result.HasDefaultSfixed32; }
-      }
-      public int DefaultSfixed32 {
-        get { return result.DefaultSfixed32; }
-        set { SetDefaultSfixed32(value); }
-      }
-      public Builder SetDefaultSfixed32(int value) {
-        result.hasDefaultSfixed32 = true;
-        result.defaultSfixed32_ = value;
-        return this;
-      }
-      public Builder ClearDefaultSfixed32() {
-        result.hasDefaultSfixed32 = false;
-        result.defaultSfixed32_ = 49;
-        return this;
-      }
-      
-      public bool HasDefaultSfixed64 {
-        get { return result.HasDefaultSfixed64; }
-      }
-      public long DefaultSfixed64 {
-        get { return result.DefaultSfixed64; }
-        set { SetDefaultSfixed64(value); }
-      }
-      public Builder SetDefaultSfixed64(long value) {
-        result.hasDefaultSfixed64 = true;
-        result.defaultSfixed64_ = value;
-        return this;
-      }
-      public Builder ClearDefaultSfixed64() {
-        result.hasDefaultSfixed64 = false;
-        result.defaultSfixed64_ = -50;
-        return this;
-      }
-      
-      public bool HasDefaultFloat {
-        get { return result.HasDefaultFloat; }
-      }
-      public float DefaultFloat {
-        get { return result.DefaultFloat; }
-        set { SetDefaultFloat(value); }
-      }
-      public Builder SetDefaultFloat(float value) {
-        result.hasDefaultFloat = true;
-        result.defaultFloat_ = value;
-        return this;
-      }
-      public Builder ClearDefaultFloat() {
-        result.hasDefaultFloat = false;
-        result.defaultFloat_ = 51.5F;
-        return this;
-      }
-      
-      public bool HasDefaultDouble {
-        get { return result.HasDefaultDouble; }
-      }
-      public double DefaultDouble {
-        get { return result.DefaultDouble; }
-        set { SetDefaultDouble(value); }
-      }
-      public Builder SetDefaultDouble(double value) {
-        result.hasDefaultDouble = true;
-        result.defaultDouble_ = value;
-        return this;
-      }
-      public Builder ClearDefaultDouble() {
-        result.hasDefaultDouble = false;
-        result.defaultDouble_ = 52000D;
-        return this;
-      }
-      
-      public bool HasDefaultBool {
-        get { return result.HasDefaultBool; }
-      }
-      public bool DefaultBool {
-        get { return result.DefaultBool; }
-        set { SetDefaultBool(value); }
-      }
-      public Builder SetDefaultBool(bool value) {
-        result.hasDefaultBool = true;
-        result.defaultBool_ = value;
-        return this;
-      }
-      public Builder ClearDefaultBool() {
-        result.hasDefaultBool = false;
-        result.defaultBool_ = true;
-        return this;
-      }
-      
-      public bool HasDefaultString {
-        get { return result.HasDefaultString; }
-      }
-      public string DefaultString {
-        get { return result.DefaultString; }
-        set { SetDefaultString(value); }
-      }
-      public Builder SetDefaultString(string value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        result.hasDefaultString = true;
-        result.defaultString_ = value;
-        return this;
-      }
-      public Builder ClearDefaultString() {
-        result.hasDefaultString = false;
-        result.defaultString_ = "hello";
-        return this;
-      }
-      
-      public bool HasDefaultBytes {
-        get { return result.HasDefaultBytes; }
-      }
-      public pb::ByteString DefaultBytes {
-        get { return result.DefaultBytes; }
-        set { SetDefaultBytes(value); }
-      }
-      public Builder SetDefaultBytes(pb::ByteString value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        result.hasDefaultBytes = true;
-        result.defaultBytes_ = value;
-        return this;
-      }
-      public Builder ClearDefaultBytes() {
-        result.hasDefaultBytes = false;
-        result.defaultBytes_ = (pb::ByteString) global::protobuf_unittest.TestAllTypesLite.Descriptor.Fields[62].DefaultValue;
-        return this;
-      }
-      
-      public bool HasDefaultNestedEnum {
-       get { return result.HasDefaultNestedEnum; }
-      }
-      public global::protobuf_unittest.TestAllTypesLite.Types.NestedEnum DefaultNestedEnum {
-        get { return result.DefaultNestedEnum; }
-        set { SetDefaultNestedEnum(value); }
-      }
-      public Builder SetDefaultNestedEnum(global::protobuf_unittest.TestAllTypesLite.Types.NestedEnum value) {
-        result.hasDefaultNestedEnum = true;
-        result.defaultNestedEnum_ = value;
-        return this;
-      }
-      public Builder ClearDefaultNestedEnum() {
-        result.hasDefaultNestedEnum = false;
-        result.defaultNestedEnum_ = global::protobuf_unittest.TestAllTypesLite.Types.NestedEnum.BAR;
-        return this;
-      }
-      
-      public bool HasDefaultForeignEnum {
-       get { return result.HasDefaultForeignEnum; }
-      }
-      public global::protobuf_unittest.ForeignEnumLite DefaultForeignEnum {
-        get { return result.DefaultForeignEnum; }
-        set { SetDefaultForeignEnum(value); }
-      }
-      public Builder SetDefaultForeignEnum(global::protobuf_unittest.ForeignEnumLite value) {
-        result.hasDefaultForeignEnum = true;
-        result.defaultForeignEnum_ = value;
-        return this;
-      }
-      public Builder ClearDefaultForeignEnum() {
-        result.hasDefaultForeignEnum = false;
-        result.defaultForeignEnum_ = global::protobuf_unittest.ForeignEnumLite.FOREIGN_LITE_BAR;
-        return this;
-      }
-      
-      public bool HasDefaultImportEnum {
-       get { return result.HasDefaultImportEnum; }
-      }
-      public global::protobuf_unittest_import.ImportEnumLite DefaultImportEnum {
-        get { return result.DefaultImportEnum; }
-        set { SetDefaultImportEnum(value); }
-      }
-      public Builder SetDefaultImportEnum(global::protobuf_unittest_import.ImportEnumLite value) {
-        result.hasDefaultImportEnum = true;
-        result.defaultImportEnum_ = value;
-        return this;
-      }
-      public Builder ClearDefaultImportEnum() {
-        result.hasDefaultImportEnum = false;
-        result.defaultImportEnum_ = global::protobuf_unittest_import.ImportEnumLite.IMPORT_LITE_BAR;
-        return this;
-      }
-      
-      public bool HasDefaultStringPiece {
-        get { return result.HasDefaultStringPiece; }
-      }
-      public string DefaultStringPiece {
-        get { return result.DefaultStringPiece; }
-        set { SetDefaultStringPiece(value); }
-      }
-      public Builder SetDefaultStringPiece(string value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        result.hasDefaultStringPiece = true;
-        result.defaultStringPiece_ = value;
-        return this;
-      }
-      public Builder ClearDefaultStringPiece() {
-        result.hasDefaultStringPiece = false;
-        result.defaultStringPiece_ = "abc";
-        return this;
-      }
-      
-      public bool HasDefaultCord {
-        get { return result.HasDefaultCord; }
-      }
-      public string DefaultCord {
-        get { return result.DefaultCord; }
-        set { SetDefaultCord(value); }
-      }
-      public Builder SetDefaultCord(string value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        result.hasDefaultCord = true;
-        result.defaultCord_ = value;
-        return this;
-      }
-      public Builder ClearDefaultCord() {
-        result.hasDefaultCord = false;
-        result.defaultCord_ = "123";
-        return this;
-      }
-    }
-    static TestAllTypesLite() {
-      object.ReferenceEquals(global::protobuf_unittest.UnittestLite.Descriptor, null);
-    }
-  }
-  
-  public sealed partial class ForeignMessageLite : pb::GeneratedMessage<ForeignMessageLite, ForeignMessageLite.Builder> {
-    private static readonly ForeignMessageLite defaultInstance = new Builder().BuildPartial();
-    public static ForeignMessageLite DefaultInstance {
-      get { return defaultInstance; }
-    }
-    
-    public override ForeignMessageLite DefaultInstanceForType {
-      get { return defaultInstance; }
-    }
-    
-    protected override ForeignMessageLite ThisMessage {
-      get { return this; }
-    }
-    
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::protobuf_unittest.UnittestLite.internal__static_protobuf_unittest_ForeignMessageLite__Descriptor; }
-    }
-    
-    protected override pb::FieldAccess.FieldAccessorTable<ForeignMessageLite, ForeignMessageLite.Builder> InternalFieldAccessors {
-      get { return global::protobuf_unittest.UnittestLite.internal__static_protobuf_unittest_ForeignMessageLite__FieldAccessorTable; }
-    }
-    
-    public const int CFieldNumber = 1;
-    private bool hasC;
-    private int c_ = 0;
-    public bool HasC {
-      get { return hasC; }
-    }
-    public int C {
-      get { return c_; }
-    }
-    
-    public override bool IsInitialized {
-      get {
-        return true;
-      }
-    }
-    
-    public override void WriteTo(pb::CodedOutputStream output) {
-      int size = SerializedSize;
-      if (HasC) {
-        output.WriteInt32(1, C);
-      }
-      UnknownFields.WriteTo(output);
-    }
-    
-    private int memoizedSerializedSize = -1;
-    public override int SerializedSize {
-      get {
-        int size = memoizedSerializedSize;
-        if (size != -1) return size;
-        
-        size = 0;
-        if (HasC) {
-          size += pb::CodedOutputStream.ComputeInt32Size(1, C);
-        }
-        size += UnknownFields.SerializedSize;
-        memoizedSerializedSize = size;
-        return size;
-      }
-    }
-    
-    public static ForeignMessageLite ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static ForeignMessageLite ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static ForeignMessageLite ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static ForeignMessageLite ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static ForeignMessageLite ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static ForeignMessageLite ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static ForeignMessageLite ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static ForeignMessageLite ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static ForeignMessageLite ParseFrom(pb::CodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static ForeignMessageLite ParseFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static Builder CreateBuilder() { return new Builder(); }
-    public override Builder ToBuilder() { return CreateBuilder(this); }
-    public override Builder CreateBuilderForType() { return new Builder(); }
-    public static Builder CreateBuilder(ForeignMessageLite prototype) {
-      return (Builder) new Builder().MergeFrom(prototype);
-    }
-    
-    public sealed partial class Builder : pb::GeneratedBuilder<ForeignMessageLite, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {}
-      
-      ForeignMessageLite result = new ForeignMessageLite();
-      
-      protected override ForeignMessageLite MessageBeingBuilt {
-        get { return result; }
-      }
-      
-      public override Builder Clear() {
-        result = new ForeignMessageLite();
-        return this;
-      }
-      
-      public override Builder Clone() {
-        return new Builder().MergeFrom(result);
-      }
-      
-      public override pbd::MessageDescriptor DescriptorForType {
-        get { return global::protobuf_unittest.ForeignMessageLite.Descriptor; }
-      }
-      
-      public override ForeignMessageLite DefaultInstanceForType {
-        get { return global::protobuf_unittest.ForeignMessageLite.DefaultInstance; }
-      }
-      
-      public override ForeignMessageLite BuildPartial() {
-        if (result == null) {
-          throw new global::System.InvalidOperationException("build() has already been called on this Builder");
-        }
-        ForeignMessageLite returnMe = result;
-        result = null;
-        return returnMe;
-      }
-      
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is ForeignMessageLite) {
-          return MergeFrom((ForeignMessageLite) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-      
-      public override Builder MergeFrom(ForeignMessageLite other) {
-        if (other == global::protobuf_unittest.ForeignMessageLite.DefaultInstance) return this;
-        if (other.HasC) {
-          C = other.C;
-        }
-        this.MergeUnknownFields(other.UnknownFields);
-        return this;
-      }
-      
-      public override Builder MergeFrom(pb::CodedInputStream input) {
-        return MergeFrom(input, pb::ExtensionRegistry.Empty);
-      }
-      
-      public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-        pb::UnknownFieldSet.Builder unknownFields = null;
-        while (true) {
-          uint tag = input.ReadTag();
-          switch (tag) {
-            case 0: {
-              if (unknownFields != null) {
-                this.UnknownFields = unknownFields.Build();
-              }
-              return this;
-            }
-            default: {
-              if (pb::WireFormat.IsEndGroupTag(tag)) {
-                if (unknownFields != null) {
-                  this.UnknownFields = unknownFields.Build();
-                }
-                return this;
-              }
-              if (unknownFields == null) {
-                unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-              }
-              ParseUnknownField(input, unknownFields, extensionRegistry, tag);
-              break;
-            }
-            case 8: {
-              C = input.ReadInt32();
-              break;
-            }
-          }
-        }
-      }
-      
-      
-      public bool HasC {
-        get { return result.HasC; }
-      }
-      public int C {
-        get { return result.C; }
-        set { SetC(value); }
-      }
-      public Builder SetC(int value) {
-        result.hasC = true;
-        result.c_ = value;
-        return this;
-      }
-      public Builder ClearC() {
-        result.hasC = false;
-        result.c_ = 0;
-        return this;
-      }
-    }
-    static ForeignMessageLite() {
-      object.ReferenceEquals(global::protobuf_unittest.UnittestLite.Descriptor, null);
-    }
-  }
-  
-  public sealed partial class TestPackedTypesLite : pb::GeneratedMessage<TestPackedTypesLite, TestPackedTypesLite.Builder> {
-    private static readonly TestPackedTypesLite defaultInstance = new Builder().BuildPartial();
-    public static TestPackedTypesLite DefaultInstance {
-      get { return defaultInstance; }
-    }
-    
-    public override TestPackedTypesLite DefaultInstanceForType {
-      get { return defaultInstance; }
-    }
-    
-    protected override TestPackedTypesLite ThisMessage {
-      get { return this; }
-    }
-    
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::protobuf_unittest.UnittestLite.internal__static_protobuf_unittest_TestPackedTypesLite__Descriptor; }
-    }
-    
-    protected override pb::FieldAccess.FieldAccessorTable<TestPackedTypesLite, TestPackedTypesLite.Builder> InternalFieldAccessors {
-      get { return global::protobuf_unittest.UnittestLite.internal__static_protobuf_unittest_TestPackedTypesLite__FieldAccessorTable; }
-    }
-    
-    public const int PackedInt32FieldNumber = 90;
-    private int packedInt32MemoizedSerializedSize;
-    private pbc::PopsicleList<int> packedInt32_ = new pbc::PopsicleList<int>();
-    public scg::IList<int> PackedInt32List {
-      get { return pbc::Lists.AsReadOnly(packedInt32_); }
-    }
-    public int PackedInt32Count {
-      get { return packedInt32_.Count; }
-    }
-    public int GetPackedInt32(int index) {
-      return packedInt32_[index];
-    }
-    
-    public const int PackedInt64FieldNumber = 91;
-    private int packedInt64MemoizedSerializedSize;
-    private pbc::PopsicleList<long> packedInt64_ = new pbc::PopsicleList<long>();
-    public scg::IList<long> PackedInt64List {
-      get { return pbc::Lists.AsReadOnly(packedInt64_); }
-    }
-    public int PackedInt64Count {
-      get { return packedInt64_.Count; }
-    }
-    public long GetPackedInt64(int index) {
-      return packedInt64_[index];
-    }
-    
-    public const int PackedUint32FieldNumber = 92;
-    private int packedUint32MemoizedSerializedSize;
-    private pbc::PopsicleList<uint> packedUint32_ = new pbc::PopsicleList<uint>();
-    [global::System.CLSCompliant(false)]
-    public scg::IList<uint> PackedUint32List {
-      get { return pbc::Lists.AsReadOnly(packedUint32_); }
-    }
-    public int PackedUint32Count {
-      get { return packedUint32_.Count; }
-    }
-    [global::System.CLSCompliant(false)]
-    public uint GetPackedUint32(int index) {
-      return packedUint32_[index];
-    }
-    
-    public const int PackedUint64FieldNumber = 93;
-    private int packedUint64MemoizedSerializedSize;
-    private pbc::PopsicleList<ulong> packedUint64_ = new pbc::PopsicleList<ulong>();
-    [global::System.CLSCompliant(false)]
-    public scg::IList<ulong> PackedUint64List {
-      get { return pbc::Lists.AsReadOnly(packedUint64_); }
-    }
-    public int PackedUint64Count {
-      get { return packedUint64_.Count; }
-    }
-    [global::System.CLSCompliant(false)]
-    public ulong GetPackedUint64(int index) {
-      return packedUint64_[index];
-    }
-    
-    public const int PackedSint32FieldNumber = 94;
-    private int packedSint32MemoizedSerializedSize;
-    private pbc::PopsicleList<int> packedSint32_ = new pbc::PopsicleList<int>();
-    public scg::IList<int> PackedSint32List {
-      get { return pbc::Lists.AsReadOnly(packedSint32_); }
-    }
-    public int PackedSint32Count {
-      get { return packedSint32_.Count; }
-    }
-    public int GetPackedSint32(int index) {
-      return packedSint32_[index];
-    }
-    
-    public const int PackedSint64FieldNumber = 95;
-    private int packedSint64MemoizedSerializedSize;
-    private pbc::PopsicleList<long> packedSint64_ = new pbc::PopsicleList<long>();
-    public scg::IList<long> PackedSint64List {
-      get { return pbc::Lists.AsReadOnly(packedSint64_); }
-    }
-    public int PackedSint64Count {
-      get { return packedSint64_.Count; }
-    }
-    public long GetPackedSint64(int index) {
-      return packedSint64_[index];
-    }
-    
-    public const int PackedFixed32FieldNumber = 96;
-    private int packedFixed32MemoizedSerializedSize;
-    private pbc::PopsicleList<uint> packedFixed32_ = new pbc::PopsicleList<uint>();
-    [global::System.CLSCompliant(false)]
-    public scg::IList<uint> PackedFixed32List {
-      get { return pbc::Lists.AsReadOnly(packedFixed32_); }
-    }
-    public int PackedFixed32Count {
-      get { return packedFixed32_.Count; }
-    }
-    [global::System.CLSCompliant(false)]
-    public uint GetPackedFixed32(int index) {
-      return packedFixed32_[index];
-    }
-    
-    public const int PackedFixed64FieldNumber = 97;
-    private int packedFixed64MemoizedSerializedSize;
-    private pbc::PopsicleList<ulong> packedFixed64_ = new pbc::PopsicleList<ulong>();
-    [global::System.CLSCompliant(false)]
-    public scg::IList<ulong> PackedFixed64List {
-      get { return pbc::Lists.AsReadOnly(packedFixed64_); }
-    }
-    public int PackedFixed64Count {
-      get { return packedFixed64_.Count; }
-    }
-    [global::System.CLSCompliant(false)]
-    public ulong GetPackedFixed64(int index) {
-      return packedFixed64_[index];
-    }
-    
-    public const int PackedSfixed32FieldNumber = 98;
-    private int packedSfixed32MemoizedSerializedSize;
-    private pbc::PopsicleList<int> packedSfixed32_ = new pbc::PopsicleList<int>();
-    public scg::IList<int> PackedSfixed32List {
-      get { return pbc::Lists.AsReadOnly(packedSfixed32_); }
-    }
-    public int PackedSfixed32Count {
-      get { return packedSfixed32_.Count; }
-    }
-    public int GetPackedSfixed32(int index) {
-      return packedSfixed32_[index];
-    }
-    
-    public const int PackedSfixed64FieldNumber = 99;
-    private int packedSfixed64MemoizedSerializedSize;
-    private pbc::PopsicleList<long> packedSfixed64_ = new pbc::PopsicleList<long>();
-    public scg::IList<long> PackedSfixed64List {
-      get { return pbc::Lists.AsReadOnly(packedSfixed64_); }
-    }
-    public int PackedSfixed64Count {
-      get { return packedSfixed64_.Count; }
-    }
-    public long GetPackedSfixed64(int index) {
-      return packedSfixed64_[index];
-    }
-    
-    public const int PackedFloatFieldNumber = 100;
-    private int packedFloatMemoizedSerializedSize;
-    private pbc::PopsicleList<float> packedFloat_ = new pbc::PopsicleList<float>();
-    public scg::IList<float> PackedFloatList {
-      get { return pbc::Lists.AsReadOnly(packedFloat_); }
-    }
-    public int PackedFloatCount {
-      get { return packedFloat_.Count; }
-    }
-    public float GetPackedFloat(int index) {
-      return packedFloat_[index];
-    }
-    
-    public const int PackedDoubleFieldNumber = 101;
-    private int packedDoubleMemoizedSerializedSize;
-    private pbc::PopsicleList<double> packedDouble_ = new pbc::PopsicleList<double>();
-    public scg::IList<double> PackedDoubleList {
-      get { return pbc::Lists.AsReadOnly(packedDouble_); }
-    }
-    public int PackedDoubleCount {
-      get { return packedDouble_.Count; }
-    }
-    public double GetPackedDouble(int index) {
-      return packedDouble_[index];
-    }
-    
-    public const int PackedBoolFieldNumber = 102;
-    private int packedBoolMemoizedSerializedSize;
-    private pbc::PopsicleList<bool> packedBool_ = new pbc::PopsicleList<bool>();
-    public scg::IList<bool> PackedBoolList {
-      get { return pbc::Lists.AsReadOnly(packedBool_); }
-    }
-    public int PackedBoolCount {
-      get { return packedBool_.Count; }
-    }
-    public bool GetPackedBool(int index) {
-      return packedBool_[index];
-    }
-    
-    public const int PackedEnumFieldNumber = 103;
-    private int packedEnumMemoizedSerializedSize;
-    private pbc::PopsicleList<global::protobuf_unittest.ForeignEnumLite> packedEnum_ = new pbc::PopsicleList<global::protobuf_unittest.ForeignEnumLite>();
-    public scg::IList<global::protobuf_unittest.ForeignEnumLite> PackedEnumList {
-      get { return pbc::Lists.AsReadOnly(packedEnum_); }
-    }
-    public int PackedEnumCount {
-      get { return packedEnum_.Count; }
-    }
-    public global::protobuf_unittest.ForeignEnumLite GetPackedEnum(int index) {
-      return packedEnum_[index];
-    }
-    
-    public override bool IsInitialized {
-      get {
-        return true;
-      }
-    }
-    
-    public override void WriteTo(pb::CodedOutputStream output) {
-      int size = SerializedSize;
-      if (packedInt32_.Count > 0) {
-        output.WriteRawVarint32(722);
-        output.WriteRawVarint32((uint) packedInt32MemoizedSerializedSize);
-        foreach (int element in packedInt32_) {
-          output.WriteInt32NoTag(element);
-        }
-      }
-      if (packedInt64_.Count > 0) {
-        output.WriteRawVarint32(730);
-        output.WriteRawVarint32((uint) packedInt64MemoizedSerializedSize);
-        foreach (long element in packedInt64_) {
-          output.WriteInt64NoTag(element);
-        }
-      }
-      if (packedUint32_.Count > 0) {
-        output.WriteRawVarint32(738);
-        output.WriteRawVarint32((uint) packedUint32MemoizedSerializedSize);
-        foreach (uint element in packedUint32_) {
-          output.WriteUInt32NoTag(element);
-        }
-      }
-      if (packedUint64_.Count > 0) {
-        output.WriteRawVarint32(746);
-        output.WriteRawVarint32((uint) packedUint64MemoizedSerializedSize);
-        foreach (ulong element in packedUint64_) {
-          output.WriteUInt64NoTag(element);
-        }
-      }
-      if (packedSint32_.Count > 0) {
-        output.WriteRawVarint32(754);
-        output.WriteRawVarint32((uint) packedSint32MemoizedSerializedSize);
-        foreach (int element in packedSint32_) {
-          output.WriteSInt32NoTag(element);
-        }
-      }
-      if (packedSint64_.Count > 0) {
-        output.WriteRawVarint32(762);
-        output.WriteRawVarint32((uint) packedSint64MemoizedSerializedSize);
-        foreach (long element in packedSint64_) {
-          output.WriteSInt64NoTag(element);
-        }
-      }
-      if (packedFixed32_.Count > 0) {
-        output.WriteRawVarint32(770);
-        output.WriteRawVarint32((uint) packedFixed32MemoizedSerializedSize);
-        foreach (uint element in packedFixed32_) {
-          output.WriteFixed32NoTag(element);
-        }
-      }
-      if (packedFixed64_.Count > 0) {
-        output.WriteRawVarint32(778);
-        output.WriteRawVarint32((uint) packedFixed64MemoizedSerializedSize);
-        foreach (ulong element in packedFixed64_) {
-          output.WriteFixed64NoTag(element);
-        }
-      }
-      if (packedSfixed32_.Count > 0) {
-        output.WriteRawVarint32(786);
-        output.WriteRawVarint32((uint) packedSfixed32MemoizedSerializedSize);
-        foreach (int element in packedSfixed32_) {
-          output.WriteSFixed32NoTag(element);
-        }
-      }
-      if (packedSfixed64_.Count > 0) {
-        output.WriteRawVarint32(794);
-        output.WriteRawVarint32((uint) packedSfixed64MemoizedSerializedSize);
-        foreach (long element in packedSfixed64_) {
-          output.WriteSFixed64NoTag(element);
-        }
-      }
-      if (packedFloat_.Count > 0) {
-        output.WriteRawVarint32(802);
-        output.WriteRawVarint32((uint) packedFloatMemoizedSerializedSize);
-        foreach (float element in packedFloat_) {
-          output.WriteFloatNoTag(element);
-        }
-      }
-      if (packedDouble_.Count > 0) {
-        output.WriteRawVarint32(810);
-        output.WriteRawVarint32((uint) packedDoubleMemoizedSerializedSize);
-        foreach (double element in packedDouble_) {
-          output.WriteDoubleNoTag(element);
-        }
-      }
-      if (packedBool_.Count > 0) {
-        output.WriteRawVarint32(818);
-        output.WriteRawVarint32((uint) packedBoolMemoizedSerializedSize);
-        foreach (bool element in packedBool_) {
-          output.WriteBoolNoTag(element);
-        }
-      }
-      if (packedEnum_.Count > 0) {
-        output.WriteRawVarint32(826);
-        output.WriteRawVarint32((uint) packedEnumMemoizedSerializedSize);
-        foreach (int element in packedEnum_) {
-          output.WriteEnumNoTag(element);
-        }
-      }
-      UnknownFields.WriteTo(output);
-    }
-    
-    private int memoizedSerializedSize = -1;
-    public override int SerializedSize {
-      get {
-        int size = memoizedSerializedSize;
-        if (size != -1) return size;
-        
-        size = 0;
-        {
-          int dataSize = 0;
-          foreach (int element in PackedInt32List) {
-            dataSize += pb::CodedOutputStream.ComputeInt32SizeNoTag(element);
-          }
-          size += dataSize;
-          if (packedInt32_.Count != 0) {
-            size += 2 + pb::CodedOutputStream.ComputeInt32SizeNoTag(dataSize);
-          }
-          packedInt32MemoizedSerializedSize = dataSize;
-        }
-        {
-          int dataSize = 0;
-          foreach (long element in PackedInt64List) {
-            dataSize += pb::CodedOutputStream.ComputeInt64SizeNoTag(element);
-          }
-          size += dataSize;
-          if (packedInt64_.Count != 0) {
-            size += 2 + pb::CodedOutputStream.ComputeInt32SizeNoTag(dataSize);
-          }
-          packedInt64MemoizedSerializedSize = dataSize;
-        }
-        {
-          int dataSize = 0;
-          foreach (uint element in PackedUint32List) {
-            dataSize += pb::CodedOutputStream.ComputeUInt32SizeNoTag(element);
-          }
-          size += dataSize;
-          if (packedUint32_.Count != 0) {
-            size += 2 + pb::CodedOutputStream.ComputeInt32SizeNoTag(dataSize);
-          }
-          packedUint32MemoizedSerializedSize = dataSize;
-        }
-        {
-          int dataSize = 0;
-          foreach (ulong element in PackedUint64List) {
-            dataSize += pb::CodedOutputStream.ComputeUInt64SizeNoTag(element);
-          }
-          size += dataSize;
-          if (packedUint64_.Count != 0) {
-            size += 2 + pb::CodedOutputStream.ComputeInt32SizeNoTag(dataSize);
-          }
-          packedUint64MemoizedSerializedSize = dataSize;
-        }
-        {
-          int dataSize = 0;
-          foreach (int element in PackedSint32List) {
-            dataSize += pb::CodedOutputStream.ComputeSInt32SizeNoTag(element);
-          }
-          size += dataSize;
-          if (packedSint32_.Count != 0) {
-            size += 2 + pb::CodedOutputStream.ComputeInt32SizeNoTag(dataSize);
-          }
-          packedSint32MemoizedSerializedSize = dataSize;
-        }
-        {
-          int dataSize = 0;
-          foreach (long element in PackedSint64List) {
-            dataSize += pb::CodedOutputStream.ComputeSInt64SizeNoTag(element);
-          }
-          size += dataSize;
-          if (packedSint64_.Count != 0) {
-            size += 2 + pb::CodedOutputStream.ComputeInt32SizeNoTag(dataSize);
-          }
-          packedSint64MemoizedSerializedSize = dataSize;
-        }
-        {
-          int dataSize = 0;
-          dataSize = 4 * packedFixed32_.Count;
-          size += dataSize;
-          if (packedFixed32_.Count != 0) {
-            size += 2 + pb::CodedOutputStream.ComputeInt32SizeNoTag(dataSize);
-          }
-          packedFixed32MemoizedSerializedSize = dataSize;
-        }
-        {
-          int dataSize = 0;
-          dataSize = 8 * packedFixed64_.Count;
-          size += dataSize;
-          if (packedFixed64_.Count != 0) {
-            size += 2 + pb::CodedOutputStream.ComputeInt32SizeNoTag(dataSize);
-          }
-          packedFixed64MemoizedSerializedSize = dataSize;
-        }
-        {
-          int dataSize = 0;
-          dataSize = 4 * packedSfixed32_.Count;
-          size += dataSize;
-          if (packedSfixed32_.Count != 0) {
-            size += 2 + pb::CodedOutputStream.ComputeInt32SizeNoTag(dataSize);
-          }
-          packedSfixed32MemoizedSerializedSize = dataSize;
-        }
-        {
-          int dataSize = 0;
-          dataSize = 8 * packedSfixed64_.Count;
-          size += dataSize;
-          if (packedSfixed64_.Count != 0) {
-            size += 2 + pb::CodedOutputStream.ComputeInt32SizeNoTag(dataSize);
-          }
-          packedSfixed64MemoizedSerializedSize = dataSize;
-        }
-        {
-          int dataSize = 0;
-          dataSize = 4 * packedFloat_.Count;
-          size += dataSize;
-          if (packedFloat_.Count != 0) {
-            size += 2 + pb::CodedOutputStream.ComputeInt32SizeNoTag(dataSize);
-          }
-          packedFloatMemoizedSerializedSize = dataSize;
-        }
-        {
-          int dataSize = 0;
-          dataSize = 8 * packedDouble_.Count;
-          size += dataSize;
-          if (packedDouble_.Count != 0) {
-            size += 2 + pb::CodedOutputStream.ComputeInt32SizeNoTag(dataSize);
-          }
-          packedDoubleMemoizedSerializedSize = dataSize;
-        }
-        {
-          int dataSize = 0;
-          dataSize = 1 * packedBool_.Count;
-          size += dataSize;
-          if (packedBool_.Count != 0) {
-            size += 2 + pb::CodedOutputStream.ComputeInt32SizeNoTag(dataSize);
-          }
-          packedBoolMemoizedSerializedSize = dataSize;
-        }
-        {
-          int dataSize = 0;
-          if (packedEnum_.Count > 0) {
-            foreach (global::protobuf_unittest.ForeignEnumLite element in packedEnum_) {
-              dataSize += pb::CodedOutputStream.ComputeEnumSizeNoTag((int) element);
-            }
-            size += dataSize;
-            size += 2;
-            size += pb::CodedOutputStream.ComputeRawVarint32Size((uint) dataSize);
-          }
-          packedEnumMemoizedSerializedSize = dataSize;
-        }
-        size += UnknownFields.SerializedSize;
-        memoizedSerializedSize = size;
-        return size;
-      }
-    }
-    
-    public static TestPackedTypesLite ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestPackedTypesLite ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestPackedTypesLite ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestPackedTypesLite ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestPackedTypesLite ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestPackedTypesLite ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static TestPackedTypesLite ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static TestPackedTypesLite ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static TestPackedTypesLite ParseFrom(pb::CodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestPackedTypesLite ParseFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static Builder CreateBuilder() { return new Builder(); }
-    public override Builder ToBuilder() { return CreateBuilder(this); }
-    public override Builder CreateBuilderForType() { return new Builder(); }
-    public static Builder CreateBuilder(TestPackedTypesLite prototype) {
-      return (Builder) new Builder().MergeFrom(prototype);
-    }
-    
-    public sealed partial class Builder : pb::GeneratedBuilder<TestPackedTypesLite, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {}
-      
-      TestPackedTypesLite result = new TestPackedTypesLite();
-      
-      protected override TestPackedTypesLite MessageBeingBuilt {
-        get { return result; }
-      }
-      
-      public override Builder Clear() {
-        result = new TestPackedTypesLite();
-        return this;
-      }
-      
-      public override Builder Clone() {
-        return new Builder().MergeFrom(result);
-      }
-      
-      public override pbd::MessageDescriptor DescriptorForType {
-        get { return global::protobuf_unittest.TestPackedTypesLite.Descriptor; }
-      }
-      
-      public override TestPackedTypesLite DefaultInstanceForType {
-        get { return global::protobuf_unittest.TestPackedTypesLite.DefaultInstance; }
-      }
-      
-      public override TestPackedTypesLite BuildPartial() {
-        if (result == null) {
-          throw new global::System.InvalidOperationException("build() has already been called on this Builder");
-        }
-        result.packedInt32_.MakeReadOnly();
-        result.packedInt64_.MakeReadOnly();
-        result.packedUint32_.MakeReadOnly();
-        result.packedUint64_.MakeReadOnly();
-        result.packedSint32_.MakeReadOnly();
-        result.packedSint64_.MakeReadOnly();
-        result.packedFixed32_.MakeReadOnly();
-        result.packedFixed64_.MakeReadOnly();
-        result.packedSfixed32_.MakeReadOnly();
-        result.packedSfixed64_.MakeReadOnly();
-        result.packedFloat_.MakeReadOnly();
-        result.packedDouble_.MakeReadOnly();
-        result.packedBool_.MakeReadOnly();
-        result.packedEnum_.MakeReadOnly();
-        TestPackedTypesLite returnMe = result;
-        result = null;
-        return returnMe;
-      }
-      
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is TestPackedTypesLite) {
-          return MergeFrom((TestPackedTypesLite) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-      
-      public override Builder MergeFrom(TestPackedTypesLite other) {
-        if (other == global::protobuf_unittest.TestPackedTypesLite.DefaultInstance) return this;
-        if (other.packedInt32_.Count != 0) {
-          base.AddRange(other.packedInt32_, result.packedInt32_);
-        }
-        if (other.packedInt64_.Count != 0) {
-          base.AddRange(other.packedInt64_, result.packedInt64_);
-        }
-        if (other.packedUint32_.Count != 0) {
-          base.AddRange(other.packedUint32_, result.packedUint32_);
-        }
-        if (other.packedUint64_.Count != 0) {
-          base.AddRange(other.packedUint64_, result.packedUint64_);
-        }
-        if (other.packedSint32_.Count != 0) {
-          base.AddRange(other.packedSint32_, result.packedSint32_);
-        }
-        if (other.packedSint64_.Count != 0) {
-          base.AddRange(other.packedSint64_, result.packedSint64_);
-        }
-        if (other.packedFixed32_.Count != 0) {
-          base.AddRange(other.packedFixed32_, result.packedFixed32_);
-        }
-        if (other.packedFixed64_.Count != 0) {
-          base.AddRange(other.packedFixed64_, result.packedFixed64_);
-        }
-        if (other.packedSfixed32_.Count != 0) {
-          base.AddRange(other.packedSfixed32_, result.packedSfixed32_);
-        }
-        if (other.packedSfixed64_.Count != 0) {
-          base.AddRange(other.packedSfixed64_, result.packedSfixed64_);
-        }
-        if (other.packedFloat_.Count != 0) {
-          base.AddRange(other.packedFloat_, result.packedFloat_);
-        }
-        if (other.packedDouble_.Count != 0) {
-          base.AddRange(other.packedDouble_, result.packedDouble_);
-        }
-        if (other.packedBool_.Count != 0) {
-          base.AddRange(other.packedBool_, result.packedBool_);
-        }
-        if (other.packedEnum_.Count != 0) {
-          base.AddRange(other.packedEnum_, result.packedEnum_);
-        }
-        this.MergeUnknownFields(other.UnknownFields);
-        return this;
-      }
-      
-      public override Builder MergeFrom(pb::CodedInputStream input) {
-        return MergeFrom(input, pb::ExtensionRegistry.Empty);
-      }
-      
-      public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-        pb::UnknownFieldSet.Builder unknownFields = null;
-        while (true) {
-          uint tag = input.ReadTag();
-          switch (tag) {
-            case 0: {
-              if (unknownFields != null) {
-                this.UnknownFields = unknownFields.Build();
-              }
-              return this;
-            }
-            default: {
-              if (pb::WireFormat.IsEndGroupTag(tag)) {
-                if (unknownFields != null) {
-                  this.UnknownFields = unknownFields.Build();
-                }
-                return this;
-              }
-              if (unknownFields == null) {
-                unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-              }
-              ParseUnknownField(input, unknownFields, extensionRegistry, tag);
-              break;
-            }
-            case 722: {
-              int length = input.ReadInt32();
-              int limit = input.PushLimit(length);
-              while (!input.ReachedLimit) {
-                AddPackedInt32(input.ReadInt32());
-              }
-              input.PopLimit(limit);
-              break;
-            }
-            case 730: {
-              int length = input.ReadInt32();
-              int limit = input.PushLimit(length);
-              while (!input.ReachedLimit) {
-                AddPackedInt64(input.ReadInt64());
-              }
-              input.PopLimit(limit);
-              break;
-            }
-            case 738: {
-              int length = input.ReadInt32();
-              int limit = input.PushLimit(length);
-              while (!input.ReachedLimit) {
-                AddPackedUint32(input.ReadUInt32());
-              }
-              input.PopLimit(limit);
-              break;
-            }
-            case 746: {
-              int length = input.ReadInt32();
-              int limit = input.PushLimit(length);
-              while (!input.ReachedLimit) {
-                AddPackedUint64(input.ReadUInt64());
-              }
-              input.PopLimit(limit);
-              break;
-            }
-            case 754: {
-              int length = input.ReadInt32();
-              int limit = input.PushLimit(length);
-              while (!input.ReachedLimit) {
-                AddPackedSint32(input.ReadSInt32());
-              }
-              input.PopLimit(limit);
-              break;
-            }
-            case 762: {
-              int length = input.ReadInt32();
-              int limit = input.PushLimit(length);
-              while (!input.ReachedLimit) {
-                AddPackedSint64(input.ReadSInt64());
-              }
-              input.PopLimit(limit);
-              break;
-            }
-            case 770: {
-              int length = input.ReadInt32();
-              int limit = input.PushLimit(length);
-              while (!input.ReachedLimit) {
-                AddPackedFixed32(input.ReadFixed32());
-              }
-              input.PopLimit(limit);
-              break;
-            }
-            case 778: {
-              int length = input.ReadInt32();
-              int limit = input.PushLimit(length);
-              while (!input.ReachedLimit) {
-                AddPackedFixed64(input.ReadFixed64());
-              }
-              input.PopLimit(limit);
-              break;
-            }
-            case 786: {
-              int length = input.ReadInt32();
-              int limit = input.PushLimit(length);
-              while (!input.ReachedLimit) {
-                AddPackedSfixed32(input.ReadSFixed32());
-              }
-              input.PopLimit(limit);
-              break;
-            }
-            case 794: {
-              int length = input.ReadInt32();
-              int limit = input.PushLimit(length);
-              while (!input.ReachedLimit) {
-                AddPackedSfixed64(input.ReadSFixed64());
-              }
-              input.PopLimit(limit);
-              break;
-            }
-            case 802: {
-              int length = input.ReadInt32();
-              int limit = input.PushLimit(length);
-              while (!input.ReachedLimit) {
-                AddPackedFloat(input.ReadFloat());
-              }
-              input.PopLimit(limit);
-              break;
-            }
-            case 810: {
-              int length = input.ReadInt32();
-              int limit = input.PushLimit(length);
-              while (!input.ReachedLimit) {
-                AddPackedDouble(input.ReadDouble());
-              }
-              input.PopLimit(limit);
-              break;
-            }
-            case 818: {
-              int length = input.ReadInt32();
-              int limit = input.PushLimit(length);
-              while (!input.ReachedLimit) {
-                AddPackedBool(input.ReadBool());
-              }
-              input.PopLimit(limit);
-              break;
-            }
-            case 826: {
-              int length = input.ReadInt32();
-              int oldLimit = input.PushLimit(length);
-              while (!input.ReachedLimit) {
-                int rawValue = input.ReadEnum();
-                if (!global::System.Enum.IsDefined(typeof(global::protobuf_unittest.ForeignEnumLite), rawValue)) {
-                  if (unknownFields == null) {
-                    unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-                  }
-                  unknownFields.MergeVarintField(103, (ulong) rawValue);
-                } else {
-                  AddPackedEnum((global::protobuf_unittest.ForeignEnumLite) rawValue);
-                }
-              }
-              input.PopLimit(oldLimit);
-              break;
-            }
-          }
-        }
-      }
-      
-      
-      public pbc::IPopsicleList<int> PackedInt32List {
-        get { return result.packedInt32_; }
-      }
-      public int PackedInt32Count {
-        get { return result.PackedInt32Count; }
-      }
-      public int GetPackedInt32(int index) {
-        return result.GetPackedInt32(index);
-      }
-      public Builder SetPackedInt32(int index, int value) {
-        result.packedInt32_[index] = value;
-        return this;
-      }
-      public Builder AddPackedInt32(int value) {
-        result.packedInt32_.Add(value);
-        return this;
-      }
-      public Builder AddRangePackedInt32(scg::IEnumerable<int> values) {
-        base.AddRange(values, result.packedInt32_);
-        return this;
-      }
-      public Builder ClearPackedInt32() {
-        result.packedInt32_.Clear();
-        return this;
-      }
-      
-      public pbc::IPopsicleList<long> PackedInt64List {
-        get { return result.packedInt64_; }
-      }
-      public int PackedInt64Count {
-        get { return result.PackedInt64Count; }
-      }
-      public long GetPackedInt64(int index) {
-        return result.GetPackedInt64(index);
-      }
-      public Builder SetPackedInt64(int index, long value) {
-        result.packedInt64_[index] = value;
-        return this;
-      }
-      public Builder AddPackedInt64(long value) {
-        result.packedInt64_.Add(value);
-        return this;
-      }
-      public Builder AddRangePackedInt64(scg::IEnumerable<long> values) {
-        base.AddRange(values, result.packedInt64_);
-        return this;
-      }
-      public Builder ClearPackedInt64() {
-        result.packedInt64_.Clear();
-        return this;
-      }
-      
-      [global::System.CLSCompliant(false)]
-      public pbc::IPopsicleList<uint> PackedUint32List {
-        get { return result.packedUint32_; }
-      }
-      public int PackedUint32Count {
-        get { return result.PackedUint32Count; }
-      }
-      [global::System.CLSCompliant(false)]
-      public uint GetPackedUint32(int index) {
-        return result.GetPackedUint32(index);
-      }
-      [global::System.CLSCompliant(false)]
-      public Builder SetPackedUint32(int index, uint value) {
-        result.packedUint32_[index] = value;
-        return this;
-      }
-      [global::System.CLSCompliant(false)]
-      public Builder AddPackedUint32(uint value) {
-        result.packedUint32_.Add(value);
-        return this;
-      }
-      [global::System.CLSCompliant(false)]
-      public Builder AddRangePackedUint32(scg::IEnumerable<uint> values) {
-        base.AddRange(values, result.packedUint32_);
-        return this;
-      }
-      public Builder ClearPackedUint32() {
-        result.packedUint32_.Clear();
-        return this;
-      }
-      
-      [global::System.CLSCompliant(false)]
-      public pbc::IPopsicleList<ulong> PackedUint64List {
-        get { return result.packedUint64_; }
-      }
-      public int PackedUint64Count {
-        get { return result.PackedUint64Count; }
-      }
-      [global::System.CLSCompliant(false)]
-      public ulong GetPackedUint64(int index) {
-        return result.GetPackedUint64(index);
-      }
-      [global::System.CLSCompliant(false)]
-      public Builder SetPackedUint64(int index, ulong value) {
-        result.packedUint64_[index] = value;
-        return this;
-      }
-      [global::System.CLSCompliant(false)]
-      public Builder AddPackedUint64(ulong value) {
-        result.packedUint64_.Add(value);
-        return this;
-      }
-      [global::System.CLSCompliant(false)]
-      public Builder AddRangePackedUint64(scg::IEnumerable<ulong> values) {
-        base.AddRange(values, result.packedUint64_);
-        return this;
-      }
-      public Builder ClearPackedUint64() {
-        result.packedUint64_.Clear();
-        return this;
-      }
-      
-      public pbc::IPopsicleList<int> PackedSint32List {
-        get { return result.packedSint32_; }
-      }
-      public int PackedSint32Count {
-        get { return result.PackedSint32Count; }
-      }
-      public int GetPackedSint32(int index) {
-        return result.GetPackedSint32(index);
-      }
-      public Builder SetPackedSint32(int index, int value) {
-        result.packedSint32_[index] = value;
-        return this;
-      }
-      public Builder AddPackedSint32(int value) {
-        result.packedSint32_.Add(value);
-        return this;
-      }
-      public Builder AddRangePackedSint32(scg::IEnumerable<int> values) {
-        base.AddRange(values, result.packedSint32_);
-        return this;
-      }
-      public Builder ClearPackedSint32() {
-        result.packedSint32_.Clear();
-        return this;
-      }
-      
-      public pbc::IPopsicleList<long> PackedSint64List {
-        get { return result.packedSint64_; }
-      }
-      public int PackedSint64Count {
-        get { return result.PackedSint64Count; }
-      }
-      public long GetPackedSint64(int index) {
-        return result.GetPackedSint64(index);
-      }
-      public Builder SetPackedSint64(int index, long value) {
-        result.packedSint64_[index] = value;
-        return this;
-      }
-      public Builder AddPackedSint64(long value) {
-        result.packedSint64_.Add(value);
-        return this;
-      }
-      public Builder AddRangePackedSint64(scg::IEnumerable<long> values) {
-        base.AddRange(values, result.packedSint64_);
-        return this;
-      }
-      public Builder ClearPackedSint64() {
-        result.packedSint64_.Clear();
-        return this;
-      }
-      
-      [global::System.CLSCompliant(false)]
-      public pbc::IPopsicleList<uint> PackedFixed32List {
-        get { return result.packedFixed32_; }
-      }
-      public int PackedFixed32Count {
-        get { return result.PackedFixed32Count; }
-      }
-      [global::System.CLSCompliant(false)]
-      public uint GetPackedFixed32(int index) {
-        return result.GetPackedFixed32(index);
-      }
-      [global::System.CLSCompliant(false)]
-      public Builder SetPackedFixed32(int index, uint value) {
-        result.packedFixed32_[index] = value;
-        return this;
-      }
-      [global::System.CLSCompliant(false)]
-      public Builder AddPackedFixed32(uint value) {
-        result.packedFixed32_.Add(value);
-        return this;
-      }
-      [global::System.CLSCompliant(false)]
-      public Builder AddRangePackedFixed32(scg::IEnumerable<uint> values) {
-        base.AddRange(values, result.packedFixed32_);
-        return this;
-      }
-      public Builder ClearPackedFixed32() {
-        result.packedFixed32_.Clear();
-        return this;
-      }
-      
-      [global::System.CLSCompliant(false)]
-      public pbc::IPopsicleList<ulong> PackedFixed64List {
-        get { return result.packedFixed64_; }
-      }
-      public int PackedFixed64Count {
-        get { return result.PackedFixed64Count; }
-      }
-      [global::System.CLSCompliant(false)]
-      public ulong GetPackedFixed64(int index) {
-        return result.GetPackedFixed64(index);
-      }
-      [global::System.CLSCompliant(false)]
-      public Builder SetPackedFixed64(int index, ulong value) {
-        result.packedFixed64_[index] = value;
-        return this;
-      }
-      [global::System.CLSCompliant(false)]
-      public Builder AddPackedFixed64(ulong value) {
-        result.packedFixed64_.Add(value);
-        return this;
-      }
-      [global::System.CLSCompliant(false)]
-      public Builder AddRangePackedFixed64(scg::IEnumerable<ulong> values) {
-        base.AddRange(values, result.packedFixed64_);
-        return this;
-      }
-      public Builder ClearPackedFixed64() {
-        result.packedFixed64_.Clear();
-        return this;
-      }
-      
-      public pbc::IPopsicleList<int> PackedSfixed32List {
-        get { return result.packedSfixed32_; }
-      }
-      public int PackedSfixed32Count {
-        get { return result.PackedSfixed32Count; }
-      }
-      public int GetPackedSfixed32(int index) {
-        return result.GetPackedSfixed32(index);
-      }
-      public Builder SetPackedSfixed32(int index, int value) {
-        result.packedSfixed32_[index] = value;
-        return this;
-      }
-      public Builder AddPackedSfixed32(int value) {
-        result.packedSfixed32_.Add(value);
-        return this;
-      }
-      public Builder AddRangePackedSfixed32(scg::IEnumerable<int> values) {
-        base.AddRange(values, result.packedSfixed32_);
-        return this;
-      }
-      public Builder ClearPackedSfixed32() {
-        result.packedSfixed32_.Clear();
-        return this;
-      }
-      
-      public pbc::IPopsicleList<long> PackedSfixed64List {
-        get { return result.packedSfixed64_; }
-      }
-      public int PackedSfixed64Count {
-        get { return result.PackedSfixed64Count; }
-      }
-      public long GetPackedSfixed64(int index) {
-        return result.GetPackedSfixed64(index);
-      }
-      public Builder SetPackedSfixed64(int index, long value) {
-        result.packedSfixed64_[index] = value;
-        return this;
-      }
-      public Builder AddPackedSfixed64(long value) {
-        result.packedSfixed64_.Add(value);
-        return this;
-      }
-      public Builder AddRangePackedSfixed64(scg::IEnumerable<long> values) {
-        base.AddRange(values, result.packedSfixed64_);
-        return this;
-      }
-      public Builder ClearPackedSfixed64() {
-        result.packedSfixed64_.Clear();
-        return this;
-      }
-      
-      public pbc::IPopsicleList<float> PackedFloatList {
-        get { return result.packedFloat_; }
-      }
-      public int PackedFloatCount {
-        get { return result.PackedFloatCount; }
-      }
-      public float GetPackedFloat(int index) {
-        return result.GetPackedFloat(index);
-      }
-      public Builder SetPackedFloat(int index, float value) {
-        result.packedFloat_[index] = value;
-        return this;
-      }
-      public Builder AddPackedFloat(float value) {
-        result.packedFloat_.Add(value);
-        return this;
-      }
-      public Builder AddRangePackedFloat(scg::IEnumerable<float> values) {
-        base.AddRange(values, result.packedFloat_);
-        return this;
-      }
-      public Builder ClearPackedFloat() {
-        result.packedFloat_.Clear();
-        return this;
-      }
-      
-      public pbc::IPopsicleList<double> PackedDoubleList {
-        get { return result.packedDouble_; }
-      }
-      public int PackedDoubleCount {
-        get { return result.PackedDoubleCount; }
-      }
-      public double GetPackedDouble(int index) {
-        return result.GetPackedDouble(index);
-      }
-      public Builder SetPackedDouble(int index, double value) {
-        result.packedDouble_[index] = value;
-        return this;
-      }
-      public Builder AddPackedDouble(double value) {
-        result.packedDouble_.Add(value);
-        return this;
-      }
-      public Builder AddRangePackedDouble(scg::IEnumerable<double> values) {
-        base.AddRange(values, result.packedDouble_);
-        return this;
-      }
-      public Builder ClearPackedDouble() {
-        result.packedDouble_.Clear();
-        return this;
-      }
-      
-      public pbc::IPopsicleList<bool> PackedBoolList {
-        get { return result.packedBool_; }
-      }
-      public int PackedBoolCount {
-        get { return result.PackedBoolCount; }
-      }
-      public bool GetPackedBool(int index) {
-        return result.GetPackedBool(index);
-      }
-      public Builder SetPackedBool(int index, bool value) {
-        result.packedBool_[index] = value;
-        return this;
-      }
-      public Builder AddPackedBool(bool value) {
-        result.packedBool_.Add(value);
-        return this;
-      }
-      public Builder AddRangePackedBool(scg::IEnumerable<bool> values) {
-        base.AddRange(values, result.packedBool_);
-        return this;
-      }
-      public Builder ClearPackedBool() {
-        result.packedBool_.Clear();
-        return this;
-      }
-      
-      public pbc::IPopsicleList<global::protobuf_unittest.ForeignEnumLite> PackedEnumList {
-        get { return result.packedEnum_; }
-      }
-      public int PackedEnumCount {
-        get { return result.PackedEnumCount; }
-      }
-      public global::protobuf_unittest.ForeignEnumLite GetPackedEnum(int index) {
-        return result.GetPackedEnum(index);
-      }
-      public Builder SetPackedEnum(int index, global::protobuf_unittest.ForeignEnumLite value) {
-        result.packedEnum_[index] = value;
-        return this;
-      }
-      public Builder AddPackedEnum(global::protobuf_unittest.ForeignEnumLite value) {
-        result.packedEnum_.Add(value);
-        return this;
-      }
-      public Builder AddRangePackedEnum(scg::IEnumerable<global::protobuf_unittest.ForeignEnumLite> values) {
-        base.AddRange(values, result.packedEnum_);
-        return this;
-      }
-      public Builder ClearPackedEnum() {
-        result.packedEnum_.Clear();
-        return this;
-      }
-    }
-    static TestPackedTypesLite() {
-      object.ReferenceEquals(global::protobuf_unittest.UnittestLite.Descriptor, null);
-    }
-  }
-  
-  public sealed partial class TestAllExtensionsLite : pb::ExtendableMessage<TestAllExtensionsLite, TestAllExtensionsLite.Builder> {
-    private static readonly TestAllExtensionsLite defaultInstance = new Builder().BuildPartial();
-    public static TestAllExtensionsLite DefaultInstance {
-      get { return defaultInstance; }
-    }
-    
-    public override TestAllExtensionsLite DefaultInstanceForType {
-      get { return defaultInstance; }
-    }
-    
-    protected override TestAllExtensionsLite ThisMessage {
-      get { return this; }
-    }
-    
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::protobuf_unittest.UnittestLite.internal__static_protobuf_unittest_TestAllExtensionsLite__Descriptor; }
-    }
-    
-    protected override pb::FieldAccess.FieldAccessorTable<TestAllExtensionsLite, TestAllExtensionsLite.Builder> InternalFieldAccessors {
-      get { return global::protobuf_unittest.UnittestLite.internal__static_protobuf_unittest_TestAllExtensionsLite__FieldAccessorTable; }
-    }
-    
-    public override bool IsInitialized {
-      get {
-        if (!ExtensionsAreInitialized) return false;
-        return true;
-      }
-    }
-    
-    public override void WriteTo(pb::CodedOutputStream output) {
-      int size = SerializedSize;
-      pb::ExtendableMessage<TestAllExtensionsLite, TestAllExtensionsLite.Builder>.ExtensionWriter extensionWriter = CreateExtensionWriter(this);
-      extensionWriter.WriteUntil(536870912, output);
-      UnknownFields.WriteTo(output);
-    }
-    
-    private int memoizedSerializedSize = -1;
-    public override int SerializedSize {
-      get {
-        int size = memoizedSerializedSize;
-        if (size != -1) return size;
-        
-        size = 0;
-        size += ExtensionsSerializedSize;
-        size += UnknownFields.SerializedSize;
-        memoizedSerializedSize = size;
-        return size;
-      }
-    }
-    
-    public static TestAllExtensionsLite ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestAllExtensionsLite ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestAllExtensionsLite ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestAllExtensionsLite ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestAllExtensionsLite ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestAllExtensionsLite ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static TestAllExtensionsLite ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static TestAllExtensionsLite ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static TestAllExtensionsLite ParseFrom(pb::CodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestAllExtensionsLite ParseFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static Builder CreateBuilder() { return new Builder(); }
-    public override Builder ToBuilder() { return CreateBuilder(this); }
-    public override Builder CreateBuilderForType() { return new Builder(); }
-    public static Builder CreateBuilder(TestAllExtensionsLite prototype) {
-      return (Builder) new Builder().MergeFrom(prototype);
-    }
-    
-    public sealed partial class Builder : pb::ExtendableBuilder<TestAllExtensionsLite, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {}
-      
-      TestAllExtensionsLite result = new TestAllExtensionsLite();
-      
-      protected override TestAllExtensionsLite MessageBeingBuilt {
-        get { return result; }
-      }
-      
-      public override Builder Clear() {
-        result = new TestAllExtensionsLite();
-        return this;
-      }
-      
-      public override Builder Clone() {
-        return new Builder().MergeFrom(result);
-      }
-      
-      public override pbd::MessageDescriptor DescriptorForType {
-        get { return global::protobuf_unittest.TestAllExtensionsLite.Descriptor; }
-      }
-      
-      public override TestAllExtensionsLite DefaultInstanceForType {
-        get { return global::protobuf_unittest.TestAllExtensionsLite.DefaultInstance; }
-      }
-      
-      public override TestAllExtensionsLite BuildPartial() {
-        if (result == null) {
-          throw new global::System.InvalidOperationException("build() has already been called on this Builder");
-        }
-        TestAllExtensionsLite returnMe = result;
-        result = null;
-        return returnMe;
-      }
-      
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is TestAllExtensionsLite) {
-          return MergeFrom((TestAllExtensionsLite) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-      
-      public override Builder MergeFrom(TestAllExtensionsLite other) {
-        if (other == global::protobuf_unittest.TestAllExtensionsLite.DefaultInstance) return this;
-          this.MergeExtensionFields(other);
-        this.MergeUnknownFields(other.UnknownFields);
-        return this;
-      }
-      
-      public override Builder MergeFrom(pb::CodedInputStream input) {
-        return MergeFrom(input, pb::ExtensionRegistry.Empty);
-      }
-      
-      public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-        pb::UnknownFieldSet.Builder unknownFields = null;
-        while (true) {
-          uint tag = input.ReadTag();
-          switch (tag) {
-            case 0: {
-              if (unknownFields != null) {
-                this.UnknownFields = unknownFields.Build();
-              }
-              return this;
-            }
-            default: {
-              if (pb::WireFormat.IsEndGroupTag(tag)) {
-                if (unknownFields != null) {
-                  this.UnknownFields = unknownFields.Build();
-                }
-                return this;
-              }
-              if (unknownFields == null) {
-                unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-              }
-              ParseUnknownField(input, unknownFields, extensionRegistry, tag);
-              break;
-            }
-          }
-        }
-      }
-      
-    }
-    static TestAllExtensionsLite() {
-      object.ReferenceEquals(global::protobuf_unittest.UnittestLite.Descriptor, null);
-    }
-  }
-  
-  public sealed partial class OptionalGroup_extension_lite : pb::GeneratedMessage<OptionalGroup_extension_lite, OptionalGroup_extension_lite.Builder> {
-    private static readonly OptionalGroup_extension_lite defaultInstance = new Builder().BuildPartial();
-    public static OptionalGroup_extension_lite DefaultInstance {
-      get { return defaultInstance; }
-    }
-    
-    public override OptionalGroup_extension_lite DefaultInstanceForType {
-      get { return defaultInstance; }
-    }
-    
-    protected override OptionalGroup_extension_lite ThisMessage {
-      get { return this; }
-    }
-    
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::protobuf_unittest.UnittestLite.internal__static_protobuf_unittest_OptionalGroup_extension_lite__Descriptor; }
-    }
-    
-    protected override pb::FieldAccess.FieldAccessorTable<OptionalGroup_extension_lite, OptionalGroup_extension_lite.Builder> InternalFieldAccessors {
-      get { return global::protobuf_unittest.UnittestLite.internal__static_protobuf_unittest_OptionalGroup_extension_lite__FieldAccessorTable; }
-    }
-    
-    public const int AFieldNumber = 17;
-    private bool hasA;
-    private int a_ = 0;
-    public bool HasA {
-      get { return hasA; }
-    }
-    public int A {
-      get { return a_; }
-    }
-    
-    public override bool IsInitialized {
-      get {
-        return true;
-      }
-    }
-    
-    public override void WriteTo(pb::CodedOutputStream output) {
-      int size = SerializedSize;
-      if (HasA) {
-        output.WriteInt32(17, A);
-      }
-      UnknownFields.WriteTo(output);
-    }
-    
-    private int memoizedSerializedSize = -1;
-    public override int SerializedSize {
-      get {
-        int size = memoizedSerializedSize;
-        if (size != -1) return size;
-        
-        size = 0;
-        if (HasA) {
-          size += pb::CodedOutputStream.ComputeInt32Size(17, A);
-        }
-        size += UnknownFields.SerializedSize;
-        memoizedSerializedSize = size;
-        return size;
-      }
-    }
-    
-    public static OptionalGroup_extension_lite ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static OptionalGroup_extension_lite ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static OptionalGroup_extension_lite ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static OptionalGroup_extension_lite ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static OptionalGroup_extension_lite ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static OptionalGroup_extension_lite ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static OptionalGroup_extension_lite ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static OptionalGroup_extension_lite ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static OptionalGroup_extension_lite ParseFrom(pb::CodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static OptionalGroup_extension_lite ParseFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static Builder CreateBuilder() { return new Builder(); }
-    public override Builder ToBuilder() { return CreateBuilder(this); }
-    public override Builder CreateBuilderForType() { return new Builder(); }
-    public static Builder CreateBuilder(OptionalGroup_extension_lite prototype) {
-      return (Builder) new Builder().MergeFrom(prototype);
-    }
-    
-    public sealed partial class Builder : pb::GeneratedBuilder<OptionalGroup_extension_lite, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {}
-      
-      OptionalGroup_extension_lite result = new OptionalGroup_extension_lite();
-      
-      protected override OptionalGroup_extension_lite MessageBeingBuilt {
-        get { return result; }
-      }
-      
-      public override Builder Clear() {
-        result = new OptionalGroup_extension_lite();
-        return this;
-      }
-      
-      public override Builder Clone() {
-        return new Builder().MergeFrom(result);
-      }
-      
-      public override pbd::MessageDescriptor DescriptorForType {
-        get { return global::protobuf_unittest.OptionalGroup_extension_lite.Descriptor; }
-      }
-      
-      public override OptionalGroup_extension_lite DefaultInstanceForType {
-        get { return global::protobuf_unittest.OptionalGroup_extension_lite.DefaultInstance; }
-      }
-      
-      public override OptionalGroup_extension_lite BuildPartial() {
-        if (result == null) {
-          throw new global::System.InvalidOperationException("build() has already been called on this Builder");
-        }
-        OptionalGroup_extension_lite returnMe = result;
-        result = null;
-        return returnMe;
-      }
-      
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is OptionalGroup_extension_lite) {
-          return MergeFrom((OptionalGroup_extension_lite) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-      
-      public override Builder MergeFrom(OptionalGroup_extension_lite other) {
-        if (other == global::protobuf_unittest.OptionalGroup_extension_lite.DefaultInstance) return this;
-        if (other.HasA) {
-          A = other.A;
-        }
-        this.MergeUnknownFields(other.UnknownFields);
-        return this;
-      }
-      
-      public override Builder MergeFrom(pb::CodedInputStream input) {
-        return MergeFrom(input, pb::ExtensionRegistry.Empty);
-      }
-      
-      public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-        pb::UnknownFieldSet.Builder unknownFields = null;
-        while (true) {
-          uint tag = input.ReadTag();
-          switch (tag) {
-            case 0: {
-              if (unknownFields != null) {
-                this.UnknownFields = unknownFields.Build();
-              }
-              return this;
-            }
-            default: {
-              if (pb::WireFormat.IsEndGroupTag(tag)) {
-                if (unknownFields != null) {
-                  this.UnknownFields = unknownFields.Build();
-                }
-                return this;
-              }
-              if (unknownFields == null) {
-                unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-              }
-              ParseUnknownField(input, unknownFields, extensionRegistry, tag);
-              break;
-            }
-            case 136: {
-              A = input.ReadInt32();
-              break;
-            }
-          }
-        }
-      }
-      
-      
-      public bool HasA {
-        get { return result.HasA; }
-      }
-      public int A {
-        get { return result.A; }
-        set { SetA(value); }
-      }
-      public Builder SetA(int value) {
-        result.hasA = true;
-        result.a_ = value;
-        return this;
-      }
-      public Builder ClearA() {
-        result.hasA = false;
-        result.a_ = 0;
-        return this;
-      }
-    }
-    static OptionalGroup_extension_lite() {
-      object.ReferenceEquals(global::protobuf_unittest.UnittestLite.Descriptor, null);
-    }
-  }
-  
-  public sealed partial class RepeatedGroup_extension_lite : pb::GeneratedMessage<RepeatedGroup_extension_lite, RepeatedGroup_extension_lite.Builder> {
-    private static readonly RepeatedGroup_extension_lite defaultInstance = new Builder().BuildPartial();
-    public static RepeatedGroup_extension_lite DefaultInstance {
-      get { return defaultInstance; }
-    }
-    
-    public override RepeatedGroup_extension_lite DefaultInstanceForType {
-      get { return defaultInstance; }
-    }
-    
-    protected override RepeatedGroup_extension_lite ThisMessage {
-      get { return this; }
-    }
-    
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::protobuf_unittest.UnittestLite.internal__static_protobuf_unittest_RepeatedGroup_extension_lite__Descriptor; }
-    }
-    
-    protected override pb::FieldAccess.FieldAccessorTable<RepeatedGroup_extension_lite, RepeatedGroup_extension_lite.Builder> InternalFieldAccessors {
-      get { return global::protobuf_unittest.UnittestLite.internal__static_protobuf_unittest_RepeatedGroup_extension_lite__FieldAccessorTable; }
-    }
-    
-    public const int AFieldNumber = 47;
-    private bool hasA;
-    private int a_ = 0;
-    public bool HasA {
-      get { return hasA; }
-    }
-    public int A {
-      get { return a_; }
-    }
-    
-    public override bool IsInitialized {
-      get {
-        return true;
-      }
-    }
-    
-    public override void WriteTo(pb::CodedOutputStream output) {
-      int size = SerializedSize;
-      if (HasA) {
-        output.WriteInt32(47, A);
-      }
-      UnknownFields.WriteTo(output);
-    }
-    
-    private int memoizedSerializedSize = -1;
-    public override int SerializedSize {
-      get {
-        int size = memoizedSerializedSize;
-        if (size != -1) return size;
-        
-        size = 0;
-        if (HasA) {
-          size += pb::CodedOutputStream.ComputeInt32Size(47, A);
-        }
-        size += UnknownFields.SerializedSize;
-        memoizedSerializedSize = size;
-        return size;
-      }
-    }
-    
-    public static RepeatedGroup_extension_lite ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static RepeatedGroup_extension_lite ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static RepeatedGroup_extension_lite ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static RepeatedGroup_extension_lite ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static RepeatedGroup_extension_lite ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static RepeatedGroup_extension_lite ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static RepeatedGroup_extension_lite ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static RepeatedGroup_extension_lite ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static RepeatedGroup_extension_lite ParseFrom(pb::CodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static RepeatedGroup_extension_lite ParseFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static Builder CreateBuilder() { return new Builder(); }
-    public override Builder ToBuilder() { return CreateBuilder(this); }
-    public override Builder CreateBuilderForType() { return new Builder(); }
-    public static Builder CreateBuilder(RepeatedGroup_extension_lite prototype) {
-      return (Builder) new Builder().MergeFrom(prototype);
-    }
-    
-    public sealed partial class Builder : pb::GeneratedBuilder<RepeatedGroup_extension_lite, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {}
-      
-      RepeatedGroup_extension_lite result = new RepeatedGroup_extension_lite();
-      
-      protected override RepeatedGroup_extension_lite MessageBeingBuilt {
-        get { return result; }
-      }
-      
-      public override Builder Clear() {
-        result = new RepeatedGroup_extension_lite();
-        return this;
-      }
-      
-      public override Builder Clone() {
-        return new Builder().MergeFrom(result);
-      }
-      
-      public override pbd::MessageDescriptor DescriptorForType {
-        get { return global::protobuf_unittest.RepeatedGroup_extension_lite.Descriptor; }
-      }
-      
-      public override RepeatedGroup_extension_lite DefaultInstanceForType {
-        get { return global::protobuf_unittest.RepeatedGroup_extension_lite.DefaultInstance; }
-      }
-      
-      public override RepeatedGroup_extension_lite BuildPartial() {
-        if (result == null) {
-          throw new global::System.InvalidOperationException("build() has already been called on this Builder");
-        }
-        RepeatedGroup_extension_lite returnMe = result;
-        result = null;
-        return returnMe;
-      }
-      
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is RepeatedGroup_extension_lite) {
-          return MergeFrom((RepeatedGroup_extension_lite) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-      
-      public override Builder MergeFrom(RepeatedGroup_extension_lite other) {
-        if (other == global::protobuf_unittest.RepeatedGroup_extension_lite.DefaultInstance) return this;
-        if (other.HasA) {
-          A = other.A;
-        }
-        this.MergeUnknownFields(other.UnknownFields);
-        return this;
-      }
-      
-      public override Builder MergeFrom(pb::CodedInputStream input) {
-        return MergeFrom(input, pb::ExtensionRegistry.Empty);
-      }
-      
-      public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-        pb::UnknownFieldSet.Builder unknownFields = null;
-        while (true) {
-          uint tag = input.ReadTag();
-          switch (tag) {
-            case 0: {
-              if (unknownFields != null) {
-                this.UnknownFields = unknownFields.Build();
-              }
-              return this;
-            }
-            default: {
-              if (pb::WireFormat.IsEndGroupTag(tag)) {
-                if (unknownFields != null) {
-                  this.UnknownFields = unknownFields.Build();
-                }
-                return this;
-              }
-              if (unknownFields == null) {
-                unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-              }
-              ParseUnknownField(input, unknownFields, extensionRegistry, tag);
-              break;
-            }
-            case 376: {
-              A = input.ReadInt32();
-              break;
-            }
-          }
-        }
-      }
-      
-      
-      public bool HasA {
-        get { return result.HasA; }
-      }
-      public int A {
-        get { return result.A; }
-        set { SetA(value); }
-      }
-      public Builder SetA(int value) {
-        result.hasA = true;
-        result.a_ = value;
-        return this;
-      }
-      public Builder ClearA() {
-        result.hasA = false;
-        result.a_ = 0;
-        return this;
-      }
-    }
-    static RepeatedGroup_extension_lite() {
-      object.ReferenceEquals(global::protobuf_unittest.UnittestLite.Descriptor, null);
-    }
-  }
-  
-  public sealed partial class TestPackedExtensionsLite : pb::ExtendableMessage<TestPackedExtensionsLite, TestPackedExtensionsLite.Builder> {
-    private static readonly TestPackedExtensionsLite defaultInstance = new Builder().BuildPartial();
-    public static TestPackedExtensionsLite DefaultInstance {
-      get { return defaultInstance; }
-    }
-    
-    public override TestPackedExtensionsLite DefaultInstanceForType {
-      get { return defaultInstance; }
-    }
-    
-    protected override TestPackedExtensionsLite ThisMessage {
-      get { return this; }
-    }
-    
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::protobuf_unittest.UnittestLite.internal__static_protobuf_unittest_TestPackedExtensionsLite__Descriptor; }
-    }
-    
-    protected override pb::FieldAccess.FieldAccessorTable<TestPackedExtensionsLite, TestPackedExtensionsLite.Builder> InternalFieldAccessors {
-      get { return global::protobuf_unittest.UnittestLite.internal__static_protobuf_unittest_TestPackedExtensionsLite__FieldAccessorTable; }
-    }
-    
-    public override bool IsInitialized {
-      get {
-        if (!ExtensionsAreInitialized) return false;
-        return true;
-      }
-    }
-    
-    public override void WriteTo(pb::CodedOutputStream output) {
-      int size = SerializedSize;
-      pb::ExtendableMessage<TestPackedExtensionsLite, TestPackedExtensionsLite.Builder>.ExtensionWriter extensionWriter = CreateExtensionWriter(this);
-      extensionWriter.WriteUntil(536870912, output);
-      UnknownFields.WriteTo(output);
-    }
-    
-    private int memoizedSerializedSize = -1;
-    public override int SerializedSize {
-      get {
-        int size = memoizedSerializedSize;
-        if (size != -1) return size;
-        
-        size = 0;
-        size += ExtensionsSerializedSize;
-        size += UnknownFields.SerializedSize;
-        memoizedSerializedSize = size;
-        return size;
-      }
-    }
-    
-    public static TestPackedExtensionsLite ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestPackedExtensionsLite ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestPackedExtensionsLite ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestPackedExtensionsLite ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestPackedExtensionsLite ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestPackedExtensionsLite ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static TestPackedExtensionsLite ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static TestPackedExtensionsLite ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static TestPackedExtensionsLite ParseFrom(pb::CodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestPackedExtensionsLite ParseFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static Builder CreateBuilder() { return new Builder(); }
-    public override Builder ToBuilder() { return CreateBuilder(this); }
-    public override Builder CreateBuilderForType() { return new Builder(); }
-    public static Builder CreateBuilder(TestPackedExtensionsLite prototype) {
-      return (Builder) new Builder().MergeFrom(prototype);
-    }
-    
-    public sealed partial class Builder : pb::ExtendableBuilder<TestPackedExtensionsLite, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {}
-      
-      TestPackedExtensionsLite result = new TestPackedExtensionsLite();
-      
-      protected override TestPackedExtensionsLite MessageBeingBuilt {
-        get { return result; }
-      }
-      
-      public override Builder Clear() {
-        result = new TestPackedExtensionsLite();
-        return this;
-      }
-      
-      public override Builder Clone() {
-        return new Builder().MergeFrom(result);
-      }
-      
-      public override pbd::MessageDescriptor DescriptorForType {
-        get { return global::protobuf_unittest.TestPackedExtensionsLite.Descriptor; }
-      }
-      
-      public override TestPackedExtensionsLite DefaultInstanceForType {
-        get { return global::protobuf_unittest.TestPackedExtensionsLite.DefaultInstance; }
-      }
-      
-      public override TestPackedExtensionsLite BuildPartial() {
-        if (result == null) {
-          throw new global::System.InvalidOperationException("build() has already been called on this Builder");
-        }
-        TestPackedExtensionsLite returnMe = result;
-        result = null;
-        return returnMe;
-      }
-      
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is TestPackedExtensionsLite) {
-          return MergeFrom((TestPackedExtensionsLite) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-      
-      public override Builder MergeFrom(TestPackedExtensionsLite other) {
-        if (other == global::protobuf_unittest.TestPackedExtensionsLite.DefaultInstance) return this;
-          this.MergeExtensionFields(other);
-        this.MergeUnknownFields(other.UnknownFields);
-        return this;
-      }
-      
-      public override Builder MergeFrom(pb::CodedInputStream input) {
-        return MergeFrom(input, pb::ExtensionRegistry.Empty);
-      }
-      
-      public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-        pb::UnknownFieldSet.Builder unknownFields = null;
-        while (true) {
-          uint tag = input.ReadTag();
-          switch (tag) {
-            case 0: {
-              if (unknownFields != null) {
-                this.UnknownFields = unknownFields.Build();
-              }
-              return this;
-            }
-            default: {
-              if (pb::WireFormat.IsEndGroupTag(tag)) {
-                if (unknownFields != null) {
-                  this.UnknownFields = unknownFields.Build();
-                }
-                return this;
-              }
-              if (unknownFields == null) {
-                unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-              }
-              ParseUnknownField(input, unknownFields, extensionRegistry, tag);
-              break;
-            }
-          }
-        }
-      }
-      
-    }
-    static TestPackedExtensionsLite() {
-      object.ReferenceEquals(global::protobuf_unittest.UnittestLite.Descriptor, null);
-    }
-  }
-  
-  public sealed partial class TestNestedExtensionLite : pb::GeneratedMessage<TestNestedExtensionLite, TestNestedExtensionLite.Builder> {
-    private static readonly TestNestedExtensionLite defaultInstance = new Builder().BuildPartial();
-    public static TestNestedExtensionLite DefaultInstance {
-      get { return defaultInstance; }
-    }
-    
-    public override TestNestedExtensionLite DefaultInstanceForType {
-      get { return defaultInstance; }
-    }
-    
-    protected override TestNestedExtensionLite ThisMessage {
-      get { return this; }
-    }
-    
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::protobuf_unittest.UnittestLite.internal__static_protobuf_unittest_TestNestedExtensionLite__Descriptor; }
-    }
-    
-    protected override pb::FieldAccess.FieldAccessorTable<TestNestedExtensionLite, TestNestedExtensionLite.Builder> InternalFieldAccessors {
-      get { return global::protobuf_unittest.UnittestLite.internal__static_protobuf_unittest_TestNestedExtensionLite__FieldAccessorTable; }
-    }
-    
-    public const int NestedExtensionFieldNumber = 12345;
-    public static pb::GeneratedExtensionBase<int> NestedExtension;
-    public override bool IsInitialized {
-      get {
-        return true;
-      }
-    }
-    
-    public override void WriteTo(pb::CodedOutputStream output) {
-      int size = SerializedSize;
-      UnknownFields.WriteTo(output);
-    }
-    
-    private int memoizedSerializedSize = -1;
-    public override int SerializedSize {
-      get {
-        int size = memoizedSerializedSize;
-        if (size != -1) return size;
-        
-        size = 0;
-        size += UnknownFields.SerializedSize;
-        memoizedSerializedSize = size;
-        return size;
-      }
-    }
-    
-    public static TestNestedExtensionLite ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestNestedExtensionLite ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestNestedExtensionLite ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestNestedExtensionLite ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestNestedExtensionLite ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestNestedExtensionLite ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static TestNestedExtensionLite ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static TestNestedExtensionLite ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static TestNestedExtensionLite ParseFrom(pb::CodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestNestedExtensionLite ParseFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static Builder CreateBuilder() { return new Builder(); }
-    public override Builder ToBuilder() { return CreateBuilder(this); }
-    public override Builder CreateBuilderForType() { return new Builder(); }
-    public static Builder CreateBuilder(TestNestedExtensionLite prototype) {
-      return (Builder) new Builder().MergeFrom(prototype);
-    }
-    
-    public sealed partial class Builder : pb::GeneratedBuilder<TestNestedExtensionLite, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {}
-      
-      TestNestedExtensionLite result = new TestNestedExtensionLite();
-      
-      protected override TestNestedExtensionLite MessageBeingBuilt {
-        get { return result; }
-      }
-      
-      public override Builder Clear() {
-        result = new TestNestedExtensionLite();
-        return this;
-      }
-      
-      public override Builder Clone() {
-        return new Builder().MergeFrom(result);
-      }
-      
-      public override pbd::MessageDescriptor DescriptorForType {
-        get { return global::protobuf_unittest.TestNestedExtensionLite.Descriptor; }
-      }
-      
-      public override TestNestedExtensionLite DefaultInstanceForType {
-        get { return global::protobuf_unittest.TestNestedExtensionLite.DefaultInstance; }
-      }
-      
-      public override TestNestedExtensionLite BuildPartial() {
-        if (result == null) {
-          throw new global::System.InvalidOperationException("build() has already been called on this Builder");
-        }
-        TestNestedExtensionLite returnMe = result;
-        result = null;
-        return returnMe;
-      }
-      
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is TestNestedExtensionLite) {
-          return MergeFrom((TestNestedExtensionLite) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-      
-      public override Builder MergeFrom(TestNestedExtensionLite other) {
-        if (other == global::protobuf_unittest.TestNestedExtensionLite.DefaultInstance) return this;
-        this.MergeUnknownFields(other.UnknownFields);
-        return this;
-      }
-      
-      public override Builder MergeFrom(pb::CodedInputStream input) {
-        return MergeFrom(input, pb::ExtensionRegistry.Empty);
-      }
-      
-      public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-        pb::UnknownFieldSet.Builder unknownFields = null;
-        while (true) {
-          uint tag = input.ReadTag();
-          switch (tag) {
-            case 0: {
-              if (unknownFields != null) {
-                this.UnknownFields = unknownFields.Build();
-              }
-              return this;
-            }
-            default: {
-              if (pb::WireFormat.IsEndGroupTag(tag)) {
-                if (unknownFields != null) {
-                  this.UnknownFields = unknownFields.Build();
-                }
-                return this;
-              }
-              if (unknownFields == null) {
-                unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-              }
-              ParseUnknownField(input, unknownFields, extensionRegistry, tag);
-              break;
-            }
-          }
-        }
-      }
-      
-    }
-    static TestNestedExtensionLite() {
-      object.ReferenceEquals(global::protobuf_unittest.UnittestLite.Descriptor, null);
-    }
-  }
-  
-  public sealed partial class TestDeprecatedLite : pb::GeneratedMessage<TestDeprecatedLite, TestDeprecatedLite.Builder> {
-    private static readonly TestDeprecatedLite defaultInstance = new Builder().BuildPartial();
-    public static TestDeprecatedLite DefaultInstance {
-      get { return defaultInstance; }
-    }
-    
-    public override TestDeprecatedLite DefaultInstanceForType {
-      get { return defaultInstance; }
-    }
-    
-    protected override TestDeprecatedLite ThisMessage {
-      get { return this; }
-    }
-    
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::protobuf_unittest.UnittestLite.internal__static_protobuf_unittest_TestDeprecatedLite__Descriptor; }
-    }
-    
-    protected override pb::FieldAccess.FieldAccessorTable<TestDeprecatedLite, TestDeprecatedLite.Builder> InternalFieldAccessors {
-      get { return global::protobuf_unittest.UnittestLite.internal__static_protobuf_unittest_TestDeprecatedLite__FieldAccessorTable; }
-    }
-    
-    public const int DeprecatedFieldFieldNumber = 1;
-    private bool hasDeprecatedField;
-    private int deprecatedField_ = 0;
-    public bool HasDeprecatedField {
-      get { return hasDeprecatedField; }
-    }
-    public int DeprecatedField {
-      get { return deprecatedField_; }
-    }
-    
-    public override bool IsInitialized {
-      get {
-        return true;
-      }
-    }
-    
-    public override void WriteTo(pb::CodedOutputStream output) {
-      int size = SerializedSize;
-      if (HasDeprecatedField) {
-        output.WriteInt32(1, DeprecatedField);
-      }
-      UnknownFields.WriteTo(output);
-    }
-    
-    private int memoizedSerializedSize = -1;
-    public override int SerializedSize {
-      get {
-        int size = memoizedSerializedSize;
-        if (size != -1) return size;
-        
-        size = 0;
-        if (HasDeprecatedField) {
-          size += pb::CodedOutputStream.ComputeInt32Size(1, DeprecatedField);
-        }
-        size += UnknownFields.SerializedSize;
-        memoizedSerializedSize = size;
-        return size;
-      }
-    }
-    
-    public static TestDeprecatedLite ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestDeprecatedLite ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestDeprecatedLite ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestDeprecatedLite ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestDeprecatedLite ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestDeprecatedLite ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static TestDeprecatedLite ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static TestDeprecatedLite ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static TestDeprecatedLite ParseFrom(pb::CodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestDeprecatedLite ParseFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static Builder CreateBuilder() { return new Builder(); }
-    public override Builder ToBuilder() { return CreateBuilder(this); }
-    public override Builder CreateBuilderForType() { return new Builder(); }
-    public static Builder CreateBuilder(TestDeprecatedLite prototype) {
-      return (Builder) new Builder().MergeFrom(prototype);
-    }
-    
-    public sealed partial class Builder : pb::GeneratedBuilder<TestDeprecatedLite, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {}
-      
-      TestDeprecatedLite result = new TestDeprecatedLite();
-      
-      protected override TestDeprecatedLite MessageBeingBuilt {
-        get { return result; }
-      }
-      
-      public override Builder Clear() {
-        result = new TestDeprecatedLite();
-        return this;
-      }
-      
-      public override Builder Clone() {
-        return new Builder().MergeFrom(result);
-      }
-      
-      public override pbd::MessageDescriptor DescriptorForType {
-        get { return global::protobuf_unittest.TestDeprecatedLite.Descriptor; }
-      }
-      
-      public override TestDeprecatedLite DefaultInstanceForType {
-        get { return global::protobuf_unittest.TestDeprecatedLite.DefaultInstance; }
-      }
-      
-      public override TestDeprecatedLite BuildPartial() {
-        if (result == null) {
-          throw new global::System.InvalidOperationException("build() has already been called on this Builder");
-        }
-        TestDeprecatedLite returnMe = result;
-        result = null;
-        return returnMe;
-      }
-      
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is TestDeprecatedLite) {
-          return MergeFrom((TestDeprecatedLite) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-      
-      public override Builder MergeFrom(TestDeprecatedLite other) {
-        if (other == global::protobuf_unittest.TestDeprecatedLite.DefaultInstance) return this;
-        if (other.HasDeprecatedField) {
-          DeprecatedField = other.DeprecatedField;
-        }
-        this.MergeUnknownFields(other.UnknownFields);
-        return this;
-      }
-      
-      public override Builder MergeFrom(pb::CodedInputStream input) {
-        return MergeFrom(input, pb::ExtensionRegistry.Empty);
-      }
-      
-      public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-        pb::UnknownFieldSet.Builder unknownFields = null;
-        while (true) {
-          uint tag = input.ReadTag();
-          switch (tag) {
-            case 0: {
-              if (unknownFields != null) {
-                this.UnknownFields = unknownFields.Build();
-              }
-              return this;
-            }
-            default: {
-              if (pb::WireFormat.IsEndGroupTag(tag)) {
-                if (unknownFields != null) {
-                  this.UnknownFields = unknownFields.Build();
-                }
-                return this;
-              }
-              if (unknownFields == null) {
-                unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-              }
-              ParseUnknownField(input, unknownFields, extensionRegistry, tag);
-              break;
-            }
-            case 8: {
-              DeprecatedField = input.ReadInt32();
-              break;
-            }
-          }
-        }
-      }
-      
-      
-      public bool HasDeprecatedField {
-        get { return result.HasDeprecatedField; }
-      }
-      public int DeprecatedField {
-        get { return result.DeprecatedField; }
-        set { SetDeprecatedField(value); }
-      }
-      public Builder SetDeprecatedField(int value) {
-        result.hasDeprecatedField = true;
-        result.deprecatedField_ = value;
-        return this;
-      }
-      public Builder ClearDeprecatedField() {
-        result.hasDeprecatedField = false;
-        result.deprecatedField_ = 0;
-        return this;
-      }
-    }
-    static TestDeprecatedLite() {
-      object.ReferenceEquals(global::protobuf_unittest.UnittestLite.Descriptor, null);
-    }
-  }
-  
-  #endregion
-  
-}

Một số tệp đã không được hiển thị bởi vì quá nhiều tập tin thay đổi trong này khác