Adding the types that were removed from unittest.proto and unittest_lite.proto
diff --git a/src/ProtocolBuffersLite.Test/TestProtos/UnitTestExtrasLiteProtoFile.cs b/src/ProtocolBuffersLite.Test/TestProtos/UnitTestExtrasLiteProtoFile.cs
index e3df232..9b670b1 100644
--- a/src/ProtocolBuffersLite.Test/TestProtos/UnitTestExtrasLiteProtoFile.cs
+++ b/src/ProtocolBuffersLite.Test/TestProtos/UnitTestExtrasLiteProtoFile.cs
@@ -16,11 +16,57 @@
     #region Extension registration

     public static void RegisterAllExtensions(pb::ExtensionRegistry registry) {

       registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestExtrasLiteProtoFile.EmployeeIdLite);

+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestExtrasLiteProtoFile.UnpackedInt32ExtensionLite);

+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestExtrasLiteProtoFile.UnpackedInt64ExtensionLite);

+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestExtrasLiteProtoFile.UnpackedUint32ExtensionLite);

+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestExtrasLiteProtoFile.UnpackedUint64ExtensionLite);

+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestExtrasLiteProtoFile.UnpackedSint32ExtensionLite);

+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestExtrasLiteProtoFile.UnpackedSint64ExtensionLite);

+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestExtrasLiteProtoFile.UnpackedFixed32ExtensionLite);

+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestExtrasLiteProtoFile.UnpackedFixed64ExtensionLite);

+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestExtrasLiteProtoFile.UnpackedSfixed32ExtensionLite);

+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestExtrasLiteProtoFile.UnpackedSfixed64ExtensionLite);

+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestExtrasLiteProtoFile.UnpackedFloatExtensionLite);

+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestExtrasLiteProtoFile.UnpackedDoubleExtensionLite);

+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestExtrasLiteProtoFile.UnpackedBoolExtensionLite);

+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestExtrasLiteProtoFile.UnpackedEnumExtensionLite);

     }

     #endregion

     #region Extensions

     public const int EmployeeIdLiteFieldNumber = 126;

     public static pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestInteropPersonLite, global::Google.ProtocolBuffers.TestProtos.TestInteropEmployeeIdLite> EmployeeIdLite;

+    public const int UnpackedInt32ExtensionLiteFieldNumber = 90;

+    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, int> UnpackedInt32ExtensionLite;

+    public const int UnpackedInt64ExtensionLiteFieldNumber = 91;

+    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, long> UnpackedInt64ExtensionLite;

+    public const int UnpackedUint32ExtensionLiteFieldNumber = 92;

+    [global::System.CLSCompliant(false)]

+    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, uint> UnpackedUint32ExtensionLite;

+    public const int UnpackedUint64ExtensionLiteFieldNumber = 93;

+    [global::System.CLSCompliant(false)]

+    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, ulong> UnpackedUint64ExtensionLite;

+    public const int UnpackedSint32ExtensionLiteFieldNumber = 94;

+    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, int> UnpackedSint32ExtensionLite;

+    public const int UnpackedSint64ExtensionLiteFieldNumber = 95;

+    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, long> UnpackedSint64ExtensionLite;

+    public const int UnpackedFixed32ExtensionLiteFieldNumber = 96;

+    [global::System.CLSCompliant(false)]

+    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, uint> UnpackedFixed32ExtensionLite;

+    public const int UnpackedFixed64ExtensionLiteFieldNumber = 97;

+    [global::System.CLSCompliant(false)]

+    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, ulong> UnpackedFixed64ExtensionLite;

+    public const int UnpackedSfixed32ExtensionLiteFieldNumber = 98;

+    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, int> UnpackedSfixed32ExtensionLite;

+    public const int UnpackedSfixed64ExtensionLiteFieldNumber = 99;

+    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, long> UnpackedSfixed64ExtensionLite;

+    public const int UnpackedFloatExtensionLiteFieldNumber = 100;

+    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, float> UnpackedFloatExtensionLite;

+    public const int UnpackedDoubleExtensionLiteFieldNumber = 101;

+    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, double> UnpackedDoubleExtensionLite;

+    public const int UnpackedBoolExtensionLiteFieldNumber = 102;

+    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, bool> UnpackedBoolExtensionLite;

+    public const int UnpackedEnumExtensionLiteFieldNumber = 103;

+    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, global::Google.ProtocolBuffers.TestProtos.UnpackedTypesForeignEnumLite> UnpackedEnumExtensionLite;

     #endregion

     

     #region Static variables

@@ -38,6 +84,132 @@
           null,

           global::Google.ProtocolBuffers.TestProtos.UnitTestExtrasLiteProtoFile.EmployeeIdLiteFieldNumber,

           pbd::FieldType.Message);

+      global::Google.ProtocolBuffers.TestProtos.UnitTestExtrasLiteProtoFile.UnpackedInt32ExtensionLite = 

+        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, int>(

+          "protobuf_unittest_extra.unpacked_int32_extension_lite",

+          global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite.DefaultInstance,

+          null,

+          null,

+          global::Google.ProtocolBuffers.TestProtos.UnitTestExtrasLiteProtoFile.UnpackedInt32ExtensionLiteFieldNumber,

+          pbd::FieldType.Int32,

+          false);

+      global::Google.ProtocolBuffers.TestProtos.UnitTestExtrasLiteProtoFile.UnpackedInt64ExtensionLite = 

+        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, long>(

+          "protobuf_unittest_extra.unpacked_int64_extension_lite",

+          global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite.DefaultInstance,

+          null,

+          null,

+          global::Google.ProtocolBuffers.TestProtos.UnitTestExtrasLiteProtoFile.UnpackedInt64ExtensionLiteFieldNumber,

+          pbd::FieldType.Int64,

+          false);

+      global::Google.ProtocolBuffers.TestProtos.UnitTestExtrasLiteProtoFile.UnpackedUint32ExtensionLite = 

+        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, uint>(

+          "protobuf_unittest_extra.unpacked_uint32_extension_lite",

+          global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite.DefaultInstance,

+          null,

+          null,

+          global::Google.ProtocolBuffers.TestProtos.UnitTestExtrasLiteProtoFile.UnpackedUint32ExtensionLiteFieldNumber,

+          pbd::FieldType.UInt32,

+          false);

+      global::Google.ProtocolBuffers.TestProtos.UnitTestExtrasLiteProtoFile.UnpackedUint64ExtensionLite = 

+        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, ulong>(

+          "protobuf_unittest_extra.unpacked_uint64_extension_lite",

+          global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite.DefaultInstance,

+          null,

+          null,

+          global::Google.ProtocolBuffers.TestProtos.UnitTestExtrasLiteProtoFile.UnpackedUint64ExtensionLiteFieldNumber,

+          pbd::FieldType.UInt64,

+          false);

+      global::Google.ProtocolBuffers.TestProtos.UnitTestExtrasLiteProtoFile.UnpackedSint32ExtensionLite = 

+        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, int>(

+          "protobuf_unittest_extra.unpacked_sint32_extension_lite",

+          global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite.DefaultInstance,

+          null,

+          null,

+          global::Google.ProtocolBuffers.TestProtos.UnitTestExtrasLiteProtoFile.UnpackedSint32ExtensionLiteFieldNumber,

+          pbd::FieldType.SInt32,

+          false);

+      global::Google.ProtocolBuffers.TestProtos.UnitTestExtrasLiteProtoFile.UnpackedSint64ExtensionLite = 

+        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, long>(

+          "protobuf_unittest_extra.unpacked_sint64_extension_lite",

+          global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite.DefaultInstance,

+          null,

+          null,

+          global::Google.ProtocolBuffers.TestProtos.UnitTestExtrasLiteProtoFile.UnpackedSint64ExtensionLiteFieldNumber,

+          pbd::FieldType.SInt64,

+          false);

+      global::Google.ProtocolBuffers.TestProtos.UnitTestExtrasLiteProtoFile.UnpackedFixed32ExtensionLite = 

+        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, uint>(

+          "protobuf_unittest_extra.unpacked_fixed32_extension_lite",

+          global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite.DefaultInstance,

+          null,

+          null,

+          global::Google.ProtocolBuffers.TestProtos.UnitTestExtrasLiteProtoFile.UnpackedFixed32ExtensionLiteFieldNumber,

+          pbd::FieldType.Fixed32,

+          false);

+      global::Google.ProtocolBuffers.TestProtos.UnitTestExtrasLiteProtoFile.UnpackedFixed64ExtensionLite = 

+        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, ulong>(

+          "protobuf_unittest_extra.unpacked_fixed64_extension_lite",

+          global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite.DefaultInstance,

+          null,

+          null,

+          global::Google.ProtocolBuffers.TestProtos.UnitTestExtrasLiteProtoFile.UnpackedFixed64ExtensionLiteFieldNumber,

+          pbd::FieldType.Fixed64,

+          false);

+      global::Google.ProtocolBuffers.TestProtos.UnitTestExtrasLiteProtoFile.UnpackedSfixed32ExtensionLite = 

+        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, int>(

+          "protobuf_unittest_extra.unpacked_sfixed32_extension_lite",

+          global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite.DefaultInstance,

+          null,

+          null,

+          global::Google.ProtocolBuffers.TestProtos.UnitTestExtrasLiteProtoFile.UnpackedSfixed32ExtensionLiteFieldNumber,

+          pbd::FieldType.SFixed32,

+          false);

+      global::Google.ProtocolBuffers.TestProtos.UnitTestExtrasLiteProtoFile.UnpackedSfixed64ExtensionLite = 

+        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, long>(

+          "protobuf_unittest_extra.unpacked_sfixed64_extension_lite",

+          global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite.DefaultInstance,

+          null,

+          null,

+          global::Google.ProtocolBuffers.TestProtos.UnitTestExtrasLiteProtoFile.UnpackedSfixed64ExtensionLiteFieldNumber,

+          pbd::FieldType.SFixed64,

+          false);

+      global::Google.ProtocolBuffers.TestProtos.UnitTestExtrasLiteProtoFile.UnpackedFloatExtensionLite = 

+        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, float>(

+          "protobuf_unittest_extra.unpacked_float_extension_lite",

+          global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite.DefaultInstance,

+          null,

+          null,

+          global::Google.ProtocolBuffers.TestProtos.UnitTestExtrasLiteProtoFile.UnpackedFloatExtensionLiteFieldNumber,

+          pbd::FieldType.Float,

+          false);

+      global::Google.ProtocolBuffers.TestProtos.UnitTestExtrasLiteProtoFile.UnpackedDoubleExtensionLite = 

+        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, double>(

+          "protobuf_unittest_extra.unpacked_double_extension_lite",

+          global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite.DefaultInstance,

+          null,

+          null,

+          global::Google.ProtocolBuffers.TestProtos.UnitTestExtrasLiteProtoFile.UnpackedDoubleExtensionLiteFieldNumber,

+          pbd::FieldType.Double,

+          false);

+      global::Google.ProtocolBuffers.TestProtos.UnitTestExtrasLiteProtoFile.UnpackedBoolExtensionLite = 

+        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, bool>(

+          "protobuf_unittest_extra.unpacked_bool_extension_lite",

+          global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite.DefaultInstance,

+          null,

+          null,

+          global::Google.ProtocolBuffers.TestProtos.UnitTestExtrasLiteProtoFile.UnpackedBoolExtensionLiteFieldNumber,

+          pbd::FieldType.Bool,

+          false);

+      global::Google.ProtocolBuffers.TestProtos.UnitTestExtrasLiteProtoFile.UnpackedEnumExtensionLite = 

+        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, global::Google.ProtocolBuffers.TestProtos.UnpackedTypesForeignEnumLite>(

+          "protobuf_unittest_extra.unpacked_enum_extension_lite",

+          global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite.DefaultInstance,

+          null,

+          new EnumLiteMap<global::Google.ProtocolBuffers.TestProtos.UnpackedTypesForeignEnumLite>(),

+          global::Google.ProtocolBuffers.TestProtos.UnitTestExtrasLiteProtoFile.UnpackedEnumExtensionLiteFieldNumber,

+          pbd::FieldType.Enum,

+          false);

     }

     #endregion

     

@@ -52,6 +224,14 @@
     EXLITE_BAZ = 9,

   }

   

+  [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]

+  [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")]

+  public enum UnpackedTypesForeignEnumLite {

+    FOREIGN_LITE_FOO = 4,

+    FOREIGN_LITE_BAR = 5,

+    FOREIGN_LITE_BAZ = 6,

+  }

+  

   #endregion

   

   #region Messages

@@ -2038,6 +2218,1425 @@
     }

   }

   

+  [global::System.SerializableAttribute()]

+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]

+  [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]

+  [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")]

+  public sealed partial class TestUnpackedExtensionsLite : pb::ExtendableMessageLite<TestUnpackedExtensionsLite, TestUnpackedExtensionsLite.Builder> {

+    private TestUnpackedExtensionsLite() { }

+    private static readonly TestUnpackedExtensionsLite defaultInstance = new TestUnpackedExtensionsLite().MakeReadOnly();

+    private static readonly string[] _testUnpackedExtensionsLiteFieldNames = new string[] {  };

+    private static readonly uint[] _testUnpackedExtensionsLiteFieldTags = new uint[] {  };

+    public static TestUnpackedExtensionsLite DefaultInstance {

+      get { return defaultInstance; }

+    }

+    

+    public override TestUnpackedExtensionsLite DefaultInstanceForType {

+      get { return DefaultInstance; }

+    }

+    

+    protected override TestUnpackedExtensionsLite ThisMessage {

+      get { return this; }

+    }

+    

+    public override bool IsInitialized {

+      get {

+        if (!ExtensionsAreInitialized) return false;

+        return true;

+      }

+    }

+    

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

+      int size = SerializedSize;

+      string[] field_names = _testUnpackedExtensionsLiteFieldNames;

+      pb::ExtendableMessageLite<TestUnpackedExtensionsLite, TestUnpackedExtensionsLite.Builder>.ExtensionWriter extensionWriter = CreateExtensionWriter(this);

+      extensionWriter.WriteUntil(536870912, output);

+    }

+    

+    private int memoizedSerializedSize = -1;

+    public override int SerializedSize {

+      get {

+        int size = memoizedSerializedSize;

+        if (size != -1) return size;

+        

+        size = 0;

+        size += ExtensionsSerializedSize;

+        memoizedSerializedSize = size;

+        return size;

+      }

+    }

+    

+    #region Lite runtime methods

+    public override int GetHashCode() {

+      int hash = GetType().GetHashCode();

+      hash ^= base.GetHashCode();

+      return hash;

+    }

+    

+    public override bool Equals(object obj) {

+      TestUnpackedExtensionsLite other = obj as TestUnpackedExtensionsLite;

+      if (other == null) return false;

+      if (!base.Equals(other)) return false;

+      return true;

+    }

+    

+    public override void PrintTo(global::System.IO.TextWriter writer) {

+      base.PrintTo(writer);

+    }

+    #endregion

+    

+    public static TestUnpackedExtensionsLite ParseFrom(pb::ByteString data) {

+      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();

+    }

+    public static TestUnpackedExtensionsLite ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {

+      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();

+    }

+    public static TestUnpackedExtensionsLite ParseFrom(byte[] data) {

+      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();

+    }

+    public static TestUnpackedExtensionsLite ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {

+      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();

+    }

+    public static TestUnpackedExtensionsLite ParseFrom(global::System.IO.Stream input) {

+      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();

+    }

+    public static TestUnpackedExtensionsLite ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {

+      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();

+    }

+    public static TestUnpackedExtensionsLite ParseDelimitedFrom(global::System.IO.Stream input) {

+      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();

+    }

+    public static TestUnpackedExtensionsLite ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {

+      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();

+    }

+    public static TestUnpackedExtensionsLite ParseFrom(pb::ICodedInputStream input) {

+      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();

+    }

+    public static TestUnpackedExtensionsLite ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {

+      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();

+    }

+    private TestUnpackedExtensionsLite MakeReadOnly() {

+      return this;

+    }

+    

+    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(TestUnpackedExtensionsLite prototype) {

+      return new Builder(prototype);

+    }

+    

+    [global::System.SerializableAttribute()]

+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]

+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]

+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")]

+    public sealed partial class Builder : pb::ExtendableBuilderLite<TestUnpackedExtensionsLite, Builder> {

+      protected override Builder ThisBuilder {

+        get { return this; }

+      }

+      public Builder() {

+        result = DefaultInstance;

+        resultIsReadOnly = true;

+      }

+      internal Builder(TestUnpackedExtensionsLite cloneFrom) {

+        result = cloneFrom;

+        resultIsReadOnly = true;

+      }

+      

+      private bool resultIsReadOnly;

+      private TestUnpackedExtensionsLite result;

+      

+      private TestUnpackedExtensionsLite PrepareBuilder() {

+        if (resultIsReadOnly) {

+          TestUnpackedExtensionsLite original = result;

+          result = new TestUnpackedExtensionsLite();

+          resultIsReadOnly = false;

+          MergeFrom(original);

+        }

+        return result;

+      }

+      

+      public override bool IsInitialized {

+        get { return result.IsInitialized; }

+      }

+      

+      protected override TestUnpackedExtensionsLite MessageBeingBuilt {

+        get { return PrepareBuilder(); }

+      }

+      

+      public override Builder Clear() {

+        result = DefaultInstance;

+        resultIsReadOnly = true;

+        return this;

+      }

+      

+      public override Builder Clone() {

+        if (resultIsReadOnly) {

+          return new Builder(result);

+        } else {

+          return new Builder().MergeFrom(result);

+        }

+      }

+      

+      public override TestUnpackedExtensionsLite DefaultInstanceForType {

+        get { return global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite.DefaultInstance; }

+      }

+      

+      public override TestUnpackedExtensionsLite BuildPartial() {

+        if (resultIsReadOnly) {

+          return result;

+        }

+        resultIsReadOnly = true;

+        return result.MakeReadOnly();

+      }

+      

+      public override Builder MergeFrom(pb::IMessageLite other) {

+        if (other is TestUnpackedExtensionsLite) {

+          return MergeFrom((TestUnpackedExtensionsLite) other);

+        } else {

+          base.MergeFrom(other);

+          return this;

+        }

+      }

+      

+      public override Builder MergeFrom(TestUnpackedExtensionsLite other) {

+        if (other == global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite.DefaultInstance) return this;

+        PrepareBuilder();

+          this.MergeExtensionFields(other);

+        return this;

+      }

+      

+      public override Builder MergeFrom(pb::ICodedInputStream input) {

+        return MergeFrom(input, pb::ExtensionRegistry.Empty);

+      }

+      

+      public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {

+        PrepareBuilder();

+        uint tag;

+        string field_name;

+        while (input.ReadTag(out tag, out field_name)) {

+          if(tag == 0 && field_name != null) {

+            int field_ordinal = global::System.Array.BinarySearch(_testUnpackedExtensionsLiteFieldNames, field_name, global::System.StringComparer.Ordinal);

+            if(field_ordinal >= 0)

+              tag = _testUnpackedExtensionsLiteFieldTags[field_ordinal];

+            else {

+              ParseUnknownField(input, extensionRegistry, tag, field_name);

+              continue;

+            }

+          }

+          switch (tag) {

+            case 0: {

+              throw pb::InvalidProtocolBufferException.InvalidTag();

+            }

+            default: {

+              if (pb::WireFormat.IsEndGroupTag(tag)) {

+                return this;

+              }

+              ParseUnknownField(input, extensionRegistry, tag, field_name);

+              break;

+            }

+          }

+        }

+        

+        return this;

+      }

+      

+    }

+    static TestUnpackedExtensionsLite() {

+      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnitTestExtrasLiteProtoFile.Descriptor, null);

+    }

+  }

+  

+  [global::System.SerializableAttribute()]

+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]

+  [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]

+  [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")]

+  public sealed partial class TestUnpackedTypesLite : pb::GeneratedMessageLite<TestUnpackedTypesLite, TestUnpackedTypesLite.Builder> {

+    private TestUnpackedTypesLite() { }

+    private static readonly TestUnpackedTypesLite defaultInstance = new TestUnpackedTypesLite().MakeReadOnly();

+    private static readonly string[] _testUnpackedTypesLiteFieldNames = new string[] { "unpacked_bool", "unpacked_double", "unpacked_enum", "unpacked_fixed32", "unpacked_fixed64", "unpacked_float", "unpacked_int32", "unpacked_int64", "unpacked_sfixed32", "unpacked_sfixed64", "unpacked_sint32", "unpacked_sint64", "unpacked_uint32", "unpacked_uint64" };

+    private static readonly uint[] _testUnpackedTypesLiteFieldTags = new uint[] { 816, 809, 824, 773, 777, 805, 720, 728, 789, 793, 752, 760, 736, 744 };

+    public static TestUnpackedTypesLite DefaultInstance {

+      get { return defaultInstance; }

+    }

+    

+    public override TestUnpackedTypesLite DefaultInstanceForType {

+      get { return DefaultInstance; }

+    }

+    

+    protected override TestUnpackedTypesLite ThisMessage {

+      get { return this; }

+    }

+    

+    public const int UnpackedInt32FieldNumber = 90;

+    private pbc::PopsicleList<int> unpackedInt32_ = new pbc::PopsicleList<int>();

+    public scg::IList<int> UnpackedInt32List {

+      get { return pbc::Lists.AsReadOnly(unpackedInt32_); }

+    }

+    public int UnpackedInt32Count {

+      get { return unpackedInt32_.Count; }

+    }

+    public int GetUnpackedInt32(int index) {

+      return unpackedInt32_[index];

+    }

+    

+    public const int UnpackedInt64FieldNumber = 91;

+    private pbc::PopsicleList<long> unpackedInt64_ = new pbc::PopsicleList<long>();

+    public scg::IList<long> UnpackedInt64List {

+      get { return pbc::Lists.AsReadOnly(unpackedInt64_); }

+    }

+    public int UnpackedInt64Count {

+      get { return unpackedInt64_.Count; }

+    }

+    public long GetUnpackedInt64(int index) {

+      return unpackedInt64_[index];

+    }

+    

+    public const int UnpackedUint32FieldNumber = 92;

+    private pbc::PopsicleList<uint> unpackedUint32_ = new pbc::PopsicleList<uint>();

+    [global::System.CLSCompliant(false)]

+    public scg::IList<uint> UnpackedUint32List {

+      get { return pbc::Lists.AsReadOnly(unpackedUint32_); }

+    }

+    public int UnpackedUint32Count {

+      get { return unpackedUint32_.Count; }

+    }

+    [global::System.CLSCompliant(false)]

+    public uint GetUnpackedUint32(int index) {

+      return unpackedUint32_[index];

+    }

+    

+    public const int UnpackedUint64FieldNumber = 93;

+    private pbc::PopsicleList<ulong> unpackedUint64_ = new pbc::PopsicleList<ulong>();

+    [global::System.CLSCompliant(false)]

+    public scg::IList<ulong> UnpackedUint64List {

+      get { return pbc::Lists.AsReadOnly(unpackedUint64_); }

+    }

+    public int UnpackedUint64Count {

+      get { return unpackedUint64_.Count; }

+    }

+    [global::System.CLSCompliant(false)]

+    public ulong GetUnpackedUint64(int index) {

+      return unpackedUint64_[index];

+    }

+    

+    public const int UnpackedSint32FieldNumber = 94;

+    private pbc::PopsicleList<int> unpackedSint32_ = new pbc::PopsicleList<int>();

+    public scg::IList<int> UnpackedSint32List {

+      get { return pbc::Lists.AsReadOnly(unpackedSint32_); }

+    }

+    public int UnpackedSint32Count {

+      get { return unpackedSint32_.Count; }

+    }

+    public int GetUnpackedSint32(int index) {

+      return unpackedSint32_[index];

+    }

+    

+    public const int UnpackedSint64FieldNumber = 95;

+    private pbc::PopsicleList<long> unpackedSint64_ = new pbc::PopsicleList<long>();

+    public scg::IList<long> UnpackedSint64List {

+      get { return pbc::Lists.AsReadOnly(unpackedSint64_); }

+    }

+    public int UnpackedSint64Count {

+      get { return unpackedSint64_.Count; }

+    }

+    public long GetUnpackedSint64(int index) {

+      return unpackedSint64_[index];

+    }

+    

+    public const int UnpackedFixed32FieldNumber = 96;

+    private pbc::PopsicleList<uint> unpackedFixed32_ = new pbc::PopsicleList<uint>();

+    [global::System.CLSCompliant(false)]

+    public scg::IList<uint> UnpackedFixed32List {

+      get { return pbc::Lists.AsReadOnly(unpackedFixed32_); }

+    }

+    public int UnpackedFixed32Count {

+      get { return unpackedFixed32_.Count; }

+    }

+    [global::System.CLSCompliant(false)]

+    public uint GetUnpackedFixed32(int index) {

+      return unpackedFixed32_[index];

+    }

+    

+    public const int UnpackedFixed64FieldNumber = 97;

+    private pbc::PopsicleList<ulong> unpackedFixed64_ = new pbc::PopsicleList<ulong>();

+    [global::System.CLSCompliant(false)]

+    public scg::IList<ulong> UnpackedFixed64List {

+      get { return pbc::Lists.AsReadOnly(unpackedFixed64_); }

+    }

+    public int UnpackedFixed64Count {

+      get { return unpackedFixed64_.Count; }

+    }

+    [global::System.CLSCompliant(false)]

+    public ulong GetUnpackedFixed64(int index) {

+      return unpackedFixed64_[index];

+    }

+    

+    public const int UnpackedSfixed32FieldNumber = 98;

+    private pbc::PopsicleList<int> unpackedSfixed32_ = new pbc::PopsicleList<int>();

+    public scg::IList<int> UnpackedSfixed32List {

+      get { return pbc::Lists.AsReadOnly(unpackedSfixed32_); }

+    }

+    public int UnpackedSfixed32Count {

+      get { return unpackedSfixed32_.Count; }

+    }

+    public int GetUnpackedSfixed32(int index) {

+      return unpackedSfixed32_[index];

+    }

+    

+    public const int UnpackedSfixed64FieldNumber = 99;

+    private pbc::PopsicleList<long> unpackedSfixed64_ = new pbc::PopsicleList<long>();

+    public scg::IList<long> UnpackedSfixed64List {

+      get { return pbc::Lists.AsReadOnly(unpackedSfixed64_); }

+    }

+    public int UnpackedSfixed64Count {

+      get { return unpackedSfixed64_.Count; }

+    }

+    public long GetUnpackedSfixed64(int index) {

+      return unpackedSfixed64_[index];

+    }

+    

+    public const int UnpackedFloatFieldNumber = 100;

+    private pbc::PopsicleList<float> unpackedFloat_ = new pbc::PopsicleList<float>();

+    public scg::IList<float> UnpackedFloatList {

+      get { return pbc::Lists.AsReadOnly(unpackedFloat_); }

+    }

+    public int UnpackedFloatCount {

+      get { return unpackedFloat_.Count; }

+    }

+    public float GetUnpackedFloat(int index) {

+      return unpackedFloat_[index];

+    }

+    

+    public const int UnpackedDoubleFieldNumber = 101;

+    private pbc::PopsicleList<double> unpackedDouble_ = new pbc::PopsicleList<double>();

+    public scg::IList<double> UnpackedDoubleList {

+      get { return pbc::Lists.AsReadOnly(unpackedDouble_); }

+    }

+    public int UnpackedDoubleCount {

+      get { return unpackedDouble_.Count; }

+    }

+    public double GetUnpackedDouble(int index) {

+      return unpackedDouble_[index];

+    }

+    

+    public const int UnpackedBoolFieldNumber = 102;

+    private pbc::PopsicleList<bool> unpackedBool_ = new pbc::PopsicleList<bool>();

+    public scg::IList<bool> UnpackedBoolList {

+      get { return pbc::Lists.AsReadOnly(unpackedBool_); }

+    }

+    public int UnpackedBoolCount {

+      get { return unpackedBool_.Count; }

+    }

+    public bool GetUnpackedBool(int index) {

+      return unpackedBool_[index];

+    }

+    

+    public const int UnpackedEnumFieldNumber = 103;

+    private pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.UnpackedTypesForeignEnumLite> unpackedEnum_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.UnpackedTypesForeignEnumLite>();

+    public scg::IList<global::Google.ProtocolBuffers.TestProtos.UnpackedTypesForeignEnumLite> UnpackedEnumList {

+      get { return pbc::Lists.AsReadOnly(unpackedEnum_); }

+    }

+    public int UnpackedEnumCount {

+      get { return unpackedEnum_.Count; }

+    }

+    public global::Google.ProtocolBuffers.TestProtos.UnpackedTypesForeignEnumLite GetUnpackedEnum(int index) {

+      return unpackedEnum_[index];

+    }

+    

+    public override bool IsInitialized {

+      get {

+        return true;

+      }

+    }

+    

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

+      int size = SerializedSize;

+      string[] field_names = _testUnpackedTypesLiteFieldNames;

+      if (unpackedInt32_.Count > 0) {

+        output.WriteInt32Array(90, field_names[6], unpackedInt32_);

+      }

+      if (unpackedInt64_.Count > 0) {

+        output.WriteInt64Array(91, field_names[7], unpackedInt64_);

+      }

+      if (unpackedUint32_.Count > 0) {

+        output.WriteUInt32Array(92, field_names[12], unpackedUint32_);

+      }

+      if (unpackedUint64_.Count > 0) {

+        output.WriteUInt64Array(93, field_names[13], unpackedUint64_);

+      }

+      if (unpackedSint32_.Count > 0) {

+        output.WriteSInt32Array(94, field_names[10], unpackedSint32_);

+      }

+      if (unpackedSint64_.Count > 0) {

+        output.WriteSInt64Array(95, field_names[11], unpackedSint64_);

+      }

+      if (unpackedFixed32_.Count > 0) {

+        output.WriteFixed32Array(96, field_names[3], unpackedFixed32_);

+      }

+      if (unpackedFixed64_.Count > 0) {

+        output.WriteFixed64Array(97, field_names[4], unpackedFixed64_);

+      }

+      if (unpackedSfixed32_.Count > 0) {

+        output.WriteSFixed32Array(98, field_names[8], unpackedSfixed32_);

+      }

+      if (unpackedSfixed64_.Count > 0) {

+        output.WriteSFixed64Array(99, field_names[9], unpackedSfixed64_);

+      }

+      if (unpackedFloat_.Count > 0) {

+        output.WriteFloatArray(100, field_names[5], unpackedFloat_);

+      }

+      if (unpackedDouble_.Count > 0) {

+        output.WriteDoubleArray(101, field_names[1], unpackedDouble_);

+      }

+      if (unpackedBool_.Count > 0) {

+        output.WriteBoolArray(102, field_names[0], unpackedBool_);

+      }

+      if (unpackedEnum_.Count > 0) {

+        output.WriteEnumArray(103, field_names[2], unpackedEnum_);

+      }

+    }

+    

+    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 UnpackedInt32List) {

+            dataSize += pb::CodedOutputStream.ComputeInt32SizeNoTag(element);

+          }

