Ver código fonte

Full rutime working, Lite generator and runtime building but untested

csharptest 15 anos atrás
pai
commit
980ba8dcd4
39 arquivos alterados com 1971 adições e 8339 exclusões
  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; }

Diferenças do arquivo suprimidas por serem muito extensas
+ 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
-  
-}

Alguns arquivos não foram mostrados porque muitos arquivos mudaram nesse diff