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

   

 }