+          size += dataSize;

+          size += 2 * unpackedInt32_.Count;

+        }

+        {

+          int dataSize = 0;

+          foreach (long element in UnpackedInt64List) {

+            dataSize += pb::CodedOutputStream.ComputeInt64SizeNoTag(element);

+          }

+          size += dataSize;

+          size += 2 * unpackedInt64_.Count;

+        }

+        {

+          int dataSize = 0;

+          foreach (uint element in UnpackedUint32List) {

+            dataSize += pb::CodedOutputStream.ComputeUInt32SizeNoTag(element);

+          }

+          size += dataSize;

+          size += 2 * unpackedUint32_.Count;

+        }

+        {

+          int dataSize = 0;

+          foreach (ulong element in UnpackedUint64List) {

+            dataSize += pb::CodedOutputStream.ComputeUInt64SizeNoTag(element);

+          }

+          size += dataSize;

+          size += 2 * unpackedUint64_.Count;

+        }

+        {

+          int dataSize = 0;

+          foreach (int element in UnpackedSint32List) {

+            dataSize += pb::CodedOutputStream.ComputeSInt32SizeNoTag(element);

+          }

+          size += dataSize;

+          size += 2 * unpackedSint32_.Count;

+        }

+        {

+          int dataSize = 0;

+          foreach (long element in UnpackedSint64List) {

+            dataSize += pb::CodedOutputStream.ComputeSInt64SizeNoTag(element);

+          }

+          size += dataSize;

+          size += 2 * unpackedSint64_.Count;

+        }

+        {

+          int dataSize = 0;

+          dataSize = 4 * unpackedFixed32_.Count;

+          size += dataSize;

+          size += 2 * unpackedFixed32_.Count;

+        }

+        {

+          int dataSize = 0;

+          dataSize = 8 * unpackedFixed64_.Count;

+          size += dataSize;

+          size += 2 * unpackedFixed64_.Count;

+        }

+        {

+          int dataSize = 0;

+          dataSize = 4 * unpackedSfixed32_.Count;

+          size += dataSize;

+          size += 2 * unpackedSfixed32_.Count;

+        }

+        {

+          int dataSize = 0;

+          dataSize = 8 * unpackedSfixed64_.Count;

+          size += dataSize;

+          size += 2 * unpackedSfixed64_.Count;

+        }

+        {

+          int dataSize = 0;

+          dataSize = 4 * unpackedFloat_.Count;

+          size += dataSize;

+          size += 2 * unpackedFloat_.Count;

+        }

+        {

+          int dataSize = 0;

+          dataSize = 8 * unpackedDouble_.Count;

+          size += dataSize;

+          size += 2 * unpackedDouble_.Count;

+        }

+        {

+          int dataSize = 0;

+          dataSize = 1 * unpackedBool_.Count;

+          size += dataSize;

+          size += 2 * unpackedBool_.Count;

+        }

+        {

+          int dataSize = 0;

+          if (unpackedEnum_.Count > 0) {

+            foreach (global::Google.ProtocolBuffers.TestProtos.UnpackedTypesForeignEnumLite element in unpackedEnum_) {

+              dataSize += pb::CodedOutputStream.ComputeEnumSizeNoTag((int) element);

+            }

+            size += dataSize;

+            size += 2 * unpackedEnum_.Count;

+          }

+        }

+        memoizedSerializedSize = size;

+        return size;

+      }

+    }

+    

+    #region Lite runtime methods

+    public override int GetHashCode() {

+      int hash = GetType().GetHashCode();

+      foreach(int i in unpackedInt32_)

+        hash ^= i.GetHashCode();

+      foreach(long i in unpackedInt64_)

+        hash ^= i.GetHashCode();

+      foreach(uint i in unpackedUint32_)

+        hash ^= i.GetHashCode();

+      foreach(ulong i in unpackedUint64_)

+        hash ^= i.GetHashCode();

+      foreach(int i in unpackedSint32_)

+        hash ^= i.GetHashCode();

+      foreach(long i in unpackedSint64_)

+        hash ^= i.GetHashCode();

+      foreach(uint i in unpackedFixed32_)

+        hash ^= i.GetHashCode();

+      foreach(ulong i in unpackedFixed64_)

+        hash ^= i.GetHashCode();

+      foreach(int i in unpackedSfixed32_)

+        hash ^= i.GetHashCode();

+      foreach(long i in unpackedSfixed64_)

+        hash ^= i.GetHashCode();

+      foreach(float i in unpackedFloat_)

+        hash ^= i.GetHashCode();

+      foreach(double i in unpackedDouble_)

+        hash ^= i.GetHashCode();

+      foreach(bool i in unpackedBool_)

+        hash ^= i.GetHashCode();

+      foreach(global::Google.ProtocolBuffers.TestProtos.UnpackedTypesForeignEnumLite i in unpackedEnum_)

+        hash ^= i.GetHashCode();

+      return hash;

+    }

+    

+    public override bool Equals(object obj) {

+      TestUnpackedTypesLite other = obj as TestUnpackedTypesLite;

+      if (other == null) return false;

+      if(unpackedInt32_.Count != other.unpackedInt32_.Count) return false;

+      for(int ix=0; ix < unpackedInt32_.Count; ix++)

+        if(!unpackedInt32_[ix].Equals(other.unpackedInt32_[ix])) return false;

+      if(unpackedInt64_.Count != other.unpackedInt64_.Count) return false;

+      for(int ix=0; ix < unpackedInt64_.Count; ix++)

+        if(!unpackedInt64_[ix].Equals(other.unpackedInt64_[ix])) return false;

+      if(unpackedUint32_.Count != other.unpackedUint32_.Count) return false;

+      for(int ix=0; ix < unpackedUint32_.Count; ix++)

+        if(!unpackedUint32_[ix].Equals(other.unpackedUint32_[ix])) return false;

+      if(unpackedUint64_.Count != other.unpackedUint64_.Count) return false;

+      for(int ix=0; ix < unpackedUint64_.Count; ix++)

+        if(!unpackedUint64_[ix].Equals(other.unpackedUint64_[ix])) return false;

+      if(unpackedSint32_.Count != other.unpackedSint32_.Count) return false;

+      for(int ix=0; ix < unpackedSint32_.Count; ix++)

+        if(!unpackedSint32_[ix].Equals(other.unpackedSint32_[ix])) return false;

+      if(unpackedSint64_.Count != other.unpackedSint64_.Count) return false;

+      for(int ix=0; ix < unpackedSint64_.Count; ix++)

+        if(!unpackedSint64_[ix].Equals(other.unpackedSint64_[ix])) return false;

+      if(unpackedFixed32_.Count != other.unpackedFixed32_.Count) return false;

+      for(int ix=0; ix < unpackedFixed32_.Count; ix++)

+        if(!unpackedFixed32_[ix].Equals(other.unpackedFixed32_[ix])) return false;

+      if(unpackedFixed64_.Count != other.unpackedFixed64_.Count) return false;

+      for(int ix=0; ix < unpackedFixed64_.Count; ix++)

+        if(!unpackedFixed64_[ix].Equals(other.unpackedFixed64_[ix])) return false;

+      if(unpackedSfixed32_.Count != other.unpackedSfixed32_.Count) return false;

+      for(int ix=0; ix < unpackedSfixed32_.Count; ix++)

+        if(!unpackedSfixed32_[ix].Equals(other.unpackedSfixed32_[ix])) return false;

+      if(unpackedSfixed64_.Count != other.unpackedSfixed64_.Count) return false;

+      for(int ix=0; ix < unpackedSfixed64_.Count; ix++)

+        if(!unpackedSfixed64_[ix].Equals(other.unpackedSfixed64_[ix])) return false;

+      if(unpackedFloat_.Count != other.unpackedFloat_.Count) return false;

+      for(int ix=0; ix < unpackedFloat_.Count; ix++)

+        if(!unpackedFloat_[ix].Equals(other.unpackedFloat_[ix])) return false;

+      if(unpackedDouble_.Count != other.unpackedDouble_.Count) return false;

+      for(int ix=0; ix < unpackedDouble_.Count; ix++)

+        if(!unpackedDouble_[ix].Equals(other.unpackedDouble_[ix])) return false;

+      if(unpackedBool_.Count != other.unpackedBool_.Count) return false;

+      for(int ix=0; ix < unpackedBool_.Count; ix++)

+        if(!unpackedBool_[ix].Equals(other.unpackedBool_[ix])) return false;

+      if(unpackedEnum_.Count != other.unpackedEnum_.Count) return false;

+      for(int ix=0; ix < unpackedEnum_.Count; ix++)

+        if(!unpackedEnum_[ix].Equals(other.unpackedEnum_[ix])) return false;

+      return true;

+    }

+    

+    public override void PrintTo(global::System.IO.TextWriter writer) {

+      PrintField("unpacked_int32", unpackedInt32_, writer);

+      PrintField("unpacked_int64", unpackedInt64_, writer);

+      PrintField("unpacked_uint32", unpackedUint32_, writer);

+      PrintField("unpacked_uint64", unpackedUint64_, writer);

+      PrintField("unpacked_sint32", unpackedSint32_, writer);

+      PrintField("unpacked_sint64", unpackedSint64_, writer);

+      PrintField("unpacked_fixed32", unpackedFixed32_, writer);

+      PrintField("unpacked_fixed64", unpackedFixed64_, writer);

+      PrintField("unpacked_sfixed32", unpackedSfixed32_, writer);

+      PrintField("unpacked_sfixed64", unpackedSfixed64_, writer);

+      PrintField("unpacked_float", unpackedFloat_, writer);

+      PrintField("unpacked_double", unpackedDouble_, writer);

+      PrintField("unpacked_bool", unpackedBool_, writer);

+      PrintField("unpacked_enum", unpackedEnum_, writer);

+    }

+    #endregion

+    

+    public static TestUnpackedTypesLite ParseFrom(pb::ByteString data) {

+      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();

+    }

+    public static TestUnpackedTypesLite ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {

+      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();

+    }

+    public static TestUnpackedTypesLite ParseFrom(byte[] data) {

+      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();

+    }

+    public static TestUnpackedTypesLite ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {

+      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();

+    }

+    public static TestUnpackedTypesLite ParseFrom(global::System.IO.Stream input) {

+      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();

+    }

+    public static TestUnpackedTypesLite ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {

+      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();

+    }

+    public static TestUnpackedTypesLite ParseDelimitedFrom(global::System.IO.Stream input) {

+      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();

+    }

+    public static TestUnpackedTypesLite ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {

+      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();

+    }

+    public static TestUnpackedTypesLite ParseFrom(pb::ICodedInputStream input) {

+      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();

+    }

+    public static TestUnpackedTypesLite ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {

+      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();

+    }

+    private TestUnpackedTypesLite MakeReadOnly() {

+      unpackedInt32_.MakeReadOnly();

+      unpackedInt64_.MakeReadOnly();

+      unpackedUint32_.MakeReadOnly();

+      unpackedUint64_.MakeReadOnly();

+      unpackedSint32_.MakeReadOnly();

+      unpackedSint64_.MakeReadOnly();

+      unpackedFixed32_.MakeReadOnly();

+      unpackedFixed64_.MakeReadOnly();

+      unpackedSfixed32_.MakeReadOnly();

+      unpackedSfixed64_.MakeReadOnly();

+      unpackedFloat_.MakeReadOnly();

+      unpackedDouble_.MakeReadOnly();

+      unpackedBool_.MakeReadOnly();

+      unpackedEnum_.MakeReadOnly();

+      return this;

+    }

+    

+    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(TestUnpackedTypesLite prototype) {

+      return new Builder(prototype);

+    }

+    

+    [global::System.SerializableAttribute()]

+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]

+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]

+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")]

+    public sealed partial class Builder : pb::GeneratedBuilderLite<TestUnpackedTypesLite, Builder> {

+      protected override Builder ThisBuilder {

+        get { return this; }

+      }

+      public Builder() {

+        result = DefaultInstance;

+        resultIsReadOnly = true;

+      }

+      internal Builder(TestUnpackedTypesLite cloneFrom) {

+        result = cloneFrom;

+        resultIsReadOnly = true;

+      }

+      

+      private bool resultIsReadOnly;

+      private TestUnpackedTypesLite result;

+      

+      private TestUnpackedTypesLite PrepareBuilder() {

+        if (resultIsReadOnly) {

+          TestUnpackedTypesLite original = result;

+          result = new TestUnpackedTypesLite();

+          resultIsReadOnly = false;

+          MergeFrom(original);

+        }

+        return result;

+      }

+      

+      public override bool IsInitialized {

+        get { return result.IsInitialized; }

+      }

+      

+      protected override TestUnpackedTypesLite MessageBeingBuilt {

+        get { return PrepareBuilder(); }

+      }

+      

+      public override Builder Clear() {

+        result = DefaultInstance;

+        resultIsReadOnly = true;

+        return this;

+      }

+      

+      public override Builder Clone() {

+        if (resultIsReadOnly) {

+          return new Builder(result);

+        } else {

+          return new Builder().MergeFrom(result);

+        }

+      }

+      

+      public override TestUnpackedTypesLite DefaultInstanceForType {

+        get { return global::Google.ProtocolBuffers.TestProtos.TestUnpackedTypesLite.DefaultInstance; }

+      }

+      

+      public override TestUnpackedTypesLite BuildPartial() {

+        if (resultIsReadOnly) {

+          return result;

+        }

+        resultIsReadOnly = true;

+        return result.MakeReadOnly();

+      }

+      

+      public override Builder MergeFrom(pb::IMessageLite other) {

+        if (other is TestUnpackedTypesLite) {

+          return MergeFrom((TestUnpackedTypesLite) other);

+        } else {

+          base.MergeFrom(other);

+          return this;

+        }

+      }

+      

+      public override Builder MergeFrom(TestUnpackedTypesLite other) {

+        if (other == global::Google.ProtocolBuffers.TestProtos.TestUnpackedTypesLite.DefaultInstance) return this;

+        PrepareBuilder();

+        if (other.unpackedInt32_.Count != 0) {

+          result.unpackedInt32_.Add(other.unpackedInt32_);

+        }

+        if (other.unpackedInt64_.Count != 0) {

+          result.unpackedInt64_.Add(other.unpackedInt64_);

+        }

+        if (other.unpackedUint32_.Count != 0) {

+          result.unpackedUint32_.Add(other.unpackedUint32_);

+        }

+        if (other.unpackedUint64_.Count != 0) {

+          result.unpackedUint64_.Add(other.unpackedUint64_);

+        }

+        if (other.unpackedSint32_.Count != 0) {

+          result.unpackedSint32_.Add(other.unpackedSint32_);

+        }

+        if (other.unpackedSint64_.Count != 0) {

+          result.unpackedSint64_.Add(other.unpackedSint64_);

+        }

+        if (other.unpackedFixed32_.Count != 0) {

+          result.unpackedFixed32_.Add(other.unpackedFixed32_);

+        }

+        if (other.unpackedFixed64_.Count != 0) {

+          result.unpackedFixed64_.Add(other.unpackedFixed64_);

+        }

+        if (other.unpackedSfixed32_.Count != 0) {

+          result.unpackedSfixed32_.Add(other.unpackedSfixed32_);

+        }

+        if (other.unpackedSfixed64_.Count != 0) {

+          result.unpackedSfixed64_.Add(other.unpackedSfixed64_);

+        }

+        if (other.unpackedFloat_.Count != 0) {

+          result.unpackedFloat_.Add(other.unpackedFloat_);

+        }

+        if (other.unpackedDouble_.Count != 0) {

+          result.unpackedDouble_.Add(other.unpackedDouble_);

+        }

+        if (other.unpackedBool_.Count != 0) {

+          result.unpackedBool_.Add(other.unpackedBool_);

+        }

+        if (other.unpackedEnum_.Count != 0) {

+          result.unpackedEnum_.Add(other.unpackedEnum_);

+        }

+        return this;

+      }

+      

+      public override Builder MergeFrom(pb::ICodedInputStream input) {

+        return MergeFrom(input, pb::ExtensionRegistry.Empty);

+      }

+      

+      public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {

+        PrepareBuilder();

+        uint tag;

+        string field_name;

+        while (input.ReadTag(out tag, out field_name)) {

+          if(tag == 0 && field_name != null) {

+            int field_ordinal = global::System.Array.BinarySearch(_testUnpackedTypesLiteFieldNames, field_name, global::System.StringComparer.Ordinal);

+            if(field_ordinal >= 0)

+              tag = _testUnpackedTypesLiteFieldTags[field_ordinal];

+            else {

+              ParseUnknownField(input, extensionRegistry, tag, field_name);

+              continue;

+            }

+          }

+          switch (tag) {

+            case 0: {

+              throw pb::InvalidProtocolBufferException.InvalidTag();

+            }

+            default: {

+              if (pb::WireFormat.IsEndGroupTag(tag)) {

+                return this;

+              }

+              ParseUnknownField(input, extensionRegistry, tag, field_name);

+              break;

+            }

+            case 722:

+            case 720: {

+              input.ReadInt32Array(tag, field_name, result.unpackedInt32_);

+              break;

+            }

+            case 730:

+            case 728: {

+              input.ReadInt64Array(tag, field_name, result.unpackedInt64_);

+              break;

+            }

+            case 738:

+            case 736: {

+              input.ReadUInt32Array(tag, field_name, result.unpackedUint32_);

+              break;

+            }

+            case 746:

+            case 744: {

+              input.ReadUInt64Array(tag, field_name, result.unpackedUint64_);

+              break;

+            }

+            case 754:

+            case 752: {

+              input.ReadSInt32Array(tag, field_name, result.unpackedSint32_);

+              break;

+            }

+            case 762:

+            case 760: {

+              input.ReadSInt64Array(tag, field_name, result.unpackedSint64_);

+              break;

+            }

+            case 770:

+            case 773: {

+              input.ReadFixed32Array(tag, field_name, result.unpackedFixed32_);

+              break;

+            }

+            case 778:

+            case 777: {

+              input.ReadFixed64Array(tag, field_name, result.unpackedFixed64_);

+              break;

+            }

+            case 786:

+            case 789: {

+              input.ReadSFixed32Array(tag, field_name, result.unpackedSfixed32_);

+              break;

+            }

+            case 794:

+            case 793: {

+              input.ReadSFixed64Array(tag, field_name, result.unpackedSfixed64_);

+              break;

+            }

+            case 802:

+            case 805: {

+              input.ReadFloatArray(tag, field_name, result.unpackedFloat_);

+              break;

+            }

+            case 810:

+            case 809: {

+              input.ReadDoubleArray(tag, field_name, result.unpackedDouble_);

+              break;

+            }

+            case 818:

+            case 816: {

+              input.ReadBoolArray(tag, field_name, result.unpackedBool_);

+              break;

+            }

+            case 826:

+            case 824: {

+              scg::ICollection<object> unknownItems;

+              input.ReadEnumArray<global::Google.ProtocolBuffers.TestProtos.UnpackedTypesForeignEnumLite>(tag, field_name, result.unpackedEnum_, out unknownItems);

+              break;

+            }

+          }

+        }

+        

+        return this;

+      }

+      

+      

+      public pbc::IPopsicleList<int> UnpackedInt32List {

+        get { return PrepareBuilder().unpackedInt32_; }

+      }

+      public int UnpackedInt32Count {

+        get { return result.UnpackedInt32Count; }

+      }

+      public int GetUnpackedInt32(int index) {

+        return result.GetUnpackedInt32(index);

+      }

+      public Builder SetUnpackedInt32(int index, int value) {

+        PrepareBuilder();

+        result.unpackedInt32_[index] = value;

+        return this;

+      }

+      public Builder AddUnpackedInt32(int value) {

+        PrepareBuilder();

+        result.unpackedInt32_.Add(value);

+        return this;

+      }

+      public Builder AddRangeUnpackedInt32(scg::IEnumerable<int> values) {

+        PrepareBuilder();

+        result.unpackedInt32_.Add(values);

+        return this;

+      }

+      public Builder ClearUnpackedInt32() {

+        PrepareBuilder();

+        result.unpackedInt32_.Clear();

+        return this;

+      }

+      

+      public pbc::IPopsicleList<long> UnpackedInt64List {

+        get { return PrepareBuilder().unpackedInt64_; }

+      }

+      public int UnpackedInt64Count {

+        get { return result.UnpackedInt64Count; }

+      }

+      public long GetUnpackedInt64(int index) {

+        return result.GetUnpackedInt64(index);

+      }

+      public Builder SetUnpackedInt64(int index, long value) {

+        PrepareBuilder();

+        result.unpackedInt64_[index] = value;

+        return this;

+      }

+      public Builder AddUnpackedInt64(long value) {

+        PrepareBuilder();

+        result.unpackedInt64_.Add(value);

+        return this;

+      }

+      public Builder AddRangeUnpackedInt64(scg::IEnumerable<long> values) {

+        PrepareBuilder();

+        result.unpackedInt64_.Add(values);

+        return this;

+      }

+      public Builder ClearUnpackedInt64() {

+        PrepareBuilder();

+        result.unpackedInt64_.Clear();

+        return this;

+      }

+      

+      [global::System.CLSCompliant(false)]

+      public pbc::IPopsicleList<uint> UnpackedUint32List {

+        get { return PrepareBuilder().unpackedUint32_; }

+      }

+      public int UnpackedUint32Count {

+        get { return result.UnpackedUint32Count; }

+      }

+      [global::System.CLSCompliant(false)]

+      public uint GetUnpackedUint32(int index) {

+        return result.GetUnpackedUint32(index);

+      }

+      [global::System.CLSCompliant(false)]

+      public Builder SetUnpackedUint32(int index, uint value) {

+        PrepareBuilder();

+        result.unpackedUint32_[index] = value;

+        return this;

+      }

+      [global::System.CLSCompliant(false)]

+      public Builder AddUnpackedUint32(uint value) {

+        PrepareBuilder();

+        result.unpackedUint32_.Add(value);

+        return this;

+      }

+      [global::System.CLSCompliant(false)]

+      public Builder AddRangeUnpackedUint32(scg::IEnumerable<uint> values) {

+        PrepareBuilder();

+        result.unpackedUint32_.Add(values);

+        return this;

+      }

+      public Builder ClearUnpackedUint32() {

+        PrepareBuilder();

+        result.unpackedUint32_.Clear();

+        return this;

+      }

+      

+      [global::System.CLSCompliant(false)]

+      public pbc::IPopsicleList<ulong> UnpackedUint64List {

+        get { return PrepareBuilder().unpackedUint64_; }

+      }

+      public int UnpackedUint64Count {

+        get { return result.UnpackedUint64Count; }

+      }

+      [global::System.CLSCompliant(false)]

+      public ulong GetUnpackedUint64(int index) {

+        return result.GetUnpackedUint64(index);

+      }

+      [global::System.CLSCompliant(false)]

+      public Builder SetUnpackedUint64(int index, ulong value) {

+        PrepareBuilder();

+        result.unpackedUint64_[index] = value;

+        return this;

+      }

+      [global::System.CLSCompliant(false)]

+      public Builder AddUnpackedUint64(ulong value) {

+        PrepareBuilder();

+        result.unpackedUint64_.Add(value);

+        return this;

+      }

+      [global::System.CLSCompliant(false)]

+      public Builder AddRangeUnpackedUint64(scg::IEnumerable<ulong> values) {

+        PrepareBuilder();

+        result.unpackedUint64_.Add(values);

+        return this;

+      }

+      public Builder ClearUnpackedUint64() {

+        PrepareBuilder();

+        result.unpackedUint64_.Clear();

+        return this;

+      }

+      

+      public pbc::IPopsicleList<int> UnpackedSint32List {

+        get { return PrepareBuilder().unpackedSint32_; }

+      }

+      public int UnpackedSint32Count {

+        get { return result.UnpackedSint32Count; }

+      }

+      public int GetUnpackedSint32(int index) {

+        return result.GetUnpackedSint32(index);

+      }

+      public Builder SetUnpackedSint32(int index, int value) {

+        PrepareBuilder();

+        result.unpackedSint32_[index] = value;

+        return this;

+      }

+      public Builder AddUnpackedSint32(int value) {

+        PrepareBuilder();

+        result.unpackedSint32_.Add(value);

+        return this;

+      }

+      public Builder AddRangeUnpackedSint32(scg::IEnumerable<int> values) {

+        PrepareBuilder();

+        result.unpackedSint32_.Add(values);

+        return this;

+      }

+      public Builder ClearUnpackedSint32() {

+        PrepareBuilder();

+        result.unpackedSint32_.Clear();

+        return this;

+      }

+      

+      public pbc::IPopsicleList<long> UnpackedSint64List {

+        get { return PrepareBuilder().unpackedSint64_; }

+      }

+      public int UnpackedSint64Count {

+        get { return result.UnpackedSint64Count; }

+      }

+      public long GetUnpackedSint64(int index) {

+        return result.GetUnpackedSint64(index);

+      }

+      public Builder SetUnpackedSint64(int index, long value) {

+        PrepareBuilder();

+        result.unpackedSint64_[index] = value;

+        return this;

+      }

+      public Builder AddUnpackedSint64(long value) {

+        PrepareBuilder();

+        result.unpackedSint64_.Add(value);

+        return this;

+      }

+      public Builder AddRangeUnpackedSint64(scg::IEnumerable<long> values) {

+        PrepareBuilder();

+        result.unpackedSint64_.Add(values);

+        return this;

+      }

+      public Builder ClearUnpackedSint64() {

+        PrepareBuilder();

+        result.unpackedSint64_.Clear();

+        return this;

+      }

+      

+      [global::System.CLSCompliant(false)]

+      public pbc::IPopsicleList<uint> UnpackedFixed32List {

+        get { return PrepareBuilder().unpackedFixed32_; }

+      }

+      public int UnpackedFixed32Count {

+        get { return result.UnpackedFixed32Count; }

+      }

+      [global::System.CLSCompliant(false)]

+      public uint GetUnpackedFixed32(int index) {

+        return result.GetUnpackedFixed32(index);

+      }

+      [global::System.CLSCompliant(false)]

+      public Builder SetUnpackedFixed32(int index, uint value) {

+        PrepareBuilder();

+        result.unpackedFixed32_[index] = value;

+        return this;

+      }

+      [global::System.CLSCompliant(false)]

+      public Builder AddUnpackedFixed32(uint value) {

+        PrepareBuilder();

+        result.unpackedFixed32_.Add(value);

+        return this;

+      }

+      [global::System.CLSCompliant(false)]

+      public Builder AddRangeUnpackedFixed32(scg::IEnumerable<uint> values) {

+        PrepareBuilder();

+        result.unpackedFixed32_.Add(values);

+        return this;

+      }

+      public Builder ClearUnpackedFixed32() {

+        PrepareBuilder();

+        result.unpackedFixed32_.Clear();

+        return this;

+      }

+      

+      [global::System.CLSCompliant(false)]

+      public pbc::IPopsicleList<ulong> UnpackedFixed64List {

+        get { return PrepareBuilder().unpackedFixed64_; }

+      }

+      public int UnpackedFixed64Count {

+        get { return result.UnpackedFixed64Count; }

+      }

+      [global::System.CLSCompliant(false)]

+      public ulong GetUnpackedFixed64(int index) {

+        return result.GetUnpackedFixed64(index);

+      }

+      [global::System.CLSCompliant(false)]

+      public Builder SetUnpackedFixed64(int index, ulong value) {

+        PrepareBuilder();

+        result.unpackedFixed64_[index] = value;

+        return this;

+      }

+      [global::System.CLSCompliant(false)]

+      public Builder AddUnpackedFixed64(ulong value) {

+        PrepareBuilder();

+        result.unpackedFixed64_.Add(value);

+        return this;

+      }

+      [global::System.CLSCompliant(false)]

+      public Builder AddRangeUnpackedFixed64(scg::IEnumerable<ulong> values) {

+        PrepareBuilder();

+        result.unpackedFixed64_.Add(values);

+        return this;

+      }

+      public Builder ClearUnpackedFixed64() {

+        PrepareBuilder();

+        result.unpackedFixed64_.Clear();

+        return this;

+      }

+      

+      public pbc::IPopsicleList<int> UnpackedSfixed32List {

+        get { return PrepareBuilder().unpackedSfixed32_; }

+      }

+      public int UnpackedSfixed32Count {

+        get { return result.UnpackedSfixed32Count; }

+      }

+      public int GetUnpackedSfixed32(int index) {

+        return result.GetUnpackedSfixed32(index);

+      }

+      public Builder SetUnpackedSfixed32(int index, int value) {

+        PrepareBuilder();

+        result.unpackedSfixed32_[index] = value;

+        return this;

+      }

+      public Builder AddUnpackedSfixed32(int value) {

+        PrepareBuilder();

+        result.unpackedSfixed32_.Add(value);

+        return this;

+      }

+      public Builder AddRangeUnpackedSfixed32(scg::IEnumerable<int> values) {

+        PrepareBuilder();

+        result.unpackedSfixed32_.Add(values);

+        return this;

+      }

+      public Builder ClearUnpackedSfixed32() {

+        PrepareBuilder();

+        result.unpackedSfixed32_.Clear();

+        return this;

+      }

+      

+      public pbc::IPopsicleList<long> UnpackedSfixed64List {

+        get { return PrepareBuilder().unpackedSfixed64_; }

+      }

+      public int UnpackedSfixed64Count {

+        get { return result.UnpackedSfixed64Count; }

+      }

+      public long GetUnpackedSfixed64(int index) {

+        return result.GetUnpackedSfixed64(index);

+      }

+      public Builder SetUnpackedSfixed64(int index, long value) {

+        PrepareBuilder();

+        result.unpackedSfixed64_[index] = value;

+        return this;

+      }

+      public Builder AddUnpackedSfixed64(long value) {

+        PrepareBuilder();

+        result.unpackedSfixed64_.Add(value);

+        return this;

+      }

+      public Builder AddRangeUnpackedSfixed64(scg::IEnumerable<long> values) {

+        PrepareBuilder();

+        result.unpackedSfixed64_.Add(values);

+        return this;

+      }

+      public Builder ClearUnpackedSfixed64() {

+        PrepareBuilder();

+        result.unpackedSfixed64_.Clear();

+        return this;

+      }

+      

+      public pbc::IPopsicleList<float> UnpackedFloatList {

+        get { return PrepareBuilder().unpackedFloat_; }

+      }

+      public int UnpackedFloatCount {

+        get { return result.UnpackedFloatCount; }

+      }

+      public float GetUnpackedFloat(int index) {

+        return result.GetUnpackedFloat(index);

+      }

+      public Builder SetUnpackedFloat(int index, float value) {

+        PrepareBuilder();

+        result.unpackedFloat_[index] = value;

+        return this;

+      }

+      public Builder AddUnpackedFloat(float value) {

+        PrepareBuilder();

+        result.unpackedFloat_.Add(value);

+        return this;

+      }

+      public Builder AddRangeUnpackedFloat(scg::IEnumerable<float> values) {

+        PrepareBuilder();

+        result.unpackedFloat_.Add(values);

+        return this;

+      }

+      public Builder ClearUnpackedFloat() {

+        PrepareBuilder();

+        result.unpackedFloat_.Clear();

+        return this;

+      }

+      

+      public pbc::IPopsicleList<double> UnpackedDoubleList {

+        get { return PrepareBuilder().unpackedDouble_; }

+      }

+      public int UnpackedDoubleCount {

+        get { return result.UnpackedDoubleCount; }

+      }

+      public double GetUnpackedDouble(int index) {

+        return result.GetUnpackedDouble(index);

+      }

+      public Builder SetUnpackedDouble(int index, double value) {

+        PrepareBuilder();

+        result.unpackedDouble_[index] = value;

+        return this;

+      }

+      public Builder AddUnpackedDouble(double value) {

+        PrepareBuilder();

+        result.unpackedDouble_.Add(value);

+        return this;

+      }

+      public Builder AddRangeUnpackedDouble(scg::IEnumerable<double> values) {

+        PrepareBuilder();

+        result.unpackedDouble_.Add(values);

+        return this;

+      }

+      public Builder ClearUnpackedDouble() {

+        PrepareBuilder();

+        result.unpackedDouble_.Clear();

+        return this;

+      }

+      

+      public pbc::IPopsicleList<bool> UnpackedBoolList {

+        get { return PrepareBuilder().unpackedBool_; }

+      }

+      public int UnpackedBoolCount {

+        get { return result.UnpackedBoolCount; }

+      }

+      public bool GetUnpackedBool(int index) {

+        return result.GetUnpackedBool(index);

+      }

+      public Builder SetUnpackedBool(int index, bool value) {

+        PrepareBuilder();

+        result.unpackedBool_[index] = value;

+        return this;

+      }

+      public Builder AddUnpackedBool(bool value) {

+        PrepareBuilder();

+        result.unpackedBool_.Add(value);

+        return this;

+      }

+      public Builder AddRangeUnpackedBool(scg::IEnumerable<bool> values) {

+        PrepareBuilder();

+        result.unpackedBool_.Add(values);

+        return this;

+      }

+      public Builder ClearUnpackedBool() {

+        PrepareBuilder();

+        result.unpackedBool_.Clear();

+        return this;

+      }

+      

+      public pbc::IPopsicleList<global::Google.ProtocolBuffers.TestProtos.UnpackedTypesForeignEnumLite> UnpackedEnumList {

+        get { return PrepareBuilder().unpackedEnum_; }

+      }

+      public int UnpackedEnumCount {

+        get { return result.UnpackedEnumCount; }

+      }

+      public global::Google.ProtocolBuffers.TestProtos.UnpackedTypesForeignEnumLite GetUnpackedEnum(int index) {

+        return result.GetUnpackedEnum(index);

+      }

+      public Builder SetUnpackedEnum(int index, global::Google.ProtocolBuffers.TestProtos.UnpackedTypesForeignEnumLite value) {

+        PrepareBuilder();

+        result.unpackedEnum_[index] = value;

+        return this;

+      }

+      public Builder AddUnpackedEnum(global::Google.ProtocolBuffers.TestProtos.UnpackedTypesForeignEnumLite value) {

+        PrepareBuilder();

+        result.unpackedEnum_.Add(value);

+        return this;

+      }

+      public Builder AddRangeUnpackedEnum(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.UnpackedTypesForeignEnumLite> values) {

+        PrepareBuilder();

+        result.unpackedEnum_.Add(values);

+        return this;

+      }

+      public Builder ClearUnpackedEnum() {

+        PrepareBuilder();

+        result.unpackedEnum_.Clear();

+        return this;

+      }

+    }

+    static TestUnpackedTypesLite() {

+      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnitTestExtrasLiteProtoFile.Descriptor, null);

+    }

+  }

+  

   #endregion

   

 }

diff --git a/src/ProtocolBuffersLite.Test/TestProtos/UnitTestLiteProtoFile.cs b/src/ProtocolBuffersLite.Test/TestProtos/UnitTestLiteProtoFile.cs
index c682ad1..0142393 100644
--- a/src/ProtocolBuffersLite.Test/TestProtos/UnitTestLiteProtoFile.cs
+++ b/src/ProtocolBuffersLite.Test/TestProtos/UnitTestLiteProtoFile.cs
@@ -97,20 +97,6 @@
       registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.PackedDoubleExtensionLite);

       registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.PackedBoolExtensionLite);

       registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.PackedEnumExtensionLite);

-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.UnpackedInt32ExtensionLite);

-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.UnpackedInt64ExtensionLite);

-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.UnpackedUint32ExtensionLite);

-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.UnpackedUint64ExtensionLite);

-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.UnpackedSint32ExtensionLite);

-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.UnpackedSint64ExtensionLite);

-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.UnpackedFixed32ExtensionLite);

-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.UnpackedFixed64ExtensionLite);

-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.UnpackedSfixed32ExtensionLite);

-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.UnpackedSfixed64ExtensionLite);

-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.UnpackedFloatExtensionLite);

-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.UnpackedDoubleExtensionLite);

-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.UnpackedBoolExtensionLite);

-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.UnpackedEnumExtensionLite);

       registry.Add(global::Google.ProtocolBuffers.TestProtos.TestNestedExtensionLite.NestedExtension);

     }

     #endregion

@@ -295,38 +281,6 @@
     public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestPackedExtensionsLite, bool> PackedBoolExtensionLite;

     public const int PackedEnumExtensionLiteFieldNumber = 103;

     public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestPackedExtensionsLite, global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite> PackedEnumExtensionLite;

-    public const int UnpackedInt32ExtensionLiteFieldNumber = 90;

-    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, int> UnpackedInt32ExtensionLite;

-    public const int UnpackedInt64ExtensionLiteFieldNumber = 91;

-    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, long> UnpackedInt64ExtensionLite;

-    public const int UnpackedUint32ExtensionLiteFieldNumber = 92;

-    [global::System.CLSCompliant(false)]

-    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, uint> UnpackedUint32ExtensionLite;

-    public const int UnpackedUint64ExtensionLiteFieldNumber = 93;

-    [global::System.CLSCompliant(false)]

-    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, ulong> UnpackedUint64ExtensionLite;

-    public const int UnpackedSint32ExtensionLiteFieldNumber = 94;

-    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, int> UnpackedSint32ExtensionLite;

-    public const int UnpackedSint64ExtensionLiteFieldNumber = 95;

-    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, long> UnpackedSint64ExtensionLite;

-    public const int UnpackedFixed32ExtensionLiteFieldNumber = 96;

-    [global::System.CLSCompliant(false)]

-    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, uint> UnpackedFixed32ExtensionLite;

-    public const int UnpackedFixed64ExtensionLiteFieldNumber = 97;

-    [global::System.CLSCompliant(false)]

-    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, ulong> UnpackedFixed64ExtensionLite;

-    public const int UnpackedSfixed32ExtensionLiteFieldNumber = 98;

-    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, int> UnpackedSfixed32ExtensionLite;

-    public const int UnpackedSfixed64ExtensionLiteFieldNumber = 99;

-    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, long> UnpackedSfixed64ExtensionLite;

-    public const int UnpackedFloatExtensionLiteFieldNumber = 100;

-    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, float> UnpackedFloatExtensionLite;

-    public const int UnpackedDoubleExtensionLiteFieldNumber = 101;

-    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, double> UnpackedDoubleExtensionLite;

-    public const int UnpackedBoolExtensionLiteFieldNumber = 102;

-    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, bool> UnpackedBoolExtensionLite;

-    public const int UnpackedEnumExtensionLiteFieldNumber = 103;

-    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite> UnpackedEnumExtensionLite;

     #endregion

     

     #region Static variables

@@ -1082,132 +1036,6 @@
           global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.PackedEnumExtensionLiteFieldNumber,

           pbd::FieldType.Enum,

           true);

-      global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.UnpackedInt32ExtensionLite = 

-        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, int>(

-          "protobuf_unittest.unpacked_int32_extension_lite",

-          global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite.DefaultInstance,

-          null,

-          null,

-          global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.UnpackedInt32ExtensionLiteFieldNumber,

-          pbd::FieldType.Int32,

-          false);

-      global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.UnpackedInt64ExtensionLite = 

-        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, long>(

-          "protobuf_unittest.unpacked_int64_extension_lite",

-          global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite.DefaultInstance,

-          null,

-          null,

-          global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.UnpackedInt64ExtensionLiteFieldNumber,

-          pbd::FieldType.Int64,

-          false);

-      global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.UnpackedUint32ExtensionLite = 

-        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, uint>(

-          "protobuf_unittest.unpacked_uint32_extension_lite",

-          global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite.DefaultInstance,

-          null,

-          null,

-          global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.UnpackedUint32ExtensionLiteFieldNumber,

-          pbd::FieldType.UInt32,

-          false);

-      global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.UnpackedUint64ExtensionLite = 

-        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, ulong>(

-          "protobuf_unittest.unpacked_uint64_extension_lite",

-          global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite.DefaultInstance,

-          null,

-          null,

-          global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.UnpackedUint64ExtensionLiteFieldNumber,

-          pbd::FieldType.UInt64,

-          false);

-      global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.UnpackedSint32ExtensionLite = 

-        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, int>(

-          "protobuf_unittest.unpacked_sint32_extension_lite",

-          global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite.DefaultInstance,

-          null,

-          null,

-          global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.UnpackedSint32ExtensionLiteFieldNumber,

-          pbd::FieldType.SInt32,

-          false);

-      global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.UnpackedSint64ExtensionLite = 

-        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, long>(

-          "protobuf_unittest.unpacked_sint64_extension_lite",

-          global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite.DefaultInstance,

-          null,

-          null,

-          global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.UnpackedSint64ExtensionLiteFieldNumber,

-          pbd::FieldType.SInt64,

-          false);

-      global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.UnpackedFixed32ExtensionLite = 

-        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, uint>(

-          "protobuf_unittest.unpacked_fixed32_extension_lite",

-          global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite.DefaultInstance,

-          null,

-          null,

-          global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.UnpackedFixed32ExtensionLiteFieldNumber,

-          pbd::FieldType.Fixed32,

-          false);

-      global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.UnpackedFixed64ExtensionLite = 

-        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, ulong>(

-          "protobuf_unittest.unpacked_fixed64_extension_lite",

-          global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite.DefaultInstance,

-          null,

-          null,

-          global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.UnpackedFixed64ExtensionLiteFieldNumber,

-          pbd::FieldType.Fixed64,

-          false);

-      global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.UnpackedSfixed32ExtensionLite = 

-        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, int>(

-          "protobuf_unittest.unpacked_sfixed32_extension_lite",

-          global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite.DefaultInstance,

-          null,

-          null,

-          global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.UnpackedSfixed32ExtensionLiteFieldNumber,

-          pbd::FieldType.SFixed32,

-          false);

-      global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.UnpackedSfixed64ExtensionLite = 

-        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, long>(

-          "protobuf_unittest.unpacked_sfixed64_extension_lite",

-          global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite.DefaultInstance,

-          null,

-          null,

-          global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.UnpackedSfixed64ExtensionLiteFieldNumber,

-          pbd::FieldType.SFixed64,

-          false);

-      global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.UnpackedFloatExtensionLite = 

-        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, float>(

-          "protobuf_unittest.unpacked_float_extension_lite",

-          global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite.DefaultInstance,

-          null,

-          null,

-          global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.UnpackedFloatExtensionLiteFieldNumber,

-          pbd::FieldType.Float,

-          false);

-      global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.UnpackedDoubleExtensionLite = 

-        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, double>(

-          "protobuf_unittest.unpacked_double_extension_lite",

-          global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite.DefaultInstance,

-          null,

-          null,

-          global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.UnpackedDoubleExtensionLiteFieldNumber,

-          pbd::FieldType.Double,

-          false);

-      global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.UnpackedBoolExtensionLite = 

-        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, bool>(

-          "protobuf_unittest.unpacked_bool_extension_lite",

-          global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite.DefaultInstance,

-          null,

-          null,

-          global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.UnpackedBoolExtensionLiteFieldNumber,

-          pbd::FieldType.Bool,

-          false);

-      global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.UnpackedEnumExtensionLite = 

-        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite>(

-          "protobuf_unittest.unpacked_enum_extension_lite",

-          global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite.DefaultInstance,

-          null,

-          new EnumLiteMap<global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite>(),

-          global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.UnpackedEnumExtensionLiteFieldNumber,

-          pbd::FieldType.Enum,

-          false);

     }

     #endregion

     

@@ -7636,1194 +7464,6 @@
   [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]

   [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]

   [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")]

-  public sealed partial class TestUnpackedTypesLite : pb::GeneratedMessageLite<TestUnpackedTypesLite, TestUnpackedTypesLite.Builder> {

-    private TestUnpackedTypesLite() { }

-    private static readonly TestUnpackedTypesLite defaultInstance = new TestUnpackedTypesLite().MakeReadOnly();

-    private static readonly string[] _testUnpackedTypesLiteFieldNames = new string[] { "unpacked_bool", "unpacked_double", "unpacked_enum", "unpacked_fixed32", "unpacked_fixed64", "unpacked_float", "unpacked_int32", "unpacked_int64", "unpacked_sfixed32", "unpacked_sfixed64", "unpacked_sint32", "unpacked_sint64", "unpacked_uint32", "unpacked_uint64" };

-    private static readonly uint[] _testUnpackedTypesLiteFieldTags = new uint[] { 816, 809, 824, 773, 777, 805, 720, 728, 789, 793, 752, 760, 736, 744 };

-    public static TestUnpackedTypesLite DefaultInstance {

-      get { return defaultInstance; }

-    }

-    

-    public override TestUnpackedTypesLite DefaultInstanceForType {

-      get { return DefaultInstance; }

-    }

-    

-    protected override TestUnpackedTypesLite ThisMessage {

-      get { return this; }

-    }

-    

-    public const int UnpackedInt32FieldNumber = 90;

-    private pbc::PopsicleList<int> unpackedInt32_ = new pbc::PopsicleList<int>();

-    public scg::IList<int> UnpackedInt32List {

-      get { return pbc::Lists.AsReadOnly(unpackedInt32_); }

-    }

-    public int UnpackedInt32Count {

-      get { return unpackedInt32_.Count; }

-    }

-    public int GetUnpackedInt32(int index) {

-      return unpackedInt32_[index];

-    }

-    

-    public const int UnpackedInt64FieldNumber = 91;

-    private pbc::PopsicleList<long> unpackedInt64_ = new pbc::PopsicleList<long>();

-    public scg::IList<long> UnpackedInt64List {

-      get { return pbc::Lists.AsReadOnly(unpackedInt64_); }

-    }

-    public int UnpackedInt64Count {

-      get { return unpackedInt64_.Count; }

-    }

-    public long GetUnpackedInt64(int index) {

-      return unpackedInt64_[index];

-    }

-    

-    public const int UnpackedUint32FieldNumber = 92;

-    private pbc::PopsicleList<uint> unpackedUint32_ = new pbc::PopsicleList<uint>();

-    [global::System.CLSCompliant(false)]

-    public scg::IList<uint> UnpackedUint32List {

-      get { return pbc::Lists.AsReadOnly(unpackedUint32_); }

-    }

-    public int UnpackedUint32Count {

-      get { return unpackedUint32_.Count; }

-    }

-    [global::System.CLSCompliant(false)]

-    public uint GetUnpackedUint32(int index) {

-      return unpackedUint32_[index];

-    }

-    

-    public const int UnpackedUint64FieldNumber = 93;

-    private pbc::PopsicleList<ulong> unpackedUint64_ = new pbc::PopsicleList<ulong>();

-    [global::System.CLSCompliant(false)]

-    public scg::IList<ulong> UnpackedUint64List {

-      get { return pbc::Lists.AsReadOnly(unpackedUint64_); }

-    }

-    public int UnpackedUint64Count {

-      get { return unpackedUint64_.Count; }

-    }

-    [global::System.CLSCompliant(false)]

-    public ulong GetUnpackedUint64(int index) {

-      return unpackedUint64_[index];

-    }

-    

-    public const int UnpackedSint32FieldNumber = 94;

-    private pbc::PopsicleList<int> unpackedSint32_ = new pbc::PopsicleList<int>();

-    public scg::IList<int> UnpackedSint32List {

-      get { return pbc::Lists.AsReadOnly(unpackedSint32_); }

-    }

-    public int UnpackedSint32Count {

-      get { return unpackedSint32_.Count; }

-    }

-    public int GetUnpackedSint32(int index) {

-      return unpackedSint32_[index];

-    }

-    

-    public const int UnpackedSint64FieldNumber = 95;

-    private pbc::PopsicleList<long> unpackedSint64_ = new pbc::PopsicleList<long>();

-    public scg::IList<long> UnpackedSint64List {

-      get { return pbc::Lists.AsReadOnly(unpackedSint64_); }

-    }

-    public int UnpackedSint64Count {

-      get { return unpackedSint64_.Count; }

-    }

-    public long GetUnpackedSint64(int index) {

-      return unpackedSint64_[index];

-    }

-    

-    public const int UnpackedFixed32FieldNumber = 96;

-    private pbc::PopsicleList<uint> unpackedFixed32_ = new pbc::PopsicleList<uint>();

-    [global::System.CLSCompliant(false)]

-    public scg::IList<uint> UnpackedFixed32List {

-      get { return pbc::Lists.AsReadOnly(unpackedFixed32_); }

-    }

-    public int UnpackedFixed32Count {

-      get { return unpackedFixed32_.Count; }

-    }

-    [global::System.CLSCompliant(false)]

-    public uint GetUnpackedFixed32(int index) {

-      return unpackedFixed32_[index];

-    }

-    

-    public const int UnpackedFixed64FieldNumber = 97;

-    private pbc::PopsicleList<ulong> unpackedFixed64_ = new pbc::PopsicleList<ulong>();

-    [global::System.CLSCompliant(false)]

-    public scg::IList<ulong> UnpackedFixed64List {

-      get { return pbc::Lists.AsReadOnly(unpackedFixed64_); }

-    }

-    public int UnpackedFixed64Count {

-      get { return unpackedFixed64_.Count; }

-    }

-    [global::System.CLSCompliant(false)]

-    public ulong GetUnpackedFixed64(int index) {

-      return unpackedFixed64_[index];

-    }

-    

-    public const int UnpackedSfixed32FieldNumber = 98;

-    private pbc::PopsicleList<int> unpackedSfixed32_ = new pbc::PopsicleList<int>();

-    public scg::IList<int> UnpackedSfixed32List {

-      get { return pbc::Lists.AsReadOnly(unpackedSfixed32_); }

-    }

-    public int UnpackedSfixed32Count {

-      get { return unpackedSfixed32_.Count; }

-    }

-    public int GetUnpackedSfixed32(int index) {

-      return unpackedSfixed32_[index];

-    }

-    

-    public const int UnpackedSfixed64FieldNumber = 99;

-    private pbc::PopsicleList<long> unpackedSfixed64_ = new pbc::PopsicleList<long>();

-    public scg::IList<long> UnpackedSfixed64List {

-      get { return pbc::Lists.AsReadOnly(unpackedSfixed64_); }

-    }

-    public int UnpackedSfixed64Count {

-      get { return unpackedSfixed64_.Count; }

-    }

-    public long GetUnpackedSfixed64(int index) {

-      return unpackedSfixed64_[index];

-    }

-    

-    public const int UnpackedFloatFieldNumber = 100;

-    private pbc::PopsicleList<float> unpackedFloat_ = new pbc::PopsicleList<float>();

-    public scg::IList<float> UnpackedFloatList {

-      get { return pbc::Lists.AsReadOnly(unpackedFloat_); }

-    }

-    public int UnpackedFloatCount {

-      get { return unpackedFloat_.Count; }

-    }

-    public float GetUnpackedFloat(int index) {

-      return unpackedFloat_[index];

-    }

-    

-    public const int UnpackedDoubleFieldNumber = 101;

-    private pbc::PopsicleList<double> unpackedDouble_ = new pbc::PopsicleList<double>();

-    public scg::IList<double> UnpackedDoubleList {

-      get { return pbc::Lists.AsReadOnly(unpackedDouble_); }

-    }

-    public int UnpackedDoubleCount {

-      get { return unpackedDouble_.Count; }

-    }

-    public double GetUnpackedDouble(int index) {

-      return unpackedDouble_[index];

-    }

-    

-    public const int UnpackedBoolFieldNumber = 102;

-    private pbc::PopsicleList<bool> unpackedBool_ = new pbc::PopsicleList<bool>();

-    public scg::IList<bool> UnpackedBoolList {

-      get { return pbc::Lists.AsReadOnly(unpackedBool_); }

-    }

-    public int UnpackedBoolCount {

-      get { return unpackedBool_.Count; }

-    }

-    public bool GetUnpackedBool(int index) {

-      return unpackedBool_[index];

-    }

-    

-    public const int UnpackedEnumFieldNumber = 103;

-    private pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite> unpackedEnum_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite>();

-    public scg::IList<global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite> UnpackedEnumList {

-      get { return pbc::Lists.AsReadOnly(unpackedEnum_); }

-    }

-    public int UnpackedEnumCount {

-      get { return unpackedEnum_.Count; }

-    }

-    public global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite GetUnpackedEnum(int index) {

-      return unpackedEnum_[index];

-    }

-    

-    public override bool IsInitialized {

-      get {

-        return true;

-      }

-    }

-    

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

-      int size = SerializedSize;

-      string[] field_names = _testUnpackedTypesLiteFieldNames;

-      if (unpackedInt32_.Count > 0) {

-        output.WriteInt32Array(90, field_names[6], unpackedInt32_);

-      }

-      if (unpackedInt64_.Count > 0) {

-        output.WriteInt64Array(91, field_names[7], unpackedInt64_);

-      }

-      if (unpackedUint32_.Count > 0) {

-        output.WriteUInt32Array(92, field_names[12], unpackedUint32_);

-      }

-      if (unpackedUint64_.Count > 0) {

-        output.WriteUInt64Array(93, field_names[13], unpackedUint64_);

-      }

-      if (unpackedSint32_.Count > 0) {

-        output.WriteSInt32Array(94, field_names[10], unpackedSint32_);

-      }

-      if (unpackedSint64_.Count > 0) {

-        output.WriteSInt64Array(95, field_names[11], unpackedSint64_);

-      }

-      if (unpackedFixed32_.Count > 0) {

-        output.WriteFixed32Array(96, field_names[3], unpackedFixed32_);

-      }

-      if (unpackedFixed64_.Count > 0) {

-        output.WriteFixed64Array(97, field_names[4], unpackedFixed64_);

-      }

-      if (unpackedSfixed32_.Count > 0) {

-        output.WriteSFixed32Array(98, field_names[8], unpackedSfixed32_);

-      }

-      if (unpackedSfixed64_.Count > 0) {

-        output.WriteSFixed64Array(99, field_names[9], unpackedSfixed64_);

-      }

-      if (unpackedFloat_.Count > 0) {

-        output.WriteFloatArray(100, field_names[5], unpackedFloat_);

-      }

-      if (unpackedDouble_.Count > 0) {

-        output.WriteDoubleArray(101, field_names[1], unpackedDouble_);

-      }

-      if (unpackedBool_.Count > 0) {

-        output.WriteBoolArray(102, field_names[0], unpackedBool_);

-      }

-      if (unpackedEnum_.Count > 0) {

-        output.WriteEnumArray(103, field_names[2], unpackedEnum_);

-      }

-    }

-    

-    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 UnpackedInt32List) {

-            dataSize += pb::CodedOutputStream.ComputeInt32SizeNoTag(element);

-          }

-          size += dataSize;

-          size += 2 * unpackedInt32_.Count;

-        }

-        {

-          int dataSize = 0;

-          foreach (long element in UnpackedInt64List) {

-            dataSize += pb::CodedOutputStream.ComputeInt64SizeNoTag(element);

-          }

-          size += dataSize;

-          size += 2 * unpackedInt64_.Count;

-        }

-        {

-          int dataSize = 0;

-          foreach (uint element in UnpackedUint32List) {

-            dataSize += pb::CodedOutputStream.ComputeUInt32SizeNoTag(element);

-          }

-          size += dataSize;

-          size += 2 * unpackedUint32_.Count;

-        }

-        {

-          int dataSize = 0;

-          foreach (ulong element in UnpackedUint64List) {

-            dataSize += pb::CodedOutputStream.ComputeUInt64SizeNoTag(element);

-          }

-          size += dataSize;

-          size += 2 * unpackedUint64_.Count;

-        }

-        {

-          int dataSize = 0;

-          foreach (int element in UnpackedSint32List) {

-            dataSize += pb::CodedOutputStream.ComputeSInt32SizeNoTag(element);

-          }

-          size += dataSize;

-          size += 2 * unpackedSint32_.Count;

-        }

-        {

-          int dataSize = 0;

-          foreach (long element in UnpackedSint64List) {

-            dataSize += pb::CodedOutputStream.ComputeSInt64SizeNoTag(element);

-          }

-          size += dataSize;

-          size += 2 * unpackedSint64_.Count;

-        }

-        {

-          int dataSize = 0;

-          dataSize = 4 * unpackedFixed32_.Count;

-          size += dataSize;

-          size += 2 * unpackedFixed32_.Count;

-        }

-        {

-          int dataSize = 0;

-          dataSize = 8 * unpackedFixed64_.Count;

-          size += dataSize;

-          size += 2 * unpackedFixed64_.Count;

-        }

-        {

-          int dataSize = 0;

-          dataSize = 4 * unpackedSfixed32_.Count;

-          size += dataSize;

-          size += 2 * unpackedSfixed32_.Count;

-        }

-        {

-          int dataSize = 0;

-          dataSize = 8 * unpackedSfixed64_.Count;

-          size += dataSize;

-          size += 2 * unpackedSfixed64_.Count;

-        }

-        {

-          int dataSize = 0;

-          dataSize = 4 * unpackedFloat_.Count;

-          size += dataSize;

-          size += 2 * unpackedFloat_.Count;

-        }

-        {

-          int dataSize = 0;

-          dataSize = 8 * unpackedDouble_.Count;

-          size += dataSize;

-          size += 2 * unpackedDouble_.Count;

-        }

-        {

-          int dataSize = 0;

-          dataSize = 1 * unpackedBool_.Count;

-          size += dataSize;

-          size += 2 * unpackedBool_.Count;

-        }

-        {

-          int dataSize = 0;

-          if (unpackedEnum_.Count > 0) {

-            foreach (global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite element in unpackedEnum_) {

-              dataSize += pb::CodedOutputStream.ComputeEnumSizeNoTag((int) element);

-            }

-            size += dataSize;

-            size += 2 * unpackedEnum_.Count;

-          }

-        }

-        memoizedSerializedSize = size;

-        return size;

-      }

-    }

-    

-    #region Lite runtime methods

-    public override int GetHashCode() {

-      int hash = GetType().GetHashCode();

-      foreach(int i in unpackedInt32_)

-        hash ^= i.GetHashCode();

-      foreach(long i in unpackedInt64_)

-        hash ^= i.GetHashCode();

-      foreach(uint i in unpackedUint32_)

-        hash ^= i.GetHashCode();

-      foreach(ulong i in unpackedUint64_)

-        hash ^= i.GetHashCode();

-      foreach(int i in unpackedSint32_)

-        hash ^= i.GetHashCode();

-      foreach(long i in unpackedSint64_)

-        hash ^= i.GetHashCode();

-      foreach(uint i in unpackedFixed32_)

-        hash ^= i.GetHashCode();

-      foreach(ulong i in unpackedFixed64_)

-        hash ^= i.GetHashCode();

-      foreach(int i in unpackedSfixed32_)

-        hash ^= i.GetHashCode();

-      foreach(long i in unpackedSfixed64_)

-        hash ^= i.GetHashCode();

-      foreach(float i in unpackedFloat_)

-        hash ^= i.GetHashCode();

-      foreach(double i in unpackedDouble_)

-        hash ^= i.GetHashCode();

-      foreach(bool i in unpackedBool_)

-        hash ^= i.GetHashCode();

-      foreach(global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite i in unpackedEnum_)

-        hash ^= i.GetHashCode();

-      return hash;

-    }

-    

-    public override bool Equals(object obj) {

-      TestUnpackedTypesLite other = obj as TestUnpackedTypesLite;

-      if (other == null) return false;

-      if(unpackedInt32_.Count != other.unpackedInt32_.Count) return false;

-      for(int ix=0; ix < unpackedInt32_.Count; ix++)

-        if(!unpackedInt32_[ix].Equals(other.unpackedInt32_[ix])) return false;

-      if(unpackedInt64_.Count != other.unpackedInt64_.Count) return false;

-      for(int ix=0; ix < unpackedInt64_.Count; ix++)

-        if(!unpackedInt64_[ix].Equals(other.unpackedInt64_[ix])) return false;

-      if(unpackedUint32_.Count != other.unpackedUint32_.Count) return false;

-      for(int ix=0; ix < unpackedUint32_.Count; ix++)

-        if(!unpackedUint32_[ix].Equals(other.unpackedUint32_[ix])) return false;

-      if(unpackedUint64_.Count != other.unpackedUint64_.Count) return false;

-      for(int ix=0; ix < unpackedUint64_.Count; ix++)

-        if(!unpackedUint64_[ix].Equals(other.unpackedUint64_[ix])) return false;

-      if(unpackedSint32_.Count != other.unpackedSint32_.Count) return false;

-      for(int ix=0; ix < unpackedSint32_.Count; ix++)

-        if(!unpackedSint32_[ix].Equals(other.unpackedSint32_[ix])) return false;

-      if(unpackedSint64_.Count != other.unpackedSint64_.Count) return false;

-      for(int ix=0; ix < unpackedSint64_.Count; ix++)

-        if(!unpackedSint64_[ix].Equals(other.unpackedSint64_[ix])) return false;

-      if(unpackedFixed32_.Count != other.unpackedFixed32_.Count) return false;

-      for(int ix=0; ix < unpackedFixed32_.Count; ix++)

-        if(!unpackedFixed32_[ix].Equals(other.unpackedFixed32_[ix])) return false;

-      if(unpackedFixed64_.Count != other.unpackedFixed64_.Count) return false;

-      for(int ix=0; ix < unpackedFixed64_.Count; ix++)

-        if(!unpackedFixed64_[ix].Equals(other.unpackedFixed64_[ix])) return false;

-      if(unpackedSfixed32_.Count != other.unpackedSfixed32_.Count) return false;

-      for(int ix=0; ix < unpackedSfixed32_.Count; ix++)

-        if(!unpackedSfixed32_[ix].Equals(other.unpackedSfixed32_[ix])) return false;

-      if(unpackedSfixed64_.Count != other.unpackedSfixed64_.Count) return false;

-      for(int ix=0; ix < unpackedSfixed64_.Count; ix++)

-        if(!unpackedSfixed64_[ix].Equals(other.unpackedSfixed64_[ix])) return false;

-      if(unpackedFloat_.Count != other.unpackedFloat_.Count) return false;

-      for(int ix=0; ix < unpackedFloat_.Count; ix++)

-        if(!unpackedFloat_[ix].Equals(other.unpackedFloat_[ix])) return false;

-      if(unpackedDouble_.Count != other.unpackedDouble_.Count) return false;

-      for(int ix=0; ix < unpackedDouble_.Count; ix++)

-        if(!unpackedDouble_[ix].Equals(other.unpackedDouble_[ix])) return false;

-      if(unpackedBool_.Count != other.unpackedBool_.Count) return false;

-      for(int ix=0; ix < unpackedBool_.Count; ix++)

-        if(!unpackedBool_[ix].Equals(other.unpackedBool_[ix])) return false;

-      if(unpackedEnum_.Count != other.unpackedEnum_.Count) return false;

-      for(int ix=0; ix < unpackedEnum_.Count; ix++)

-        if(!unpackedEnum_[ix].Equals(other.unpackedEnum_[ix])) return false;

-      return true;

-    }

-    

-    public override void PrintTo(global::System.IO.TextWriter writer) {

-      PrintField("unpacked_int32", unpackedInt32_, writer);

-      PrintField("unpacked_int64", unpackedInt64_, writer);

-      PrintField("unpacked_uint32", unpackedUint32_, writer);

-      PrintField("unpacked_uint64", unpackedUint64_, writer);

-      PrintField("unpacked_sint32", unpackedSint32_, writer);

-      PrintField("unpacked_sint64", unpackedSint64_, writer);

-      PrintField("unpacked_fixed32", unpackedFixed32_, writer);

-      PrintField("unpacked_fixed64", unpackedFixed64_, writer);

-      PrintField("unpacked_sfixed32", unpackedSfixed32_, writer);

-      PrintField("unpacked_sfixed64", unpackedSfixed64_, writer);

-      PrintField("unpacked_float", unpackedFloat_, writer);

-      PrintField("unpacked_double", unpackedDouble_, writer);

-      PrintField("unpacked_bool", unpackedBool_, writer);

-      PrintField("unpacked_enum", unpackedEnum_, writer);

-    }

-    #endregion

-    

-    public static TestUnpackedTypesLite ParseFrom(pb::ByteString data) {

-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();

-    }

-    public static TestUnpackedTypesLite ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {

-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();

-    }

-    public static TestUnpackedTypesLite ParseFrom(byte[] data) {

-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();

-    }

-    public static TestUnpackedTypesLite ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {

-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();

-    }

-    public static TestUnpackedTypesLite ParseFrom(global::System.IO.Stream input) {

-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();

-    }

-    public static TestUnpackedTypesLite ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {

-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();

-    }

-    public static TestUnpackedTypesLite ParseDelimitedFrom(global::System.IO.Stream input) {

-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();

-    }

-    public static TestUnpackedTypesLite ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {

-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();

-    }

-    public static TestUnpackedTypesLite ParseFrom(pb::ICodedInputStream input) {

-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();

-    }

-    public static TestUnpackedTypesLite ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {

-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();

-    }

-    private TestUnpackedTypesLite MakeReadOnly() {

-      unpackedInt32_.MakeReadOnly();

-      unpackedInt64_.MakeReadOnly();

-      unpackedUint32_.MakeReadOnly();

-      unpackedUint64_.MakeReadOnly();

-      unpackedSint32_.MakeReadOnly();

-      unpackedSint64_.MakeReadOnly();

-      unpackedFixed32_.MakeReadOnly();

-      unpackedFixed64_.MakeReadOnly();

-      unpackedSfixed32_.MakeReadOnly();

-      unpackedSfixed64_.MakeReadOnly();

-      unpackedFloat_.MakeReadOnly();

-      unpackedDouble_.MakeReadOnly();

-      unpackedBool_.MakeReadOnly();

-      unpackedEnum_.MakeReadOnly();

-      return this;

-    }

-    

-    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(TestUnpackedTypesLite prototype) {

-      return new Builder(prototype);

-    }

-    

-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]

-    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]

-    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")]

-    public sealed partial class Builder : pb::GeneratedBuilderLite<TestUnpackedTypesLite, Builder> {

-      protected override Builder ThisBuilder {

-        get { return this; }

-      }

-      public Builder() {

-        result = DefaultInstance;

-        resultIsReadOnly = true;

-      }

-      internal Builder(TestUnpackedTypesLite cloneFrom) {

-        result = cloneFrom;

-        resultIsReadOnly = true;

-      }

-      

-      private bool resultIsReadOnly;

-      private TestUnpackedTypesLite result;

-      

-      private TestUnpackedTypesLite PrepareBuilder() {

-        if (resultIsReadOnly) {

-          TestUnpackedTypesLite original = result;

-          result = new TestUnpackedTypesLite();

-          resultIsReadOnly = false;

-          MergeFrom(original);

-        }

-        return result;

-      }

-      

-      public override bool IsInitialized {

-        get { return result.IsInitialized; }

-      }

-      

-      protected override TestUnpackedTypesLite MessageBeingBuilt {

-        get { return PrepareBuilder(); }

-      }

-      

-      public override Builder Clear() {

-        result = DefaultInstance;

-        resultIsReadOnly = true;

-        return this;

-      }

-      

-      public override Builder Clone() {

-        if (resultIsReadOnly) {

-          return new Builder(result);

-        } else {

-          return new Builder().MergeFrom(result);

-        }

-      }

-      

-      public override TestUnpackedTypesLite DefaultInstanceForType {

-        get { return global::Google.ProtocolBuffers.TestProtos.TestUnpackedTypesLite.DefaultInstance; }

-      }

-      

-      public override TestUnpackedTypesLite BuildPartial() {

-        if (resultIsReadOnly) {

-          return result;

-        }

-        resultIsReadOnly = true;

-        return result.MakeReadOnly();

-      }

-      

-      public override Builder MergeFrom(pb::IMessageLite other) {

-        if (other is TestUnpackedTypesLite) {

-          return MergeFrom((TestUnpackedTypesLite) other);

-        } else {

-          base.MergeFrom(other);

-          return this;

-        }

-      }

-      

-      public override Builder MergeFrom(TestUnpackedTypesLite other) {

-        if (other == global::Google.ProtocolBuffers.TestProtos.TestUnpackedTypesLite.DefaultInstance) return this;

-        PrepareBuilder();

-        if (other.unpackedInt32_.Count != 0) {

-          result.unpackedInt32_.Add(other.unpackedInt32_);

-        }

-        if (other.unpackedInt64_.Count != 0) {

-          result.unpackedInt64_.Add(other.unpackedInt64_);

-        }

-        if (other.unpackedUint32_.Count != 0) {

-          result.unpackedUint32_.Add(other.unpackedUint32_);

-        }

-        if (other.unpackedUint64_.Count != 0) {

-          result.unpackedUint64_.Add(other.unpackedUint64_);

-        }

-        if (other.unpackedSint32_.Count != 0) {

-          result.unpackedSint32_.Add(other.unpackedSint32_);

-        }

-        if (other.unpackedSint64_.Count != 0) {

-          result.unpackedSint64_.Add(other.unpackedSint64_);

-        }

-        if (other.unpackedFixed32_.Count != 0) {

-          result.unpackedFixed32_.Add(other.unpackedFixed32_);

-        }

-        if (other.unpackedFixed64_.Count != 0) {

-          result.unpackedFixed64_.Add(other.unpackedFixed64_);

-        }

-        if (other.unpackedSfixed32_.Count != 0) {

-          result.unpackedSfixed32_.Add(other.unpackedSfixed32_);

-        }

-        if (other.unpackedSfixed64_.Count != 0) {

-          result.unpackedSfixed64_.Add(other.unpackedSfixed64_);

-        }

-        if (other.unpackedFloat_.Count != 0) {

-          result.unpackedFloat_.Add(other.unpackedFloat_);

-        }

-        if (other.unpackedDouble_.Count != 0) {

-          result.unpackedDouble_.Add(other.unpackedDouble_);

-        }

-        if (other.unpackedBool_.Count != 0) {

-          result.unpackedBool_.Add(other.unpackedBool_);

-        }

-        if (other.unpackedEnum_.Count != 0) {

-          result.unpackedEnum_.Add(other.unpackedEnum_);

-        }

-        return this;

-      }

-      

-      public override Builder MergeFrom(pb::ICodedInputStream input) {

-        return MergeFrom(input, pb::ExtensionRegistry.Empty);

-      }

-      

-      public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {

-        PrepareBuilder();

-        uint tag;

-        string field_name;

-        while (input.ReadTag(out tag, out field_name)) {

-          if(tag == 0 && field_name != null) {

-            int field_ordinal = global::System.Array.BinarySearch(_testUnpackedTypesLiteFieldNames, field_name, global::System.StringComparer.Ordinal);

-            if(field_ordinal >= 0)

-              tag = _testUnpackedTypesLiteFieldTags[field_ordinal];

-            else {

-              ParseUnknownField(input, extensionRegistry, tag, field_name);

-              continue;

-            }

-          }

-          switch (tag) {

-            case 0: {

-              throw pb::InvalidProtocolBufferException.InvalidTag();

-            }

-            default: {

-              if (pb::WireFormat.IsEndGroupTag(tag)) {

-                return this;

-              }

-              ParseUnknownField(input, extensionRegistry, tag, field_name);

-              break;

-            }

-            case 722:

-            case 720: {

-              input.ReadInt32Array(tag, field_name, result.unpackedInt32_);

-              break;

-            }

-            case 730:

-            case 728: {

-              input.ReadInt64Array(tag, field_name, result.unpackedInt64_);

-              break;

-            }

-            case 738:

-            case 736: {

-              input.ReadUInt32Array(tag, field_name, result.unpackedUint32_);

-              break;

-            }

-            case 746:

-            case 744: {

-              input.ReadUInt64Array(tag, field_name, result.unpackedUint64_);

-              break;

-            }

-            case 754:

-            case 752: {

-              input.ReadSInt32Array(tag, field_name, result.unpackedSint32_);

-              break;

-            }

-            case 762:

-            case 760: {

-              input.ReadSInt64Array(tag, field_name, result.unpackedSint64_);

-              break;

-            }

-            case 770:

-            case 773: {

-              input.ReadFixed32Array(tag, field_name, result.unpackedFixed32_);

-              break;

-            }

-            case 778:

-            case 777: {

-              input.ReadFixed64Array(tag, field_name, result.unpackedFixed64_);

-              break;

-            }

-            case 786:

-            case 789: {

-              input.ReadSFixed32Array(tag, field_name, result.unpackedSfixed32_);

-              break;

-            }

-            case 794:

-            case 793: {

-              input.ReadSFixed64Array(tag, field_name, result.unpackedSfixed64_);

-              break;

-            }

-            case 802:

-            case 805: {

-              input.ReadFloatArray(tag, field_name, result.unpackedFloat_);

-              break;

-            }

-            case 810:

-            case 809: {

-              input.ReadDoubleArray(tag, field_name, result.unpackedDouble_);

-              break;

-            }

-            case 818:

-            case 816: {

-              input.ReadBoolArray(tag, field_name, result.unpackedBool_);

-              break;

-            }

-            case 826:

-            case 824: {

-              scg::ICollection<object> unknownItems;

-              input.ReadEnumArray<global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite>(tag, field_name, result.unpackedEnum_, out unknownItems);

-              break;

-            }

-          }

-        }

-        

-        return this;

-      }

-      

-      

-      public pbc::IPopsicleList<int> UnpackedInt32List {

-        get { return PrepareBuilder().unpackedInt32_; }

-      }

-      public int UnpackedInt32Count {

-        get { return result.UnpackedInt32Count; }

-      }

-      public int GetUnpackedInt32(int index) {

-        return result.GetUnpackedInt32(index);

-      }

-      public Builder SetUnpackedInt32(int index, int value) {

-        PrepareBuilder();

-        result.unpackedInt32_[index] = value;

-        return this;

-      }

-      public Builder AddUnpackedInt32(int value) {

-        PrepareBuilder();

-        result.unpackedInt32_.Add(value);

-        return this;

-      }

-      public Builder AddRangeUnpackedInt32(scg::IEnumerable<int> values) {

-        PrepareBuilder();

-        result.unpackedInt32_.Add(values);

-        return this;

-      }

-      public Builder ClearUnpackedInt32() {

-        PrepareBuilder();

-        result.unpackedInt32_.Clear();

-        return this;

-      }

-      

-      public pbc::IPopsicleList<long> UnpackedInt64List {

-        get { return PrepareBuilder().unpackedInt64_; }

-      }

-      public int UnpackedInt64Count {

-        get { return result.UnpackedInt64Count; }

-      }

-      public long GetUnpackedInt64(int index) {

-        return result.GetUnpackedInt64(index);

-      }

-      public Builder SetUnpackedInt64(int index, long value) {

-        PrepareBuilder();

-        result.unpackedInt64_[index] = value;

-        return this;

-      }

-      public Builder AddUnpackedInt64(long value) {

-        PrepareBuilder();

-        result.unpackedInt64_.Add(value);

-        return this;

-      }

-      public Builder AddRangeUnpackedInt64(scg::IEnumerable<long> values) {

-        PrepareBuilder();

-        result.unpackedInt64_.Add(values);

-        return this;

-      }

-      public Builder ClearUnpackedInt64() {

-        PrepareBuilder();

-        result.unpackedInt64_.Clear();

-        return this;

-      }

-      

-      [global::System.CLSCompliant(false)]

-      public pbc::IPopsicleList<uint> UnpackedUint32List {

-        get { return PrepareBuilder().unpackedUint32_; }

-      }

-      public int UnpackedUint32Count {

-        get { return result.UnpackedUint32Count; }

-      }

-      [global::System.CLSCompliant(false)]

-      public uint GetUnpackedUint32(int index) {

-        return result.GetUnpackedUint32(index);

-      }

-      [global::System.CLSCompliant(false)]

-      public Builder SetUnpackedUint32(int index, uint value) {

-        PrepareBuilder();

-        result.unpackedUint32_[index] = value;

-        return this;

-      }

-      [global::System.CLSCompliant(false)]

-      public Builder AddUnpackedUint32(uint value) {

-        PrepareBuilder();

-        result.unpackedUint32_.Add(value);

-        return this;

-      }

-      [global::System.CLSCompliant(false)]

-      public Builder AddRangeUnpackedUint32(scg::IEnumerable<uint> values) {

-        PrepareBuilder();

-        result.unpackedUint32_.Add(values);

-        return this;

-      }

-      public Builder ClearUnpackedUint32() {

-        PrepareBuilder();

-        result.unpackedUint32_.Clear();

-        return this;

-      }

-      

-      [global::System.CLSCompliant(false)]

-      public pbc::IPopsicleList<ulong> UnpackedUint64List {

-        get { return PrepareBuilder().unpackedUint64_; }

-      }

-      public int UnpackedUint64Count {

-        get { return result.UnpackedUint64Count; }

-      }

-      [global::System.CLSCompliant(false)]

-      public ulong GetUnpackedUint64(int index) {

-        return result.GetUnpackedUint64(index);

-      }

-      [global::System.CLSCompliant(false)]

-      public Builder SetUnpackedUint64(int index, ulong value) {

-        PrepareBuilder();

-        result.unpackedUint64_[index] = value;

-        return this;

-      }

-      [global::System.CLSCompliant(false)]

-      public Builder AddUnpackedUint64(ulong value) {

-        PrepareBuilder();

-        result.unpackedUint64_.Add(value);

-        return this;

-      }

-      [global::System.CLSCompliant(false)]

-      public Builder AddRangeUnpackedUint64(scg::IEnumerable<ulong> values) {

-        PrepareBuilder();

-        result.unpackedUint64_.Add(values);

-        return this;

-      }

-      public Builder ClearUnpackedUint64() {

-        PrepareBuilder();

-        result.unpackedUint64_.Clear();

-        return this;

-      }

-      

-      public pbc::IPopsicleList<int> UnpackedSint32List {

-        get { return PrepareBuilder().unpackedSint32_; }

-      }

-      public int UnpackedSint32Count {

-        get { return result.UnpackedSint32Count; }

-      }

-      public int GetUnpackedSint32(int index) {

-        return result.GetUnpackedSint32(index);

-      }

-      public Builder SetUnpackedSint32(int index, int value) {

-        PrepareBuilder();

-        result.unpackedSint32_[index] = value;

-        return this;

-      }

-      public Builder AddUnpackedSint32(int value) {

-        PrepareBuilder();

-        result.unpackedSint32_.Add(value);

-        return this;

-      }

-      public Builder AddRangeUnpackedSint32(scg::IEnumerable<int> values) {

-        PrepareBuilder();

-        result.unpackedSint32_.Add(values);

-        return this;

-      }

-      public Builder ClearUnpackedSint32() {

-        PrepareBuilder();

-        result.unpackedSint32_.Clear();

-        return this;

-      }

-      

-      public pbc::IPopsicleList<long> UnpackedSint64List {

-        get { return PrepareBuilder().unpackedSint64_; }

-      }

-      public int UnpackedSint64Count {

-        get { return result.UnpackedSint64Count; }

-      }

-      public long GetUnpackedSint64(int index) {

-        return result.GetUnpackedSint64(index);

-      }

-      public Builder SetUnpackedSint64(int index, long value) {

-        PrepareBuilder();

-        result.unpackedSint64_[index] = value;

-        return this;

-      }

-      public Builder AddUnpackedSint64(long value) {

-        PrepareBuilder();

-        result.unpackedSint64_.Add(value);

-        return this;

-      }

-      public Builder AddRangeUnpackedSint64(scg::IEnumerable<long> values) {

-        PrepareBuilder();

-        result.unpackedSint64_.Add(values);

-        return this;

-      }

-      public Builder ClearUnpackedSint64() {

-        PrepareBuilder();

-        result.unpackedSint64_.Clear();

-        return this;

-      }

-      

-      [global::System.CLSCompliant(false)]

-      public pbc::IPopsicleList<uint> UnpackedFixed32List {

-        get { return PrepareBuilder().unpackedFixed32_; }

-      }

-      public int UnpackedFixed32Count {

-        get { return result.UnpackedFixed32Count; }

-      }

-      [global::System.CLSCompliant(false)]

-      public uint GetUnpackedFixed32(int index) {

-        return result.GetUnpackedFixed32(index);

-      }

-      [global::System.CLSCompliant(false)]

-      public Builder SetUnpackedFixed32(int index, uint value) {

-        PrepareBuilder();

-        result.unpackedFixed32_[index] = value;

-        return this;

-      }

-      [global::System.CLSCompliant(false)]

-      public Builder AddUnpackedFixed32(uint value) {

-        PrepareBuilder();

-        result.unpackedFixed32_.Add(value);

-        return this;

-      }

-      [global::System.CLSCompliant(false)]

-      public Builder AddRangeUnpackedFixed32(scg::IEnumerable<uint> values) {

-        PrepareBuilder();

-        result.unpackedFixed32_.Add(values);

-        return this;

-      }

-      public Builder ClearUnpackedFixed32() {

-        PrepareBuilder();

-        result.unpackedFixed32_.Clear();

-        return this;

-      }

-      

-      [global::System.CLSCompliant(false)]

-      public pbc::IPopsicleList<ulong> UnpackedFixed64List {

-        get { return PrepareBuilder().unpackedFixed64_; }

-      }

-      public int UnpackedFixed64Count {

-        get { return result.UnpackedFixed64Count; }

-      }

-      [global::System.CLSCompliant(false)]

-      public ulong GetUnpackedFixed64(int index) {

-        return result.GetUnpackedFixed64(index);

-      }

-      [global::System.CLSCompliant(false)]

-      public Builder SetUnpackedFixed64(int index, ulong value) {

-        PrepareBuilder();

-        result.unpackedFixed64_[index] = value;

-        return this;

-      }

-      [global::System.CLSCompliant(false)]

-      public Builder AddUnpackedFixed64(ulong value) {

-        PrepareBuilder();

-        result.unpackedFixed64_.Add(value);

-        return this;

-      }

-      [global::System.CLSCompliant(false)]

-      public Builder AddRangeUnpackedFixed64(scg::IEnumerable<ulong> values) {

-        PrepareBuilder();

-        result.unpackedFixed64_.Add(values);

-        return this;

-      }

-      public Builder ClearUnpackedFixed64() {

-        PrepareBuilder();

-        result.unpackedFixed64_.Clear();

-        return this;

-      }

-      

-      public pbc::IPopsicleList<int> UnpackedSfixed32List {

-        get { return PrepareBuilder().unpackedSfixed32_; }

-      }

-      public int UnpackedSfixed32Count {

-        get { return result.UnpackedSfixed32Count; }

-      }

-      public int GetUnpackedSfixed32(int index) {

-        return result.GetUnpackedSfixed32(index);

-      }

-      public Builder SetUnpackedSfixed32(int index, int value) {

-        PrepareBuilder();

-        result.unpackedSfixed32_[index] = value;

-        return this;

-      }

-      public Builder AddUnpackedSfixed32(int value) {

-        PrepareBuilder();

-        result.unpackedSfixed32_.Add(value);

-        return this;

-      }

-      public Builder AddRangeUnpackedSfixed32(scg::IEnumerable<int> values) {

-        PrepareBuilder();

-        result.unpackedSfixed32_.Add(values);

-        return this;

-      }

-      public Builder ClearUnpackedSfixed32() {

-        PrepareBuilder();

-        result.unpackedSfixed32_.Clear();

-        return this;

-      }

-      

-      public pbc::IPopsicleList<long> UnpackedSfixed64List {

-        get { return PrepareBuilder().unpackedSfixed64_; }

-      }

-      public int UnpackedSfixed64Count {

-        get { return result.UnpackedSfixed64Count; }

-      }

-      public long GetUnpackedSfixed64(int index) {

-        return result.GetUnpackedSfixed64(index);

-      }

-      public Builder SetUnpackedSfixed64(int index, long value) {

-        PrepareBuilder();

-        result.unpackedSfixed64_[index] = value;

-        return this;

-      }

-      public Builder AddUnpackedSfixed64(long value) {

-        PrepareBuilder();

-        result.unpackedSfixed64_.Add(value);

-        return this;

-      }

-      public Builder AddRangeUnpackedSfixed64(scg::IEnumerable<long> values) {

-        PrepareBuilder();

-        result.unpackedSfixed64_.Add(values);

-        return this;

-      }

-      public Builder ClearUnpackedSfixed64() {

-        PrepareBuilder();

-        result.unpackedSfixed64_.Clear();

-        return this;

-      }

-      

-      public pbc::IPopsicleList<float> UnpackedFloatList {

-        get { return PrepareBuilder().unpackedFloat_; }

-      }

-      public int UnpackedFloatCount {

-        get { return result.UnpackedFloatCount; }

-      }

-      public float GetUnpackedFloat(int index) {

-        return result.GetUnpackedFloat(index);

-      }

-      public Builder SetUnpackedFloat(int index, float value) {

-        PrepareBuilder();

-        result.unpackedFloat_[index] = value;

-        return this;

-      }

-      public Builder AddUnpackedFloat(float value) {

-        PrepareBuilder();

-        result.unpackedFloat_.Add(value);

-        return this;

-      }

-      public Builder AddRangeUnpackedFloat(scg::IEnumerable<float> values) {

-        PrepareBuilder();

-        result.unpackedFloat_.Add(values);

-        return this;

-      }

-      public Builder ClearUnpackedFloat() {

-        PrepareBuilder();

-        result.unpackedFloat_.Clear();

-        return this;

-      }

-      

-      public pbc::IPopsicleList<double> UnpackedDoubleList {

-        get { return PrepareBuilder().unpackedDouble_; }

-      }

-      public int UnpackedDoubleCount {

-        get { return result.UnpackedDoubleCount; }

-      }

-      public double GetUnpackedDouble(int index) {

-        return result.GetUnpackedDouble(index);

-      }

-      public Builder SetUnpackedDouble(int index, double value) {

-        PrepareBuilder();

-        result.unpackedDouble_[index] = value;

-        return this;

-      }

-      public Builder AddUnpackedDouble(double value) {

-        PrepareBuilder();

-        result.unpackedDouble_.Add(value);

-        return this;

-      }

-      public Builder AddRangeUnpackedDouble(scg::IEnumerable<double> values) {

-        PrepareBuilder();

-        result.unpackedDouble_.Add(values);

-        return this;

-      }

-      public Builder ClearUnpackedDouble() {

-        PrepareBuilder();

-        result.unpackedDouble_.Clear();

-        return this;

-      }

-      

-      public pbc::IPopsicleList<bool> UnpackedBoolList {

-        get { return PrepareBuilder().unpackedBool_; }

-      }

-      public int UnpackedBoolCount {

-        get { return result.UnpackedBoolCount; }

-      }

-      public bool GetUnpackedBool(int index) {

-        return result.GetUnpackedBool(index);

-      }

-      public Builder SetUnpackedBool(int index, bool value) {

-        PrepareBuilder();

-        result.unpackedBool_[index] = value;

-        return this;

-      }

-      public Builder AddUnpackedBool(bool value) {

-        PrepareBuilder();

-        result.unpackedBool_.Add(value);

-        return this;

-      }

-      public Builder AddRangeUnpackedBool(scg::IEnumerable<bool> values) {

-        PrepareBuilder();

-        result.unpackedBool_.Add(values);

-        return this;

-      }

-      public Builder ClearUnpackedBool() {

-        PrepareBuilder();

-        result.unpackedBool_.Clear();

-        return this;

-      }

-      

-      public pbc::IPopsicleList<global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite> UnpackedEnumList {

-        get { return PrepareBuilder().unpackedEnum_; }

-      }

-      public int UnpackedEnumCount {

-        get { return result.UnpackedEnumCount; }

-      }

-      public global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite GetUnpackedEnum(int index) {

-        return result.GetUnpackedEnum(index);

-      }

-      public Builder SetUnpackedEnum(int index, global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite value) {

-        PrepareBuilder();

-        result.unpackedEnum_[index] = value;

-        return this;

-      }

-      public Builder AddUnpackedEnum(global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite value) {

-        PrepareBuilder();

-        result.unpackedEnum_.Add(value);

-        return this;

-      }

-      public Builder AddRangeUnpackedEnum(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite> values) {

-        PrepareBuilder();

-        result.unpackedEnum_.Add(values);

-        return this;

-      }

-      public Builder ClearUnpackedEnum() {

-        PrepareBuilder();

-        result.unpackedEnum_.Clear();

-        return this;

-      }

-    }

-    static TestUnpackedTypesLite() {

-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor, null);

-    }

-  }

-  

-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]

-  [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]

-  [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")]

   public sealed partial class TestAllExtensionsLite : pb::ExtendableMessageLite<TestAllExtensionsLite, TestAllExtensionsLite.Builder> {

     private TestAllExtensionsLite() { }

     private static readonly TestAllExtensionsLite defaultInstance = new TestAllExtensionsLite().MakeReadOnly();

@@ -9808,233 +8448,6 @@
   [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]

   [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]

   [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")]

-  public sealed partial class TestUnpackedExtensionsLite : pb::ExtendableMessageLite<TestUnpackedExtensionsLite, TestUnpackedExtensionsLite.Builder> {

-    private TestUnpackedExtensionsLite() { }

-    private static readonly TestUnpackedExtensionsLite defaultInstance = new TestUnpackedExtensionsLite().MakeReadOnly();

-    private static readonly string[] _testUnpackedExtensionsLiteFieldNames = new string[] {  };

-    private static readonly uint[] _testUnpackedExtensionsLiteFieldTags = new uint[] {  };

-    public static TestUnpackedExtensionsLite DefaultInstance {

-      get { return defaultInstance; }

-    }

-    

-    public override TestUnpackedExtensionsLite DefaultInstanceForType {

-      get { return DefaultInstance; }

-    }

-    

-    protected override TestUnpackedExtensionsLite ThisMessage {

-      get { return this; }

-    }

-    

-    public override bool IsInitialized {

-      get {

-        if (!ExtensionsAreInitialized) return false;

-        return true;

-      }

-    }

-    

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

-      int size = SerializedSize;

-      string[] field_names = _testUnpackedExtensionsLiteFieldNames;

-      pb::ExtendableMessageLite<TestUnpackedExtensionsLite, TestUnpackedExtensionsLite.Builder>.ExtensionWriter extensionWriter = CreateExtensionWriter(this);

-      extensionWriter.WriteUntil(536870912, output);

-    }

-    

-    private int memoizedSerializedSize = -1;

-    public override int SerializedSize {

-      get {

-        int size = memoizedSerializedSize;

-        if (size != -1) return size;

-        

-        size = 0;

-        size += ExtensionsSerializedSize;

-        memoizedSerializedSize = size;

-        return size;

-      }

-    }

-    

-    #region Lite runtime methods

-    public override int GetHashCode() {

-      int hash = GetType().GetHashCode();

-      hash ^= base.GetHashCode();

-      return hash;

-    }

-    

-    public override bool Equals(object obj) {

-      TestUnpackedExtensionsLite other = obj as TestUnpackedExtensionsLite;

-      if (other == null) return false;

-      if (!base.Equals(other)) return false;

-      return true;

-    }

-    

-    public override void PrintTo(global::System.IO.TextWriter writer) {

-      base.PrintTo(writer);

-    }

-    #endregion

-    

-    public static TestUnpackedExtensionsLite ParseFrom(pb::ByteString data) {

-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();

-    }

-    public static TestUnpackedExtensionsLite ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {

-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();

-    }

-    public static TestUnpackedExtensionsLite ParseFrom(byte[] data) {

-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();

-    }

-    public static TestUnpackedExtensionsLite ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {

-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();

-    }

-    public static TestUnpackedExtensionsLite ParseFrom(global::System.IO.Stream input) {

-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();

-    }

-    public static TestUnpackedExtensionsLite ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {

-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();

-    }

-    public static TestUnpackedExtensionsLite ParseDelimitedFrom(global::System.IO.Stream input) {

-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();

-    }

-    public static TestUnpackedExtensionsLite ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {

-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();

-    }

-    public static TestUnpackedExtensionsLite ParseFrom(pb::ICodedInputStream input) {

-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();

-    }

-    public static TestUnpackedExtensionsLite ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {

-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();

-    }

-    private TestUnpackedExtensionsLite MakeReadOnly() {

-      return this;

-    }

-    

-    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(TestUnpackedExtensionsLite prototype) {

-      return new Builder(prototype);

-    }

-    

-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]

-    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]

-    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")]

-    public sealed partial class Builder : pb::ExtendableBuilderLite<TestUnpackedExtensionsLite, Builder> {

-      protected override Builder ThisBuilder {

-        get { return this; }

-      }

-      public Builder() {

-        result = DefaultInstance;

-        resultIsReadOnly = true;

-      }

-      internal Builder(TestUnpackedExtensionsLite cloneFrom) {

-        result = cloneFrom;

-        resultIsReadOnly = true;

-      }

-      

-      private bool resultIsReadOnly;

-      private TestUnpackedExtensionsLite result;

-      

-      private TestUnpackedExtensionsLite PrepareBuilder() {

-        if (resultIsReadOnly) {

-          TestUnpackedExtensionsLite original = result;

-          result = new TestUnpackedExtensionsLite();

-          resultIsReadOnly = false;

-          MergeFrom(original);

-        }

-        return result;

-      }

-      

-      public override bool IsInitialized {

-        get { return result.IsInitialized; }

-      }

-      

-      protected override TestUnpackedExtensionsLite MessageBeingBuilt {

-        get { return PrepareBuilder(); }

-      }

-      

-      public override Builder Clear() {

-        result = DefaultInstance;

-        resultIsReadOnly = true;

-        return this;

-      }

-      

-      public override Builder Clone() {

-        if (resultIsReadOnly) {

-          return new Builder(result);

-        } else {

-          return new Builder().MergeFrom(result);

-        }

-      }

-      

-      public override TestUnpackedExtensionsLite DefaultInstanceForType {

-        get { return global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite.DefaultInstance; }

-      }

-      

-      public override TestUnpackedExtensionsLite BuildPartial() {

-        if (resultIsReadOnly) {

-          return result;

-        }

-        resultIsReadOnly = true;

-        return result.MakeReadOnly();

-      }

-      

-      public override Builder MergeFrom(pb::IMessageLite other) {

-        if (other is TestUnpackedExtensionsLite) {

-          return MergeFrom((TestUnpackedExtensionsLite) other);

-        } else {

-          base.MergeFrom(other);

-          return this;

-        }

-      }

-      

-      public override Builder MergeFrom(TestUnpackedExtensionsLite other) {

-        if (other == global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite.DefaultInstance) return this;

-        PrepareBuilder();

-          this.MergeExtensionFields(other);

-        return this;

-      }

-      

-      public override Builder MergeFrom(pb::ICodedInputStream input) {

-        return MergeFrom(input, pb::ExtensionRegistry.Empty);

-      }

-      

-      public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {

-        PrepareBuilder();

-        uint tag;

-        string field_name;

-        while (input.ReadTag(out tag, out field_name)) {

-          if(tag == 0 && field_name != null) {

-            int field_ordinal = global::System.Array.BinarySearch(_testUnpackedExtensionsLiteFieldNames, field_name, global::System.StringComparer.Ordinal);

-            if(field_ordinal >= 0)

-              tag = _testUnpackedExtensionsLiteFieldTags[field_ordinal];

-            else {

-              ParseUnknownField(input, extensionRegistry, tag, field_name);

-              continue;

-            }

-          }

-          switch (tag) {

-            case 0: {

-              throw pb::InvalidProtocolBufferException.InvalidTag();

-            }

-            default: {

-              if (pb::WireFormat.IsEndGroupTag(tag)) {

-                return this;

-              }

-              ParseUnknownField(input, extensionRegistry, tag, field_name);

-              break;

-            }

-          }

-        }

-        

-        return this;

-      }

-      

-    }

-    static TestUnpackedExtensionsLite() {

-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor, null);

-    }

-  }

-  

-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]

-  [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]

-  [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")]

   public sealed partial class TestNestedExtensionLite : pb::GeneratedMessageLite<TestNestedExtensionLite, TestNestedExtensionLite.Builder> {

     private TestNestedExtensionLite() { }

     private static readonly TestNestedExtensionLite defaultInstance = new TestNestedExtensionLite().MakeReadOnly();

diff --git a/src/ProtocolBuffersLite.Test/TestProtos/UnitTestProtoFile.cs b/src/ProtocolBuffersLite.Test/TestProtos/UnitTestProtoFile.cs
index 3506495..615959f 100644
--- a/src/ProtocolBuffersLite.Test/TestProtos/UnitTestProtoFile.cs
+++ b/src/ProtocolBuffersLite.Test/TestProtos/UnitTestProtoFile.cs
@@ -99,20 +99,6 @@
       registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.PackedDoubleExtension);

       registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.PackedBoolExtension);

       registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.PackedEnumExtension);

-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.UnpackedInt32Extension);

-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.UnpackedInt64Extension);

-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.UnpackedUint32Extension);

-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.UnpackedUint64Extension);

-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.UnpackedSint32Extension);

-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.UnpackedSint64Extension);

-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.UnpackedFixed32Extension);

-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.UnpackedFixed64Extension);

-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.UnpackedSfixed32Extension);

-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.UnpackedSfixed64Extension);

-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.UnpackedFloatExtension);

-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.UnpackedDoubleExtension);

-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.UnpackedBoolExtension);

-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.UnpackedEnumExtension);

       registry.Add(global::Google.ProtocolBuffers.TestProtos.TestNestedExtension.Test);

       registry.Add(global::Google.ProtocolBuffers.TestProtos.TestRequired.Single);

       registry.Add(global::Google.ProtocolBuffers.TestProtos.TestRequired.Multi);

@@ -303,38 +289,6 @@
     public static pb::GeneratedExtensionBase<scg::IList<bool>> PackedBoolExtension;

     public const int PackedEnumExtensionFieldNumber = 103;

     public static pb::GeneratedExtensionBase<scg::IList<global::Google.ProtocolBuffers.TestProtos.ForeignEnum>> PackedEnumExtension;

-    public const int UnpackedInt32ExtensionFieldNumber = 90;

-    public static pb::GeneratedExtensionBase<scg::IList<int>> UnpackedInt32Extension;

-    public const int UnpackedInt64ExtensionFieldNumber = 91;

-    public static pb::GeneratedExtensionBase<scg::IList<long>> UnpackedInt64Extension;

-    public const int UnpackedUint32ExtensionFieldNumber = 92;

-    [global::System.CLSCompliant(false)]

-    public static pb::GeneratedExtensionBase<scg::IList<uint>> UnpackedUint32Extension;

-    public const int UnpackedUint64ExtensionFieldNumber = 93;

-    [global::System.CLSCompliant(false)]

-    public static pb::GeneratedExtensionBase<scg::IList<ulong>> UnpackedUint64Extension;

-    public const int UnpackedSint32ExtensionFieldNumber = 94;

-    public static pb::GeneratedExtensionBase<scg::IList<int>> UnpackedSint32Extension;

-    public const int UnpackedSint64ExtensionFieldNumber = 95;

-    public static pb::GeneratedExtensionBase<scg::IList<long>> UnpackedSint64Extension;

-    public const int UnpackedFixed32ExtensionFieldNumber = 96;

-    [global::System.CLSCompliant(false)]

-    public static pb::GeneratedExtensionBase<scg::IList<uint>> UnpackedFixed32Extension;

-    public const int UnpackedFixed64ExtensionFieldNumber = 97;

-    [global::System.CLSCompliant(false)]

-    public static pb::GeneratedExtensionBase<scg::IList<ulong>> UnpackedFixed64Extension;

-    public const int UnpackedSfixed32ExtensionFieldNumber = 98;

-    public static pb::GeneratedExtensionBase<scg::IList<int>> UnpackedSfixed32Extension;

-    public const int UnpackedSfixed64ExtensionFieldNumber = 99;

-    public static pb::GeneratedExtensionBase<scg::IList<long>> UnpackedSfixed64Extension;

-    public const int UnpackedFloatExtensionFieldNumber = 100;

-    public static pb::GeneratedExtensionBase<scg::IList<float>> UnpackedFloatExtension;

-    public const int UnpackedDoubleExtensionFieldNumber = 101;

-    public static pb::GeneratedExtensionBase<scg::IList<double>> UnpackedDoubleExtension;

-    public const int UnpackedBoolExtensionFieldNumber = 102;

-    public static pb::GeneratedExtensionBase<scg::IList<bool>> UnpackedBoolExtension;

-    public const int UnpackedEnumExtensionFieldNumber = 103;

-    public static pb::GeneratedExtensionBase<scg::IList<global::Google.ProtocolBuffers.TestProtos.ForeignEnum>> UnpackedEnumExtension;

     #endregion

     

     #region Static variables

@@ -394,6 +348,8 @@
     internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestFieldOrderings, global::Google.ProtocolBuffers.TestProtos.TestFieldOrderings.Builder> internal__static_protobuf_unittest_TestFieldOrderings__FieldAccessorTable;

     internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestExtremeDefaultValues__Descriptor;

     internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestExtremeDefaultValues, global::Google.ProtocolBuffers.TestProtos.TestExtremeDefaultValues.Builder> internal__static_protobuf_unittest_TestExtremeDefaultValues__FieldAccessorTable;

+    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_SparseEnumMessage__Descriptor;

+    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.SparseEnumMessage, global::Google.ProtocolBuffers.TestProtos.SparseEnumMessage.Builder> internal__static_protobuf_unittest_SparseEnumMessage__FieldAccessorTable;

     internal static pbd::MessageDescriptor internal__static_protobuf_unittest_OneString__Descriptor;

     internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.OneString, global::Google.ProtocolBuffers.TestProtos.OneString.Builder> internal__static_protobuf_unittest_OneString__FieldAccessorTable;

     internal static pbd::MessageDescriptor internal__static_protobuf_unittest_OneBytes__Descriptor;

@@ -404,8 +360,6 @@
     internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestUnpackedTypes, global::Google.ProtocolBuffers.TestProtos.TestUnpackedTypes.Builder> internal__static_protobuf_unittest_TestUnpackedTypes__FieldAccessorTable;

     internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestPackedExtensions__Descriptor;

     internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestPackedExtensions, global::Google.ProtocolBuffers.TestProtos.TestPackedExtensions.Builder> internal__static_protobuf_unittest_TestPackedExtensions__FieldAccessorTable;

-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestUnpackedExtensions__Descriptor;

-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensions, global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensions.Builder> internal__static_protobuf_unittest_TestUnpackedExtensions__FieldAccessorTable;

     internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestDynamicExtensions__Descriptor;

     internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestDynamicExtensions, global::Google.ProtocolBuffers.TestProtos.TestDynamicExtensions.Builder> internal__static_protobuf_unittest_TestDynamicExtensions__FieldAccessorTable;

     internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestDynamicExtensions_DynamicMessageType__Descriptor;

@@ -553,7 +507,7 @@
           "aWVjZUZpZWxkGAsgAygJQgIIAhIdChFSZXBlYXRlZENvcmRGaWVsZBgMIAMo" + 

           "CUICCAEiVQoSVGVzdEZpZWxkT3JkZXJpbmdzEhEKCW15X3N0cmluZxgLIAEo" + 

           "CRIOCgZteV9pbnQYASABKAMSEAoIbXlfZmxvYXQYZSABKAIqBAgCEAsqBAgM" + 

-          "EGUi9gQKGFRlc3RFeHRyZW1lRGVmYXVsdFZhbHVlcxI/Cg1lc2NhcGVkX2J5" + 

+          "EGUiowUKGFRlc3RFeHRyZW1lRGVmYXVsdFZhbHVlcxI/Cg1lc2NhcGVkX2J5" + 

           "dGVzGAEgASgMOihcMDAwXDAwMVwwMDdcMDEwXDAxNFxuXHJcdFwwMTNcXFwn" + 

           "XCJcMzc2EiAKDGxhcmdlX3VpbnQzMhgCIAEoDToKNDI5NDk2NzI5NRIqCgxs" + 

           "YXJnZV91aW50NjQYAyABKAQ6FDE4NDQ2NzQ0MDczNzA5NTUxNjE1EiAKC3Nt" + 

@@ -567,241 +521,218 @@
           "ASgBOgNpbmYSHAoObmVnX2luZl9kb3VibGUYDyABKAE6BC1pbmYSFwoKbmFu" + 

           "X2RvdWJsZRgQIAEoAToDbmFuEhYKCWluZl9mbG9hdBgRIAEoAjoDaW5mEhsK" + 

           "DW5lZ19pbmZfZmxvYXQYEiABKAI6BC1pbmYSFgoJbmFuX2Zsb2F0GBMgASgC" + 

-          "OgNuYW4iGQoJT25lU3RyaW5nEgwKBGRhdGEYASABKAkiGAoIT25lQnl0ZXMS" + 

-          "DAoEZGF0YRgBIAEoDCKqAwoPVGVzdFBhY2tlZFR5cGVzEhgKDHBhY2tlZF9p" + 

-          "bnQzMhhaIAMoBUICEAESGAoMcGFja2VkX2ludDY0GFsgAygDQgIQARIZCg1w" + 

-          "YWNrZWRfdWludDMyGFwgAygNQgIQARIZCg1wYWNrZWRfdWludDY0GF0gAygE" + 

-          "QgIQARIZCg1wYWNrZWRfc2ludDMyGF4gAygRQgIQARIZCg1wYWNrZWRfc2lu" + 

-          "dDY0GF8gAygSQgIQARIaCg5wYWNrZWRfZml4ZWQzMhhgIAMoB0ICEAESGgoO" + 

-          "cGFja2VkX2ZpeGVkNjQYYSADKAZCAhABEhsKD3BhY2tlZF9zZml4ZWQzMhhi" + 

-          "IAMoD0ICEAESGwoPcGFja2VkX3NmaXhlZDY0GGMgAygQQgIQARIYCgxwYWNr" + 

-          "ZWRfZmxvYXQYZCADKAJCAhABEhkKDXBhY2tlZF9kb3VibGUYZSADKAFCAhAB" + 

-          "EhcKC3BhY2tlZF9ib29sGGYgAygIQgIQARI3CgtwYWNrZWRfZW51bRhnIAMo" + 

-          "DjIeLnByb3RvYnVmX3VuaXR0ZXN0LkZvcmVpZ25FbnVtQgIQASLIAwoRVGVz" + 

-          "dFVucGFja2VkVHlwZXMSGgoOdW5wYWNrZWRfaW50MzIYWiADKAVCAhAAEhoK" + 

-          "DnVucGFja2VkX2ludDY0GFsgAygDQgIQABIbCg91bnBhY2tlZF91aW50MzIY" + 

-          "XCADKA1CAhAAEhsKD3VucGFja2VkX3VpbnQ2NBhdIAMoBEICEAASGwoPdW5w" + 

-          "YWNrZWRfc2ludDMyGF4gAygRQgIQABIbCg91bnBhY2tlZF9zaW50NjQYXyAD" + 

-          "KBJCAhAAEhwKEHVucGFja2VkX2ZpeGVkMzIYYCADKAdCAhAAEhwKEHVucGFj" + 

-          "a2VkX2ZpeGVkNjQYYSADKAZCAhAAEh0KEXVucGFja2VkX3NmaXhlZDMyGGIg" + 

-          "AygPQgIQABIdChF1bnBhY2tlZF9zZml4ZWQ2NBhjIAMoEEICEAASGgoOdW5w" + 

-          "YWNrZWRfZmxvYXQYZCADKAJCAhAAEhsKD3VucGFja2VkX2RvdWJsZRhlIAMo" + 

-          "AUICEAASGQoNdW5wYWNrZWRfYm9vbBhmIAMoCEICEAASOQoNdW5wYWNrZWRf" + 

-          "ZW51bRhnIAMoDjIeLnByb3RvYnVmX3VuaXR0ZXN0LkZvcmVpZ25FbnVtQgIQ" + 

-          "ACIgChRUZXN0UGFja2VkRXh0ZW5zaW9ucyoICAEQgICAgAIiIgoWVGVzdFVu" + 

-          "cGFja2VkRXh0ZW5zaW9ucyoICAEQgICAgAIimQQKFVRlc3REeW5hbWljRXh0" + 

-          "ZW5zaW9ucxIZChBzY2FsYXJfZXh0ZW5zaW9uGNAPIAEoBxI3Cg5lbnVtX2V4" + 

-          "dGVuc2lvbhjRDyABKA4yHi5wcm90b2J1Zl91bml0dGVzdC5Gb3JlaWduRW51" + 

-          "bRJZChZkeW5hbWljX2VudW1fZXh0ZW5zaW9uGNIPIAEoDjI4LnByb3RvYnVm" + 

-          "X3VuaXR0ZXN0LlRlc3REeW5hbWljRXh0ZW5zaW9ucy5EeW5hbWljRW51bVR5" + 

-          "cGUSPQoRbWVzc2FnZV9leHRlbnNpb24Y0w8gASgLMiEucHJvdG9idWZfdW5p" + 

-          "dHRlc3QuRm9yZWlnbk1lc3NhZ2USXwoZZHluYW1pY19tZXNzYWdlX2V4dGVu" + 

-          "c2lvbhjUDyABKAsyOy5wcm90b2J1Zl91bml0dGVzdC5UZXN0RHluYW1pY0V4" + 

-          "dGVuc2lvbnMuRHluYW1pY01lc3NhZ2VUeXBlEhsKEnJlcGVhdGVkX2V4dGVu" + 

-          "c2lvbhjVDyADKAkSHQoQcGFja2VkX2V4dGVuc2lvbhjWDyADKBFCAhABGiwK" + 

-          "EkR5bmFtaWNNZXNzYWdlVHlwZRIWCg1keW5hbWljX2ZpZWxkGLQQIAEoBSJH" + 

-          "Cg9EeW5hbWljRW51bVR5cGUSEAoLRFlOQU1JQ19GT08QmBESEAoLRFlOQU1J" + 

-          "Q19CQVIQmRESEAoLRFlOQU1JQ19CQVoQmhEiwAEKI1Rlc3RSZXBlYXRlZFNj" + 

-          "YWxhckRpZmZlcmVudFRhZ1NpemVzEhgKEHJlcGVhdGVkX2ZpeGVkMzIYDCAD" + 

-          "KAcSFgoOcmVwZWF0ZWRfaW50MzIYDSADKAUSGQoQcmVwZWF0ZWRfZml4ZWQ2" + 

-          "NBj+DyADKAYSFwoOcmVwZWF0ZWRfaW50NjQY/w8gAygDEhgKDnJlcGVhdGVk" + 

-          "X2Zsb2F0GP7/DyADKAISGQoPcmVwZWF0ZWRfdWludDY0GP//DyADKAQiDAoK" + 

-          "Rm9vUmVxdWVzdCINCgtGb29SZXNwb25zZSIMCgpCYXJSZXF1ZXN0Ig0KC0Jh" + 

-          "clJlc3BvbnNlKkAKC0ZvcmVpZ25FbnVtEg8KC0ZPUkVJR05fRk9PEAQSDwoL" + 

-          "Rk9SRUlHTl9CQVIQBRIPCgtGT1JFSUdOX0JBWhAGKkcKFFRlc3RFbnVtV2l0" + 

-          "aER1cFZhbHVlEggKBEZPTzEQARIICgRCQVIxEAISBwoDQkFaEAMSCAoERk9P" + 

-          "MhABEggKBEJBUjIQAiqJAQoOVGVzdFNwYXJzZUVudW0SDAoIU1BBUlNFX0EQ" + 

-          "exIOCghTUEFSU0VfQhCm5wMSDwoIU1BBUlNFX0MQsrGABhIVCghTUEFSU0Vf" + 

-          "RBDx//////////8BEhUKCFNQQVJTRV9FELTe/P///////wESDAoIU1BBUlNF" + 

-          "X0YQABIMCghTUEFSU0VfRxACMpkBCgtUZXN0U2VydmljZRJECgNGb28SHS5w" + 

-          "cm90b2J1Zl91bml0dGVzdC5Gb29SZXF1ZXN0Gh4ucHJvdG9idWZfdW5pdHRl" + 

-          "c3QuRm9vUmVzcG9uc2USRAoDQmFyEh0ucHJvdG9idWZfdW5pdHRlc3QuQmFy" + 

-          "UmVxdWVzdBoeLnByb3RvYnVmX3VuaXR0ZXN0LkJhclJlc3BvbnNlOkYKGG9w" + 

-          "dGlvbmFsX2ludDMyX2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRl" + 

-          "c3RBbGxFeHRlbnNpb25zGAEgASgFOkYKGG9wdGlvbmFsX2ludDY0X2V4dGVu" + 

-          "c2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGAIg" + 

-          "ASgDOkcKGW9wdGlvbmFsX3VpbnQzMl9leHRlbnNpb24SJC5wcm90b2J1Zl91" + 

-          "bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgDIAEoDTpHChlvcHRpb25hbF91" + 

-          "aW50NjRfZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4" + 

-          "dGVuc2lvbnMYBCABKAQ6RwoZb3B0aW9uYWxfc2ludDMyX2V4dGVuc2lvbhIk" + 

-          "LnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGAUgASgROkcK" + 

-          "GW9wdGlvbmFsX3NpbnQ2NF9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVz" + 

-          "dC5UZXN0QWxsRXh0ZW5zaW9ucxgGIAEoEjpIChpvcHRpb25hbF9maXhlZDMy" + 

-          "X2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNp" + 

-          "b25zGAcgASgHOkgKGm9wdGlvbmFsX2ZpeGVkNjRfZXh0ZW5zaW9uEiQucHJv" + 

-          "dG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYCCABKAY6SQobb3B0" + 

-          "aW9uYWxfc2ZpeGVkMzJfZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3Qu" + 

-          "VGVzdEFsbEV4dGVuc2lvbnMYCSABKA86SQobb3B0aW9uYWxfc2ZpeGVkNjRf" + 

-          "ZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lv" + 

-          "bnMYCiABKBA6RgoYb3B0aW9uYWxfZmxvYXRfZXh0ZW5zaW9uEiQucHJvdG9i" + 

-          "dWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYCyABKAI6RwoZb3B0aW9u" + 

-          "YWxfZG91YmxlX2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RB" + 

-          "bGxFeHRlbnNpb25zGAwgASgBOkUKF29wdGlvbmFsX2Jvb2xfZXh0ZW5zaW9u" + 

-          "EiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYDSABKAg6" + 

-          "RwoZb3B0aW9uYWxfc3RyaW5nX2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0" + 

-          "ZXN0LlRlc3RBbGxFeHRlbnNpb25zGA4gASgJOkYKGG9wdGlvbmFsX2J5dGVz" + 

-          "X2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNp" + 

-          "b25zGA8gASgMOnEKF29wdGlvbmFsZ3JvdXBfZXh0ZW5zaW9uEiQucHJvdG9i" + 

-          "dWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYECABKAoyKi5wcm90b2J1" + 

-          "Zl91bml0dGVzdC5PcHRpb25hbEdyb3VwX2V4dGVuc2lvbjp+CiFvcHRpb25h" + 

-          "bF9uZXN0ZWRfbWVzc2FnZV9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVz" + 

-          "dC5UZXN0QWxsRXh0ZW5zaW9ucxgSIAEoCzItLnByb3RvYnVmX3VuaXR0ZXN0" + 

-          "LlRlc3RBbGxUeXBlcy5OZXN0ZWRNZXNzYWdlOnMKIm9wdGlvbmFsX2ZvcmVp" + 

-          "Z25fbWVzc2FnZV9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0" + 

-          "QWxsRXh0ZW5zaW9ucxgTIAEoCzIhLnByb3RvYnVmX3VuaXR0ZXN0LkZvcmVp" + 

-          "Z25NZXNzYWdlOngKIW9wdGlvbmFsX2ltcG9ydF9tZXNzYWdlX2V4dGVuc2lv" + 

-          "bhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGBQgASgL" + 

-          "MicucHJvdG9idWZfdW5pdHRlc3RfaW1wb3J0LkltcG9ydE1lc3NhZ2U6eAoe" + 

-          "b3B0aW9uYWxfbmVzdGVkX2VudW1fZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5p" + 

-          "dHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYFSABKA4yKi5wcm90b2J1Zl91bml0" + 

-          "dGVzdC5UZXN0QWxsVHlwZXMuTmVzdGVkRW51bTptCh9vcHRpb25hbF9mb3Jl" + 

-          "aWduX2VudW1fZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFs" + 

-          "bEV4dGVuc2lvbnMYFiABKA4yHi5wcm90b2J1Zl91bml0dGVzdC5Gb3JlaWdu" + 

-          "RW51bTpyCh5vcHRpb25hbF9pbXBvcnRfZW51bV9leHRlbnNpb24SJC5wcm90" + 

-          "b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgXIAEoDjIkLnByb3Rv" + 

-          "YnVmX3VuaXR0ZXN0X2ltcG9ydC5JbXBvcnRFbnVtOlEKH29wdGlvbmFsX3N0" + 

-          "cmluZ19waWVjZV9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0" + 

-          "QWxsRXh0ZW5zaW9ucxgYIAEoCUICCAI6SQoXb3B0aW9uYWxfY29yZF9leHRl" + 

-          "bnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgZ" + 

-          "IAEoCUICCAE6RgoYcmVwZWF0ZWRfaW50MzJfZXh0ZW5zaW9uEiQucHJvdG9i" + 

-          "dWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYHyADKAU6RgoYcmVwZWF0" + 

-          "ZWRfaW50NjRfZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFs" + 

-          "bEV4dGVuc2lvbnMYICADKAM6RwoZcmVwZWF0ZWRfdWludDMyX2V4dGVuc2lv" + 

-          "bhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGCEgAygN" + 

-          "OkcKGXJlcGVhdGVkX3VpbnQ2NF9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0" + 

-          "dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgiIAMoBDpHChlyZXBlYXRlZF9zaW50" + 

-          "MzJfZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVu" + 

-          "c2lvbnMYIyADKBE6RwoZcmVwZWF0ZWRfc2ludDY0X2V4dGVuc2lvbhIkLnBy" + 

-          "b3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGCQgAygSOkgKGnJl" + 

-          "cGVhdGVkX2ZpeGVkMzJfZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3Qu" + 

-          "VGVzdEFsbEV4dGVuc2lvbnMYJSADKAc6SAoacmVwZWF0ZWRfZml4ZWQ2NF9l" + 

-          "eHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9u" + 

-          "cxgmIAMoBjpJChtyZXBlYXRlZF9zZml4ZWQzMl9leHRlbnNpb24SJC5wcm90" + 

-          "b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgnIAMoDzpJChtyZXBl" + 

-          "YXRlZF9zZml4ZWQ2NF9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5U" + 

-          "ZXN0QWxsRXh0ZW5zaW9ucxgoIAMoEDpGChhyZXBlYXRlZF9mbG9hdF9leHRl" + 

-          "bnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgp" + 

-          "IAMoAjpHChlyZXBlYXRlZF9kb3VibGVfZXh0ZW5zaW9uEiQucHJvdG9idWZf" + 

-          "dW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYKiADKAE6RQoXcmVwZWF0ZWRf" + 

-          "Ym9vbF9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0" + 

-          "ZW5zaW9ucxgrIAMoCDpHChlyZXBlYXRlZF9zdHJpbmdfZXh0ZW5zaW9uEiQu" + 

-          "cHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYLCADKAk6RgoY" + 

-          "cmVwZWF0ZWRfYnl0ZXNfZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3Qu" + 

-          "VGVzdEFsbEV4dGVuc2lvbnMYLSADKAw6cQoXcmVwZWF0ZWRncm91cF9leHRl" + 

-          "bnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgu" + 

-          "IAMoCjIqLnByb3RvYnVmX3VuaXR0ZXN0LlJlcGVhdGVkR3JvdXBfZXh0ZW5z" + 

-          "aW9uOn4KIXJlcGVhdGVkX25lc3RlZF9tZXNzYWdlX2V4dGVuc2lvbhIkLnBy" + 

-          "b3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGDAgAygLMi0ucHJv" + 

-          "dG9idWZfdW5pdHRlc3QuVGVzdEFsbFR5cGVzLk5lc3RlZE1lc3NhZ2U6cwoi" + 

-          "cmVwZWF0ZWRfZm9yZWlnbl9tZXNzYWdlX2V4dGVuc2lvbhIkLnByb3RvYnVm" + 

-          "X3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGDEgAygLMiEucHJvdG9idWZf" + 

-          "dW5pdHRlc3QuRm9yZWlnbk1lc3NhZ2U6eAohcmVwZWF0ZWRfaW1wb3J0X21l" + 

-          "c3NhZ2VfZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4" + 

-          "dGVuc2lvbnMYMiADKAsyJy5wcm90b2J1Zl91bml0dGVzdF9pbXBvcnQuSW1w" + 

-          "b3J0TWVzc2FnZTp4Ch5yZXBlYXRlZF9uZXN0ZWRfZW51bV9leHRlbnNpb24S" + 

-          "JC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgzIAMoDjIq" + 

-          "LnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxUeXBlcy5OZXN0ZWRFbnVtOm0K" + 

-          "H3JlcGVhdGVkX2ZvcmVpZ25fZW51bV9leHRlbnNpb24SJC5wcm90b2J1Zl91" + 

-          "bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxg0IAMoDjIeLnByb3RvYnVmX3Vu" + 

-          "aXR0ZXN0LkZvcmVpZ25FbnVtOnIKHnJlcGVhdGVkX2ltcG9ydF9lbnVtX2V4" + 

-          "dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25z" + 

-          "GDUgAygOMiQucHJvdG9idWZfdW5pdHRlc3RfaW1wb3J0LkltcG9ydEVudW06" + 

-          "UQofcmVwZWF0ZWRfc3RyaW5nX3BpZWNlX2V4dGVuc2lvbhIkLnByb3RvYnVm" + 

-          "X3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGDYgAygJQgIIAjpJChdyZXBl" + 

-          "YXRlZF9jb3JkX2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RB" + 

-          "bGxFeHRlbnNpb25zGDcgAygJQgIIATpJChdkZWZhdWx0X2ludDMyX2V4dGVu" + 

-          "c2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGD0g" + 

-          "ASgFOgI0MTpJChdkZWZhdWx0X2ludDY0X2V4dGVuc2lvbhIkLnByb3RvYnVm" + 

-          "X3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGD4gASgDOgI0MjpKChhkZWZh" + 

-          "dWx0X3VpbnQzMl9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0" + 

-          "QWxsRXh0ZW5zaW9ucxg/IAEoDToCNDM6SgoYZGVmYXVsdF91aW50NjRfZXh0" + 

+          "OgNuYW4SKwoMY3BwX3RyaWdyYXBoGBQgASgJOhU/ID8gPz8gPz8gPz8/ID8/" + 

+          "LyA/Py0iSwoRU3BhcnNlRW51bU1lc3NhZ2USNgoLc3BhcnNlX2VudW0YASAB" + 

+          "KA4yIS5wcm90b2J1Zl91bml0dGVzdC5UZXN0U3BhcnNlRW51bSIZCglPbmVT" + 

+          "dHJpbmcSDAoEZGF0YRgBIAEoCSIYCghPbmVCeXRlcxIMCgRkYXRhGAEgASgM" + 

+          "IqoDCg9UZXN0UGFja2VkVHlwZXMSGAoMcGFja2VkX2ludDMyGFogAygFQgIQ" + 

+          "ARIYCgxwYWNrZWRfaW50NjQYWyADKANCAhABEhkKDXBhY2tlZF91aW50MzIY" + 

+          "XCADKA1CAhABEhkKDXBhY2tlZF91aW50NjQYXSADKARCAhABEhkKDXBhY2tl" + 

+          "ZF9zaW50MzIYXiADKBFCAhABEhkKDXBhY2tlZF9zaW50NjQYXyADKBJCAhAB" + 

+          "EhoKDnBhY2tlZF9maXhlZDMyGGAgAygHQgIQARIaCg5wYWNrZWRfZml4ZWQ2" + 

+          "NBhhIAMoBkICEAESGwoPcGFja2VkX3NmaXhlZDMyGGIgAygPQgIQARIbCg9w" + 

+          "YWNrZWRfc2ZpeGVkNjQYYyADKBBCAhABEhgKDHBhY2tlZF9mbG9hdBhkIAMo" + 

+          "AkICEAESGQoNcGFja2VkX2RvdWJsZRhlIAMoAUICEAESFwoLcGFja2VkX2Jv" + 

+          "b2wYZiADKAhCAhABEjcKC3BhY2tlZF9lbnVtGGcgAygOMh4ucHJvdG9idWZf" + 

+          "dW5pdHRlc3QuRm9yZWlnbkVudW1CAhABIsgDChFUZXN0VW5wYWNrZWRUeXBl" + 

+          "cxIaCg51bnBhY2tlZF9pbnQzMhhaIAMoBUICEAASGgoOdW5wYWNrZWRfaW50" + 

+          "NjQYWyADKANCAhAAEhsKD3VucGFja2VkX3VpbnQzMhhcIAMoDUICEAASGwoP" + 

+          "dW5wYWNrZWRfdWludDY0GF0gAygEQgIQABIbCg91bnBhY2tlZF9zaW50MzIY" + 

+          "XiADKBFCAhAAEhsKD3VucGFja2VkX3NpbnQ2NBhfIAMoEkICEAASHAoQdW5w" + 

+          "YWNrZWRfZml4ZWQzMhhgIAMoB0ICEAASHAoQdW5wYWNrZWRfZml4ZWQ2NBhh" + 

+          "IAMoBkICEAASHQoRdW5wYWNrZWRfc2ZpeGVkMzIYYiADKA9CAhAAEh0KEXVu" + 

+          "cGFja2VkX3NmaXhlZDY0GGMgAygQQgIQABIaCg51bnBhY2tlZF9mbG9hdBhk" + 

+          "IAMoAkICEAASGwoPdW5wYWNrZWRfZG91YmxlGGUgAygBQgIQABIZCg11bnBh" + 

+          "Y2tlZF9ib29sGGYgAygIQgIQABI5Cg11bnBhY2tlZF9lbnVtGGcgAygOMh4u" + 

+          "cHJvdG9idWZfdW5pdHRlc3QuRm9yZWlnbkVudW1CAhAAIiAKFFRlc3RQYWNr" + 

+          "ZWRFeHRlbnNpb25zKggIARCAgICAAiKZBAoVVGVzdER5bmFtaWNFeHRlbnNp" + 

+          "b25zEhkKEHNjYWxhcl9leHRlbnNpb24Y0A8gASgHEjcKDmVudW1fZXh0ZW5z" + 

+          "aW9uGNEPIAEoDjIeLnByb3RvYnVmX3VuaXR0ZXN0LkZvcmVpZ25FbnVtElkK" + 

+          "FmR5bmFtaWNfZW51bV9leHRlbnNpb24Y0g8gASgOMjgucHJvdG9idWZfdW5p" + 

+          "dHRlc3QuVGVzdER5bmFtaWNFeHRlbnNpb25zLkR5bmFtaWNFbnVtVHlwZRI9" + 

+          "ChFtZXNzYWdlX2V4dGVuc2lvbhjTDyABKAsyIS5wcm90b2J1Zl91bml0dGVz" + 

+          "dC5Gb3JlaWduTWVzc2FnZRJfChlkeW5hbWljX21lc3NhZ2VfZXh0ZW5zaW9u" + 

+          "GNQPIAEoCzI7LnByb3RvYnVmX3VuaXR0ZXN0LlRlc3REeW5hbWljRXh0ZW5z" + 

+          "aW9ucy5EeW5hbWljTWVzc2FnZVR5cGUSGwoScmVwZWF0ZWRfZXh0ZW5zaW9u" + 

+          "GNUPIAMoCRIdChBwYWNrZWRfZXh0ZW5zaW9uGNYPIAMoEUICEAEaLAoSRHlu" + 

+          "YW1pY01lc3NhZ2VUeXBlEhYKDWR5bmFtaWNfZmllbGQYtBAgASgFIkcKD0R5" + 

+          "bmFtaWNFbnVtVHlwZRIQCgtEWU5BTUlDX0ZPTxCYERIQCgtEWU5BTUlDX0JB" + 

+          "UhCZERIQCgtEWU5BTUlDX0JBWhCaESLAAQojVGVzdFJlcGVhdGVkU2NhbGFy" + 

+          "RGlmZmVyZW50VGFnU2l6ZXMSGAoQcmVwZWF0ZWRfZml4ZWQzMhgMIAMoBxIW" + 

+          "Cg5yZXBlYXRlZF9pbnQzMhgNIAMoBRIZChByZXBlYXRlZF9maXhlZDY0GP4P" + 

+          "IAMoBhIXCg5yZXBlYXRlZF9pbnQ2NBj/DyADKAMSGAoOcmVwZWF0ZWRfZmxv" + 

+          "YXQY/v8PIAMoAhIZCg9yZXBlYXRlZF91aW50NjQY//8PIAMoBCIMCgpGb29S" + 

+          "ZXF1ZXN0Ig0KC0Zvb1Jlc3BvbnNlIgwKCkJhclJlcXVlc3QiDQoLQmFyUmVz" + 

+          "cG9uc2UqQAoLRm9yZWlnbkVudW0SDwoLRk9SRUlHTl9GT08QBBIPCgtGT1JF" + 

+          "SUdOX0JBUhAFEg8KC0ZPUkVJR05fQkFaEAYqRwoUVGVzdEVudW1XaXRoRHVw" + 

+          "VmFsdWUSCAoERk9PMRABEggKBEJBUjEQAhIHCgNCQVoQAxIICgRGT08yEAES" + 

+          "CAoEQkFSMhACKokBCg5UZXN0U3BhcnNlRW51bRIMCghTUEFSU0VfQRB7Eg4K" + 

+          "CFNQQVJTRV9CEKbnAxIPCghTUEFSU0VfQxCysYAGEhUKCFNQQVJTRV9EEPH/" + 

+          "/////////wESFQoIU1BBUlNFX0UQtN78////////ARIMCghTUEFSU0VfRhAA" + 

+          "EgwKCFNQQVJTRV9HEAIymQEKC1Rlc3RTZXJ2aWNlEkQKA0ZvbxIdLnByb3Rv" + 

+          "YnVmX3VuaXR0ZXN0LkZvb1JlcXVlc3QaHi5wcm90b2J1Zl91bml0dGVzdC5G" + 

+          "b29SZXNwb25zZRJECgNCYXISHS5wcm90b2J1Zl91bml0dGVzdC5CYXJSZXF1" + 

+          "ZXN0Gh4ucHJvdG9idWZfdW5pdHRlc3QuQmFyUmVzcG9uc2U6RgoYb3B0aW9u" + 

+          "YWxfaW50MzJfZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFs" + 

+          "bEV4dGVuc2lvbnMYASABKAU6RgoYb3B0aW9uYWxfaW50NjRfZXh0ZW5zaW9u" + 

+          "EiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYAiABKAM6" + 

+          "RwoZb3B0aW9uYWxfdWludDMyX2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0" + 

+          "ZXN0LlRlc3RBbGxFeHRlbnNpb25zGAMgASgNOkcKGW9wdGlvbmFsX3VpbnQ2" + 

+          "NF9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5z" + 

+          "aW9ucxgEIAEoBDpHChlvcHRpb25hbF9zaW50MzJfZXh0ZW5zaW9uEiQucHJv" + 

+          "dG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYBSABKBE6RwoZb3B0" + 

+          "aW9uYWxfc2ludDY0X2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRl" + 

+          "c3RBbGxFeHRlbnNpb25zGAYgASgSOkgKGm9wdGlvbmFsX2ZpeGVkMzJfZXh0" + 

           "ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMY" + 

-          "QCABKAQ6AjQ0OksKGGRlZmF1bHRfc2ludDMyX2V4dGVuc2lvbhIkLnByb3Rv" + 

-          "YnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGEEgASgROgMtNDU6SgoY" + 

-          "ZGVmYXVsdF9zaW50NjRfZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3Qu" + 

-          "VGVzdEFsbEV4dGVuc2lvbnMYQiABKBI6AjQ2OksKGWRlZmF1bHRfZml4ZWQz" + 

-          "Ml9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5z" + 

-          "aW9ucxhDIAEoBzoCNDc6SwoZZGVmYXVsdF9maXhlZDY0X2V4dGVuc2lvbhIk" + 

-          "LnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGEQgASgGOgI0" + 

-          "ODpMChpkZWZhdWx0X3NmaXhlZDMyX2V4dGVuc2lvbhIkLnByb3RvYnVmX3Vu" + 

-          "aXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGEUgASgPOgI0OTpNChpkZWZhdWx0" + 

+          "ByABKAc6SAoab3B0aW9uYWxfZml4ZWQ2NF9leHRlbnNpb24SJC5wcm90b2J1" + 

+          "Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgIIAEoBjpJChtvcHRpb25h" + 

+          "bF9zZml4ZWQzMl9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0" + 

+          "QWxsRXh0ZW5zaW9ucxgJIAEoDzpJChtvcHRpb25hbF9zZml4ZWQ2NF9leHRl" + 

+          "bnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgK" + 

+          "IAEoEDpGChhvcHRpb25hbF9mbG9hdF9leHRlbnNpb24SJC5wcm90b2J1Zl91" + 

+          "bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgLIAEoAjpHChlvcHRpb25hbF9k" + 

+          "b3VibGVfZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4" + 

+          "dGVuc2lvbnMYDCABKAE6RQoXb3B0aW9uYWxfYm9vbF9leHRlbnNpb24SJC5w" + 

+          "cm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgNIAEoCDpHChlv" + 

+          "cHRpb25hbF9zdHJpbmdfZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3Qu" + 

+          "VGVzdEFsbEV4dGVuc2lvbnMYDiABKAk6RgoYb3B0aW9uYWxfYnl0ZXNfZXh0" + 

+          "ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMY" + 

+          "DyABKAw6cQoXb3B0aW9uYWxncm91cF9leHRlbnNpb24SJC5wcm90b2J1Zl91" + 

+          "bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgQIAEoCjIqLnByb3RvYnVmX3Vu" + 

+          "aXR0ZXN0Lk9wdGlvbmFsR3JvdXBfZXh0ZW5zaW9uOn4KIW9wdGlvbmFsX25l" + 

+          "c3RlZF9tZXNzYWdlX2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRl" + 

+          "c3RBbGxFeHRlbnNpb25zGBIgASgLMi0ucHJvdG9idWZfdW5pdHRlc3QuVGVz" + 

+          "dEFsbFR5cGVzLk5lc3RlZE1lc3NhZ2U6cwoib3B0aW9uYWxfZm9yZWlnbl9t" + 

+          "ZXNzYWdlX2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxF" + 

+          "eHRlbnNpb25zGBMgASgLMiEucHJvdG9idWZfdW5pdHRlc3QuRm9yZWlnbk1l" + 

+          "c3NhZ2U6eAohb3B0aW9uYWxfaW1wb3J0X21lc3NhZ2VfZXh0ZW5zaW9uEiQu" + 

+          "cHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYFCABKAsyJy5w" + 

+          "cm90b2J1Zl91bml0dGVzdF9pbXBvcnQuSW1wb3J0TWVzc2FnZTp4Ch5vcHRp" + 

+          "b25hbF9uZXN0ZWRfZW51bV9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVz" + 

+          "dC5UZXN0QWxsRXh0ZW5zaW9ucxgVIAEoDjIqLnByb3RvYnVmX3VuaXR0ZXN0" + 

+          "LlRlc3RBbGxUeXBlcy5OZXN0ZWRFbnVtOm0KH29wdGlvbmFsX2ZvcmVpZ25f" + 

+          "ZW51bV9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0" + 

+          "ZW5zaW9ucxgWIAEoDjIeLnByb3RvYnVmX3VuaXR0ZXN0LkZvcmVpZ25FbnVt" + 

+          "OnIKHm9wdGlvbmFsX2ltcG9ydF9lbnVtX2V4dGVuc2lvbhIkLnByb3RvYnVm" + 

+          "X3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGBcgASgOMiQucHJvdG9idWZf" + 

+          "dW5pdHRlc3RfaW1wb3J0LkltcG9ydEVudW06UQofb3B0aW9uYWxfc3RyaW5n" + 

+          "X3BpZWNlX2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxF" + 

+          "eHRlbnNpb25zGBggASgJQgIIAjpJChdvcHRpb25hbF9jb3JkX2V4dGVuc2lv" + 

+          "bhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGBkgASgJ" + 

+          "QgIIATpGChhyZXBlYXRlZF9pbnQzMl9leHRlbnNpb24SJC5wcm90b2J1Zl91" + 

+          "bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgfIAMoBTpGChhyZXBlYXRlZF9p" + 

+          "bnQ2NF9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0" + 

+          "ZW5zaW9ucxggIAMoAzpHChlyZXBlYXRlZF91aW50MzJfZXh0ZW5zaW9uEiQu" + 

+          "cHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYISADKA06RwoZ" + 

+          "cmVwZWF0ZWRfdWludDY0X2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0" + 

+          "LlRlc3RBbGxFeHRlbnNpb25zGCIgAygEOkcKGXJlcGVhdGVkX3NpbnQzMl9l" + 

+          "eHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9u" + 

+          "cxgjIAMoETpHChlyZXBlYXRlZF9zaW50NjRfZXh0ZW5zaW9uEiQucHJvdG9i" + 

+          "dWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYJCADKBI6SAoacmVwZWF0" + 

+          "ZWRfZml4ZWQzMl9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0" + 

+          "QWxsRXh0ZW5zaW9ucxglIAMoBzpIChpyZXBlYXRlZF9maXhlZDY0X2V4dGVu" + 

+          "c2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGCYg" + 

+          "AygGOkkKG3JlcGVhdGVkX3NmaXhlZDMyX2V4dGVuc2lvbhIkLnByb3RvYnVm" + 

+          "X3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGCcgAygPOkkKG3JlcGVhdGVk" + 

           "X3NmaXhlZDY0X2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RB" + 

-          "bGxFeHRlbnNpb25zGEYgASgQOgMtNTA6SwoXZGVmYXVsdF9mbG9hdF9leHRl" + 

-          "bnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxhH" + 

-          "IAEoAjoENTEuNTpNChhkZWZhdWx0X2RvdWJsZV9leHRlbnNpb24SJC5wcm90" + 

-          "b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxhIIAEoAToFNTIwMDA6" + 

-          "SgoWZGVmYXVsdF9ib29sX2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0" + 

-          "LlRlc3RBbGxFeHRlbnNpb25zGEkgASgIOgR0cnVlOk0KGGRlZmF1bHRfc3Ry" + 

-          "aW5nX2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRl" + 

-          "bnNpb25zGEogASgJOgVoZWxsbzpMChdkZWZhdWx0X2J5dGVzX2V4dGVuc2lv" + 

-          "bhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGEsgASgM" + 

-          "OgV3b3JsZDp8Ch1kZWZhdWx0X25lc3RlZF9lbnVtX2V4dGVuc2lvbhIkLnBy" + 

-          "b3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGFEgASgOMioucHJv" + 

-          "dG9idWZfdW5pdHRlc3QuVGVzdEFsbFR5cGVzLk5lc3RlZEVudW06A0JBUjp5" + 

-          "Ch5kZWZhdWx0X2ZvcmVpZ25fZW51bV9leHRlbnNpb24SJC5wcm90b2J1Zl91" + 

-          "bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxhSIAEoDjIeLnByb3RvYnVmX3Vu" + 

-          "aXR0ZXN0LkZvcmVpZ25FbnVtOgtGT1JFSUdOX0JBUjp9Ch1kZWZhdWx0X2lt" + 

-          "cG9ydF9lbnVtX2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RB" + 

-          "bGxFeHRlbnNpb25zGFMgASgOMiQucHJvdG9idWZfdW5pdHRlc3RfaW1wb3J0" + 

-          "LkltcG9ydEVudW06CklNUE9SVF9CQVI6VQoeZGVmYXVsdF9zdHJpbmdfcGll" + 

-          "Y2VfZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVu" + 

-          "c2lvbnMYVCABKAk6A2FiY0ICCAI6TQoWZGVmYXVsdF9jb3JkX2V4dGVuc2lv" + 

-          "bhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGFUgASgJ" + 

-          "OgMxMjNCAggBOkIKE215X2V4dGVuc2lvbl9zdHJpbmcSJS5wcm90b2J1Zl91" + 

-          "bml0dGVzdC5UZXN0RmllbGRPcmRlcmluZ3MYMiABKAk6PwoQbXlfZXh0ZW5z" + 

-          "aW9uX2ludBIlLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RGaWVsZE9yZGVyaW5n" + 

-          "cxgFIAEoBTpLChZwYWNrZWRfaW50MzJfZXh0ZW5zaW9uEicucHJvdG9idWZf" + 

-          "dW5pdHRlc3QuVGVzdFBhY2tlZEV4dGVuc2lvbnMYWiADKAVCAhABOksKFnBh" + 

-          "Y2tlZF9pbnQ2NF9leHRlbnNpb24SJy5wcm90b2J1Zl91bml0dGVzdC5UZXN0" + 

-          "UGFja2VkRXh0ZW5zaW9ucxhbIAMoA0ICEAE6TAoXcGFja2VkX3VpbnQzMl9l" + 

+          "bGxFeHRlbnNpb25zGCggAygQOkYKGHJlcGVhdGVkX2Zsb2F0X2V4dGVuc2lv" + 

+          "bhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGCkgAygC" + 

+          "OkcKGXJlcGVhdGVkX2RvdWJsZV9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0" + 

+          "dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgqIAMoATpFChdyZXBlYXRlZF9ib29s" + 

+          "X2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNp" + 

+          "b25zGCsgAygIOkcKGXJlcGVhdGVkX3N0cmluZ19leHRlbnNpb24SJC5wcm90" + 

+          "b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgsIAMoCTpGChhyZXBl" + 

+          "YXRlZF9ieXRlc19leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0" + 

+          "QWxsRXh0ZW5zaW9ucxgtIAMoDDpxChdyZXBlYXRlZGdyb3VwX2V4dGVuc2lv" + 

+          "bhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGC4gAygK" + 

+          "MioucHJvdG9idWZfdW5pdHRlc3QuUmVwZWF0ZWRHcm91cF9leHRlbnNpb246" + 

+          "fgohcmVwZWF0ZWRfbmVzdGVkX21lc3NhZ2VfZXh0ZW5zaW9uEiQucHJvdG9i" + 

+          "dWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYMCADKAsyLS5wcm90b2J1" + 

+          "Zl91bml0dGVzdC5UZXN0QWxsVHlwZXMuTmVzdGVkTWVzc2FnZTpzCiJyZXBl" + 

+          "YXRlZF9mb3JlaWduX21lc3NhZ2VfZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5p" + 

+          "dHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYMSADKAsyIS5wcm90b2J1Zl91bml0" + 

+          "dGVzdC5Gb3JlaWduTWVzc2FnZTp4CiFyZXBlYXRlZF9pbXBvcnRfbWVzc2Fn" + 

+          "ZV9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5z" + 

+          "aW9ucxgyIAMoCzInLnByb3RvYnVmX3VuaXR0ZXN0X2ltcG9ydC5JbXBvcnRN" + 

+          "ZXNzYWdlOngKHnJlcGVhdGVkX25lc3RlZF9lbnVtX2V4dGVuc2lvbhIkLnBy" + 

+          "b3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGDMgAygOMioucHJv" + 

+          "dG9idWZfdW5pdHRlc3QuVGVzdEFsbFR5cGVzLk5lc3RlZEVudW06bQofcmVw" + 

+          "ZWF0ZWRfZm9yZWlnbl9lbnVtX2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0" + 

+          "ZXN0LlRlc3RBbGxFeHRlbnNpb25zGDQgAygOMh4ucHJvdG9idWZfdW5pdHRl" + 

+          "c3QuRm9yZWlnbkVudW06cgoecmVwZWF0ZWRfaW1wb3J0X2VudW1fZXh0ZW5z" + 

+          "aW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYNSAD" + 

+          "KA4yJC5wcm90b2J1Zl91bml0dGVzdF9pbXBvcnQuSW1wb3J0RW51bTpRCh9y" + 

+          "ZXBlYXRlZF9zdHJpbmdfcGllY2VfZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5p" + 

+          "dHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYNiADKAlCAggCOkkKF3JlcGVhdGVk" + 

+          "X2NvcmRfZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4" + 

+          "dGVuc2lvbnMYNyADKAlCAggBOkkKF2RlZmF1bHRfaW50MzJfZXh0ZW5zaW9u" + 

+          "EiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYPSABKAU6" + 

+          "AjQxOkkKF2RlZmF1bHRfaW50NjRfZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5p" + 

+          "dHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYPiABKAM6AjQyOkoKGGRlZmF1bHRf" + 

+          "dWludDMyX2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxF" + 

+          "eHRlbnNpb25zGD8gASgNOgI0MzpKChhkZWZhdWx0X3VpbnQ2NF9leHRlbnNp" + 

+          "b24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxhAIAEo" + 

+          "BDoCNDQ6SwoYZGVmYXVsdF9zaW50MzJfZXh0ZW5zaW9uEiQucHJvdG9idWZf" + 

+          "dW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYQSABKBE6Ay00NTpKChhkZWZh" + 

+          "dWx0X3NpbnQ2NF9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0" + 

+          "QWxsRXh0ZW5zaW9ucxhCIAEoEjoCNDY6SwoZZGVmYXVsdF9maXhlZDMyX2V4" + 

+          "dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25z" + 

+          "GEMgASgHOgI0NzpLChlkZWZhdWx0X2ZpeGVkNjRfZXh0ZW5zaW9uEiQucHJv" + 

+          "dG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYRCABKAY6AjQ4OkwK" + 

+          "GmRlZmF1bHRfc2ZpeGVkMzJfZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRl" + 

+          "c3QuVGVzdEFsbEV4dGVuc2lvbnMYRSABKA86AjQ5Ok0KGmRlZmF1bHRfc2Zp" + 

+          "eGVkNjRfZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4" + 

+          "dGVuc2lvbnMYRiABKBA6Ay01MDpLChdkZWZhdWx0X2Zsb2F0X2V4dGVuc2lv" + 

+          "bhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGEcgASgC" + 

+          "OgQ1MS41Ok0KGGRlZmF1bHRfZG91YmxlX2V4dGVuc2lvbhIkLnByb3RvYnVm" + 

+          "X3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGEggASgBOgU1MjAwMDpKChZk" + 

+          "ZWZhdWx0X2Jvb2xfZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVz" + 

+          "dEFsbEV4dGVuc2lvbnMYSSABKAg6BHRydWU6TQoYZGVmYXVsdF9zdHJpbmdf" + 

+          "ZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lv" + 

+          "bnMYSiABKAk6BWhlbGxvOkwKF2RlZmF1bHRfYnl0ZXNfZXh0ZW5zaW9uEiQu" + 

+          "cHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYSyABKAw6BXdv" + 

+          "cmxkOnwKHWRlZmF1bHRfbmVzdGVkX2VudW1fZXh0ZW5zaW9uEiQucHJvdG9i" + 

+          "dWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYUSABKA4yKi5wcm90b2J1" + 

+          "Zl91bml0dGVzdC5UZXN0QWxsVHlwZXMuTmVzdGVkRW51bToDQkFSOnkKHmRl" + 

+          "ZmF1bHRfZm9yZWlnbl9lbnVtX2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0" + 

+          "ZXN0LlRlc3RBbGxFeHRlbnNpb25zGFIgASgOMh4ucHJvdG9idWZfdW5pdHRl" + 

+          "c3QuRm9yZWlnbkVudW06C0ZPUkVJR05fQkFSOn0KHWRlZmF1bHRfaW1wb3J0" + 

+          "X2VudW1fZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4" + 

+          "dGVuc2lvbnMYUyABKA4yJC5wcm90b2J1Zl91bml0dGVzdF9pbXBvcnQuSW1w" + 

+          "b3J0RW51bToKSU1QT1JUX0JBUjpVCh5kZWZhdWx0X3N0cmluZ19waWVjZV9l" + 

+          "eHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9u" + 

+          "cxhUIAEoCToDYWJjQgIIAjpNChZkZWZhdWx0X2NvcmRfZXh0ZW5zaW9uEiQu" + 

+          "cHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYVSABKAk6AzEy" + 

+          "M0ICCAE6QgoTbXlfZXh0ZW5zaW9uX3N0cmluZxIlLnByb3RvYnVmX3VuaXR0" + 

+          "ZXN0LlRlc3RGaWVsZE9yZGVyaW5ncxgyIAEoCTo/ChBteV9leHRlbnNpb25f" + 

+          "aW50EiUucHJvdG9idWZfdW5pdHRlc3QuVGVzdEZpZWxkT3JkZXJpbmdzGAUg" + 

+          "ASgFOksKFnBhY2tlZF9pbnQzMl9leHRlbnNpb24SJy5wcm90b2J1Zl91bml0" + 

+          "dGVzdC5UZXN0UGFja2VkRXh0ZW5zaW9ucxhaIAMoBUICEAE6SwoWcGFja2Vk" + 

+          "X2ludDY0X2V4dGVuc2lvbhInLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RQYWNr" + 

+          "ZWRFeHRlbnNpb25zGFsgAygDQgIQATpMChdwYWNrZWRfdWludDMyX2V4dGVu" + 

+          "c2lvbhInLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RQYWNrZWRFeHRlbnNpb25z" + 

+          "GFwgAygNQgIQATpMChdwYWNrZWRfdWludDY0X2V4dGVuc2lvbhInLnByb3Rv" + 

+          "YnVmX3VuaXR0ZXN0LlRlc3RQYWNrZWRFeHRlbnNpb25zGF0gAygEQgIQATpM" + 

+          "ChdwYWNrZWRfc2ludDMyX2V4dGVuc2lvbhInLnByb3RvYnVmX3VuaXR0ZXN0" + 

+          "LlRlc3RQYWNrZWRFeHRlbnNpb25zGF4gAygRQgIQATpMChdwYWNrZWRfc2lu" + 

+          "dDY0X2V4dGVuc2lvbhInLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RQYWNrZWRF" + 

+          "eHRlbnNpb25zGF8gAygSQgIQATpNChhwYWNrZWRfZml4ZWQzMl9leHRlbnNp" + 

+          "b24SJy5wcm90b2J1Zl91bml0dGVzdC5UZXN0UGFja2VkRXh0ZW5zaW9ucxhg" + 

+          "IAMoB0ICEAE6TQoYcGFja2VkX2ZpeGVkNjRfZXh0ZW5zaW9uEicucHJvdG9i" + 

+          "dWZfdW5pdHRlc3QuVGVzdFBhY2tlZEV4dGVuc2lvbnMYYSADKAZCAhABOk4K" + 

+          "GXBhY2tlZF9zZml4ZWQzMl9leHRlbnNpb24SJy5wcm90b2J1Zl91bml0dGVz" + 

+          "dC5UZXN0UGFja2VkRXh0ZW5zaW9ucxhiIAMoD0ICEAE6TgoZcGFja2VkX3Nm" + 

+          "aXhlZDY0X2V4dGVuc2lvbhInLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RQYWNr" + 

+          "ZWRFeHRlbnNpb25zGGMgAygQQgIQATpLChZwYWNrZWRfZmxvYXRfZXh0ZW5z" + 

+          "aW9uEicucHJvdG9idWZfdW5pdHRlc3QuVGVzdFBhY2tlZEV4dGVuc2lvbnMY" + 

+          "ZCADKAJCAhABOkwKF3BhY2tlZF9kb3VibGVfZXh0ZW5zaW9uEicucHJvdG9i" + 

+          "dWZfdW5pdHRlc3QuVGVzdFBhY2tlZEV4dGVuc2lvbnMYZSADKAFCAhABOkoK" + 

+          "FXBhY2tlZF9ib29sX2V4dGVuc2lvbhInLnByb3RvYnVmX3VuaXR0ZXN0LlRl" + 

+          "c3RQYWNrZWRFeHRlbnNpb25zGGYgAygIQgIQATpqChVwYWNrZWRfZW51bV9l" + 

           "eHRlbnNpb24SJy5wcm90b2J1Zl91bml0dGVzdC5UZXN0UGFja2VkRXh0ZW5z" + 

-          "aW9ucxhcIAMoDUICEAE6TAoXcGFja2VkX3VpbnQ2NF9leHRlbnNpb24SJy5w" + 

-          "cm90b2J1Zl91bml0dGVzdC5UZXN0UGFja2VkRXh0ZW5zaW9ucxhdIAMoBEIC" + 

-          "EAE6TAoXcGFja2VkX3NpbnQzMl9leHRlbnNpb24SJy5wcm90b2J1Zl91bml0" + 

-          "dGVzdC5UZXN0UGFja2VkRXh0ZW5zaW9ucxheIAMoEUICEAE6TAoXcGFja2Vk" + 

-          "X3NpbnQ2NF9leHRlbnNpb24SJy5wcm90b2J1Zl91bml0dGVzdC5UZXN0UGFj" + 

-          "a2VkRXh0ZW5zaW9ucxhfIAMoEkICEAE6TQoYcGFja2VkX2ZpeGVkMzJfZXh0" + 

-          "ZW5zaW9uEicucHJvdG9idWZfdW5pdHRlc3QuVGVzdFBhY2tlZEV4dGVuc2lv" + 

-          "bnMYYCADKAdCAhABOk0KGHBhY2tlZF9maXhlZDY0X2V4dGVuc2lvbhInLnBy" + 

-          "b3RvYnVmX3VuaXR0ZXN0LlRlc3RQYWNrZWRFeHRlbnNpb25zGGEgAygGQgIQ" + 

-          "ATpOChlwYWNrZWRfc2ZpeGVkMzJfZXh0ZW5zaW9uEicucHJvdG9idWZfdW5p" + 

-          "dHRlc3QuVGVzdFBhY2tlZEV4dGVuc2lvbnMYYiADKA9CAhABOk4KGXBhY2tl" + 

-          "ZF9zZml4ZWQ2NF9leHRlbnNpb24SJy5wcm90b2J1Zl91bml0dGVzdC5UZXN0" + 

-          "UGFja2VkRXh0ZW5zaW9ucxhjIAMoEEICEAE6SwoWcGFja2VkX2Zsb2F0X2V4" + 

-          "dGVuc2lvbhInLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RQYWNrZWRFeHRlbnNp" + 

-          "b25zGGQgAygCQgIQATpMChdwYWNrZWRfZG91YmxlX2V4dGVuc2lvbhInLnBy" + 

-          "b3RvYnVmX3VuaXR0ZXN0LlRlc3RQYWNrZWRFeHRlbnNpb25zGGUgAygBQgIQ" + 

-          "ATpKChVwYWNrZWRfYm9vbF9leHRlbnNpb24SJy5wcm90b2J1Zl91bml0dGVz" + 

-          "dC5UZXN0UGFja2VkRXh0ZW5zaW9ucxhmIAMoCEICEAE6agoVcGFja2VkX2Vu" + 

-          "dW1fZXh0ZW5zaW9uEicucHJvdG9idWZfdW5pdHRlc3QuVGVzdFBhY2tlZEV4" + 

-          "dGVuc2lvbnMYZyADKA4yHi5wcm90b2J1Zl91bml0dGVzdC5Gb3JlaWduRW51" + 

-          "bUICEAE6SwoYdW5wYWNrZWRfaW50MzJfZXh0ZW5zaW9uEikucHJvdG9idWZf" + 

-          "dW5pdHRlc3QuVGVzdFVucGFja2VkRXh0ZW5zaW9ucxhaIAMoBTpLChh1bnBh" + 

-          "Y2tlZF9pbnQ2NF9leHRlbnNpb24SKS5wcm90b2J1Zl91bml0dGVzdC5UZXN0" + 

-          "VW5wYWNrZWRFeHRlbnNpb25zGFsgAygDOkwKGXVucGFja2VkX3VpbnQzMl9l" + 

-          "eHRlbnNpb24SKS5wcm90b2J1Zl91bml0dGVzdC5UZXN0VW5wYWNrZWRFeHRl" + 

-          "bnNpb25zGFwgAygNOkwKGXVucGFja2VkX3VpbnQ2NF9leHRlbnNpb24SKS5w" + 

-          "cm90b2J1Zl91bml0dGVzdC5UZXN0VW5wYWNrZWRFeHRlbnNpb25zGF0gAygE" + 

-          "OkwKGXVucGFja2VkX3NpbnQzMl9leHRlbnNpb24SKS5wcm90b2J1Zl91bml0" + 

-          "dGVzdC5UZXN0VW5wYWNrZWRFeHRlbnNpb25zGF4gAygROkwKGXVucGFja2Vk" + 

-          "X3NpbnQ2NF9leHRlbnNpb24SKS5wcm90b2J1Zl91bml0dGVzdC5UZXN0VW5w" + 

-          "YWNrZWRFeHRlbnNpb25zGF8gAygSOk0KGnVucGFja2VkX2ZpeGVkMzJfZXh0" + 

-          "ZW5zaW9uEikucHJvdG9idWZfdW5pdHRlc3QuVGVzdFVucGFja2VkRXh0ZW5z" + 

-          "aW9ucxhgIAMoBzpNChp1bnBhY2tlZF9maXhlZDY0X2V4dGVuc2lvbhIpLnBy" + 

-          "b3RvYnVmX3VuaXR0ZXN0LlRlc3RVbnBhY2tlZEV4dGVuc2lvbnMYYSADKAY6" + 

-          "TgobdW5wYWNrZWRfc2ZpeGVkMzJfZXh0ZW5zaW9uEikucHJvdG9idWZfdW5p" + 

-          "dHRlc3QuVGVzdFVucGFja2VkRXh0ZW5zaW9ucxhiIAMoDzpOCht1bnBhY2tl" + 

-          "ZF9zZml4ZWQ2NF9leHRlbnNpb24SKS5wcm90b2J1Zl91bml0dGVzdC5UZXN0" + 

-          "VW5wYWNrZWRFeHRlbnNpb25zGGMgAygQOksKGHVucGFja2VkX2Zsb2F0X2V4" + 

-          "dGVuc2lvbhIpLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RVbnBhY2tlZEV4dGVu" + 

-          "c2lvbnMYZCADKAI6TAoZdW5wYWNrZWRfZG91YmxlX2V4dGVuc2lvbhIpLnBy" + 

-          "b3RvYnVmX3VuaXR0ZXN0LlRlc3RVbnBhY2tlZEV4dGVuc2lvbnMYZSADKAE6" + 

-          "SgoXdW5wYWNrZWRfYm9vbF9leHRlbnNpb24SKS5wcm90b2J1Zl91bml0dGVz" + 

-          "dC5UZXN0VW5wYWNrZWRFeHRlbnNpb25zGGYgAygIOmoKF3VucGFja2VkX2Vu" + 

-          "dW1fZXh0ZW5zaW9uEikucHJvdG9idWZfdW5pdHRlc3QuVGVzdFVucGFja2Vk" + 

-          "RXh0ZW5zaW9ucxhnIAMoDjIeLnByb3RvYnVmX3VuaXR0ZXN0LkZvcmVpZ25F" + 

-          "bnVtQkpCDVVuaXR0ZXN0UHJvdG9IAcI+NgohR29vZ2xlLlByb3RvY29sQnVm" + 

-          "ZmVycy5UZXN0UHJvdG9zEhFVbml0VGVzdFByb3RvRmlsZQ==");

+          "aW9ucxhnIAMoDjIeLnByb3RvYnVmX3VuaXR0ZXN0LkZvcmVpZ25FbnVtQgIQ" + 

+          "AUJTQg1Vbml0dGVzdFByb3RvSAGAAQGIAQGQAQHCPjYKIUdvb2dsZS5Qcm90" + 

+          "b2NvbEJ1ZmZlcnMuVGVzdFByb3RvcxIRVW5pdFRlc3RQcm90b0ZpbGU=");

       pbd::FileDescriptor.InternalDescriptorAssigner assigner = delegate(pbd::FileDescriptor root) {

         descriptor = root;

         internal__static_protobuf_unittest_TestAllTypes__Descriptor = Descriptor.MessageTypes[0];

@@ -918,31 +849,31 @@
         internal__static_protobuf_unittest_TestExtremeDefaultValues__Descriptor = Descriptor.MessageTypes[21];

         internal__static_protobuf_unittest_TestExtremeDefaultValues__FieldAccessorTable = 

             new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestExtremeDefaultValues, global::Google.ProtocolBuffers.TestProtos.TestExtremeDefaultValues.Builder>(internal__static_protobuf_unittest_TestExtremeDefaultValues__Descriptor,

-                new string[] { "EscapedBytes", "LargeUint32", "LargeUint64", "SmallInt32", "SmallInt64", "Utf8String", "ZeroFloat", "OneFloat", "SmallFloat", "NegativeOneFloat", "NegativeFloat", "LargeFloat", "SmallNegativeFloat", "InfDouble", "NegInfDouble", "NanDouble", "InfFloat", "NegInfFloat", "NanFloat", });

-        internal__static_protobuf_unittest_OneString__Descriptor = Descriptor.MessageTypes[22];

+                new string[] { "EscapedBytes", "LargeUint32", "LargeUint64", "SmallInt32", "SmallInt64", "Utf8String", "ZeroFloat", "OneFloat", "SmallFloat", "NegativeOneFloat", "NegativeFloat", "LargeFloat", "SmallNegativeFloat", "InfDouble", "NegInfDouble", "NanDouble", "InfFloat", "NegInfFloat", "NanFloat", "CppTrigraph", });

+        internal__static_protobuf_unittest_SparseEnumMessage__Descriptor = Descriptor.MessageTypes[22];

+        internal__static_protobuf_unittest_SparseEnumMessage__FieldAccessorTable = 

+            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.SparseEnumMessage, global::Google.ProtocolBuffers.TestProtos.SparseEnumMessage.Builder>(internal__static_protobuf_unittest_SparseEnumMessage__Descriptor,

+                new string[] { "SparseEnum", });

+        internal__static_protobuf_unittest_OneString__Descriptor = Descriptor.MessageTypes[23];

         internal__static_protobuf_unittest_OneString__FieldAccessorTable = 

             new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.OneString, global::Google.ProtocolBuffers.TestProtos.OneString.Builder>(internal__static_protobuf_unittest_OneString__Descriptor,

                 new string[] { "Data", });

-        internal__static_protobuf_unittest_OneBytes__Descriptor = Descriptor.MessageTypes[23];

+        internal__static_protobuf_unittest_OneBytes__Descriptor = Descriptor.MessageTypes[24];

         internal__static_protobuf_unittest_OneBytes__FieldAccessorTable = 

             new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.OneBytes, global::Google.ProtocolBuffers.TestProtos.OneBytes.Builder>(internal__static_protobuf_unittest_OneBytes__Descriptor,

                 new string[] { "Data", });

-        internal__static_protobuf_unittest_TestPackedTypes__Descriptor = Descriptor.MessageTypes[24];

+        internal__static_protobuf_unittest_TestPackedTypes__Descriptor = Descriptor.MessageTypes[25];

         internal__static_protobuf_unittest_TestPackedTypes__FieldAccessorTable = 

             new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestPackedTypes, global::Google.ProtocolBuffers.TestProtos.TestPackedTypes.Builder>(internal__static_protobuf_unittest_TestPackedTypes__Descriptor,

                 new string[] { "PackedInt32", "PackedInt64", "PackedUint32", "PackedUint64", "PackedSint32", "PackedSint64", "PackedFixed32", "PackedFixed64", "PackedSfixed32", "PackedSfixed64", "PackedFloat", "PackedDouble", "PackedBool", "PackedEnum", });

-        internal__static_protobuf_unittest_TestUnpackedTypes__Descriptor = Descriptor.MessageTypes[25];

+        internal__static_protobuf_unittest_TestUnpackedTypes__Descriptor = Descriptor.MessageTypes[26];

         internal__static_protobuf_unittest_TestUnpackedTypes__FieldAccessorTable = 

             new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestUnpackedTypes, global::Google.ProtocolBuffers.TestProtos.TestUnpackedTypes.Builder>(internal__static_protobuf_unittest_TestUnpackedTypes__Descriptor,

                 new string[] { "UnpackedInt32", "UnpackedInt64", "UnpackedUint32", "UnpackedUint64", "UnpackedSint32", "UnpackedSint64", "UnpackedFixed32", "UnpackedFixed64", "UnpackedSfixed32", "UnpackedSfixed64", "UnpackedFloat", "UnpackedDouble", "UnpackedBool", "UnpackedEnum", });

-        internal__static_protobuf_unittest_TestPackedExtensions__Descriptor = Descriptor.MessageTypes[26];

+        internal__static_protobuf_unittest_TestPackedExtensions__Descriptor = Descriptor.MessageTypes[27];

         internal__static_protobuf_unittest_TestPackedExtensions__FieldAccessorTable = 

             new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestPackedExtensions, global::Google.ProtocolBuffers.TestProtos.TestPackedExtensions.Builder>(internal__static_protobuf_unittest_TestPackedExtensions__Descriptor,

                 new string[] { });

-        internal__static_protobuf_unittest_TestUnpackedExtensions__Descriptor = Descriptor.MessageTypes[27];

-        internal__static_protobuf_unittest_TestUnpackedExtensions__FieldAccessorTable = 

-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensions, global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensions.Builder>(internal__static_protobuf_unittest_TestUnpackedExtensions__Descriptor,

-                new string[] { });

         internal__static_protobuf_unittest_TestDynamicExtensions__Descriptor = Descriptor.MessageTypes[28];

         internal__static_protobuf_unittest_TestDynamicExtensions__FieldAccessorTable = 

             new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestDynamicExtensions, global::Google.ProtocolBuffers.TestProtos.TestDynamicExtensions.Builder>(internal__static_protobuf_unittest_TestDynamicExtensions__Descriptor,

@@ -1055,20 +986,6 @@
         global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.PackedDoubleExtension = pb::GeneratedRepeatExtension<double>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[81]);

         global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.PackedBoolExtension = pb::GeneratedRepeatExtension<bool>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[82]);

         global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.PackedEnumExtension = pb::GeneratedRepeatExtension<global::Google.ProtocolBuffers.TestProtos.ForeignEnum>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[83]);

-        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.UnpackedInt32Extension = pb::GeneratedRepeatExtension<int>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[84]);

-        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.UnpackedInt64Extension = pb::GeneratedRepeatExtension<long>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[85]);

-        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.UnpackedUint32Extension = pb::GeneratedRepeatExtension<uint>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[86]);

-        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.UnpackedUint64Extension = pb::GeneratedRepeatExtension<ulong>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[87]);

-        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.UnpackedSint32Extension = pb::GeneratedRepeatExtension<int>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[88]);

-        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.UnpackedSint64Extension = pb::GeneratedRepeatExtension<long>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[89]);

-        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.UnpackedFixed32Extension = pb::GeneratedRepeatExtension<uint>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[90]);

-        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.UnpackedFixed64Extension = pb::GeneratedRepeatExtension<ulong>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[91]);

-        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.UnpackedSfixed32Extension = pb::GeneratedRepeatExtension<int>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[92]);

-        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.UnpackedSfixed64Extension = pb::GeneratedRepeatExtension<long>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[93]);

-        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.UnpackedFloatExtension = pb::GeneratedRepeatExtension<float>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[94]);

-        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.UnpackedDoubleExtension = pb::GeneratedRepeatExtension<double>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[95]);

-        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.UnpackedBoolExtension = pb::GeneratedRepeatExtension<bool>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[96]);

-        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.UnpackedEnumExtension = pb::GeneratedRepeatExtension<global::Google.ProtocolBuffers.TestProtos.ForeignEnum>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[97]);

         pb::ExtensionRegistry registry = pb::ExtensionRegistry.CreateInstance();

         RegisterAllExtensions(registry);

         global::Google.ProtocolBuffers.DescriptorProtos.CSharpOptions.RegisterAllExtensions(registry);

@@ -14708,8 +14625,8 @@
   public sealed partial class TestExtremeDefaultValues : pb::GeneratedMessage<TestExtremeDefaultValues, TestExtremeDefaultValues.Builder> {

     private TestExtremeDefaultValues() { }

     private static readonly TestExtremeDefaultValues defaultInstance = new TestExtremeDefaultValues().MakeReadOnly();

-    private static readonly string[] _testExtremeDefaultValuesFieldNames = new string[] { "escaped_bytes", "inf_double", "inf_float", "large_float", "large_uint32", "large_uint64", "nan_double", "nan_float", "neg_inf_double", "neg_inf_float", "negative_float", "negative_one_float", "one_float", "small_float", "small_int32", "small_int64", "small_negative_float", "utf8_string", "zero_float" };

-    private static readonly uint[] _testExtremeDefaultValuesFieldTags = new uint[] { 10, 113, 141, 101, 16, 24, 129, 157, 121, 149, 93, 85, 69, 77, 32, 40, 109, 50, 61 };

+    private static readonly string[] _testExtremeDefaultValuesFieldNames = new string[] { "cpp_trigraph", "escaped_bytes", "inf_double", "inf_float", "large_float", "large_uint32", "large_uint64", "nan_double", "nan_float", "neg_inf_double", "neg_inf_float", "negative_float", "negative_one_float", "one_float", "small_float", "small_int32", "small_int64", "small_negative_float", "utf8_string", "zero_float" };

+    private static readonly uint[] _testExtremeDefaultValuesFieldTags = new uint[] { 162, 10, 113, 141, 101, 16, 24, 129, 157, 121, 149, 93, 85, 69, 77, 32, 40, 109, 50, 61 };

     public static TestExtremeDefaultValues DefaultInstance {

       get { return defaultInstance; }

     }

@@ -14922,6 +14839,16 @@
       get { return nanFloat_; }

     }

     

+    public const int CppTrigraphFieldNumber = 20;

+    private bool hasCppTrigraph;

+    private string cppTrigraph_ = "? ? ?? ?? ??? ??/ ??-";

+    public bool HasCppTrigraph {

+      get { return hasCppTrigraph; }

+    }

+    public string CppTrigraph {

+      get { return cppTrigraph_; }

+    }

+    

     public override bool IsInitialized {

       get {

         return true;

@@ -14932,61 +14859,64 @@
       int size = SerializedSize;

       string[] field_names = _testExtremeDefaultValuesFieldNames;

       if (hasEscapedBytes) {

-        output.WriteBytes(1, field_names[0], EscapedBytes);

+        output.WriteBytes(1, field_names[1], EscapedBytes);

       }

       if (hasLargeUint32) {

-        output.WriteUInt32(2, field_names[4], LargeUint32);

+        output.WriteUInt32(2, field_names[5], LargeUint32);

       }

       if (hasLargeUint64) {

-        output.WriteUInt64(3, field_names[5], LargeUint64);

+        output.WriteUInt64(3, field_names[6], LargeUint64);

       }

       if (hasSmallInt32) {

-        output.WriteInt32(4, field_names[14], SmallInt32);

+        output.WriteInt32(4, field_names[15], SmallInt32);

       }

       if (hasSmallInt64) {

-        output.WriteInt64(5, field_names[15], SmallInt64);

+        output.WriteInt64(5, field_names[16], SmallInt64);

       }

       if (hasUtf8String) {

-        output.WriteString(6, field_names[17], Utf8String);

+        output.WriteString(6, field_names[18], Utf8String);

       }

       if (hasZeroFloat) {

-        output.WriteFloat(7, field_names[18], ZeroFloat);

+        output.WriteFloat(7, field_names[19], ZeroFloat);

       }

       if (hasOneFloat) {

-        output.WriteFloat(8, field_names[12], OneFloat);

+        output.WriteFloat(8, field_names[13], OneFloat);

       }

       if (hasSmallFloat) {

-        output.WriteFloat(9, field_names[13], SmallFloat);

+        output.WriteFloat(9, field_names[14], SmallFloat);

       }

       if (hasNegativeOneFloat) {

-        output.WriteFloat(10, field_names[11], NegativeOneFloat);

+        output.WriteFloat(10, field_names[12], NegativeOneFloat);

       }

       if (hasNegativeFloat) {

-        output.WriteFloat(11, field_names[10], NegativeFloat);

+        output.WriteFloat(11, field_names[11], NegativeFloat);

       }

       if (hasLargeFloat) {

-        output.WriteFloat(12, field_names[3], LargeFloat);

+        output.WriteFloat(12, field_names[4], LargeFloat);

       }

       if (hasSmallNegativeFloat) {

-        output.WriteFloat(13, field_names[16], SmallNegativeFloat);

+        output.WriteFloat(13, field_names[17], SmallNegativeFloat);

       }

       if (hasInfDouble) {

-        output.WriteDouble(14, field_names[1], InfDouble);

+        output.WriteDouble(14, field_names[2], InfDouble);

       }

       if (hasNegInfDouble) {

-        output.WriteDouble(15, field_names[8], NegInfDouble);

+        output.WriteDouble(15, field_names[9], NegInfDouble);

       }

       if (hasNanDouble) {

-        output.WriteDouble(16, field_names[6], NanDouble);

+        output.WriteDouble(16, field_names[7], NanDouble);

       }

       if (hasInfFloat) {

-        output.WriteFloat(17, field_names[2], InfFloat);

+        output.WriteFloat(17, field_names[3], InfFloat);

       }

       if (hasNegInfFloat) {

-        output.WriteFloat(18, field_names[9], NegInfFloat);

+        output.WriteFloat(18, field_names[10], NegInfFloat);

       }

       if (hasNanFloat) {

-        output.WriteFloat(19, field_names[7], NanFloat);

+        output.WriteFloat(19, field_names[8], NanFloat);

+      }

+      if (hasCppTrigraph) {

+        output.WriteString(20, field_names[0], CppTrigraph);

       }

       UnknownFields.WriteTo(output);

     }

@@ -15055,6 +14985,9 @@
         if (hasNanFloat) {

           size += pb::CodedOutputStream.ComputeFloatSize(19, NanFloat);

         }

+        if (hasCppTrigraph) {

+          size += pb::CodedOutputStream.ComputeStringSize(20, CppTrigraph);

+        }

         size += UnknownFields.SerializedSize;

         memoizedSerializedSize = size;

         return size;

@@ -15238,6 +15171,9 @@
         if (other.HasNanFloat) {

           NanFloat = other.NanFloat;

         }

+        if (other.HasCppTrigraph) {

+          CppTrigraph = other.CppTrigraph;

+        }

         this.MergeUnknownFields(other.UnknownFields);

         return this;

       }

@@ -15357,6 +15293,10 @@
               result.hasNanFloat = input.ReadFloat(ref result.nanFloat_);

               break;

             }

+            case 162: {

+              result.hasCppTrigraph = input.ReadString(ref result.cppTrigraph_);

+              break;

+            }

           }

         }

         

@@ -15752,6 +15692,27 @@
         result.nanFloat_ = float.NaN;

         return this;

       }

+      

+      public bool HasCppTrigraph {

+        get { return result.hasCppTrigraph; }

+      }

+      public string CppTrigraph {

+        get { return result.CppTrigraph; }

+        set { SetCppTrigraph(value); }

+      }

+      public Builder SetCppTrigraph(string value) {

+        pb::ThrowHelper.ThrowIfNull(value, "value");

+        PrepareBuilder();

+        result.hasCppTrigraph = true;

+        result.cppTrigraph_ = value;

+        return this;

+      }

+      public Builder ClearCppTrigraph() {

+        PrepareBuilder();

+        result.hasCppTrigraph = false;

+        result.cppTrigraph_ = "? ? ?? ?? ??? ??/ ??-";

+        return this;

+      }

     }

     static TestExtremeDefaultValues() {

       object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor, null);

@@ -15761,6 +15722,288 @@
   [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]

   [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]

   [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")]

+  public sealed partial class SparseEnumMessage : pb::GeneratedMessage<SparseEnumMessage, SparseEnumMessage.Builder> {

+    private SparseEnumMessage() { }

+    private static readonly SparseEnumMessage defaultInstance = new SparseEnumMessage().MakeReadOnly();

+    private static readonly string[] _sparseEnumMessageFieldNames = new string[] { "sparse_enum" };

+    private static readonly uint[] _sparseEnumMessageFieldTags = new uint[] { 8 };

+    public static SparseEnumMessage DefaultInstance {

+      get { return defaultInstance; }

+    }

+    

+    public override SparseEnumMessage DefaultInstanceForType {

+      get { return DefaultInstance; }

+    }

+    

+    protected override SparseEnumMessage ThisMessage {

+      get { return this; }

+    }

+    

+    public static pbd::MessageDescriptor Descriptor {

+      get { return global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.internal__static_protobuf_unittest_SparseEnumMessage__Descriptor; }

+    }

+    

+    protected override pb::FieldAccess.FieldAccessorTable<SparseEnumMessage, SparseEnumMessage.Builder> InternalFieldAccessors {

+      get { return global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.internal__static_protobuf_unittest_SparseEnumMessage__FieldAccessorTable; }

+    }

+    

+    public const int SparseEnumFieldNumber = 1;

+    private bool hasSparseEnum;

+    private global::Google.ProtocolBuffers.TestProtos.TestSparseEnum sparseEnum_ = global::Google.ProtocolBuffers.TestProtos.TestSparseEnum.SPARSE_A;

+    public bool HasSparseEnum {

+      get { return hasSparseEnum; }

+    }

+    public global::Google.ProtocolBuffers.TestProtos.TestSparseEnum SparseEnum {

+      get { return sparseEnum_; }

+    }

+    

+    public override bool IsInitialized {

+      get {

+        return true;

+      }

+    }

+    

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

+      int size = SerializedSize;

+      string[] field_names = _sparseEnumMessageFieldNames;

+      if (hasSparseEnum) {

+        output.WriteEnum(1, field_names[0], (int) SparseEnum, SparseEnum);

+      }

+      UnknownFields.WriteTo(output);

+    }

+    

+    private int memoizedSerializedSize = -1;

+    public override int SerializedSize {

+      get {

+        int size = memoizedSerializedSize;

+        if (size != -1) return size;

+        

+        size = 0;

+        if (hasSparseEnum) {

+          size += pb::CodedOutputStream.ComputeEnumSize(1, (int) SparseEnum);

+        }

+        size += UnknownFields.SerializedSize;

+        memoizedSerializedSize = size;

+        return size;

+      }

+    }

+    

+    public static SparseEnumMessage ParseFrom(pb::ByteString data) {

+      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();

+    }

+    public static SparseEnumMessage ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {

+      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();

+    }

+    public static SparseEnumMessage ParseFrom(byte[] data) {

+      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();

+    }

+    public static SparseEnumMessage ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {

+      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();

+    }

+    public static SparseEnumMessage ParseFrom(global::System.IO.Stream input) {

+      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();

+    }

+    public static SparseEnumMessage ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {

+      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();

+    }

+    public static SparseEnumMessage ParseDelimitedFrom(global::System.IO.Stream input) {

+      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();

+    }

+    public static SparseEnumMessage ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {

+      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();

+    }

+    public static SparseEnumMessage ParseFrom(pb::ICodedInputStream input) {

+      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();

+    }

+    public static SparseEnumMessage ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {

+      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();

+    }

+    private SparseEnumMessage MakeReadOnly() {

+      return this;

+    }

+    

+    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(SparseEnumMessage prototype) {

+      return new Builder(prototype);

+    }

+    

+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]

+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]

+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")]

+    public sealed partial class Builder : pb::GeneratedBuilder<SparseEnumMessage, Builder> {

+      protected override Builder ThisBuilder {

+        get { return this; }

+      }

+      public Builder() {

+        result = DefaultInstance;

+        resultIsReadOnly = true;

+      }

+      internal Builder(SparseEnumMessage cloneFrom) {

+        result = cloneFrom;

+        resultIsReadOnly = true;

+      }

+      

+      private bool resultIsReadOnly;

+      private SparseEnumMessage result;

+      

+      private SparseEnumMessage PrepareBuilder() {

+        if (resultIsReadOnly) {

+          SparseEnumMessage original = result;

+          result = new SparseEnumMessage();

+          resultIsReadOnly = false;

+          MergeFrom(original);

+        }

+        return result;

+      }

+      

+      public override bool IsInitialized {

+        get { return result.IsInitialized; }

+      }

+      

+      protected override SparseEnumMessage MessageBeingBuilt {

+        get { return PrepareBuilder(); }

+      }

+      

+      public override Builder Clear() {

+        result = DefaultInstance;

+        resultIsReadOnly = true;

+        return this;

+      }

+      

+      public override Builder Clone() {

+        if (resultIsReadOnly) {

+          return new Builder(result);

+        } else {

+          return new Builder().MergeFrom(result);

+        }

+      }

+      

+      public override pbd::MessageDescriptor DescriptorForType {

+        get { return global::Google.ProtocolBuffers.TestProtos.SparseEnumMessage.Descriptor; }

+      }

+      

+      public override SparseEnumMessage DefaultInstanceForType {

+        get { return global::Google.ProtocolBuffers.TestProtos.SparseEnumMessage.DefaultInstance; }

+      }

+      

+      public override SparseEnumMessage BuildPartial() {

+        if (resultIsReadOnly) {

+          return result;

+        }

+        resultIsReadOnly = true;

+        return result.MakeReadOnly();

+      }

+      

+      public override Builder MergeFrom(pb::IMessage other) {

+        if (other is SparseEnumMessage) {

+          return MergeFrom((SparseEnumMessage) other);

+        } else {

+          base.MergeFrom(other);

+          return this;

+        }

+      }

+      

+      public override Builder MergeFrom(SparseEnumMessage other) {

+        if (other == global::Google.ProtocolBuffers.TestProtos.SparseEnumMessage.DefaultInstance) return this;

+        PrepareBuilder();

+        if (other.HasSparseEnum) {

+          SparseEnum = other.SparseEnum;

+        }

+        this.MergeUnknownFields(other.UnknownFields);

+        return this;

+      }

+      

+      public override Builder MergeFrom(pb::ICodedInputStream input) {

+        return MergeFrom(input, pb::ExtensionRegistry.Empty);

+      }

+      

+      public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {

+        PrepareBuilder();

+        pb::UnknownFieldSet.Builder unknownFields = null;

+        uint tag;

+        string field_name;

+        while (input.ReadTag(out tag, out field_name)) {

+          if(tag == 0 && field_name != null) {

+            int field_ordinal = global::System.Array.BinarySearch(_sparseEnumMessageFieldNames, field_name, global::System.StringComparer.Ordinal);

+            if(field_ordinal >= 0)

+              tag = _sparseEnumMessageFieldTags[field_ordinal];

+            else {

+              if (unknownFields == null) {

+                unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);

+              }

+              ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name);

+              continue;

+            }

+          }

+          switch (tag) {

+            case 0: {

+              throw pb::InvalidProtocolBufferException.InvalidTag();

+            }

+            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, field_name);

+              break;

+            }

+            case 8: {

+              object unknown;

+              if(input.ReadEnum(ref result.sparseEnum_, out unknown)) {

+                result.hasSparseEnum = true;

+              } else if(unknown is int) {

+                if (unknownFields == null) {

+                  unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);

+                }

+                unknownFields.MergeVarintField(1, (ulong)(int)unknown);

+              }

+              break;

+            }

+          }

+        }

+        

+        if (unknownFields != null) {

+          this.UnknownFields = unknownFields.Build();

+        }

+        return this;

+      }

+      

+      

+      public bool HasSparseEnum {

+       get { return result.hasSparseEnum; }

+      }

+      public global::Google.ProtocolBuffers.TestProtos.TestSparseEnum SparseEnum {

+        get { return result.SparseEnum; }

+        set { SetSparseEnum(value); }

+      }

+      public Builder SetSparseEnum(global::Google.ProtocolBuffers.TestProtos.TestSparseEnum value) {

+        PrepareBuilder();

+        result.hasSparseEnum = true;

+        result.sparseEnum_ = value;

+        return this;

+      }

+      public Builder ClearSparseEnum() {

+        PrepareBuilder();

+        result.hasSparseEnum = false;

+        result.sparseEnum_ = global::Google.ProtocolBuffers.TestProtos.TestSparseEnum.SPARSE_A;

+        return this;

+      }

+    }

+    static SparseEnumMessage() {

+      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor, null);

+    }

+  }

+  

+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]

+  [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]

+  [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")]

   public sealed partial class OneString : pb::GeneratedMessage<OneString, OneString.Builder> {

     private OneString() { }

     private static readonly OneString defaultInstance = new OneString().MakeReadOnly();

@@ -18850,242 +19093,6 @@
   [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]

   [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]

   [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")]

-  public sealed partial class TestUnpackedExtensions : pb::ExtendableMessage<TestUnpackedExtensions, TestUnpackedExtensions.Builder> {

-    private TestUnpackedExtensions() { }

-    private static readonly TestUnpackedExtensions defaultInstance = new TestUnpackedExtensions().MakeReadOnly();

-    private static readonly string[] _testUnpackedExtensionsFieldNames = new string[] {  };

-    private static readonly uint[] _testUnpackedExtensionsFieldTags = new uint[] {  };

-    public static TestUnpackedExtensions DefaultInstance {

-      get { return defaultInstance; }

-    }

-    

-    public override TestUnpackedExtensions DefaultInstanceForType {

-      get { return DefaultInstance; }

-    }

-    

-    protected override TestUnpackedExtensions ThisMessage {

-      get { return this; }

-    }

-    

-    public static pbd::MessageDescriptor Descriptor {

-      get { return global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.internal__static_protobuf_unittest_TestUnpackedExtensions__Descriptor; }

-    }

-    

-    protected override pb::FieldAccess.FieldAccessorTable<TestUnpackedExtensions, TestUnpackedExtensions.Builder> InternalFieldAccessors {

-      get { return global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.internal__static_protobuf_unittest_TestUnpackedExtensions__FieldAccessorTable; }

-    }

-    

-    public override bool IsInitialized {

-      get {

-        if (!ExtensionsAreInitialized) return false;

-        return true;

-      }

-    }

-    

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

-      int size = SerializedSize;

-      string[] field_names = _testUnpackedExtensionsFieldNames;

-      pb::ExtendableMessage<TestUnpackedExtensions, TestUnpackedExtensions.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 TestUnpackedExtensions ParseFrom(pb::ByteString data) {

-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();

-    }

-    public static TestUnpackedExtensions ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {

-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();

-    }

-    public static TestUnpackedExtensions ParseFrom(byte[] data) {

-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();

-    }

-    public static TestUnpackedExtensions ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {

-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();

-    }

-    public static TestUnpackedExtensions ParseFrom(global::System.IO.Stream input) {

-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();

-    }

-    public static TestUnpackedExtensions ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {

-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();

-    }

-    public static TestUnpackedExtensions ParseDelimitedFrom(global::System.IO.Stream input) {

-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();

-    }

-    public static TestUnpackedExtensions ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {

-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();

-    }

-    public static TestUnpackedExtensions ParseFrom(pb::ICodedInputStream input) {

-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();

-    }

-    public static TestUnpackedExtensions ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {

-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();

-    }

-    private TestUnpackedExtensions MakeReadOnly() {

-      return this;

-    }

-    

-    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(TestUnpackedExtensions prototype) {

-      return new Builder(prototype);

-    }

-    

-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]

-    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]

-    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")]

-    public sealed partial class Builder : pb::ExtendableBuilder<TestUnpackedExtensions, Builder> {

-      protected override Builder ThisBuilder {

-        get { return this; }

-      }

-      public Builder() {

-        result = DefaultInstance;

-        resultIsReadOnly = true;

-      }

-      internal Builder(TestUnpackedExtensions cloneFrom) {

-        result = cloneFrom;

-        resultIsReadOnly = true;

-      }

-      

-      private bool resultIsReadOnly;

-      private TestUnpackedExtensions result;

-      

-      private TestUnpackedExtensions PrepareBuilder() {

-        if (resultIsReadOnly) {

-          TestUnpackedExtensions original = result;

-          result = new TestUnpackedExtensions();

-          resultIsReadOnly = false;

-          MergeFrom(original);

-        }

-        return result;

-      }

-      

-      public override bool IsInitialized {

-        get { return result.IsInitialized; }

-      }

-      

-      protected override TestUnpackedExtensions MessageBeingBuilt {

-        get { return PrepareBuilder(); }

-      }

-      

-      public override Builder Clear() {

-        result = DefaultInstance;

-        resultIsReadOnly = true;

-        return this;

-      }

-      

-      public override Builder Clone() {

-        if (resultIsReadOnly) {

-          return new Builder(result);

-        } else {

-          return new Builder().MergeFrom(result);

-        }

-      }

-      

-      public override pbd::MessageDescriptor DescriptorForType {

-        get { return global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensions.Descriptor; }

-      }

-      

-      public override TestUnpackedExtensions DefaultInstanceForType {

-        get { return global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensions.DefaultInstance; }

-      }

-      

-      public override TestUnpackedExtensions BuildPartial() {

-        if (resultIsReadOnly) {

-          return result;

-        }

-        resultIsReadOnly = true;

-        return result.MakeReadOnly();

-      }

-      

-      public override Builder MergeFrom(pb::IMessage other) {

-        if (other is TestUnpackedExtensions) {

-          return MergeFrom((TestUnpackedExtensions) other);

-        } else {

-          base.MergeFrom(other);

-          return this;

-        }

-      }

-      

-      public override Builder MergeFrom(TestUnpackedExtensions other) {

-        if (other == global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensions.DefaultInstance) return this;

-        PrepareBuilder();

-          this.MergeExtensionFields(other);

-        this.MergeUnknownFields(other.UnknownFields);

-        return this;

-      }

-      

-      public override Builder MergeFrom(pb::ICodedInputStream input) {

-        return MergeFrom(input, pb::ExtensionRegistry.Empty);

-      }

-      

-      public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {

-        PrepareBuilder();

-        pb::UnknownFieldSet.Builder unknownFields = null;

-        uint tag;

-        string field_name;

-        while (input.ReadTag(out tag, out field_name)) {

-          if(tag == 0 && field_name != null) {

-            int field_ordinal = global::System.Array.BinarySearch(_testUnpackedExtensionsFieldNames, field_name, global::System.StringComparer.Ordinal);

-            if(field_ordinal >= 0)

-              tag = _testUnpackedExtensionsFieldTags[field_ordinal];

-            else {

-              if (unknownFields == null) {

-                unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);

-              }

-              ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name);

-              continue;

-            }

-          }

-          switch (tag) {

-            case 0: {

-              throw pb::InvalidProtocolBufferException.InvalidTag();

-            }

-            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, field_name);

-              break;

-            }

-          }

-        }

-        

-        if (unknownFields != null) {

-          this.UnknownFields = unknownFields.Build();

-        }

-        return this;

-      }

-      

-    }

-    static TestUnpackedExtensions() {

-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor, null);

-    }

-  }

-  

-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]

-  [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]

-  [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")]

   public sealed partial class TestDynamicExtensions : pb::GeneratedMessage<TestDynamicExtensions, TestDynamicExtensions.Builder> {

     private TestDynamicExtensions() { }

     private static readonly TestDynamicExtensions defaultInstance = new TestDynamicExtensions().MakeReadOnly();