소스 검색

Integrated latest protoc.exe (2.3) and added/updated test protos

csharptest 15 년 전
부모
커밋
64bfac2825
28개의 변경된 파일21984개의 추가작업 그리고 496개의 파일을 삭제
  1. 2 0
      .gitignore
  2. 24 3
      ProtocolBuffers.build
  3. BIN
      lib/protoc.exe
  4. 32 4
      protos/google/protobuf/descriptor.proto
  5. 115 7
      protos/google/protobuf/unittest.proto
  6. 6 2
      protos/google/protobuf/unittest_custom_options.proto
  7. 43 0
      protos/google/protobuf/unittest_empty.proto
  8. 1052 0
      protos/google/protobuf/unittest_enormous_descriptor.proto
  9. 55 0
      protos/google/protobuf/unittest_import_lite.proto
  10. 318 0
      protos/google/protobuf/unittest_lite.proto
  11. 49 0
      protos/google/protobuf/unittest_lite_imports_nonlite.proto
  12. 60 0
      protos/google/protobuf/unittest_no_generic_services.proto
  13. 5 0
      src/ProtocolBuffers.Test/ProtocolBuffers.Test.csproj
  14. 14 0
      src/ProtocolBuffers.Test/TestProtos/FIXUP.cs
  15. 207 119
      src/ProtocolBuffers.Test/TestProtos/UnitTestCustomOptionsProtoFile.cs
  16. 44 0
      src/ProtocolBuffers.Test/TestProtos/UnitTestEmptyProtoFile.cs
  17. 5032 0
      src/ProtocolBuffers.Test/TestProtos/UnitTestEnormousDescriptorProtoFile.cs
  18. 196 0
      src/ProtocolBuffers.Test/TestProtos/UnitTestImportLiteProtoFile.cs
  19. 382 0
      src/ProtocolBuffers.Test/TestProtos/UnitTestNoGenericServicesProtoFile.cs
  20. 814 328
      src/ProtocolBuffers.Test/TestProtos/UnitTestProtoFile.cs
  21. 28 0
      src/ProtocolBuffers.sln
  22. 203 33
      src/ProtocolBuffers/DescriptorProtos/DescriptorProtoFile.cs
  23. 6 0
      src/ProtocolBuffers/Properties/AssemblyInfo.cs
  24. 82 0
      src/ProtocolBuffersLite.Test/ProtocolBuffersLite.Test.csproj
  25. 207 0
      src/ProtocolBuffersLite.Test/TestProtos/UnitTestLiteImportNonLiteProtoFile.cs
  26. 5111 0
      src/ProtocolBuffersLite.Test/TestProtos/UnitTestLiteProtoFile.cs
  27. 7605 0
      src/ProtocolBuffersLite.Test/TestProtos/UnittestLite.cs
  28. 292 0
      src/ProtocolBuffersLite.Test/TestProtos/UnittestLiteImportsNonlite.cs

+ 2 - 0
.gitignore

@@ -6,6 +6,8 @@ src/ProtocolBuffers/bin/
 src/ProtocolBuffers/obj/
 src/ProtocolBuffers.Test/bin/
 src/ProtocolBuffers.Test/obj/
+src/ProtocolBuffersLite.Test/bin/
+src/ProtocolBuffersLite.Test/obj/
 src/ProtoBench/bin/
 src/ProtoBench/obj/
 src/ProtoDump/bin/

+ 24 - 3
ProtocolBuffers.build

@@ -143,6 +143,14 @@
       <arg file="${protos-dir}/google/protobuf/unittest_import.proto" />
       <arg file="${protos-dir}/google/protobuf/unittest_mset.proto" />
       <arg file="${protos-dir}/google/protobuf/unittest_optimize_for.proto" />
+
+      <arg file="${protos-dir}/google/protobuf/unittest_empty.proto" />
+      <arg file="${protos-dir}/google/protobuf/unittest_enormous_descriptor.proto" />
+      <arg file="${protos-dir}/google/protobuf/unittest_import_lite.proto" />
+      <arg file="${protos-dir}/google/protobuf/unittest_lite.proto" />
+      <arg file="${protos-dir}/google/protobuf/unittest_lite_imports_nonlite.proto" />
+      <arg file="${protos-dir}/google/protobuf/unittest_no_generic_services.proto" />
+           
       <arg file="${protos-dir}/tutorial/addressbook.proto" />
     </exec>
     
@@ -154,6 +162,7 @@
   
   <target name="copy-generated-source" 
           description="Copies generated source from temporary directory to source tree. Use with care!">
+    
     <copy todir="${src}/ProtocolBuffers/DescriptorProtos">
       <fileset basedir="${tmp-dir}">
         <include name="DescriptorProtoFile.cs" />
@@ -163,22 +172,34 @@
 
     <copy todir="${src}/ProtocolBuffers.Test/TestProtos">
       <fileset basedir="${tmp-dir}">
-        <include name="UnitTestProtoFile.cs" />
         <include name="UnitTestCSharpOptionsProtoFile.cs" />
         <include name="UnitTestCustomOptionsProtoFile.cs" />
         <include name="UnitTestEmbedOptimizeForProtoFile.cs" />
+        <include name="UnitTestEmptyProtoFile.cs" />
+        <include name="UnitTestEnormousDescriptorProtoFile.cs" />
+        <include name="UnitTestImportLiteProtoFile.cs" />
         <include name="UnitTestImportProtoFile.cs" />
         <include name="UnitTestMessageSetProtoFile.cs" />
+        <include name="UnitTestNoGenericServicesProtoFile.cs" />
         <include name="UnitTestOptimizeForProtoFile.cs" />
+        <include name="UnitTestProtoFile.cs" />
       </fileset>
     </copy>
-    
+
+    <copy todir="${src}/ProtocolBuffersLite.Test/TestProtos">
+      <fileset basedir="${tmp-dir}">
+        <include name="UnitTestLiteImportNonLiteProtoFile.cs" />
+        <include name="UnitTestLiteProtoFile.cs" />
+      </fileset>
+    </copy>
+
     <copy todir="${src}/AddressBook">
       <fileset basedir="${tmp-dir}">
         <include name="AddressBookProtos.cs" />
       </fileset>
     </copy>
-  </target>
+
+</target>
 
   <target name="build"
           description="Builds all C# code">

BIN
lib/protoc.exe


+ 32 - 4
protos/google/protobuf/descriptor.proto

@@ -247,13 +247,31 @@ message FileOptions {
 
   // Generated classes can be optimized for speed or code size.
   enum OptimizeMode {
-    SPEED = 1;      // Generate complete code for parsing, serialization, etc.
-    CODE_SIZE = 2;  // Use ReflectionOps to implement these methods.
+    SPEED = 1;        // Generate complete code for parsing, serialization,
+                      // etc.
+    CODE_SIZE = 2;    // Use ReflectionOps to implement these methods.
+    LITE_RUNTIME = 3; // Generate code using MessageLite and the lite runtime.
   }
   optional OptimizeMode optimize_for = 9 [default=SPEED];
 
 
 
+
+  // Should generic services be generated in each language?  "Generic" services
+  // are not specific to any particular RPC system.  They are generated by the
+  // main code generators in each language (without additional plugins).
+  // Generic services were the only kind of service generation supported by
+  // early versions of proto2.
+  //
+  // Generic services are now considered deprecated in favor of using plugins
+  // that generate code specific to your particular RPC system.  If you are
+  // using such a plugin, set these to false.  In the future, we may change
+  // the default to false, so if you explicitly want generic services, you
+  // should explicitly set these to true.
+  optional bool cc_generic_services = 16 [default=true];
+  optional bool java_generic_services = 17 [default=true];
+  optional bool py_generic_services = 18 [default=true];
+
   // The parser stores options it doesn't recognize here. See above.
   repeated UninterpretedOption uninterpreted_option = 999;
 
@@ -282,6 +300,11 @@ message MessageOptions {
   // the protocol compiler.
   optional bool message_set_wire_format = 1 [default=false];
 
+  // Disables the generation of the standard "descriptor()" accessor, which can
+  // conflict with a field of the same name.  This is meant to make migration
+  // from proto1 easier; new code should avoid fields named "descriptor".
+  optional bool no_standard_descriptor_accessor = 2 [default=false];
+
   // The parser stores options it doesn't recognize here. See above.
   repeated UninterpretedOption uninterpreted_option = 999;
 
@@ -294,8 +317,11 @@ message FieldOptions {
   // representation of the field than it normally would.  See the specific
   // options below.  This option is not yet implemented in the open source
   // release -- sorry, we'll try to include it in a future version!
-  optional CType ctype = 1;
+  optional CType ctype = 1 [default = STRING];
   enum CType {
+    // Default mode.
+    STRING = 0;
+
     CORD = 1;
 
     STRING_PIECE = 2;
@@ -306,12 +332,13 @@ message FieldOptions {
   // a single length-delimited blob.
   optional bool packed = 2;
 
+
   // Is this field deprecated?
   // Depending on the target platform, this can emit Deprecated annotations
   // for accessors, or it will be completely ignored; in the very least, this
   // is a formalization for deprecating fields.
   optional bool deprecated = 3 [default=false];
-  
+
   // EXPERIMENTAL.  DO NOT USE.
   // For "map" fields, the name of the field in the enclosed type that
   // is the key for this map.  For example, suppose we have:
@@ -334,6 +361,7 @@ message FieldOptions {
 }
 
 message EnumOptions {
+
   // The parser stores options it doesn't recognize here. See above.
   repeated UninterpretedOption uninterpreted_option = 999;
 

+ 115 - 7
protos/google/protobuf/unittest.proto

@@ -161,6 +161,10 @@ message TestAllTypes {
   optional string default_cord = 85 [ctype=CORD,default="123"];
 }
 
+message TestDeprecatedFields {
+  optional int32 deprecated_int32 = 1 [deprecated=true];
+}
+
 // Define these after TestAllTypes to make sure the compiler can handle
 // that.
 message ForeignMessage {
@@ -275,6 +279,14 @@ extend TestAllExtensions {
   optional string default_cord_extension = 85 [ctype=CORD, default="123"];
 }
 
+message TestNestedExtension {
+  extend TestAllExtensions {
+    // Check for bug where string extensions declared in tested scope did not
+    // compile.
+    optional string test = 1002 [default="test"];
+  }
+}
+
 // We have separate messages for testing required fields because it's
 // annoying to have to fill in required fields in TestProto in order to
 // do anything with it.  Note that we don't need to test every type of
@@ -346,6 +358,12 @@ message TestEmptyMessageWithExtensions {
   extensions 1 to max;
 }
 
+message TestMultipleExtensionRanges {
+  extensions 42;
+  extensions 4143 to 4243;
+  extensions 65536 to max;
+}
+
 // Test that really large tag numbers don't break anything.
 message TestReallyLargeTagNumber {
   // The largest possible tag number is 2^28 - 1, since the wire format uses
@@ -370,13 +388,14 @@ message TestMutualRecursionB {
 }
 
 // Test that groups have disjoint field numbers from their siblings and
-// parents.  This is NOT possible in proto1; only proto2.  When outputting
-// proto1, the dup fields should be dropped.
-message TestDupFieldNumber {
-  optional int32 a = 1;
-  optional group Foo = 2 { optional int32 a = 1; }
-  optional group Bar = 3 { optional int32 a = 1; }
-}
+// parents.  This is NOT possible in proto1; only proto2.  When attempting
+// to compile with proto1, this will emit an error; so we only include it
+// in protobuf_unittest_proto.
+message TestDupFieldNumber {                        // NO_PROTO1
+  optional int32 a = 1;                             // NO_PROTO1
+  optional group Foo = 2 { optional int32 a = 1; }  // NO_PROTO1
+  optional group Bar = 3 { optional int32 a = 1; }  // NO_PROTO1
+}                                                   // NO_PROTO1
 
 
 // Needed for a Python test.
@@ -456,8 +475,37 @@ message TestExtremeDefaultValues {
   // the UTF-8 text directly into this text file rather than escape it, but
   // lots of people use editors that would be confused by this.)
   optional string utf8_string = 6 [default = "\341\210\264"];
+
+  // Tests for single-precision floating-point values.
+  optional float zero_float = 7 [default = 0];
+  optional float one_float = 8 [default = 1];
+  optional float small_float = 9 [default = 1.5];
+  optional float negative_one_float = 10 [default = -1];
+  optional float negative_float = 11 [default = -1.5];
+  // Using exponents
+  optional float large_float = 12 [default = 2E8];
+  optional float small_negative_float = 13 [default = -8e-28];
+
+  // Text for nonfinite floating-point values.
+  optional double inf_double = 14 [default = inf];
+  optional double neg_inf_double = 15 [default = -inf];
+  optional double nan_double = 16 [default = nan];
+  optional float inf_float = 17 [default = inf];
+  optional float neg_inf_float = 18 [default = -inf];
+  optional float nan_float = 19 [default = nan];
 }
 
+// Test String and Bytes: string is for valid UTF-8 strings
+message OneString {
+  optional string data = 1;
+}
+
+message OneBytes {
+  optional bytes data = 1;
+}
+
+// Test messages for packed fields
+
 message TestPackedTypes {
   repeated    int32 packed_int32    =  90 [packed = true];
   repeated    int64 packed_int64    =  91 [packed = true];
@@ -475,6 +523,25 @@ message TestPackedTypes {
   repeated ForeignEnum packed_enum  = 103 [packed = true];
 }
 
+// A message with the same fields as TestPackedTypes, but without packing. Used
+// to test packed <-> unpacked wire compatibility.
+message TestUnpackedTypes {
+  repeated    int32 unpacked_int32    =  90 [packed = false];
+  repeated    int64 unpacked_int64    =  91 [packed = false];
+  repeated   uint32 unpacked_uint32   =  92 [packed = false];
+  repeated   uint64 unpacked_uint64   =  93 [packed = false];
+  repeated   sint32 unpacked_sint32   =  94 [packed = false];
+  repeated   sint64 unpacked_sint64   =  95 [packed = false];
+  repeated  fixed32 unpacked_fixed32  =  96 [packed = false];
+  repeated  fixed64 unpacked_fixed64  =  97 [packed = false];
+  repeated sfixed32 unpacked_sfixed32 =  98 [packed = false];
+  repeated sfixed64 unpacked_sfixed64 =  99 [packed = false];
+  repeated    float unpacked_float    = 100 [packed = false];
+  repeated   double unpacked_double   = 101 [packed = false];
+  repeated     bool unpacked_bool     = 102 [packed = false];
+  repeated ForeignEnum unpacked_enum  = 103 [packed = false];
+}
+
 message TestPackedExtensions {
   extensions 1 to max;
 }
@@ -496,6 +563,47 @@ extend TestPackedExtensions {
   repeated ForeignEnum packed_enum_extension  = 103 [packed = true];
 }
 
+// Used by ExtensionSetTest/DynamicExtensions.  The test actually builds
+// a set of extensions to TestAllExtensions dynamically, based on the fields
+// of this message type.
+message TestDynamicExtensions {
+  enum DynamicEnumType {
+    DYNAMIC_FOO = 2200;
+    DYNAMIC_BAR = 2201;
+    DYNAMIC_BAZ = 2202;
+  }
+  message DynamicMessageType {
+    optional int32 dynamic_field = 2100;
+  }
+
+  optional fixed32 scalar_extension = 2000;
+  optional ForeignEnum enum_extension = 2001;
+  optional DynamicEnumType dynamic_enum_extension = 2002;
+
+  optional ForeignMessage message_extension = 2003;
+  optional DynamicMessageType dynamic_message_extension = 2004;
+
+  repeated string repeated_extension = 2005;
+  repeated sint32 packed_extension = 2006 [packed = true];
+}
+
+message TestRepeatedScalarDifferentTagSizes {
+  // Parsing repeated fixed size values used to fail. This message needs to be
+  // used in order to get a tag of the right size; all of the repeated fields
+  // in TestAllTypes didn't trigger the check.
+  repeated fixed32 repeated_fixed32 = 12;
+  // Check for a varint type, just for good measure.
+  repeated int32   repeated_int32   = 13;
+
+  // These have two-byte tags.
+  repeated fixed64 repeated_fixed64 = 2046;
+  repeated int64   repeated_int64   = 2047;
+
+  // Three byte tags.
+  repeated float   repeated_float   = 262142;
+  repeated uint64  repeated_uint64  = 262143;
+}
+
 // Test that RPC services work.
 message FooRequest  {}
 message FooResponse {}

+ 6 - 2
protos/google/protobuf/unittest_custom_options.proto

@@ -72,7 +72,9 @@ extend google.protobuf.EnumOptions {
   optional sfixed32 enum_opt1 = 7753576;
 }
 
-// TODO(benjy): Test options on enum values when the parser supports them.
+extend google.protobuf.EnumValueOptions {
+  optional int32 enum_value_opt1 = 1560678;
+}
 
 extend google.protobuf.ServiceOptions {
   optional sint64 service_opt1 = 7887650;
@@ -101,7 +103,7 @@ message TestMessageWithCustomOptions {
     option (enum_opt1) = -789;
 
     ANENUM_VAL1 = 1;
-    ANENUM_VAL2 = 2;
+    ANENUM_VAL2 = 2 [(enum_value_opt1) = 123];
   }
 }
 
@@ -208,6 +210,8 @@ message SettingRealsFromNegativeInts {
 
 message ComplexOptionType1 {
   optional int32 foo = 1;
+  optional int32 foo2 = 2;
+  optional int32 foo3 = 3;
 
   extensions 100 to max;
 }

+ 43 - 0
protos/google/protobuf/unittest_empty.proto

@@ -0,0 +1,43 @@
+// Additional options required for C# generation. File from copyright
+// line onwards is as per original distribution.
+import "google/protobuf/csharp_options.proto";
+option (google.protobuf.csharp_file_options).namespace = "Google.ProtocolBuffers.TestProtos";
+option (google.protobuf.csharp_file_options).umbrella_classname = "UnitTestEmptyProtoFile";
+
+// Protocol Buffers - Google's data interchange format
+// Copyright 2008 Google Inc.  All rights reserved.
+// http://code.google.com/p/protobuf/
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Author: kenton@google.com (Kenton Varda)
+//  Based on original Protocol Buffers design by
+//  Sanjay Ghemawat, Jeff Dean, and others.
+//
+// This file intentionally left blank.  (At one point this wouldn't compile
+// correctly.)
+

+ 1052 - 0
protos/google/protobuf/unittest_enormous_descriptor.proto

@@ -0,0 +1,1052 @@
+// Additional options required for C# generation. File from copyright
+// line onwards is as per original distribution.
+import "google/protobuf/csharp_options.proto";
+option (google.protobuf.csharp_file_options).namespace = "Google.ProtocolBuffers.TestProtos";
+option (google.protobuf.csharp_file_options).umbrella_classname = "UnitTestEnormousDescriptorProtoFile";
+
+// Protocol Buffers - Google's data interchange format
+// Copyright 2008 Google Inc.  All rights reserved.
+// http://code.google.com/p/protobuf/
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Author: kenton@google.com (Kenton Varda)
+//  Based on original Protocol Buffers design by
+//  Sanjay Ghemawat, Jeff Dean, and others.
+//
+// A proto file that has an extremely large descriptor.  Used to test that
+// descriptors over 64k don't break the string literal length limit in Java.
+
+
+package google.protobuf;
+option java_package = "com.google.protobuf";
+
+// Avoid generating insanely long methods.
+option optimize_for = CODE_SIZE;
+
+message TestEnormousDescriptor {
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_1 = 1 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_2 = 2 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_3 = 3 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_4 = 4 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_5 = 5 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_6 = 6 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_7 = 7 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_8 = 8 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_9 = 9 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_10 = 10 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_11 = 11 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_12 = 12 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_13 = 13 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_14 = 14 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_15 = 15 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_16 = 16 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_17 = 17 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_18 = 18 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_19 = 19 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_20 = 20 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_21 = 21 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_22 = 22 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_23 = 23 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_24 = 24 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_25 = 25 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_26 = 26 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_27 = 27 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_28 = 28 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_29 = 29 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_30 = 30 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_31 = 31 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_32 = 32 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_33 = 33 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_34 = 34 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_35 = 35 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_36 = 36 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_37 = 37 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_38 = 38 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_39 = 39 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_40 = 40 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_41 = 41 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_42 = 42 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_43 = 43 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_44 = 44 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_45 = 45 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_46 = 46 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_47 = 47 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_48 = 48 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_49 = 49 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_50 = 50 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_51 = 51 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_52 = 52 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_53 = 53 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_54 = 54 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_55 = 55 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_56 = 56 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_57 = 57 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_58 = 58 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_59 = 59 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_60 = 60 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_61 = 61 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_62 = 62 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_63 = 63 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_64 = 64 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_65 = 65 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_66 = 66 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_67 = 67 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_68 = 68 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_69 = 69 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_70 = 70 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_71 = 71 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_72 = 72 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_73 = 73 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_74 = 74 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_75 = 75 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_76 = 76 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_77 = 77 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_78 = 78 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_79 = 79 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_80 = 80 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_81 = 81 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_82 = 82 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_83 = 83 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_84 = 84 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_85 = 85 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_86 = 86 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_87 = 87 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_88 = 88 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_89 = 89 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_90 = 90 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_91 = 91 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_92 = 92 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_93 = 93 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_94 = 94 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_95 = 95 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_96 = 96 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_97 = 97 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_98 = 98 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_99 = 99 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_100 = 100 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_101 = 101 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_102 = 102 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_103 = 103 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_104 = 104 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_105 = 105 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_106 = 106 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_107 = 107 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_108 = 108 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_109 = 109 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_110 = 110 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_111 = 111 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_112 = 112 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_113 = 113 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_114 = 114 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_115 = 115 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_116 = 116 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_117 = 117 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_118 = 118 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_119 = 119 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_120 = 120 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_121 = 121 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_122 = 122 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_123 = 123 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_124 = 124 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_125 = 125 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_126 = 126 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_127 = 127 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_128 = 128 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_129 = 129 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_130 = 130 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_131 = 131 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_132 = 132 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_133 = 133 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_134 = 134 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_135 = 135 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_136 = 136 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_137 = 137 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_138 = 138 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_139 = 139 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_140 = 140 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_141 = 141 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_142 = 142 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_143 = 143 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_144 = 144 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_145 = 145 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_146 = 146 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_147 = 147 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_148 = 148 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_149 = 149 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_150 = 150 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_151 = 151 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_152 = 152 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_153 = 153 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_154 = 154 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_155 = 155 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_156 = 156 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_157 = 157 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_158 = 158 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_159 = 159 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_160 = 160 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_161 = 161 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_162 = 162 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_163 = 163 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_164 = 164 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_165 = 165 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_166 = 166 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_167 = 167 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_168 = 168 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_169 = 169 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_170 = 170 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_171 = 171 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_172 = 172 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_173 = 173 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_174 = 174 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_175 = 175 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_176 = 176 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_177 = 177 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_178 = 178 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_179 = 179 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_180 = 180 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_181 = 181 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_182 = 182 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_183 = 183 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_184 = 184 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_185 = 185 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_186 = 186 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_187 = 187 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_188 = 188 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_189 = 189 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_190 = 190 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_191 = 191 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_192 = 192 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_193 = 193 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_194 = 194 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_195 = 195 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_196 = 196 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_197 = 197 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_198 = 198 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_199 = 199 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_200 = 200 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_201 = 201 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_202 = 202 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_203 = 203 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_204 = 204 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_205 = 205 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_206 = 206 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_207 = 207 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_208 = 208 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_209 = 209 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_210 = 210 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_211 = 211 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_212 = 212 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_213 = 213 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_214 = 214 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_215 = 215 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_216 = 216 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_217 = 217 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_218 = 218 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_219 = 219 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_220 = 220 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_221 = 221 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_222 = 222 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_223 = 223 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_224 = 224 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_225 = 225 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_226 = 226 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_227 = 227 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_228 = 228 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_229 = 229 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_230 = 230 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_231 = 231 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_232 = 232 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_233 = 233 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_234 = 234 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_235 = 235 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_236 = 236 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_237 = 237 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_238 = 238 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_239 = 239 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_240 = 240 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_241 = 241 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_242 = 242 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_243 = 243 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_244 = 244 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_245 = 245 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_246 = 246 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_247 = 247 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_248 = 248 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_249 = 249 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_250 = 250 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_251 = 251 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_252 = 252 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_253 = 253 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_254 = 254 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_255 = 255 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_256 = 256 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_257 = 257 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_258 = 258 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_259 = 259 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_260 = 260 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_261 = 261 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_262 = 262 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_263 = 263 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_264 = 264 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_265 = 265 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_266 = 266 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_267 = 267 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_268 = 268 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_269 = 269 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_270 = 270 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_271 = 271 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_272 = 272 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_273 = 273 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_274 = 274 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_275 = 275 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_276 = 276 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_277 = 277 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_278 = 278 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_279 = 279 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_280 = 280 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_281 = 281 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_282 = 282 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_283 = 283 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_284 = 284 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_285 = 285 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_286 = 286 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_287 = 287 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_288 = 288 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_289 = 289 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_290 = 290 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_291 = 291 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_292 = 292 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_293 = 293 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_294 = 294 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_295 = 295 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_296 = 296 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_297 = 297 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_298 = 298 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_299 = 299 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_300 = 300 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_301 = 301 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_302 = 302 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_303 = 303 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_304 = 304 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_305 = 305 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_306 = 306 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_307 = 307 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_308 = 308 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_309 = 309 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_310 = 310 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_311 = 311 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_312 = 312 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_313 = 313 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_314 = 314 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_315 = 315 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_316 = 316 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_317 = 317 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_318 = 318 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_319 = 319 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_320 = 320 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_321 = 321 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_322 = 322 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_323 = 323 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_324 = 324 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_325 = 325 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_326 = 326 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_327 = 327 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_328 = 328 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_329 = 329 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_330 = 330 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_331 = 331 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_332 = 332 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_333 = 333 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_334 = 334 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_335 = 335 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_336 = 336 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_337 = 337 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_338 = 338 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_339 = 339 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_340 = 340 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_341 = 341 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_342 = 342 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_343 = 343 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_344 = 344 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_345 = 345 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_346 = 346 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_347 = 347 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_348 = 348 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_349 = 349 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_350 = 350 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_351 = 351 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_352 = 352 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_353 = 353 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_354 = 354 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_355 = 355 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_356 = 356 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_357 = 357 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_358 = 358 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_359 = 359 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_360 = 360 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_361 = 361 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_362 = 362 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_363 = 363 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_364 = 364 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_365 = 365 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_366 = 366 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_367 = 367 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_368 = 368 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_369 = 369 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_370 = 370 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_371 = 371 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_372 = 372 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_373 = 373 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_374 = 374 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_375 = 375 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_376 = 376 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_377 = 377 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_378 = 378 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_379 = 379 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_380 = 380 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_381 = 381 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_382 = 382 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_383 = 383 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_384 = 384 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_385 = 385 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_386 = 386 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_387 = 387 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_388 = 388 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_389 = 389 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_390 = 390 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_391 = 391 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_392 = 392 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_393 = 393 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_394 = 394 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_395 = 395 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_396 = 396 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_397 = 397 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_398 = 398 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_399 = 399 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_400 = 400 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_401 = 401 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_402 = 402 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_403 = 403 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_404 = 404 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_405 = 405 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_406 = 406 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_407 = 407 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_408 = 408 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_409 = 409 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_410 = 410 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_411 = 411 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_412 = 412 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_413 = 413 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_414 = 414 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_415 = 415 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_416 = 416 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_417 = 417 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_418 = 418 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_419 = 419 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_420 = 420 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_421 = 421 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_422 = 422 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_423 = 423 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_424 = 424 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_425 = 425 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_426 = 426 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_427 = 427 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_428 = 428 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_429 = 429 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_430 = 430 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_431 = 431 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_432 = 432 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_433 = 433 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_434 = 434 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_435 = 435 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_436 = 436 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_437 = 437 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_438 = 438 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_439 = 439 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_440 = 440 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_441 = 441 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_442 = 442 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_443 = 443 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_444 = 444 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_445 = 445 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_446 = 446 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_447 = 447 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_448 = 448 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_449 = 449 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_450 = 450 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_451 = 451 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_452 = 452 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_453 = 453 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_454 = 454 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_455 = 455 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_456 = 456 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_457 = 457 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_458 = 458 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_459 = 459 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_460 = 460 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_461 = 461 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_462 = 462 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_463 = 463 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_464 = 464 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_465 = 465 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_466 = 466 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_467 = 467 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_468 = 468 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_469 = 469 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_470 = 470 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_471 = 471 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_472 = 472 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_473 = 473 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_474 = 474 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_475 = 475 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_476 = 476 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_477 = 477 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_478 = 478 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_479 = 479 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_480 = 480 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_481 = 481 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_482 = 482 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_483 = 483 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_484 = 484 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_485 = 485 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_486 = 486 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_487 = 487 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_488 = 488 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_489 = 489 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_490 = 490 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_491 = 491 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_492 = 492 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_493 = 493 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_494 = 494 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_495 = 495 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_496 = 496 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_497 = 497 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_498 = 498 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_499 = 499 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_500 = 500 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_501 = 501 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_502 = 502 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_503 = 503 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_504 = 504 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_505 = 505 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_506 = 506 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_507 = 507 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_508 = 508 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_509 = 509 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_510 = 510 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_511 = 511 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_512 = 512 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_513 = 513 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_514 = 514 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_515 = 515 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_516 = 516 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_517 = 517 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_518 = 518 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_519 = 519 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_520 = 520 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_521 = 521 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_522 = 522 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_523 = 523 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_524 = 524 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_525 = 525 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_526 = 526 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_527 = 527 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_528 = 528 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_529 = 529 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_530 = 530 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_531 = 531 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_532 = 532 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_533 = 533 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_534 = 534 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_535 = 535 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_536 = 536 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_537 = 537 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_538 = 538 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_539 = 539 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_540 = 540 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_541 = 541 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_542 = 542 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_543 = 543 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_544 = 544 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_545 = 545 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_546 = 546 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_547 = 547 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_548 = 548 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_549 = 549 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_550 = 550 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_551 = 551 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_552 = 552 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_553 = 553 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_554 = 554 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_555 = 555 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_556 = 556 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_557 = 557 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_558 = 558 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_559 = 559 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_560 = 560 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_561 = 561 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_562 = 562 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_563 = 563 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_564 = 564 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_565 = 565 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_566 = 566 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_567 = 567 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_568 = 568 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_569 = 569 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_570 = 570 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_571 = 571 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_572 = 572 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_573 = 573 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_574 = 574 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_575 = 575 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_576 = 576 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_577 = 577 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_578 = 578 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_579 = 579 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_580 = 580 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_581 = 581 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_582 = 582 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_583 = 583 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_584 = 584 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_585 = 585 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_586 = 586 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_587 = 587 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_588 = 588 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_589 = 589 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_590 = 590 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_591 = 591 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_592 = 592 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_593 = 593 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_594 = 594 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_595 = 595 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_596 = 596 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_597 = 597 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_598 = 598 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_599 = 599 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_600 = 600 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_601 = 601 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_602 = 602 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_603 = 603 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_604 = 604 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_605 = 605 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_606 = 606 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_607 = 607 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_608 = 608 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_609 = 609 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_610 = 610 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_611 = 611 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_612 = 612 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_613 = 613 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_614 = 614 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_615 = 615 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_616 = 616 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_617 = 617 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_618 = 618 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_619 = 619 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_620 = 620 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_621 = 621 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_622 = 622 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_623 = 623 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_624 = 624 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_625 = 625 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_626 = 626 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_627 = 627 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_628 = 628 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_629 = 629 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_630 = 630 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_631 = 631 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_632 = 632 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_633 = 633 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_634 = 634 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_635 = 635 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_636 = 636 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_637 = 637 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_638 = 638 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_639 = 639 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_640 = 640 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_641 = 641 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_642 = 642 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_643 = 643 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_644 = 644 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_645 = 645 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_646 = 646 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_647 = 647 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_648 = 648 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_649 = 649 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_650 = 650 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_651 = 651 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_652 = 652 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_653 = 653 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_654 = 654 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_655 = 655 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_656 = 656 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_657 = 657 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_658 = 658 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_659 = 659 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_660 = 660 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_661 = 661 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_662 = 662 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_663 = 663 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_664 = 664 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_665 = 665 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_666 = 666 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_667 = 667 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_668 = 668 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_669 = 669 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_670 = 670 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_671 = 671 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_672 = 672 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_673 = 673 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_674 = 674 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_675 = 675 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_676 = 676 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_677 = 677 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_678 = 678 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_679 = 679 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_680 = 680 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_681 = 681 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_682 = 682 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_683 = 683 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_684 = 684 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_685 = 685 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_686 = 686 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_687 = 687 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_688 = 688 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_689 = 689 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_690 = 690 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_691 = 691 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_692 = 692 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_693 = 693 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_694 = 694 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_695 = 695 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_696 = 696 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_697 = 697 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_698 = 698 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_699 = 699 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_700 = 700 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_701 = 701 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_702 = 702 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_703 = 703 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_704 = 704 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_705 = 705 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_706 = 706 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_707 = 707 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_708 = 708 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_709 = 709 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_710 = 710 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_711 = 711 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_712 = 712 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_713 = 713 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_714 = 714 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_715 = 715 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_716 = 716 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_717 = 717 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_718 = 718 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_719 = 719 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_720 = 720 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_721 = 721 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_722 = 722 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_723 = 723 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_724 = 724 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_725 = 725 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_726 = 726 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_727 = 727 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_728 = 728 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_729 = 729 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_730 = 730 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_731 = 731 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_732 = 732 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_733 = 733 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_734 = 734 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_735 = 735 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_736 = 736 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_737 = 737 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_738 = 738 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_739 = 739 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_740 = 740 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_741 = 741 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_742 = 742 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_743 = 743 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_744 = 744 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_745 = 745 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_746 = 746 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_747 = 747 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_748 = 748 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_749 = 749 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_750 = 750 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_751 = 751 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_752 = 752 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_753 = 753 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_754 = 754 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_755 = 755 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_756 = 756 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_757 = 757 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_758 = 758 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_759 = 759 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_760 = 760 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_761 = 761 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_762 = 762 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_763 = 763 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_764 = 764 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_765 = 765 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_766 = 766 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_767 = 767 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_768 = 768 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_769 = 769 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_770 = 770 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_771 = 771 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_772 = 772 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_773 = 773 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_774 = 774 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_775 = 775 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_776 = 776 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_777 = 777 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_778 = 778 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_779 = 779 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_780 = 780 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_781 = 781 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_782 = 782 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_783 = 783 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_784 = 784 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_785 = 785 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_786 = 786 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_787 = 787 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_788 = 788 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_789 = 789 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_790 = 790 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_791 = 791 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_792 = 792 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_793 = 793 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_794 = 794 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_795 = 795 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_796 = 796 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_797 = 797 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_798 = 798 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_799 = 799 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_800 = 800 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_801 = 801 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_802 = 802 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_803 = 803 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_804 = 804 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_805 = 805 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_806 = 806 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_807 = 807 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_808 = 808 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_809 = 809 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_810 = 810 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_811 = 811 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_812 = 812 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_813 = 813 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_814 = 814 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_815 = 815 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_816 = 816 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_817 = 817 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_818 = 818 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_819 = 819 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_820 = 820 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_821 = 821 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_822 = 822 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_823 = 823 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_824 = 824 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_825 = 825 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_826 = 826 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_827 = 827 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_828 = 828 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_829 = 829 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_830 = 830 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_831 = 831 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_832 = 832 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_833 = 833 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_834 = 834 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_835 = 835 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_836 = 836 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_837 = 837 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_838 = 838 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_839 = 839 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_840 = 840 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_841 = 841 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_842 = 842 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_843 = 843 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_844 = 844 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_845 = 845 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_846 = 846 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_847 = 847 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_848 = 848 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_849 = 849 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_850 = 850 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_851 = 851 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_852 = 852 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_853 = 853 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_854 = 854 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_855 = 855 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_856 = 856 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_857 = 857 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_858 = 858 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_859 = 859 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_860 = 860 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_861 = 861 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_862 = 862 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_863 = 863 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_864 = 864 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_865 = 865 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_866 = 866 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_867 = 867 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_868 = 868 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_869 = 869 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_870 = 870 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_871 = 871 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_872 = 872 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_873 = 873 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_874 = 874 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_875 = 875 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_876 = 876 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_877 = 877 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_878 = 878 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_879 = 879 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_880 = 880 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_881 = 881 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_882 = 882 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_883 = 883 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_884 = 884 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_885 = 885 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_886 = 886 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_887 = 887 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_888 = 888 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_889 = 889 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_890 = 890 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_891 = 891 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_892 = 892 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_893 = 893 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_894 = 894 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_895 = 895 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_896 = 896 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_897 = 897 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_898 = 898 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_899 = 899 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_900 = 900 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_901 = 901 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_902 = 902 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_903 = 903 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_904 = 904 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_905 = 905 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_906 = 906 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_907 = 907 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_908 = 908 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_909 = 909 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_910 = 910 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_911 = 911 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_912 = 912 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_913 = 913 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_914 = 914 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_915 = 915 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_916 = 916 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_917 = 917 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_918 = 918 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_919 = 919 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_920 = 920 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_921 = 921 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_922 = 922 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_923 = 923 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_924 = 924 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_925 = 925 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_926 = 926 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_927 = 927 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_928 = 928 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_929 = 929 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_930 = 930 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_931 = 931 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_932 = 932 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_933 = 933 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_934 = 934 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_935 = 935 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_936 = 936 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_937 = 937 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_938 = 938 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_939 = 939 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_940 = 940 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_941 = 941 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_942 = 942 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_943 = 943 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_944 = 944 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_945 = 945 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_946 = 946 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_947 = 947 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_948 = 948 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_949 = 949 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_950 = 950 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_951 = 951 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_952 = 952 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_953 = 953 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_954 = 954 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_955 = 955 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_956 = 956 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_957 = 957 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_958 = 958 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_959 = 959 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_960 = 960 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_961 = 961 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_962 = 962 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_963 = 963 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_964 = 964 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_965 = 965 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_966 = 966 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_967 = 967 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_968 = 968 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_969 = 969 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_970 = 970 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_971 = 971 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_972 = 972 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_973 = 973 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_974 = 974 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_975 = 975 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_976 = 976 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_977 = 977 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_978 = 978 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_979 = 979 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_980 = 980 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_981 = 981 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_982 = 982 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_983 = 983 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_984 = 984 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_985 = 985 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_986 = 986 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_987 = 987 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_988 = 988 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_989 = 989 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_990 = 990 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_991 = 991 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_992 = 992 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_993 = 993 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_994 = 994 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_995 = 995 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_996 = 996 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_997 = 997 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_998 = 998 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_999 = 999 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+  optional string long_field_name_is_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_1000 = 1000 [default="long default value is also loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"];
+}

+ 55 - 0
protos/google/protobuf/unittest_import_lite.proto

@@ -0,0 +1,55 @@
+// Additional options required for C# generation. File from copyright
+// line onwards is as per original distribution.
+import "google/protobuf/csharp_options.proto";
+option (google.protobuf.csharp_file_options).namespace = "Google.ProtocolBuffers.TestProtos";
+option (google.protobuf.csharp_file_options).umbrella_classname = "UnitTestImportLiteProtoFile";
+
+// Protocol Buffers - Google's data interchange format
+// Copyright 2008 Google Inc.  All rights reserved.
+// http://code.google.com/p/protobuf/
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Author: kenton@google.com (Kenton Varda)
+//
+// This is like unittest_import.proto but with optimize_for = LITE_RUNTIME.
+
+package protobuf_unittest_import;
+
+option optimize_for = LITE_RUNTIME;
+
+option java_package = "com.google.protobuf";
+
+message ImportMessageLite {
+  optional int32 d = 1;
+}
+
+enum ImportEnumLite {
+  IMPORT_LITE_FOO = 7;
+  IMPORT_LITE_BAR = 8;
+  IMPORT_LITE_BAZ = 9;
+}

+ 318 - 0
protos/google/protobuf/unittest_lite.proto

@@ -0,0 +1,318 @@
+// Additional options required for C# generation. File from copyright
+// line onwards is as per original distribution.
+import "google/protobuf/csharp_options.proto";
+option (google.protobuf.csharp_file_options).namespace = "Google.ProtocolBuffers.TestProtos";
+option (google.protobuf.csharp_file_options).umbrella_classname = "UnitTestLiteProtoFile";
+
+// Protocol Buffers - Google's data interchange format
+// Copyright 2008 Google Inc.  All rights reserved.
+// http://code.google.com/p/protobuf/
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Author: kenton@google.com (Kenton Varda)
+//
+// This is like unittest.proto but with optimize_for = LITE_RUNTIME.
+
+package protobuf_unittest;
+
+import "google/protobuf/unittest_import_lite.proto";
+
+option optimize_for = LITE_RUNTIME;
+
+option java_package = "com.google.protobuf";
+
+// Same as TestAllTypes but with the lite runtime.
+message TestAllTypesLite {
+  message NestedMessage {
+    optional int32 bb = 1;
+  }
+
+  enum NestedEnum {
+    FOO = 1;
+    BAR = 2;
+    BAZ = 3;
+  }
+
+  // Singular
+  optional    int32 optional_int32    =  1;
+  optional    int64 optional_int64    =  2;
+  optional   uint32 optional_uint32   =  3;
+  optional   uint64 optional_uint64   =  4;
+  optional   sint32 optional_sint32   =  5;
+  optional   sint64 optional_sint64   =  6;
+  optional  fixed32 optional_fixed32  =  7;
+  optional  fixed64 optional_fixed64  =  8;
+  optional sfixed32 optional_sfixed32 =  9;
+  optional sfixed64 optional_sfixed64 = 10;
+  optional    float optional_float    = 11;
+  optional   double optional_double   = 12;
+  optional     bool optional_bool     = 13;
+  optional   string optional_string   = 14;
+  optional    bytes optional_bytes    = 15;
+
+  optional group OptionalGroup = 16 {
+    optional int32 a = 17;
+  }
+
+  optional NestedMessage      optional_nested_message  = 18;
+  optional ForeignMessageLite optional_foreign_message = 19;
+  optional protobuf_unittest_import.ImportMessageLite
+    optional_import_message = 20;
+
+  optional NestedEnum      optional_nested_enum     = 21;
+  optional ForeignEnumLite optional_foreign_enum    = 22;
+  optional protobuf_unittest_import.ImportEnumLite optional_import_enum = 23;
+
+  optional string optional_string_piece = 24 [ctype=STRING_PIECE];
+  optional string optional_cord = 25 [ctype=CORD];
+
+  // Repeated
+  repeated    int32 repeated_int32    = 31;
+  repeated    int64 repeated_int64    = 32;
+  repeated   uint32 repeated_uint32   = 33;
+  repeated   uint64 repeated_uint64   = 34;
+  repeated   sint32 repeated_sint32   = 35;
+  repeated   sint64 repeated_sint64   = 36;
+  repeated  fixed32 repeated_fixed32  = 37;
+  repeated  fixed64 repeated_fixed64  = 38;
+  repeated sfixed32 repeated_sfixed32 = 39;
+  repeated sfixed64 repeated_sfixed64 = 40;
+  repeated    float repeated_float    = 41;
+  repeated   double repeated_double   = 42;
+  repeated     bool repeated_bool     = 43;
+  repeated   string repeated_string   = 44;
+  repeated    bytes repeated_bytes    = 45;
+
+  repeated group RepeatedGroup = 46 {
+    optional int32 a = 47;
+  }
+
+  repeated NestedMessage      repeated_nested_message  = 48;
+  repeated ForeignMessageLite repeated_foreign_message = 49;
+  repeated protobuf_unittest_import.ImportMessageLite
+    repeated_import_message = 50;
+
+  repeated NestedEnum      repeated_nested_enum  = 51;
+  repeated ForeignEnumLite repeated_foreign_enum = 52;
+  repeated protobuf_unittest_import.ImportEnumLite repeated_import_enum = 53;
+
+  repeated string repeated_string_piece = 54 [ctype=STRING_PIECE];
+  repeated string repeated_cord = 55 [ctype=CORD];
+
+  // Singular with defaults
+  optional    int32 default_int32    = 61 [default =  41    ];
+  optional    int64 default_int64    = 62 [default =  42    ];
+  optional   uint32 default_uint32   = 63 [default =  43    ];
+  optional   uint64 default_uint64   = 64 [default =  44    ];
+  optional   sint32 default_sint32   = 65 [default = -45    ];
+  optional   sint64 default_sint64   = 66 [default =  46    ];
+  optional  fixed32 default_fixed32  = 67 [default =  47    ];
+  optional  fixed64 default_fixed64  = 68 [default =  48    ];
+  optional sfixed32 default_sfixed32 = 69 [default =  49    ];
+  optional sfixed64 default_sfixed64 = 70 [default = -50    ];
+  optional    float default_float    = 71 [default =  51.5  ];
+  optional   double default_double   = 72 [default =  52e3  ];
+  optional     bool default_bool     = 73 [default = true   ];
+  optional   string default_string   = 74 [default = "hello"];
+  optional    bytes default_bytes    = 75 [default = "world"];
+
+  optional NestedEnum default_nested_enum = 81 [default = BAR];
+  optional ForeignEnumLite default_foreign_enum = 82
+      [default = FOREIGN_LITE_BAR];
+  optional protobuf_unittest_import.ImportEnumLite
+      default_import_enum = 83 [default = IMPORT_LITE_BAR];
+
+  optional string default_string_piece = 84 [ctype=STRING_PIECE,default="abc"];
+  optional string default_cord = 85 [ctype=CORD,default="123"];
+}
+
+message ForeignMessageLite {
+  optional int32 c = 1;
+}
+
+enum ForeignEnumLite {
+  FOREIGN_LITE_FOO = 4;
+  FOREIGN_LITE_BAR = 5;
+  FOREIGN_LITE_BAZ = 6;
+}
+
+message TestPackedTypesLite {
+  repeated    int32 packed_int32    =  90 [packed = true];
+  repeated    int64 packed_int64    =  91 [packed = true];
+  repeated   uint32 packed_uint32   =  92 [packed = true];
+  repeated   uint64 packed_uint64   =  93 [packed = true];
+  repeated   sint32 packed_sint32   =  94 [packed = true];
+  repeated   sint64 packed_sint64   =  95 [packed = true];
+  repeated  fixed32 packed_fixed32  =  96 [packed = true];
+  repeated  fixed64 packed_fixed64  =  97 [packed = true];
+  repeated sfixed32 packed_sfixed32 =  98 [packed = true];
+  repeated sfixed64 packed_sfixed64 =  99 [packed = true];
+  repeated    float packed_float    = 100 [packed = true];
+  repeated   double packed_double   = 101 [packed = true];
+  repeated     bool packed_bool     = 102 [packed = true];
+  repeated ForeignEnumLite packed_enum  = 103 [packed = true];
+}
+
+message TestAllExtensionsLite {
+  extensions 1 to max;
+}
+
+extend TestAllExtensionsLite {
+  // Singular
+  optional    int32 optional_int32_extension_lite    =  1;
+  optional    int64 optional_int64_extension_lite    =  2;
+  optional   uint32 optional_uint32_extension_lite   =  3;
+  optional   uint64 optional_uint64_extension_lite   =  4;
+  optional   sint32 optional_sint32_extension_lite   =  5;
+  optional   sint64 optional_sint64_extension_lite   =  6;
+  optional  fixed32 optional_fixed32_extension_lite  =  7;
+  optional  fixed64 optional_fixed64_extension_lite  =  8;
+  optional sfixed32 optional_sfixed32_extension_lite =  9;
+  optional sfixed64 optional_sfixed64_extension_lite = 10;
+  optional    float optional_float_extension_lite    = 11;
+  optional   double optional_double_extension_lite   = 12;
+  optional     bool optional_bool_extension_lite     = 13;
+  optional   string optional_string_extension_lite   = 14;
+  optional    bytes optional_bytes_extension_lite    = 15;
+
+  optional group OptionalGroup_extension_lite = 16 {
+    optional int32 a = 17;
+  }
+
+  optional TestAllTypesLite.NestedMessage optional_nested_message_extension_lite
+      = 18;
+  optional ForeignMessageLite optional_foreign_message_extension_lite = 19;
+  optional protobuf_unittest_import.ImportMessageLite
+    optional_import_message_extension_lite = 20;
+
+  optional TestAllTypesLite.NestedEnum optional_nested_enum_extension_lite = 21;
+  optional ForeignEnumLite optional_foreign_enum_extension_lite = 22;
+  optional protobuf_unittest_import.ImportEnumLite
+    optional_import_enum_extension_lite = 23;
+
+  optional string optional_string_piece_extension_lite = 24
+      [ctype=STRING_PIECE];
+  optional string optional_cord_extension_lite = 25 [ctype=CORD];
+
+  // Repeated
+  repeated    int32 repeated_int32_extension_lite    = 31;
+  repeated    int64 repeated_int64_extension_lite    = 32;
+  repeated   uint32 repeated_uint32_extension_lite   = 33;
+  repeated   uint64 repeated_uint64_extension_lite   = 34;
+  repeated   sint32 repeated_sint32_extension_lite   = 35;
+  repeated   sint64 repeated_sint64_extension_lite   = 36;
+  repeated  fixed32 repeated_fixed32_extension_lite  = 37;
+  repeated  fixed64 repeated_fixed64_extension_lite  = 38;
+  repeated sfixed32 repeated_sfixed32_extension_lite = 39;
+  repeated sfixed64 repeated_sfixed64_extension_lite = 40;
+  repeated    float repeated_float_extension_lite    = 41;
+  repeated   double repeated_double_extension_lite   = 42;
+  repeated     bool repeated_bool_extension_lite     = 43;
+  repeated   string repeated_string_extension_lite   = 44;
+  repeated    bytes repeated_bytes_extension_lite    = 45;
+
+  repeated group RepeatedGroup_extension_lite = 46 {
+    optional int32 a = 47;
+  }
+
+  repeated TestAllTypesLite.NestedMessage repeated_nested_message_extension_lite
+      = 48;
+  repeated ForeignMessageLite repeated_foreign_message_extension_lite = 49;
+  repeated protobuf_unittest_import.ImportMessageLite
+    repeated_import_message_extension_lite = 50;
+
+  repeated TestAllTypesLite.NestedEnum repeated_nested_enum_extension_lite = 51;
+  repeated ForeignEnumLite repeated_foreign_enum_extension_lite = 52;
+  repeated protobuf_unittest_import.ImportEnumLite
+    repeated_import_enum_extension_lite = 53;
+
+  repeated string repeated_string_piece_extension_lite = 54
+      [ctype=STRING_PIECE];
+  repeated string repeated_cord_extension_lite = 55 [ctype=CORD];
+
+  // Singular with defaults
+  optional    int32 default_int32_extension_lite    = 61 [default =  41    ];
+  optional    int64 default_int64_extension_lite    = 62 [default =  42    ];
+  optional   uint32 default_uint32_extension_lite   = 63 [default =  43    ];
+  optional   uint64 default_uint64_extension_lite   = 64 [default =  44    ];
+  optional   sint32 default_sint32_extension_lite   = 65 [default = -45    ];
+  optional   sint64 default_sint64_extension_lite   = 66 [default =  46    ];
+  optional  fixed32 default_fixed32_extension_lite  = 67 [default =  47    ];
+  optional  fixed64 default_fixed64_extension_lite  = 68 [default =  48    ];
+  optional sfixed32 default_sfixed32_extension_lite = 69 [default =  49    ];
+  optional sfixed64 default_sfixed64_extension_lite = 70 [default = -50    ];
+  optional    float default_float_extension_lite    = 71 [default =  51.5  ];
+  optional   double default_double_extension_lite   = 72 [default =  52e3  ];
+  optional     bool default_bool_extension_lite     = 73 [default = true   ];
+  optional   string default_string_extension_lite   = 74 [default = "hello"];
+  optional    bytes default_bytes_extension_lite    = 75 [default = "world"];
+
+  optional TestAllTypesLite.NestedEnum
+    default_nested_enum_extension_lite = 81 [default = BAR];
+  optional ForeignEnumLite
+    default_foreign_enum_extension_lite = 82 [default = FOREIGN_LITE_BAR];
+  optional protobuf_unittest_import.ImportEnumLite
+    default_import_enum_extension_lite = 83 [default = IMPORT_LITE_BAR];
+
+  optional string default_string_piece_extension_lite = 84 [ctype=STRING_PIECE,
+                                                            default="abc"];
+  optional string default_cord_extension_lite = 85 [ctype=CORD, default="123"];
+}
+
+message TestPackedExtensionsLite {
+  extensions 1 to max;
+}
+
+extend TestPackedExtensionsLite {
+  repeated    int32 packed_int32_extension_lite    =  90 [packed = true];
+  repeated    int64 packed_int64_extension_lite    =  91 [packed = true];
+  repeated   uint32 packed_uint32_extension_lite   =  92 [packed = true];
+  repeated   uint64 packed_uint64_extension_lite   =  93 [packed = true];
+  repeated   sint32 packed_sint32_extension_lite   =  94 [packed = true];
+  repeated   sint64 packed_sint64_extension_lite   =  95 [packed = true];
+  repeated  fixed32 packed_fixed32_extension_lite  =  96 [packed = true];
+  repeated  fixed64 packed_fixed64_extension_lite  =  97 [packed = true];
+  repeated sfixed32 packed_sfixed32_extension_lite =  98 [packed = true];
+  repeated sfixed64 packed_sfixed64_extension_lite =  99 [packed = true];
+  repeated    float packed_float_extension_lite    = 100 [packed = true];
+  repeated   double packed_double_extension_lite   = 101 [packed = true];
+  repeated     bool packed_bool_extension_lite     = 102 [packed = true];
+  repeated ForeignEnumLite packed_enum_extension_lite = 103 [packed = true];
+}
+
+message TestNestedExtensionLite {
+  extend TestAllExtensionsLite {
+    optional int32 nested_extension = 12345;
+  }
+}
+
+// Test that deprecated fields work.  We only verify that they compile (at one
+// point this failed).
+message TestDeprecatedLite {
+  optional int32 deprecated_field = 1 [deprecated = true];
+}

+ 49 - 0
protos/google/protobuf/unittest_lite_imports_nonlite.proto

@@ -0,0 +1,49 @@
+// Additional options required for C# generation. File from copyright
+// line onwards is as per original distribution.
+import "google/protobuf/csharp_options.proto";
+option (google.protobuf.csharp_file_options).namespace = "Google.ProtocolBuffers.TestProtos";
+option (google.protobuf.csharp_file_options).umbrella_classname = "UnitTestLiteImportNonLiteProtoFile";
+
+// Protocol Buffers - Google's data interchange format
+// Copyright 2008 Google Inc.  All rights reserved.
+// http://code.google.com/p/protobuf/
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Author: kenton@google.com (Kenton Varda)
+//
+// Tests that a "lite" message can import a regular message.
+
+package protobuf_unittest;
+
+import "google/protobuf/unittest.proto";
+
+option optimize_for = LITE_RUNTIME;
+
+message TestLiteImportsNonlite {
+  optional TestAllTypes message = 1;
+}

+ 60 - 0
protos/google/protobuf/unittest_no_generic_services.proto

@@ -0,0 +1,60 @@
+// Additional options required for C# generation. File from copyright
+// line onwards is as per original distribution.
+import "google/protobuf/csharp_options.proto";
+option (google.protobuf.csharp_file_options).namespace = "Google.ProtocolBuffers.TestProtos.NoGenericService";
+option (google.protobuf.csharp_file_options).umbrella_classname = "UnitTestNoGenericServicesProtoFile";
+
+// Protocol Buffers - Google's data interchange format
+// Copyright 2008 Google Inc.  All rights reserved.
+// http://code.google.com/p/protobuf/
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Author: kenton@google.com (Kenton Varda)
+
+package google.protobuf.no_generic_services_test;
+
+option cc_generic_services = false;
+option java_generic_services = false;
+option py_generic_services = false;
+
+message TestMessage {
+  optional int32 a = 1;
+  extensions 1000 to max;
+}
+
+enum TestEnum {
+  FOO = 1;
+}
+
+extend TestMessage {
+  optional int32 test_extension = 1000;
+}
+
+service TestService {
+  rpc Foo(TestMessage) returns(TestMessage);
+}

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

@@ -72,11 +72,16 @@
     <Compile Include="Properties\AssemblyInfo.cs" />
     <Compile Include="ReflectionTester.cs" />
     <Compile Include="ServiceTest.cs" />
+    <Compile Include="TestProtos\FIXUP.cs" />
     <Compile Include="TestProtos\UnitTestCSharpOptionsProtoFile.cs" />
     <Compile Include="TestProtos\UnitTestCustomOptionsProtoFile.cs" />
     <Compile Include="TestProtos\UnitTestEmbedOptimizeForProtoFile.cs" />
+    <Compile Include="TestProtos\UnitTestEmptyProtoFile.cs" />
+    <Compile Include="TestProtos\UnitTestEnormousDescriptorProtoFile.cs" />
+    <Compile Include="TestProtos\UnitTestImportLiteProtoFile.cs" />
     <Compile Include="TestProtos\UnitTestImportProtoFile.cs" />
     <Compile Include="TestProtos\UnitTestMessageSetProtoFile.cs" />
+    <Compile Include="TestProtos\UnitTestNoGenericServicesProtoFile.cs" />
     <Compile Include="TestProtos\UnitTestOptimizeForProtoFile.cs" />
     <Compile Include="TestProtos\UnitTestProtoFile.cs" />
     <Compile Include="TestUtil.cs" />

+ 14 - 0
src/ProtocolBuffers.Test/TestProtos/FIXUP.cs

@@ -0,0 +1,14 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Google.ProtocolBuffers.TestProtos {
+  public sealed partial class TestExtremeDefaultValues { 
+  
+    //These values are not currently handled by the generator...
+    const double InfinityD = double.PositiveInfinity;
+    const double NaND = double.NaN;
+    const float InfinityF = float.PositiveInfinity;
+    const float NaNF = float.NaN;
+  }
+}

+ 207 - 119
src/ProtocolBuffers.Test/TestProtos/UnitTestCustomOptionsProtoFile.cs

@@ -15,6 +15,7 @@ namespace Google.ProtocolBuffers.TestProtos {
       registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.FieldOpt1);
       registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.FieldOpt2);
       registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.EnumOpt1);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.EnumValueOpt1);
       registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.ServiceOpt1);
       registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.MethodOpt1);
       registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.BoolOpt);
@@ -58,6 +59,8 @@ namespace Google.ProtocolBuffers.TestProtos {
     public static pb::GeneratedExtensionBase<int> FieldOpt2;
     public const int EnumOpt1FieldNumber = 7753576;
     public static pb::GeneratedExtensionBase<int> EnumOpt1;
+    public const int EnumValueOpt1FieldNumber = 1560678;
+    public static pb::GeneratedExtensionBase<int> EnumValueOpt1;
     public const int ServiceOpt1FieldNumber = 7887650;
     public static pb::GeneratedExtensionBase<long> ServiceOpt1;
     public const int MethodOpt1FieldNumber = 7890860;
@@ -165,97 +168,99 @@ namespace Google.ProtocolBuffers.TestProtos {
           "Ci1nb29nbGUvcHJvdG9idWYvdW5pdHRlc3RfY3VzdG9tX29wdGlvbnMucHJv" + 
           "dG8SEXByb3RvYnVmX3VuaXR0ZXN0GiRnb29nbGUvcHJvdG9idWYvY3NoYXJw" + 
           "X29wdGlvbnMucHJvdG8aIGdvb2dsZS9wcm90b2J1Zi9kZXNjcmlwdG9yLnBy" + 
-          "b3RvIoYBChxUZXN0TWVzc2FnZVdpdGhDdXN0b21PcHRpb25zEh4KBmZpZWxk" + 
-          "MRgBIAEoCUIOCAHB4MMdLeF1CgIAAAAiNAoGQW5FbnVtEg8KC0FORU5VTV9W" + 
-          "QUwxEAESDwoLQU5FTlVNX1ZBTDIQAhoIxfbJHev8//86EAgA4OnCHcj/////" + 
-          "/////wEiGAoWQ3VzdG9tT3B0aW9uRm9vUmVxdWVzdCIZChdDdXN0b21PcHRp" + 
-          "b25Gb29SZXNwb25zZSJtChpEdW1teU1lc3NhZ2VDb250YWluaW5nRW51bSJP" + 
-          "CgxUZXN0RW51bVR5cGUSGgoWVEVTVF9PUFRJT05fRU5VTV9UWVBFMRAWEiMK" + 
-          "FlRFU1RfT1BUSU9OX0VOVU1fVFlQRTIQ6f//////////ASIhCh9EdW1teU1l" + 
-          "c3NhZ2VJbnZhbGlkQXNPcHRpb25UeXBlIooBChxDdXN0b21PcHRpb25NaW5J" + 
-          "bnRlZ2VyVmFsdWVzOmqZ1qgdAAAAAAAAAICtja8dAAAAgJHurx0AAAAAAAAA" + 
-          "AJ31rx0AAAAA+JewHf///////////wGAxLAd/////w/49bAdAICTsh0AsLyy" + 
-          "HYCAgICAgICAgAHoxrIdgICAgPj/////AdDesh0AIpEBChxDdXN0b21PcHRp" + 
-          "b25NYXhJbnRlZ2VyVmFsdWVzOnGZ1qgd/////////3+tja8d////f5Hurx3/" + 
-          "/////////531rx3/////+JewHf7//////////wGAxLAd/v///w/49bAd////" + 
-          "////////AYCTsh3/////D7C8sh3//////////3/oxrId/////wfQ3rIdASJu" + 
-          "ChdDdXN0b21PcHRpb25PdGhlclZhbHVlczpTiNmiHen//////////wGy2aId" + 
-          "C0hlbGxvAFdvcmxkqtyiHQ5IZWxsbywgIldvcmxkIuncoh37WYxCysDzP/Xf" + 
-          "ox3nh0VB6MayHZz//////////wEiNAocU2V0dGluZ1JlYWxzRnJvbVBvc2l0" + 
-          "aXZlSW50czoU6dyiHQAAAAAAQGNA9d+jHQAAQEEiNAocU2V0dGluZ1JlYWxz" + 
-          "RnJvbU5lZ2F0aXZlSW50czoU6dyiHQAAAAAAQGPA9d+jHQAAQMEiKwoSQ29t" + 
-          "cGxleE9wdGlvblR5cGUxEgsKA2ZvbxgBIAEoBSoICGQQgICAgAIiwQIKEkNv" + 
-          "bXBsZXhPcHRpb25UeXBlMhIyCgNiYXIYASABKAsyJS5wcm90b2J1Zl91bml0" + 
-          "dGVzdC5Db21wbGV4T3B0aW9uVHlwZTESCwoDYmF6GAIgASgFEkYKBGZyZWQY" + 
-          "AyABKAsyOC5wcm90b2J1Zl91bml0dGVzdC5Db21wbGV4T3B0aW9uVHlwZTIu" + 
-          "Q29tcGxleE9wdGlvblR5cGU0GpcBChJDb21wbGV4T3B0aW9uVHlwZTQSDQoF" + 
-          "d2FsZG8YASABKAUycgoMY29tcGxleF9vcHQ0Eh8uZ29vZ2xlLnByb3RvYnVm" + 
-          "Lk1lc3NhZ2VPcHRpb25zGIr10QMgASgLMjgucHJvdG9idWZfdW5pdHRlc3Qu" + 
-          "Q29tcGxleE9wdGlvblR5cGUyLkNvbXBsZXhPcHRpb25UeXBlNCoICGQQgICA" + 
-          "gAIinAEKEkNvbXBsZXhPcHRpb25UeXBlMxILCgNxdXgYASABKAUSVAoSY29t" + 
-          "cGxleG9wdGlvbnR5cGU1GAIgASgKMjgucHJvdG9idWZfdW5pdHRlc3QuQ29t" + 
-          "cGxleE9wdGlvblR5cGUzLkNvbXBsZXhPcHRpb25UeXBlNRojChJDb21wbGV4" + 
-          "T3B0aW9uVHlwZTUSDQoFcGx1Z2gYAyABKAUiHwoLQ29tcGxleE9wdDYSEAoF" + 
-          "eHl6enkY37/PAyABKAUi0AEKFVZhcmlvdXNDb21wbGV4T3B0aW9uczq2AePc" + 
-          "/Bz4/fscGOTc/BzSqI8dAwizD/rekB0CCAn63pAdBBMYFhSq/ZAdAxDbB6r9" + 
-          "kB0G+OaXHY4Fqv2QHQUKAwjnBar9kB0ICgbYhZ4dzw+q/ZAdCgoIkvWdHQMI" + 
-          "2A+q/ZAdCMKslx0DCOUFqv2QHQvCrJcdBtiFnh3OD6r9kB0NwqyXHQiS9Z0d" + 
-          "AwjJEKr9kB0FGgMIwQKi4pUdAggqouKVHQbYhZ4dxAKi4pUdCJL1nR0DCOwG" + 
-          "KjYKCk1ldGhvZE9wdDESEwoPTUVUSE9ET1BUMV9WQUwxEAESEwoPTUVUSE9E" + 
-          "T1BUMV9WQUwyEAIyjgEKHFRlc3RTZXJ2aWNlV2l0aEN1c3RvbU9wdGlvbnMS" + 
-          "YwoDRm9vEikucHJvdG9idWZfdW5pdHRlc3QuQ3VzdG9tT3B0aW9uRm9vUmVx" + 
-          "dWVzdBoqLnByb3RvYnVmX3VuaXR0ZXN0LkN1c3RvbU9wdGlvbkZvb1Jlc3Bv" + 
-          "bnNlIgXg+oweAhoJkLKLHtPbgMtJOjIKCWZpbGVfb3B0MRIcLmdvb2dsZS5w" + 
-          "cm90b2J1Zi5GaWxlT3B0aW9ucxiOndgDIAEoBDo4CgxtZXNzYWdlX29wdDES" + 
-          "Hy5nb29nbGUucHJvdG9idWYuTWVzc2FnZU9wdGlvbnMYnK3YAyABKAU6NAoK" + 
-          "ZmllbGRfb3B0MRIdLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE9wdGlvbnMYiLzY" + 
-          "AyABKAY6OAoKZmllbGRfb3B0MhIdLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE9w" + 
-          "dGlvbnMYuaHZAyABKAU6AjQyOjIKCWVudW1fb3B0MRIcLmdvb2dsZS5wcm90" + 
-          "b2J1Zi5FbnVtT3B0aW9ucxjontkDIAEoDzo4CgxzZXJ2aWNlX29wdDESHy5n" + 
-          "b29nbGUucHJvdG9idWYuU2VydmljZU9wdGlvbnMYorbhAyABKBI6VQoLbWV0" + 
-          "aG9kX29wdDESHi5nb29nbGUucHJvdG9idWYuTWV0aG9kT3B0aW9ucxisz+ED" + 
-          "IAEoDjIdLnByb3RvYnVmX3VuaXR0ZXN0Lk1ldGhvZE9wdDE6NAoIYm9vbF9v" + 
-          "cHQSHy5nb29nbGUucHJvdG9idWYuTWVzc2FnZU9wdGlvbnMY6qvWAyABKAg6" + 
-          "NQoJaW50MzJfb3B0Eh8uZ29vZ2xlLnByb3RvYnVmLk1lc3NhZ2VPcHRpb25z" + 
-          "GO2o1gMgASgFOjUKCWludDY0X29wdBIfLmdvb2dsZS5wcm90b2J1Zi5NZXNz" + 
-          "YWdlT3B0aW9ucxjGp9YDIAEoAzo2Cgp1aW50MzJfb3B0Eh8uZ29vZ2xlLnBy" + 
-          "b3RvYnVmLk1lc3NhZ2VPcHRpb25zGLCi1gMgASgNOjYKCnVpbnQ2NF9vcHQS" + 
-          "Hy5nb29nbGUucHJvdG9idWYuTWVzc2FnZU9wdGlvbnMY347WAyABKAQ6NgoK" + 
-          "c2ludDMyX29wdBIfLmdvb2dsZS5wcm90b2J1Zi5NZXNzYWdlT3B0aW9ucxjA" + 
-          "iNYDIAEoETo2CgpzaW50NjRfb3B0Eh8uZ29vZ2xlLnByb3RvYnVmLk1lc3Nh" + 
-          "Z2VPcHRpb25zGP+C1gMgASgSOjcKC2ZpeGVkMzJfb3B0Eh8uZ29vZ2xlLnBy" + 
-          "b3RvYnVmLk1lc3NhZ2VPcHRpb25zGNP+1QMgASgHOjcKC2ZpeGVkNjRfb3B0" + 
-          "Eh8uZ29vZ2xlLnByb3RvYnVmLk1lc3NhZ2VPcHRpb25zGOL91QMgASgGOjgK" + 
-          "DHNmaXhlZDMyX29wdBIfLmdvb2dsZS5wcm90b2J1Zi5NZXNzYWdlT3B0aW9u" + 
-          "cxjV8dUDIAEoDzo4CgxzZml4ZWQ2NF9vcHQSHy5nb29nbGUucHJvdG9idWYu" + 
-          "TWVzc2FnZU9wdGlvbnMY44rVAyABKBA6NQoJZmxvYXRfb3B0Eh8uZ29vZ2xl" + 
-          "LnByb3RvYnVmLk1lc3NhZ2VPcHRpb25zGP671AMgASgCOjYKCmRvdWJsZV9v" + 
-          "cHQSHy5nb29nbGUucHJvdG9idWYuTWVzc2FnZU9wdGlvbnMYzavUAyABKAE6" + 
-          "NgoKc3RyaW5nX29wdBIfLmdvb2dsZS5wcm90b2J1Zi5NZXNzYWdlT3B0aW9u" + 
-          "cxjFq9QDIAEoCTo1CglieXRlc19vcHQSHy5nb29nbGUucHJvdG9idWYuTWVz" + 
-          "c2FnZU9wdGlvbnMYlqvUAyABKAw6cAoIZW51bV9vcHQSHy5nb29nbGUucHJv" + 
-          "dG9idWYuTWVzc2FnZU9wdGlvbnMYkavUAyABKA4yOi5wcm90b2J1Zl91bml0" + 
-          "dGVzdC5EdW1teU1lc3NhZ2VDb250YWluaW5nRW51bS5UZXN0RW51bVR5cGU6" + 
-          "cAoQbWVzc2FnZV90eXBlX29wdBIfLmdvb2dsZS5wcm90b2J1Zi5NZXNzYWdl" + 
-          "T3B0aW9ucxiv8tMDIAEoCzIyLnByb3RvYnVmX3VuaXR0ZXN0LkR1bW15TWVz" + 
-          "c2FnZUludmFsaWRBc09wdGlvblR5cGU6NgoEcXV1eBIlLnByb3RvYnVmX3Vu" + 
-          "aXR0ZXN0LkNvbXBsZXhPcHRpb25UeXBlMRjb4NMDIAEoBTpeCgVjb3JnZRIl" + 
-          "LnByb3RvYnVmX3VuaXR0ZXN0LkNvbXBsZXhPcHRpb25UeXBlMRjS3tMDIAEo" + 
-          "CzIlLnByb3RvYnVmX3VuaXR0ZXN0LkNvbXBsZXhPcHRpb25UeXBlMzo4CgZn" + 
-          "cmF1bHQSJS5wcm90b2J1Zl91bml0dGVzdC5Db21wbGV4T3B0aW9uVHlwZTIY" + 
-          "7/zSAyABKAU6XwoGZ2FycGx5EiUucHJvdG9idWZfdW5pdHRlc3QuQ29tcGxl" + 
-          "eE9wdGlvblR5cGUyGMj10gMgASgLMiUucHJvdG9idWZfdW5pdHRlc3QuQ29t" + 
-          "cGxleE9wdGlvblR5cGUxOl8KDGNvbXBsZXhfb3B0MRIfLmdvb2dsZS5wcm90" + 
-          "b2J1Zi5NZXNzYWdlT3B0aW9ucxik3NIDIAEoCzIlLnByb3RvYnVmX3VuaXR0" + 
-          "ZXN0LkNvbXBsZXhPcHRpb25UeXBlMTpfCgxjb21wbGV4X29wdDISHy5nb29n" + 
-          "bGUucHJvdG9idWYuTWVzc2FnZU9wdGlvbnMY1Y/SAyABKAsyJS5wcm90b2J1" + 
-          "Zl91bml0dGVzdC5Db21wbGV4T3B0aW9uVHlwZTI6XwoMY29tcGxleF9vcHQz" + 
-          "Eh8uZ29vZ2xlLnByb3RvYnVmLk1lc3NhZ2VPcHRpb25zGO+L0gMgASgLMiUu" + 
-          "cHJvdG9idWZfdW5pdHRlc3QuQ29tcGxleE9wdGlvblR5cGUzOlcKC2NvbXBs" + 
-          "ZXhvcHQ2Eh8uZ29vZ2xlLnByb3RvYnVmLk1lc3NhZ2VPcHRpb25zGMzLzwMg" + 
-          "ASgKMh4ucHJvdG9idWZfdW5pdHRlc3QuQ29tcGxleE9wdDZCT8I+QwohR29v" + 
-          "Z2xlLlByb3RvY29sQnVmZmVycy5UZXN0UHJvdG9zEh5Vbml0VGVzdEN1c3Rv" + 
-          "bU9wdGlvbnNQcm90b0ZpbGXw6MEd6q3A5SQ=");
+          "b3RvIo0BChxUZXN0TWVzc2FnZVdpdGhDdXN0b21PcHRpb25zEh4KBmZpZWxk" + 
+          "MRgBIAEoCUIOCAHB4MMdLeF1CgIAAAAiOwoGQW5FbnVtEg8KC0FORU5VTV9W" + 
+          "QUwxEAESFgoLQU5FTlVNX1ZBTDIQAhoFsIb6BXsaCMX2yR3r/P//OhAIAODp" + 
+          "wh3I//////////8BIhgKFkN1c3RvbU9wdGlvbkZvb1JlcXVlc3QiGQoXQ3Vz" + 
+          "dG9tT3B0aW9uRm9vUmVzcG9uc2UibQoaRHVtbXlNZXNzYWdlQ29udGFpbmlu" + 
+          "Z0VudW0iTwoMVGVzdEVudW1UeXBlEhoKFlRFU1RfT1BUSU9OX0VOVU1fVFlQ" + 
+          "RTEQFhIjChZURVNUX09QVElPTl9FTlVNX1RZUEUyEOn//////////wEiIQof" + 
+          "RHVtbXlNZXNzYWdlSW52YWxpZEFzT3B0aW9uVHlwZSKKAQocQ3VzdG9tT3B0" + 
+          "aW9uTWluSW50ZWdlclZhbHVlczpqmdaoHQAAAAAAAACArY2vHQAAAICR7q8d" + 
+          "AAAAAAAAAACd9a8dAAAAAPiXsB3///////////8BgMSwHf////8P+PWwHQCA" + 
+          "k7IdALC8sh2AgICAgICAgIAB6MayHYCAgID4/////wHQ3rIdACKRAQocQ3Vz" + 
+          "dG9tT3B0aW9uTWF4SW50ZWdlclZhbHVlczpxmdaoHf////////9/rY2vHf//" + 
+          "/3+R7q8d//////////+d9a8d//////iXsB3+//////////8BgMSwHf7///8P" + 
+          "+PWwHf///////////wGAk7Id/////w+wvLId//////////9/6MayHf////8H" + 
+          "0N6yHQEibgoXQ3VzdG9tT3B0aW9uT3RoZXJWYWx1ZXM6U4jZoh3p////////" + 
+          "//8BstmiHQtIZWxsbwBXb3JsZKrcoh0OSGVsbG8sICJXb3JsZCLp3KId+1mM" + 
+          "QsrA8z/136Md54dFQejGsh2c//////////8BIjQKHFNldHRpbmdSZWFsc0Zy" + 
+          "b21Qb3NpdGl2ZUludHM6FOncoh0AAAAAAEBjQPXfox0AAEBBIjQKHFNldHRp" + 
+          "bmdSZWFsc0Zyb21OZWdhdGl2ZUludHM6FOncoh0AAAAAAEBjwPXfox0AAEDB" + 
+          "IkcKEkNvbXBsZXhPcHRpb25UeXBlMRILCgNmb28YASABKAUSDAoEZm9vMhgC" + 
+          "IAEoBRIMCgRmb28zGAMgASgFKggIZBCAgICAAiLBAgoSQ29tcGxleE9wdGlv" + 
+          "blR5cGUyEjIKA2JhchgBIAEoCzIlLnByb3RvYnVmX3VuaXR0ZXN0LkNvbXBs" + 
+          "ZXhPcHRpb25UeXBlMRILCgNiYXoYAiABKAUSRgoEZnJlZBgDIAEoCzI4LnBy" + 
+          "b3RvYnVmX3VuaXR0ZXN0LkNvbXBsZXhPcHRpb25UeXBlMi5Db21wbGV4T3B0" + 
+          "aW9uVHlwZTQalwEKEkNvbXBsZXhPcHRpb25UeXBlNBINCgV3YWxkbxgBIAEo" + 
+          "BTJyCgxjb21wbGV4X29wdDQSHy5nb29nbGUucHJvdG9idWYuTWVzc2FnZU9w" + 
+          "dGlvbnMYivXRAyABKAsyOC5wcm90b2J1Zl91bml0dGVzdC5Db21wbGV4T3B0" + 
+          "aW9uVHlwZTIuQ29tcGxleE9wdGlvblR5cGU0KggIZBCAgICAAiKcAQoSQ29t" + 
+          "cGxleE9wdGlvblR5cGUzEgsKA3F1eBgBIAEoBRJUChJjb21wbGV4b3B0aW9u" + 
+          "dHlwZTUYAiABKAoyOC5wcm90b2J1Zl91bml0dGVzdC5Db21wbGV4T3B0aW9u" + 
+          "VHlwZTMuQ29tcGxleE9wdGlvblR5cGU1GiMKEkNvbXBsZXhPcHRpb25UeXBl" + 
+          "NRINCgVwbHVnaBgDIAEoBSIfCgtDb21wbGV4T3B0NhIQCgV4eXp6eRjfv88D" + 
+          "IAEoBSLQAQoVVmFyaW91c0NvbXBsZXhPcHRpb25zOrYB49z8HPj9+xwY5Nz8" + 
+          "HNKojx0DCLMP+t6QHQIICfrekB0EExgWFKr9kB0DENsHqv2QHQb45pcdjgWq" + 
+          "/ZAdBQoDCOcFqv2QHQgKBtiFnh3PD6r9kB0KCgiS9Z0dAwjYD6r9kB0IwqyX" + 
+          "HQMI5QWq/ZAdC8Kslx0G2IWeHc4Pqv2QHQ3CrJcdCJL1nR0DCMkQqv2QHQUa" + 
+          "AwjBAqLilR0CCCqi4pUdBtiFnh3EAqLilR0IkvWdHQMI7AYqNgoKTWV0aG9k" + 
+          "T3B0MRITCg9NRVRIT0RPUFQxX1ZBTDEQARITCg9NRVRIT0RPUFQxX1ZBTDIQ" + 
+          "AjKOAQocVGVzdFNlcnZpY2VXaXRoQ3VzdG9tT3B0aW9ucxJjCgNGb28SKS5w" + 
+          "cm90b2J1Zl91bml0dGVzdC5DdXN0b21PcHRpb25Gb29SZXF1ZXN0GioucHJv" + 
+          "dG9idWZfdW5pdHRlc3QuQ3VzdG9tT3B0aW9uRm9vUmVzcG9uc2UiBeD6jB4C" + 
+          "GgmQsose09uAy0k6MgoJZmlsZV9vcHQxEhwuZ29vZ2xlLnByb3RvYnVmLkZp" + 
+          "bGVPcHRpb25zGI6d2AMgASgEOjgKDG1lc3NhZ2Vfb3B0MRIfLmdvb2dsZS5w" + 
+          "cm90b2J1Zi5NZXNzYWdlT3B0aW9ucxicrdgDIAEoBTo0CgpmaWVsZF9vcHQx" + 
+          "Eh0uZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucxiIvNgDIAEoBjo4Cgpm" + 
+          "aWVsZF9vcHQyEh0uZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucxi5odkD" + 
+          "IAEoBToCNDI6MgoJZW51bV9vcHQxEhwuZ29vZ2xlLnByb3RvYnVmLkVudW1P" + 
+          "cHRpb25zGOie2QMgASgPOjwKD2VudW1fdmFsdWVfb3B0MRIhLmdvb2dsZS5w" + 
+          "cm90b2J1Zi5FbnVtVmFsdWVPcHRpb25zGOagXyABKAU6OAoMc2VydmljZV9v" + 
+          "cHQxEh8uZ29vZ2xlLnByb3RvYnVmLlNlcnZpY2VPcHRpb25zGKK24QMgASgS" + 
+          "OlUKC21ldGhvZF9vcHQxEh4uZ29vZ2xlLnByb3RvYnVmLk1ldGhvZE9wdGlv" + 
+          "bnMYrM/hAyABKA4yHS5wcm90b2J1Zl91bml0dGVzdC5NZXRob2RPcHQxOjQK" + 
+          "CGJvb2xfb3B0Eh8uZ29vZ2xlLnByb3RvYnVmLk1lc3NhZ2VPcHRpb25zGOqr" + 
+          "1gMgASgIOjUKCWludDMyX29wdBIfLmdvb2dsZS5wcm90b2J1Zi5NZXNzYWdl" + 
+          "T3B0aW9ucxjtqNYDIAEoBTo1CglpbnQ2NF9vcHQSHy5nb29nbGUucHJvdG9i" + 
+          "dWYuTWVzc2FnZU9wdGlvbnMYxqfWAyABKAM6NgoKdWludDMyX29wdBIfLmdv" + 
+          "b2dsZS5wcm90b2J1Zi5NZXNzYWdlT3B0aW9ucxiwotYDIAEoDTo2Cgp1aW50" + 
+          "NjRfb3B0Eh8uZ29vZ2xlLnByb3RvYnVmLk1lc3NhZ2VPcHRpb25zGN+O1gMg" + 
+          "ASgEOjYKCnNpbnQzMl9vcHQSHy5nb29nbGUucHJvdG9idWYuTWVzc2FnZU9w" + 
+          "dGlvbnMYwIjWAyABKBE6NgoKc2ludDY0X29wdBIfLmdvb2dsZS5wcm90b2J1" + 
+          "Zi5NZXNzYWdlT3B0aW9ucxj/gtYDIAEoEjo3CgtmaXhlZDMyX29wdBIfLmdv" + 
+          "b2dsZS5wcm90b2J1Zi5NZXNzYWdlT3B0aW9ucxjT/tUDIAEoBzo3CgtmaXhl" + 
+          "ZDY0X29wdBIfLmdvb2dsZS5wcm90b2J1Zi5NZXNzYWdlT3B0aW9ucxji/dUD" + 
+          "IAEoBjo4CgxzZml4ZWQzMl9vcHQSHy5nb29nbGUucHJvdG9idWYuTWVzc2Fn" + 
+          "ZU9wdGlvbnMY1fHVAyABKA86OAoMc2ZpeGVkNjRfb3B0Eh8uZ29vZ2xlLnBy" + 
+          "b3RvYnVmLk1lc3NhZ2VPcHRpb25zGOOK1QMgASgQOjUKCWZsb2F0X29wdBIf" + 
+          "Lmdvb2dsZS5wcm90b2J1Zi5NZXNzYWdlT3B0aW9ucxj+u9QDIAEoAjo2Cgpk" + 
+          "b3VibGVfb3B0Eh8uZ29vZ2xlLnByb3RvYnVmLk1lc3NhZ2VPcHRpb25zGM2r" + 
+          "1AMgASgBOjYKCnN0cmluZ19vcHQSHy5nb29nbGUucHJvdG9idWYuTWVzc2Fn" + 
+          "ZU9wdGlvbnMYxavUAyABKAk6NQoJYnl0ZXNfb3B0Eh8uZ29vZ2xlLnByb3Rv" + 
+          "YnVmLk1lc3NhZ2VPcHRpb25zGJar1AMgASgMOnAKCGVudW1fb3B0Eh8uZ29v" + 
+          "Z2xlLnByb3RvYnVmLk1lc3NhZ2VPcHRpb25zGJGr1AMgASgOMjoucHJvdG9i" + 
+          "dWZfdW5pdHRlc3QuRHVtbXlNZXNzYWdlQ29udGFpbmluZ0VudW0uVGVzdEVu" + 
+          "dW1UeXBlOnAKEG1lc3NhZ2VfdHlwZV9vcHQSHy5nb29nbGUucHJvdG9idWYu" + 
+          "TWVzc2FnZU9wdGlvbnMYr/LTAyABKAsyMi5wcm90b2J1Zl91bml0dGVzdC5E" + 
+          "dW1teU1lc3NhZ2VJbnZhbGlkQXNPcHRpb25UeXBlOjYKBHF1dXgSJS5wcm90" + 
+          "b2J1Zl91bml0dGVzdC5Db21wbGV4T3B0aW9uVHlwZTEY2+DTAyABKAU6XgoF" + 
+          "Y29yZ2USJS5wcm90b2J1Zl91bml0dGVzdC5Db21wbGV4T3B0aW9uVHlwZTEY" + 
+          "0t7TAyABKAsyJS5wcm90b2J1Zl91bml0dGVzdC5Db21wbGV4T3B0aW9uVHlw" + 
+          "ZTM6OAoGZ3JhdWx0EiUucHJvdG9idWZfdW5pdHRlc3QuQ29tcGxleE9wdGlv" + 
+          "blR5cGUyGO/80gMgASgFOl8KBmdhcnBseRIlLnByb3RvYnVmX3VuaXR0ZXN0" + 
+          "LkNvbXBsZXhPcHRpb25UeXBlMhjI9dIDIAEoCzIlLnByb3RvYnVmX3VuaXR0" + 
+          "ZXN0LkNvbXBsZXhPcHRpb25UeXBlMTpfCgxjb21wbGV4X29wdDESHy5nb29n" + 
+          "bGUucHJvdG9idWYuTWVzc2FnZU9wdGlvbnMYpNzSAyABKAsyJS5wcm90b2J1" + 
+          "Zl91bml0dGVzdC5Db21wbGV4T3B0aW9uVHlwZTE6XwoMY29tcGxleF9vcHQy" + 
+          "Eh8uZ29vZ2xlLnByb3RvYnVmLk1lc3NhZ2VPcHRpb25zGNWP0gMgASgLMiUu" + 
+          "cHJvdG9idWZfdW5pdHRlc3QuQ29tcGxleE9wdGlvblR5cGUyOl8KDGNvbXBs" + 
+          "ZXhfb3B0MxIfLmdvb2dsZS5wcm90b2J1Zi5NZXNzYWdlT3B0aW9ucxjvi9ID" + 
+          "IAEoCzIlLnByb3RvYnVmX3VuaXR0ZXN0LkNvbXBsZXhPcHRpb25UeXBlMzpX" + 
+          "Cgtjb21wbGV4b3B0NhIfLmdvb2dsZS5wcm90b2J1Zi5NZXNzYWdlT3B0aW9u" + 
+          "cxjMy88DIAEoCjIeLnByb3RvYnVmX3VuaXR0ZXN0LkNvbXBsZXhPcHQ2Qk/C" + 
+          "PkMKIUdvb2dsZS5Qcm90b2NvbEJ1ZmZlcnMuVGVzdFByb3RvcxIeVW5pdFRl" + 
+          "c3RDdXN0b21PcHRpb25zUHJvdG9GaWxl8OjBHeqtwOUk");
       pbd::FileDescriptor.InternalDescriptorAssigner assigner = delegate(pbd::FileDescriptor root) {
         descriptor = root;
         internal__static_protobuf_unittest_TestMessageWithCustomOptions__Descriptor = Descriptor.MessageTypes[0];
@@ -301,7 +306,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         internal__static_protobuf_unittest_ComplexOptionType1__Descriptor = Descriptor.MessageTypes[10];
         internal__static_protobuf_unittest_ComplexOptionType1__FieldAccessorTable = 
             new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.ComplexOptionType1, global::Google.ProtocolBuffers.TestProtos.ComplexOptionType1.Builder>(internal__static_protobuf_unittest_ComplexOptionType1__Descriptor,
-                new string[] { "Foo", });
+                new string[] { "Foo", "Foo2", "Foo3", });
         internal__static_protobuf_unittest_ComplexOptionType2__Descriptor = Descriptor.MessageTypes[11];
         internal__static_protobuf_unittest_ComplexOptionType2__FieldAccessorTable = 
             new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.ComplexOptionType2, global::Google.ProtocolBuffers.TestProtos.ComplexOptionType2.Builder>(internal__static_protobuf_unittest_ComplexOptionType2__Descriptor,
@@ -332,33 +337,34 @@ namespace Google.ProtocolBuffers.TestProtos {
         global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.FieldOpt1 = pb::GeneratedSingleExtension<ulong>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[2]);
         global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.FieldOpt2 = pb::GeneratedSingleExtension<int>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[3]);
         global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.EnumOpt1 = pb::GeneratedSingleExtension<int>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[4]);
-        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.ServiceOpt1 = pb::GeneratedSingleExtension<long>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[5]);
-        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.MethodOpt1 = pb::GeneratedSingleExtension<global::Google.ProtocolBuffers.TestProtos.MethodOpt1>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[6]);
-        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.BoolOpt = pb::GeneratedSingleExtension<bool>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[7]);
-        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Int32Opt = pb::GeneratedSingleExtension<int>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[8]);
-        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Int64Opt = pb::GeneratedSingleExtension<long>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[9]);
-        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Uint32Opt = pb::GeneratedSingleExtension<uint>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[10]);
-        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Uint64Opt = pb::GeneratedSingleExtension<ulong>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[11]);
-        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Sint32Opt = pb::GeneratedSingleExtension<int>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[12]);
-        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Sint64Opt = pb::GeneratedSingleExtension<long>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[13]);
-        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Fixed32Opt = pb::GeneratedSingleExtension<uint>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[14]);
-        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Fixed64Opt = pb::GeneratedSingleExtension<ulong>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[15]);
-        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Sfixed32Opt = pb::GeneratedSingleExtension<int>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[16]);
-        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Sfixed64Opt = pb::GeneratedSingleExtension<long>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[17]);
-        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.FloatOpt = pb::GeneratedSingleExtension<float>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[18]);
-        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.DoubleOpt = pb::GeneratedSingleExtension<double>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[19]);
-        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.StringOpt = pb::GeneratedSingleExtension<string>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[20]);
-        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.BytesOpt = pb::GeneratedSingleExtension<pb::ByteString>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[21]);
-        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.EnumOpt = pb::GeneratedSingleExtension<global::Google.ProtocolBuffers.TestProtos.DummyMessageContainingEnum.Types.TestEnumType>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[22]);
-        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.MessageTypeOpt = pb::GeneratedSingleExtension<global::Google.ProtocolBuffers.TestProtos.DummyMessageInvalidAsOptionType>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[23]);
-        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Quux = pb::GeneratedSingleExtension<int>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[24]);
-        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Corge = pb::GeneratedSingleExtension<global::Google.ProtocolBuffers.TestProtos.ComplexOptionType3>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[25]);
-        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Grault = pb::GeneratedSingleExtension<int>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[26]);
-        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Garply = pb::GeneratedSingleExtension<global::Google.ProtocolBuffers.TestProtos.ComplexOptionType1>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[27]);
-        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.ComplexOpt1 = pb::GeneratedSingleExtension<global::Google.ProtocolBuffers.TestProtos.ComplexOptionType1>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[28]);
-        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.ComplexOpt2 = pb::GeneratedSingleExtension<global::Google.ProtocolBuffers.TestProtos.ComplexOptionType2>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[29]);
-        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.ComplexOpt3 = pb::GeneratedSingleExtension<global::Google.ProtocolBuffers.TestProtos.ComplexOptionType3>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[30]);
-        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.ComplexOpt6 = pb::GeneratedSingleExtension<global::Google.ProtocolBuffers.TestProtos.ComplexOpt6>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[31]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.EnumValueOpt1 = pb::GeneratedSingleExtension<int>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[5]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.ServiceOpt1 = pb::GeneratedSingleExtension<long>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[6]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.MethodOpt1 = pb::GeneratedSingleExtension<global::Google.ProtocolBuffers.TestProtos.MethodOpt1>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[7]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.BoolOpt = pb::GeneratedSingleExtension<bool>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[8]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Int32Opt = pb::GeneratedSingleExtension<int>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[9]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Int64Opt = pb::GeneratedSingleExtension<long>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[10]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Uint32Opt = pb::GeneratedSingleExtension<uint>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[11]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Uint64Opt = pb::GeneratedSingleExtension<ulong>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[12]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Sint32Opt = pb::GeneratedSingleExtension<int>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[13]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Sint64Opt = pb::GeneratedSingleExtension<long>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[14]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Fixed32Opt = pb::GeneratedSingleExtension<uint>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[15]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Fixed64Opt = pb::GeneratedSingleExtension<ulong>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[16]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Sfixed32Opt = pb::GeneratedSingleExtension<int>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[17]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Sfixed64Opt = pb::GeneratedSingleExtension<long>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[18]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.FloatOpt = pb::GeneratedSingleExtension<float>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[19]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.DoubleOpt = pb::GeneratedSingleExtension<double>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[20]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.StringOpt = pb::GeneratedSingleExtension<string>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[21]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.BytesOpt = pb::GeneratedSingleExtension<pb::ByteString>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[22]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.EnumOpt = pb::GeneratedSingleExtension<global::Google.ProtocolBuffers.TestProtos.DummyMessageContainingEnum.Types.TestEnumType>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[23]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.MessageTypeOpt = pb::GeneratedSingleExtension<global::Google.ProtocolBuffers.TestProtos.DummyMessageInvalidAsOptionType>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[24]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Quux = pb::GeneratedSingleExtension<int>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[25]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Corge = pb::GeneratedSingleExtension<global::Google.ProtocolBuffers.TestProtos.ComplexOptionType3>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[26]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Grault = pb::GeneratedSingleExtension<int>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[27]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Garply = pb::GeneratedSingleExtension<global::Google.ProtocolBuffers.TestProtos.ComplexOptionType1>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[28]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.ComplexOpt1 = pb::GeneratedSingleExtension<global::Google.ProtocolBuffers.TestProtos.ComplexOptionType1>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[29]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.ComplexOpt2 = pb::GeneratedSingleExtension<global::Google.ProtocolBuffers.TestProtos.ComplexOptionType2>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[30]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.ComplexOpt3 = pb::GeneratedSingleExtension<global::Google.ProtocolBuffers.TestProtos.ComplexOptionType3>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[31]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.ComplexOpt6 = pb::GeneratedSingleExtension<global::Google.ProtocolBuffers.TestProtos.ComplexOpt6>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[32]);
         pb::ExtensionRegistry registry = pb::ExtensionRegistry.CreateInstance();
         RegisterAllExtensions(registry);
         global::Google.ProtocolBuffers.DescriptorProtos.CSharpOptions.RegisterAllExtensions(registry);
@@ -2217,6 +2223,26 @@ namespace Google.ProtocolBuffers.TestProtos {
       get { return foo_; }
     }
     
+    public const int Foo2FieldNumber = 2;
+    private bool hasFoo2;
+    private int foo2_ = 0;
+    public bool HasFoo2 {
+      get { return hasFoo2; }
+    }
+    public int Foo2 {
+      get { return foo2_; }
+    }
+    
+    public const int Foo3FieldNumber = 3;
+    private bool hasFoo3;
+    private int foo3_ = 0;
+    public bool HasFoo3 {
+      get { return hasFoo3; }
+    }
+    public int Foo3 {
+      get { return foo3_; }
+    }
+    
     public override bool IsInitialized {
       get {
         if (!ExtensionsAreInitialized) return false;
@@ -2230,6 +2256,12 @@ namespace Google.ProtocolBuffers.TestProtos {
       if (HasFoo) {
         output.WriteInt32(1, Foo);
       }
+      if (HasFoo2) {
+        output.WriteInt32(2, Foo2);
+      }
+      if (HasFoo3) {
+        output.WriteInt32(3, Foo3);
+      }
       extensionWriter.WriteUntil(536870912, output);
       UnknownFields.WriteTo(output);
     }
@@ -2244,6 +2276,12 @@ namespace Google.ProtocolBuffers.TestProtos {
         if (HasFoo) {
           size += pb::CodedOutputStream.ComputeInt32Size(1, Foo);
         }
+        if (HasFoo2) {
+          size += pb::CodedOutputStream.ComputeInt32Size(2, Foo2);
+        }
+        if (HasFoo3) {
+          size += pb::CodedOutputStream.ComputeInt32Size(3, Foo3);
+        }
         size += ExtensionsSerializedSize;
         size += UnknownFields.SerializedSize;
         memoizedSerializedSize = size;
@@ -2339,6 +2377,12 @@ namespace Google.ProtocolBuffers.TestProtos {
         if (other == global::Google.ProtocolBuffers.TestProtos.ComplexOptionType1.DefaultInstance) return this;
         if (other.HasFoo) {
           Foo = other.Foo;
+        }
+        if (other.HasFoo2) {
+          Foo2 = other.Foo2;
+        }
+        if (other.HasFoo3) {
+          Foo3 = other.Foo3;
         }
           this.MergeExtensionFields(other);
         this.MergeUnknownFields(other.UnknownFields);
@@ -2377,6 +2421,14 @@ namespace Google.ProtocolBuffers.TestProtos {
               Foo = input.ReadInt32();
               break;
             }
+            case 16: {
+              Foo2 = input.ReadInt32();
+              break;
+            }
+            case 24: {
+              Foo3 = input.ReadInt32();
+              break;
+            }
           }
         }
       }
@@ -2399,6 +2451,42 @@ namespace Google.ProtocolBuffers.TestProtos {
         result.foo_ = 0;
         return this;
       }
+      
+      public bool HasFoo2 {
+        get { return result.HasFoo2; }
+      }
+      public int Foo2 {
+        get { return result.Foo2; }
+        set { SetFoo2(value); }
+      }
+      public Builder SetFoo2(int value) {
+        result.hasFoo2 = true;
+        result.foo2_ = value;
+        return this;
+      }
+      public Builder ClearFoo2() {
+        result.hasFoo2 = false;
+        result.foo2_ = 0;
+        return this;
+      }
+      
+      public bool HasFoo3 {
+        get { return result.HasFoo3; }
+      }
+      public int Foo3 {
+        get { return result.Foo3; }
+        set { SetFoo3(value); }
+      }
+      public Builder SetFoo3(int value) {
+        result.hasFoo3 = true;
+        result.foo3_ = value;
+        return this;
+      }
+      public Builder ClearFoo3() {
+        result.hasFoo3 = false;
+        result.foo3_ = 0;
+        return this;
+      }
     }
     static ComplexOptionType1() {
       object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor, null);

+ 44 - 0
src/ProtocolBuffers.Test/TestProtos/UnitTestEmptyProtoFile.cs

@@ -0,0 +1,44 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+
+using pb = global::Google.ProtocolBuffers;
+using pbc = global::Google.ProtocolBuffers.Collections;
+using pbd = global::Google.ProtocolBuffers.Descriptors;
+using scg = global::System.Collections.Generic;
+namespace Google.ProtocolBuffers.TestProtos {
+  
+  public static partial class UnitTestEmptyProtoFile {
+  
+    #region Extension registration
+    public static void RegisterAllExtensions(pb::ExtensionRegistry registry) {
+    }
+    #endregion
+    #region Static variables
+    #endregion
+    #region Descriptor
+    public static pbd::FileDescriptor Descriptor {
+      get { return descriptor; }
+    }
+    private static pbd::FileDescriptor descriptor;
+    
+    static UnitTestEmptyProtoFile() {
+      byte[] descriptorData = global::System.Convert.FromBase64String(
+          "CiRnb29nbGUvcHJvdG9idWYvdW5pdHRlc3RfZW1wdHkucHJvdG8aJGdvb2ds" + 
+          "ZS9wcm90b2J1Zi9jc2hhcnBfb3B0aW9ucy5wcm90b0I+wj47CiFHb29nbGUu" + 
+          "UHJvdG9jb2xCdWZmZXJzLlRlc3RQcm90b3MSFlVuaXRUZXN0RW1wdHlQcm90" + 
+          "b0ZpbGU=");
+      pbd::FileDescriptor.InternalDescriptorAssigner assigner = delegate(pbd::FileDescriptor root) {
+        descriptor = root;
+        pb::ExtensionRegistry registry = pb::ExtensionRegistry.CreateInstance();
+        RegisterAllExtensions(registry);
+        global::Google.ProtocolBuffers.DescriptorProtos.CSharpOptions.RegisterAllExtensions(registry);
+        return registry;
+      };
+      pbd::FileDescriptor.InternalBuildGeneratedFileFrom(descriptorData,
+          new pbd::FileDescriptor[] {
+          global::Google.ProtocolBuffers.DescriptorProtos.CSharpOptions.Descriptor, 
+          }, assigner);
+    }
+    #endregion
+    
+  }
+}

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 5032 - 0
src/ProtocolBuffers.Test/TestProtos/UnitTestEnormousDescriptorProtoFile.cs


+ 196 - 0
src/ProtocolBuffers.Test/TestProtos/UnitTestImportLiteProtoFile.cs

@@ -0,0 +1,196 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+
+using pb = global::Google.ProtocolBuffers;
+using pbc = global::Google.ProtocolBuffers.Collections;
+using pbd = global::Google.ProtocolBuffers.Descriptors;
+using scg = global::System.Collections.Generic;
+namespace Google.ProtocolBuffers.TestProtos {
+  
+  public static partial class UnitTestImportLiteProtoFile {
+  
+    #region Extension registration
+    public static void RegisterAllExtensions(pb::ExtensionRegistry registry) {
+    }
+    #endregion
+    #region Static variables
+    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_import_ImportMessageLite__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.ImportMessageLite, global::Google.ProtocolBuffers.TestProtos.ImportMessageLite.Builder> internal__static_protobuf_unittest_import_ImportMessageLite__FieldAccessorTable;
+    #endregion
+    #region Descriptor
+    public static pbd::FileDescriptor Descriptor {
+      get { return descriptor; }
+    }
+    private static pbd::FileDescriptor descriptor;
+    
+    static UnitTestImportLiteProtoFile() {
+      byte[] descriptorData = global::System.Convert.FromBase64String(
+          "Cipnb29nbGUvcHJvdG9idWYvdW5pdHRlc3RfaW1wb3J0X2xpdGUucHJvdG8S" + 
+          "GHByb3RvYnVmX3VuaXR0ZXN0X2ltcG9ydBokZ29vZ2xlL3Byb3RvYnVmL2Nz" + 
+          "aGFycF9vcHRpb25zLnByb3RvIh4KEUltcG9ydE1lc3NhZ2VMaXRlEgkKAWQY" + 
+          "ASABKAUqTwoOSW1wb3J0RW51bUxpdGUSEwoPSU1QT1JUX0xJVEVfRk9PEAcS" + 
+          "EwoPSU1QT1JUX0xJVEVfQkFSEAgSEwoPSU1QT1JUX0xJVEVfQkFaEAlCWgoT" + 
+          "Y29tLmdvb2dsZS5wcm90b2J1ZkgDwj5ACiFHb29nbGUuUHJvdG9jb2xCdWZm" + 
+          "ZXJzLlRlc3RQcm90b3MSG1VuaXRUZXN0SW1wb3J0TGl0ZVByb3RvRmlsZQ==");
+      pbd::FileDescriptor.InternalDescriptorAssigner assigner = delegate(pbd::FileDescriptor root) {
+        descriptor = root;
+        internal__static_protobuf_unittest_import_ImportMessageLite__Descriptor = Descriptor.MessageTypes[0];
+        internal__static_protobuf_unittest_import_ImportMessageLite__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.ImportMessageLite, global::Google.ProtocolBuffers.TestProtos.ImportMessageLite.Builder>(internal__static_protobuf_unittest_import_ImportMessageLite__Descriptor,
+                new string[] { "D", });
+        pb::ExtensionRegistry registry = pb::ExtensionRegistry.CreateInstance();
+        RegisterAllExtensions(registry);
+        global::Google.ProtocolBuffers.DescriptorProtos.CSharpOptions.RegisterAllExtensions(registry);
+        return registry;
+      };
+      pbd::FileDescriptor.InternalBuildGeneratedFileFrom(descriptorData,
+          new pbd::FileDescriptor[] {
+          global::Google.ProtocolBuffers.DescriptorProtos.CSharpOptions.Descriptor, 
+          }, assigner);
+    }
+    #endregion
+    
+  }
+  #region Enums
+  public enum ImportEnumLite {
+    IMPORT_LITE_FOO = 7,
+    IMPORT_LITE_BAR = 8,
+    IMPORT_LITE_BAZ = 9,
+  }
+  
+  #endregion
+  
+  #region Messages
+  public sealed partial class ImportMessageLite : pb::GeneratedMessage<ImportMessageLite, ImportMessageLite.Builder> {
+    private static readonly ImportMessageLite defaultInstance = new Builder().BuildPartial();
+    public static ImportMessageLite DefaultInstance {
+      get { return defaultInstance; }
+    }
+    
+    public override ImportMessageLite DefaultInstanceForType {
+      get { return defaultInstance; }
+    }
+    
+    protected override ImportMessageLite ThisMessage {
+      get { return this; }
+    }
+    
+    public static pbd::MessageDescriptor Descriptor {
+      get { return global::Google.ProtocolBuffers.TestProtos.UnitTestImportLiteProtoFile.internal__static_protobuf_unittest_import_ImportMessageLite__Descriptor; }
+    }
+    
+    protected override pb::FieldAccess.FieldAccessorTable<ImportMessageLite, ImportMessageLite.Builder> InternalFieldAccessors {
+      get { return global::Google.ProtocolBuffers.TestProtos.UnitTestImportLiteProtoFile.internal__static_protobuf_unittest_import_ImportMessageLite__FieldAccessorTable; }
+    }
+    
+    public const int DFieldNumber = 1;
+    private bool hasD;
+    private int d_ = 0;
+    public bool HasD {
+      get { return hasD; }
+    }
+    public int D {
+      get { return d_; }
+    }
+    
+    public static ImportMessageLite ParseFrom(pb::ByteString data) {
+      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
+    }
+    public static ImportMessageLite ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
+      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
+    }
+    public static ImportMessageLite ParseFrom(byte[] data) {
+      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
+    }
+    public static ImportMessageLite ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
+      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
+    }
+    public static ImportMessageLite ParseFrom(global::System.IO.Stream input) {
+      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
+    }
+    public static ImportMessageLite ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
+      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
+    }
+    public static ImportMessageLite ParseDelimitedFrom(global::System.IO.Stream input) {
+      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
+    }
+    public static ImportMessageLite ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
+      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
+    }
+    public static ImportMessageLite ParseFrom(pb::CodedInputStream input) {
+      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
+    }
+    public static ImportMessageLite ParseFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
+      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
+    }
+    public static Builder CreateBuilder() { return new Builder(); }
+    public override Builder ToBuilder() { return CreateBuilder(this); }
+    public override Builder CreateBuilderForType() { return new Builder(); }
+    public static Builder CreateBuilder(ImportMessageLite prototype) {
+      return (Builder) new Builder().MergeFrom(prototype);
+    }
+    
+    public sealed partial class Builder : pb::GeneratedBuilder<ImportMessageLite, Builder> {
+      protected override Builder ThisBuilder {
+        get { return this; }
+      }
+      public Builder() {}
+      
+      ImportMessageLite result = new ImportMessageLite();
+      
+      protected override ImportMessageLite MessageBeingBuilt {
+        get { return result; }
+      }
+      
+      public override Builder Clear() {
+        result = new ImportMessageLite();
+        return this;
+      }
+      
+      public override Builder Clone() {
+        return new Builder().MergeFrom(result);
+      }
+      
+      public override pbd::MessageDescriptor DescriptorForType {
+        get { return global::Google.ProtocolBuffers.TestProtos.ImportMessageLite.Descriptor; }
+      }
+      
+      public override ImportMessageLite DefaultInstanceForType {
+        get { return global::Google.ProtocolBuffers.TestProtos.ImportMessageLite.DefaultInstance; }
+      }
+      
+      public override ImportMessageLite BuildPartial() {
+        if (result == null) {
+          throw new global::System.InvalidOperationException("build() has already been called on this Builder");
+        }
+        ImportMessageLite returnMe = result;
+        result = null;
+        return returnMe;
+      }
+      
+      
+      public bool HasD {
+        get { return result.HasD; }
+      }
+      public int D {
+        get { return result.D; }
+        set { SetD(value); }
+      }
+      public Builder SetD(int value) {
+        result.hasD = true;
+        result.d_ = value;
+        return this;
+      }
+      public Builder ClearD() {
+        result.hasD = false;
+        result.d_ = 0;
+        return this;
+      }
+    }
+    static ImportMessageLite() {
+      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnitTestImportLiteProtoFile.Descriptor, null);
+    }
+  }
+  
+  #endregion
+  
+}

+ 382 - 0
src/ProtocolBuffers.Test/TestProtos/UnitTestNoGenericServicesProtoFile.cs

@@ -0,0 +1,382 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+
+using pb = global::Google.ProtocolBuffers;
+using pbc = global::Google.ProtocolBuffers.Collections;
+using pbd = global::Google.ProtocolBuffers.Descriptors;
+using scg = global::System.Collections.Generic;
+namespace Google.ProtocolBuffers.TestProtos.NoGenericService {
+  
+  public static partial class UnitTestNoGenericServicesProtoFile {
+  
+    #region Extension registration
+    public static void RegisterAllExtensions(pb::ExtensionRegistry registry) {
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.NoGenericService.UnitTestNoGenericServicesProtoFile.TestExtension);
+    }
+    #endregion
+    #region Extensions
+    public const int TestExtensionFieldNumber = 1000;
+    public static pb::GeneratedExtensionBase<int> TestExtension;
+    #endregion
+    
+    #region Static variables
+    internal static pbd::MessageDescriptor internal__static_google_protobuf_no_generic_services_test_TestMessage__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.NoGenericService.TestMessage, global::Google.ProtocolBuffers.TestProtos.NoGenericService.TestMessage.Builder> internal__static_google_protobuf_no_generic_services_test_TestMessage__FieldAccessorTable;
+    #endregion
+    #region Descriptor
+    public static pbd::FileDescriptor Descriptor {
+      get { return descriptor; }
+    }
+    private static pbd::FileDescriptor descriptor;
+    
+    static UnitTestNoGenericServicesProtoFile() {
+      byte[] descriptorData = global::System.Convert.FromBase64String(
+          "CjJnb29nbGUvcHJvdG9idWYvdW5pdHRlc3Rfbm9fZ2VuZXJpY19zZXJ2aWNl" + 
+          "cy5wcm90bxIoZ29vZ2xlLnByb3RvYnVmLm5vX2dlbmVyaWNfc2VydmljZXNf" + 
+          "dGVzdBokZ29vZ2xlL3Byb3RvYnVmL2NzaGFycF9vcHRpb25zLnByb3RvIiMK" + 
+          "C1Rlc3RNZXNzYWdlEgkKAWEYASABKAUqCQjoBxCAgICAAioTCghUZXN0RW51" + 
+          "bRIHCgNGT08QATKCAQoLVGVzdFNlcnZpY2UScwoDRm9vEjUuZ29vZ2xlLnBy" + 
+          "b3RvYnVmLm5vX2dlbmVyaWNfc2VydmljZXNfdGVzdC5UZXN0TWVzc2FnZRo1" + 
+          "Lmdvb2dsZS5wcm90b2J1Zi5ub19nZW5lcmljX3NlcnZpY2VzX3Rlc3QuVGVz" + 
+          "dE1lc3NhZ2U6TgoOdGVzdF9leHRlbnNpb24SNS5nb29nbGUucHJvdG9idWYu" + 
+          "bm9fZ2VuZXJpY19zZXJ2aWNlc190ZXN0LlRlc3RNZXNzYWdlGOgHIAEoBUJk" + 
+          "gAEAiAEAkAEAwj5YCjJHb29nbGUuUHJvdG9jb2xCdWZmZXJzLlRlc3RQcm90" + 
+          "b3MuTm9HZW5lcmljU2VydmljZRIiVW5pdFRlc3ROb0dlbmVyaWNTZXJ2aWNl" + 
+          "c1Byb3RvRmlsZQ==");
+      pbd::FileDescriptor.InternalDescriptorAssigner assigner = delegate(pbd::FileDescriptor root) {
+        descriptor = root;
+        internal__static_google_protobuf_no_generic_services_test_TestMessage__Descriptor = Descriptor.MessageTypes[0];
+        internal__static_google_protobuf_no_generic_services_test_TestMessage__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.NoGenericService.TestMessage, global::Google.ProtocolBuffers.TestProtos.NoGenericService.TestMessage.Builder>(internal__static_google_protobuf_no_generic_services_test_TestMessage__Descriptor,
+                new string[] { "A", });
+        global::Google.ProtocolBuffers.TestProtos.NoGenericService.UnitTestNoGenericServicesProtoFile.TestExtension = pb::GeneratedSingleExtension<int>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.NoGenericService.UnitTestNoGenericServicesProtoFile.Descriptor.Extensions[0]);
+        pb::ExtensionRegistry registry = pb::ExtensionRegistry.CreateInstance();
+        RegisterAllExtensions(registry);
+        global::Google.ProtocolBuffers.DescriptorProtos.CSharpOptions.RegisterAllExtensions(registry);
+        return registry;
+      };
+      pbd::FileDescriptor.InternalBuildGeneratedFileFrom(descriptorData,
+          new pbd::FileDescriptor[] {
+          global::Google.ProtocolBuffers.DescriptorProtos.CSharpOptions.Descriptor, 
+          }, assigner);
+    }
+    #endregion
+    
+  }
+  #region Enums
+  public enum TestEnum {
+    FOO = 1,
+  }
+  
+  #endregion
+  
+  #region Messages
+  public sealed partial class TestMessage : pb::ExtendableMessage<TestMessage, TestMessage.Builder> {
+    private static readonly TestMessage defaultInstance = new Builder().BuildPartial();
+    public static TestMessage DefaultInstance {
+      get { return defaultInstance; }
+    }
+    
+    public override TestMessage DefaultInstanceForType {
+      get { return defaultInstance; }
+    }
+    
+    protected override TestMessage ThisMessage {
+      get { return this; }
+    }
+    
+    public static pbd::MessageDescriptor Descriptor {
+      get { return global::Google.ProtocolBuffers.TestProtos.NoGenericService.UnitTestNoGenericServicesProtoFile.internal__static_google_protobuf_no_generic_services_test_TestMessage__Descriptor; }
+    }
+    
+    protected override pb::FieldAccess.FieldAccessorTable<TestMessage, TestMessage.Builder> InternalFieldAccessors {
+      get { return global::Google.ProtocolBuffers.TestProtos.NoGenericService.UnitTestNoGenericServicesProtoFile.internal__static_google_protobuf_no_generic_services_test_TestMessage__FieldAccessorTable; }
+    }
+    
+    public const int AFieldNumber = 1;
+    private bool hasA;
+    private int a_ = 0;
+    public bool HasA {
+      get { return hasA; }
+    }
+    public int A {
+      get { return a_; }
+    }
+    
+    public override bool IsInitialized {
+      get {
+        if (!ExtensionsAreInitialized) return false;
+        return true;
+      }
+    }
+    
+    public override void WriteTo(pb::CodedOutputStream output) {
+      int size = SerializedSize;
+      pb::ExtendableMessage<TestMessage, TestMessage.Builder>.ExtensionWriter extensionWriter = CreateExtensionWriter(this);
+      if (HasA) {
+        output.WriteInt32(1, A);
+      }
+      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;
+        if (HasA) {
+          size += pb::CodedOutputStream.ComputeInt32Size(1, A);
+        }
+        size += ExtensionsSerializedSize;
+        size += UnknownFields.SerializedSize;
+        memoizedSerializedSize = size;
+        return size;
+      }
+    }
+    
+    public static TestMessage ParseFrom(pb::ByteString data) {
+      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
+    }
+    public static TestMessage ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
+      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
+    }
+    public static TestMessage ParseFrom(byte[] data) {
+      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
+    }
+    public static TestMessage ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
+      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
+    }
+    public static TestMessage ParseFrom(global::System.IO.Stream input) {
+      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
+    }
+    public static TestMessage ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
+      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
+    }
+    public static TestMessage ParseDelimitedFrom(global::System.IO.Stream input) {
+      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
+    }
+    public static TestMessage ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
+      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
+    }
+    public static TestMessage ParseFrom(pb::CodedInputStream input) {
+      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
+    }
+    public static TestMessage ParseFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
+      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
+    }
+    public static Builder CreateBuilder() { return new Builder(); }
+    public override Builder ToBuilder() { return CreateBuilder(this); }
+    public override Builder CreateBuilderForType() { return new Builder(); }
+    public static Builder CreateBuilder(TestMessage prototype) {
+      return (Builder) new Builder().MergeFrom(prototype);
+    }
+    
+    public sealed partial class Builder : pb::ExtendableBuilder<TestMessage, Builder> {
+      protected override Builder ThisBuilder {
+        get { return this; }
+      }
+      public Builder() {}
+      
+      TestMessage result = new TestMessage();
+      
+      protected override TestMessage MessageBeingBuilt {
+        get { return result; }
+      }
+      
+      public override Builder Clear() {
+        result = new TestMessage();
+        return this;
+      }
+      
+      public override Builder Clone() {
+        return new Builder().MergeFrom(result);
+      }
+      
+      public override pbd::MessageDescriptor DescriptorForType {
+        get { return global::Google.ProtocolBuffers.TestProtos.NoGenericService.TestMessage.Descriptor; }
+      }
+      
+      public override TestMessage DefaultInstanceForType {
+        get { return global::Google.ProtocolBuffers.TestProtos.NoGenericService.TestMessage.DefaultInstance; }
+      }
+      
+      public override TestMessage BuildPartial() {
+        if (result == null) {
+          throw new global::System.InvalidOperationException("build() has already been called on this Builder");
+        }
+        TestMessage returnMe = result;
+        result = null;
+        return returnMe;
+      }
+      
+      public override Builder MergeFrom(pb::IMessage other) {
+        if (other is TestMessage) {
+          return MergeFrom((TestMessage) other);
+        } else {
+          base.MergeFrom(other);
+          return this;
+        }
+      }
+      
+      public override Builder MergeFrom(TestMessage other) {
+        if (other == global::Google.ProtocolBuffers.TestProtos.NoGenericService.TestMessage.DefaultInstance) return this;
+        if (other.HasA) {
+          A = other.A;
+        }
+          this.MergeExtensionFields(other);
+        this.MergeUnknownFields(other.UnknownFields);
+        return this;
+      }
+      
+      public override Builder MergeFrom(pb::CodedInputStream input) {
+        return MergeFrom(input, pb::ExtensionRegistry.Empty);
+      }
+      
+      public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
+        pb::UnknownFieldSet.Builder unknownFields = null;
+        while (true) {
+          uint tag = input.ReadTag();
+          switch (tag) {
+            case 0: {
+              if (unknownFields != null) {
+                this.UnknownFields = unknownFields.Build();
+              }
+              return this;
+            }
+            default: {
+              if (pb::WireFormat.IsEndGroupTag(tag)) {
+                if (unknownFields != null) {
+                  this.UnknownFields = unknownFields.Build();
+                }
+                return this;
+              }
+              if (unknownFields == null) {
+                unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
+              }
+              ParseUnknownField(input, unknownFields, extensionRegistry, tag);
+              break;
+            }
+            case 8: {
+              A = input.ReadInt32();
+              break;
+            }
+          }
+        }
+      }
+      
+      
+      public bool HasA {
+        get { return result.HasA; }
+      }
+      public int A {
+        get { return result.A; }
+        set { SetA(value); }
+      }
+      public Builder SetA(int value) {
+        result.hasA = true;
+        result.a_ = value;
+        return this;
+      }
+      public Builder ClearA() {
+        result.hasA = false;
+        result.a_ = 0;
+        return this;
+      }
+    }
+    static TestMessage() {
+      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.NoGenericService.UnitTestNoGenericServicesProtoFile.Descriptor, null);
+    }
+  }
+  
+  #endregion
+  
+  #region Services
+  public abstract class TestService : pb::IService {
+    public abstract void Foo(
+        pb::IRpcController controller,
+        global::Google.ProtocolBuffers.TestProtos.NoGenericService.TestMessage request,
+        global::System.Action<global::Google.ProtocolBuffers.TestProtos.NoGenericService.TestMessage> done);
+    
+    public static pbd::ServiceDescriptor Descriptor {
+      get { return UnitTestNoGenericServicesProtoFile.Descriptor.Services[0]; }
+    }
+    public pbd::ServiceDescriptor DescriptorForType {
+      get { return Descriptor; }
+    }
+    
+    public void CallMethod(
+        pbd::MethodDescriptor method,
+        pb::IRpcController controller,
+        pb::IMessage request,
+        global::System.Action<pb::IMessage> done) {
+      if (method.Service != Descriptor) {
+        throw new global::System.ArgumentException(
+            "Service.CallMethod() given method descriptor for wrong service type.");
+      }
+      switch(method.Index) {
+        case 0:
+          this.Foo(controller, (global::Google.ProtocolBuffers.TestProtos.NoGenericService.TestMessage) request,
+              pb::RpcUtil.SpecializeCallback<global::Google.ProtocolBuffers.TestProtos.NoGenericService.TestMessage>(
+              done));
+          return;
+        default:
+          throw new global::System.InvalidOperationException("Can't get here.");
+      }
+    }
+    
+    public pb::IMessage GetRequestPrototype(pbd::MethodDescriptor method) {
+      if (method.Service != Descriptor) {
+        throw new global::System.ArgumentException(
+            "Service.GetRequestPrototype() given method descriptor for wrong service type.");
+      }
+      switch(method.Index) {
+        case 0:
+          return global::Google.ProtocolBuffers.TestProtos.NoGenericService.TestMessage.DefaultInstance;
+        default:
+          throw new global::System.InvalidOperationException("Can't get here.");
+      }
+    }
+    
+    public pb::IMessage GetResponsePrototype(pbd::MethodDescriptor method) {
+      if (method.Service != Descriptor) {
+        throw new global::System.ArgumentException(
+            "Service.GetResponsePrototype() given method descriptor for wrong service type.");
+      }
+      switch(method.Index) {
+        case 0:
+          return global::Google.ProtocolBuffers.TestProtos.NoGenericService.TestMessage.DefaultInstance;
+        default:
+          throw new global::System.InvalidOperationException("Can't get here.");
+      }
+    }
+    
+    public static Stub CreateStub(pb::IRpcChannel channel) {
+      return new Stub(channel);
+    }
+    
+    public class Stub : global::Google.ProtocolBuffers.TestProtos.NoGenericService.TestService {
+      internal Stub(pb::IRpcChannel channel) {
+        this.channel = channel;
+      }
+      
+      private readonly pb::IRpcChannel channel;
+      
+      public pb::IRpcChannel Channel {
+        get { return channel; }
+      }
+      
+      public override void Foo(
+          pb::IRpcController controller,
+          global::Google.ProtocolBuffers.TestProtos.NoGenericService.TestMessage request,
+          global::System.Action<global::Google.ProtocolBuffers.TestProtos.NoGenericService.TestMessage> done) {
+        channel.CallMethod(Descriptor.Methods[0],
+            controller, request, global::Google.ProtocolBuffers.TestProtos.NoGenericService.TestMessage.DefaultInstance,
+            pb::RpcUtil.GeneralizeCallback<global::Google.ProtocolBuffers.TestProtos.NoGenericService.TestMessage, global::Google.ProtocolBuffers.TestProtos.NoGenericService.TestMessage.Builder>(done, global::Google.ProtocolBuffers.TestProtos.NoGenericService.TestMessage.DefaultInstance));
+      }
+    }
+  }
+  #endregion
+  
+}

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 814 - 328
src/ProtocolBuffers.Test/TestProtos/UnitTestProtoFile.cs


+ 28 - 0
src/ProtocolBuffers.sln

@@ -28,6 +28,25 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "proto", "proto", "{1F896D5C
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ProtocolBuffersLite", "ProtocolBuffers\ProtocolBuffersLite.csproj", "{6969BDCE-D925-43F3-94AC-A531E6DF2591}"
 EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ProtocolBuffersLite.Test", "ProtocolBuffersLite.Test\ProtocolBuffersLite.Test.csproj", "{EE01ED24-3750-4567-9A23-1DB676A15610}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "unittest", "unittest", "{C8D3015A-EA39-4F03-AEEC-3FF1F2087A12}"
+	ProjectSection(SolutionItems) = preProject
+		..\protos\google\protobuf\unittest.proto = ..\protos\google\protobuf\unittest.proto
+		..\protos\google\protobuf\unittest_csharp_options.proto = ..\protos\google\protobuf\unittest_csharp_options.proto
+		..\protos\google\protobuf\unittest_custom_options.proto = ..\protos\google\protobuf\unittest_custom_options.proto
+		..\protos\google\protobuf\unittest_embed_optimize_for.proto = ..\protos\google\protobuf\unittest_embed_optimize_for.proto
+		..\protos\google\protobuf\unittest_empty.proto = ..\protos\google\protobuf\unittest_empty.proto
+		..\protos\google\protobuf\unittest_enormous_descriptor.proto = ..\protos\google\protobuf\unittest_enormous_descriptor.proto
+		..\protos\google\protobuf\unittest_import.proto = ..\protos\google\protobuf\unittest_import.proto
+		..\protos\google\protobuf\unittest_import_lite.proto = ..\protos\google\protobuf\unittest_import_lite.proto
+		..\protos\google\protobuf\unittest_lite.proto = ..\protos\google\protobuf\unittest_lite.proto
+		..\protos\google\protobuf\unittest_lite_imports_nonlite.proto = ..\protos\google\protobuf\unittest_lite_imports_nonlite.proto
+		..\protos\google\protobuf\unittest_mset.proto = ..\protos\google\protobuf\unittest_mset.proto
+		..\protos\google\protobuf\unittest_no_generic_services.proto = ..\protos\google\protobuf\unittest_no_generic_services.proto
+		..\protos\google\protobuf\unittest_optimize_for.proto = ..\protos\google\protobuf\unittest_optimize_for.proto
+	EndProjectSection
+EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|Any CPU = Debug|Any CPU
@@ -89,8 +108,17 @@ Global
 		{6969BDCE-D925-43F3-94AC-A531E6DF2591}.Release|Any CPU.Build.0 = Release|Any CPU
 		{6969BDCE-D925-43F3-94AC-A531E6DF2591}.Silverlight2|Any CPU.ActiveCfg = Silverlight2|Any CPU
 		{6969BDCE-D925-43F3-94AC-A531E6DF2591}.Silverlight2|Any CPU.Build.0 = Silverlight2|Any CPU
+		{EE01ED24-3750-4567-9A23-1DB676A15610}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{EE01ED24-3750-4567-9A23-1DB676A15610}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{EE01ED24-3750-4567-9A23-1DB676A15610}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{EE01ED24-3750-4567-9A23-1DB676A15610}.Release|Any CPU.Build.0 = Release|Any CPU
+		{EE01ED24-3750-4567-9A23-1DB676A15610}.Silverlight2|Any CPU.ActiveCfg = Silverlight2|Any CPU
+		{EE01ED24-3750-4567-9A23-1DB676A15610}.Silverlight2|Any CPU.Build.0 = Silverlight2|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE
 	EndGlobalSection
+	GlobalSection(NestedProjects) = preSolution
+		{C8D3015A-EA39-4F03-AEEC-3FF1F2087A12} = {1F896D5C-5FC2-4671-9216-781CB8187EC7}
+	EndGlobalSection
 EndGlobal

+ 203 - 33
src/ProtocolBuffers/DescriptorProtos/DescriptorProtoFile.cs

@@ -104,38 +104,42 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
           "Lmdvb2dsZS5wcm90b2J1Zi5TZXJ2aWNlT3B0aW9ucyJ/ChVNZXRob2REZXNj" + 
           "cmlwdG9yUHJvdG8SDAoEbmFtZRgBIAEoCRISCgppbnB1dF90eXBlGAIgASgJ" + 
           "EhMKC291dHB1dF90eXBlGAMgASgJEi8KB29wdGlvbnMYBCABKAsyHi5nb29n" + 
-          "bGUucHJvdG9idWYuTWV0aG9kT3B0aW9ucyKnAgoLRmlsZU9wdGlvbnMSFAoM" + 
+          "bGUucHJvdG9idWYuTWV0aG9kT3B0aW9ucyKkAwoLRmlsZU9wdGlvbnMSFAoM" + 
           "amF2YV9wYWNrYWdlGAEgASgJEhwKFGphdmFfb3V0ZXJfY2xhc3NuYW1lGAgg" + 
           "ASgJEiIKE2phdmFfbXVsdGlwbGVfZmlsZXMYCiABKAg6BWZhbHNlEkYKDG9w" + 
           "dGltaXplX2ZvchgJIAEoDjIpLmdvb2dsZS5wcm90b2J1Zi5GaWxlT3B0aW9u" + 
-          "cy5PcHRpbWl6ZU1vZGU6BVNQRUVEEkMKFHVuaW50ZXJwcmV0ZWRfb3B0aW9u" + 
-          "GOcHIAMoCzIkLmdvb2dsZS5wcm90b2J1Zi5VbmludGVycHJldGVkT3B0aW9u" + 
-          "IigKDE9wdGltaXplTW9kZRIJCgVTUEVFRBABEg0KCUNPREVfU0laRRACKgkI" + 
-          "6AcQgICAgAIiiAEKDk1lc3NhZ2VPcHRpb25zEiYKF21lc3NhZ2Vfc2V0X3dp" + 
-          "cmVfZm9ybWF0GAEgASgIOgVmYWxzZRJDChR1bmludGVycHJldGVkX29wdGlv" + 
-          "bhjnByADKAsyJC5nb29nbGUucHJvdG9idWYuVW5pbnRlcnByZXRlZE9wdGlv" + 
-          "bioJCOgHEICAgIACIoACCgxGaWVsZE9wdGlvbnMSMgoFY3R5cGUYASABKA4y" + 
-          "Iy5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zLkNUeXBlEg4KBnBhY2tl" + 
-          "ZBgCIAEoCBIZCgpkZXByZWNhdGVkGAMgASgIOgVmYWxzZRIcChRleHBlcmlt" + 
-          "ZW50YWxfbWFwX2tleRgJIAEoCRJDChR1bmludGVycHJldGVkX29wdGlvbhjn" + 
-          "ByADKAsyJC5nb29nbGUucHJvdG9idWYuVW5pbnRlcnByZXRlZE9wdGlvbiIj" + 
-          "CgVDVHlwZRIICgRDT1JEEAESEAoMU1RSSU5HX1BJRUNFEAIqCQjoBxCAgICA" + 
-          "AiJdCgtFbnVtT3B0aW9ucxJDChR1bmludGVycHJldGVkX29wdGlvbhjnByAD" + 
-          "KAsyJC5nb29nbGUucHJvdG9idWYuVW5pbnRlcnByZXRlZE9wdGlvbioJCOgH" + 
-          "EICAgIACImIKEEVudW1WYWx1ZU9wdGlvbnMSQwoUdW5pbnRlcnByZXRlZF9v" + 
-          "cHRpb24Y5wcgAygLMiQuZ29vZ2xlLnByb3RvYnVmLlVuaW50ZXJwcmV0ZWRP" + 
-          "cHRpb24qCQjoBxCAgICAAiJgCg5TZXJ2aWNlT3B0aW9ucxJDChR1bmludGVy" + 
-          "cHJldGVkX29wdGlvbhjnByADKAsyJC5nb29nbGUucHJvdG9idWYuVW5pbnRl" + 
-          "cnByZXRlZE9wdGlvbioJCOgHEICAgIACIl8KDU1ldGhvZE9wdGlvbnMSQwoU" + 
-          "dW5pbnRlcnByZXRlZF9vcHRpb24Y5wcgAygLMiQuZ29vZ2xlLnByb3RvYnVm" + 
-          "LlVuaW50ZXJwcmV0ZWRPcHRpb24qCQjoBxCAgICAAiKFAgoTVW5pbnRlcnBy" + 
-          "ZXRlZE9wdGlvbhI7CgRuYW1lGAIgAygLMi0uZ29vZ2xlLnByb3RvYnVmLlVu" + 
-          "aW50ZXJwcmV0ZWRPcHRpb24uTmFtZVBhcnQSGAoQaWRlbnRpZmllcl92YWx1" + 
-          "ZRgDIAEoCRIaChJwb3NpdGl2ZV9pbnRfdmFsdWUYBCABKAQSGgoSbmVnYXRp" + 
-          "dmVfaW50X3ZhbHVlGAUgASgDEhQKDGRvdWJsZV92YWx1ZRgGIAEoARIUCgxz" + 
-          "dHJpbmdfdmFsdWUYByABKAwaMwoITmFtZVBhcnQSEQoJbmFtZV9wYXJ0GAEg" + 
-          "AigJEhQKDGlzX2V4dGVuc2lvbhgCIAIoCEIpChNjb20uZ29vZ2xlLnByb3Rv" + 
-          "YnVmQhBEZXNjcmlwdG9yUHJvdG9zSAE=");
+          "cy5PcHRpbWl6ZU1vZGU6BVNQRUVEEiEKE2NjX2dlbmVyaWNfc2VydmljZXMY" + 
+          "ECABKAg6BHRydWUSIwoVamF2YV9nZW5lcmljX3NlcnZpY2VzGBEgASgIOgR0" + 
+          "cnVlEiEKE3B5X2dlbmVyaWNfc2VydmljZXMYEiABKAg6BHRydWUSQwoUdW5p" + 
+          "bnRlcnByZXRlZF9vcHRpb24Y5wcgAygLMiQuZ29vZ2xlLnByb3RvYnVmLlVu" + 
+          "aW50ZXJwcmV0ZWRPcHRpb24iOgoMT3B0aW1pemVNb2RlEgkKBVNQRUVEEAES" + 
+          "DQoJQ09ERV9TSVpFEAISEAoMTElURV9SVU5USU1FEAMqCQjoBxCAgICAAiK4" + 
+          "AQoOTWVzc2FnZU9wdGlvbnMSJgoXbWVzc2FnZV9zZXRfd2lyZV9mb3JtYXQY" + 
+          "ASABKAg6BWZhbHNlEi4KH25vX3N0YW5kYXJkX2Rlc2NyaXB0b3JfYWNjZXNz" + 
+          "b3IYAiABKAg6BWZhbHNlEkMKFHVuaW50ZXJwcmV0ZWRfb3B0aW9uGOcHIAMo" + 
+          "CzIkLmdvb2dsZS5wcm90b2J1Zi5VbmludGVycHJldGVkT3B0aW9uKgkI6AcQ" + 
+          "gICAgAIilAIKDEZpZWxkT3B0aW9ucxI6CgVjdHlwZRgBIAEoDjIjLmdvb2ds" + 
+          "ZS5wcm90b2J1Zi5GaWVsZE9wdGlvbnMuQ1R5cGU6BlNUUklORxIOCgZwYWNr" + 
+          "ZWQYAiABKAgSGQoKZGVwcmVjYXRlZBgDIAEoCDoFZmFsc2USHAoUZXhwZXJp" + 
+          "bWVudGFsX21hcF9rZXkYCSABKAkSQwoUdW5pbnRlcnByZXRlZF9vcHRpb24Y" + 
+          "5wcgAygLMiQuZ29vZ2xlLnByb3RvYnVmLlVuaW50ZXJwcmV0ZWRPcHRpb24i" + 
+          "LwoFQ1R5cGUSCgoGU1RSSU5HEAASCAoEQ09SRBABEhAKDFNUUklOR19QSUVD" + 
+          "RRACKgkI6AcQgICAgAIiXQoLRW51bU9wdGlvbnMSQwoUdW5pbnRlcnByZXRl" + 
+          "ZF9vcHRpb24Y5wcgAygLMiQuZ29vZ2xlLnByb3RvYnVmLlVuaW50ZXJwcmV0" + 
+          "ZWRPcHRpb24qCQjoBxCAgICAAiJiChBFbnVtVmFsdWVPcHRpb25zEkMKFHVu" + 
+          "aW50ZXJwcmV0ZWRfb3B0aW9uGOcHIAMoCzIkLmdvb2dsZS5wcm90b2J1Zi5V" + 
+          "bmludGVycHJldGVkT3B0aW9uKgkI6AcQgICAgAIiYAoOU2VydmljZU9wdGlv" + 
+          "bnMSQwoUdW5pbnRlcnByZXRlZF9vcHRpb24Y5wcgAygLMiQuZ29vZ2xlLnBy" + 
+          "b3RvYnVmLlVuaW50ZXJwcmV0ZWRPcHRpb24qCQjoBxCAgICAAiJfCg1NZXRo" + 
+          "b2RPcHRpb25zEkMKFHVuaW50ZXJwcmV0ZWRfb3B0aW9uGOcHIAMoCzIkLmdv" + 
+          "b2dsZS5wcm90b2J1Zi5VbmludGVycHJldGVkT3B0aW9uKgkI6AcQgICAgAIi" + 
+          "hQIKE1VuaW50ZXJwcmV0ZWRPcHRpb24SOwoEbmFtZRgCIAMoCzItLmdvb2ds" + 
+          "ZS5wcm90b2J1Zi5VbmludGVycHJldGVkT3B0aW9uLk5hbWVQYXJ0EhgKEGlk" + 
+          "ZW50aWZpZXJfdmFsdWUYAyABKAkSGgoScG9zaXRpdmVfaW50X3ZhbHVlGAQg" + 
+          "ASgEEhoKEm5lZ2F0aXZlX2ludF92YWx1ZRgFIAEoAxIUCgxkb3VibGVfdmFs" + 
+          "dWUYBiABKAESFAoMc3RyaW5nX3ZhbHVlGAcgASgMGjMKCE5hbWVQYXJ0EhEK" + 
+          "CW5hbWVfcGFydBgBIAIoCRIUCgxpc19leHRlbnNpb24YAiACKAhCKQoTY29t" + 
+          "Lmdvb2dsZS5wcm90b2J1ZkIQRGVzY3JpcHRvclByb3Rvc0gB");
       pbd::FileDescriptor.InternalDescriptorAssigner assigner = delegate(pbd::FileDescriptor root) {
         descriptor = root;
         internal__static_google_protobuf_FileDescriptorSet__Descriptor = Descriptor.MessageTypes[0];
@@ -177,11 +181,11 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
         internal__static_google_protobuf_FileOptions__Descriptor = Descriptor.MessageTypes[8];
         internal__static_google_protobuf_FileOptions__FieldAccessorTable = 
             new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.DescriptorProtos.FileOptions, global::Google.ProtocolBuffers.DescriptorProtos.FileOptions.Builder>(internal__static_google_protobuf_FileOptions__Descriptor,
-                new string[] { "JavaPackage", "JavaOuterClassname", "JavaMultipleFiles", "OptimizeFor", "UninterpretedOption", });
+                new string[] { "JavaPackage", "JavaOuterClassname", "JavaMultipleFiles", "OptimizeFor", "CcGenericServices", "JavaGenericServices", "PyGenericServices", "UninterpretedOption", });
         internal__static_google_protobuf_MessageOptions__Descriptor = Descriptor.MessageTypes[9];
         internal__static_google_protobuf_MessageOptions__FieldAccessorTable = 
             new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.DescriptorProtos.MessageOptions, global::Google.ProtocolBuffers.DescriptorProtos.MessageOptions.Builder>(internal__static_google_protobuf_MessageOptions__Descriptor,
-                new string[] { "MessageSetWireFormat", "UninterpretedOption", });
+                new string[] { "MessageSetWireFormat", "NoStandardDescriptorAccessor", "UninterpretedOption", });
         internal__static_google_protobuf_FieldOptions__Descriptor = Descriptor.MessageTypes[10];
         internal__static_google_protobuf_FieldOptions__FieldAccessorTable = 
             new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.DescriptorProtos.FieldOptions, global::Google.ProtocolBuffers.DescriptorProtos.FieldOptions.Builder>(internal__static_google_protobuf_FieldOptions__Descriptor,
@@ -4013,6 +4017,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
       public enum OptimizeMode {
         SPEED = 1,
         CODE_SIZE = 2,
+        LITE_RUNTIME = 3,
       }
       
     }
@@ -4058,6 +4063,36 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
       get { return optimizeFor_; }
     }
     
+    public const int CcGenericServicesFieldNumber = 16;
+    private bool hasCcGenericServices;
+    private bool ccGenericServices_ = true;
+    public bool HasCcGenericServices {
+      get { return hasCcGenericServices; }
+    }
+    public bool CcGenericServices {
+      get { return ccGenericServices_; }
+    }
+    
+    public const int JavaGenericServicesFieldNumber = 17;
+    private bool hasJavaGenericServices;
+    private bool javaGenericServices_ = true;
+    public bool HasJavaGenericServices {
+      get { return hasJavaGenericServices; }
+    }
+    public bool JavaGenericServices {
+      get { return javaGenericServices_; }
+    }
+    
+    public const int PyGenericServicesFieldNumber = 18;
+    private bool hasPyGenericServices;
+    private bool pyGenericServices_ = true;
+    public bool HasPyGenericServices {
+      get { return hasPyGenericServices; }
+    }
+    public bool PyGenericServices {
+      get { return pyGenericServices_; }
+    }
+    
     public const int UninterpretedOptionFieldNumber = 999;
     private pbc::PopsicleList<global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption> uninterpretedOption_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption>();
     public scg::IList<global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption> UninterpretedOptionList {
@@ -4095,6 +4130,15 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
       if (HasJavaMultipleFiles) {
         output.WriteBool(10, JavaMultipleFiles);
       }
+      if (HasCcGenericServices) {
+        output.WriteBool(16, CcGenericServices);
+      }
+      if (HasJavaGenericServices) {
+        output.WriteBool(17, JavaGenericServices);
+      }
+      if (HasPyGenericServices) {
+        output.WriteBool(18, PyGenericServices);
+      }
       foreach (global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption element in UninterpretedOptionList) {
         output.WriteMessage(999, element);
       }
@@ -4121,6 +4165,15 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
         if (HasOptimizeFor) {
           size += pb::CodedOutputStream.ComputeEnumSize(9, (int) OptimizeFor);
         }
+        if (HasCcGenericServices) {
+          size += pb::CodedOutputStream.ComputeBoolSize(16, CcGenericServices);
+        }
+        if (HasJavaGenericServices) {
+          size += pb::CodedOutputStream.ComputeBoolSize(17, JavaGenericServices);
+        }
+        if (HasPyGenericServices) {
+          size += pb::CodedOutputStream.ComputeBoolSize(18, PyGenericServices);
+        }
         foreach (global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption element in UninterpretedOptionList) {
           size += pb::CodedOutputStream.ComputeMessageSize(999, element);
         }
@@ -4230,6 +4283,15 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
         if (other.HasOptimizeFor) {
           OptimizeFor = other.OptimizeFor;
         }
+        if (other.HasCcGenericServices) {
+          CcGenericServices = other.CcGenericServices;
+        }
+        if (other.HasJavaGenericServices) {
+          JavaGenericServices = other.JavaGenericServices;
+        }
+        if (other.HasPyGenericServices) {
+          PyGenericServices = other.PyGenericServices;
+        }
         if (other.uninterpretedOption_.Count != 0) {
           base.AddRange(other.uninterpretedOption_, result.uninterpretedOption_);
         }
@@ -4290,6 +4352,18 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
               JavaMultipleFiles = input.ReadBool();
               break;
             }
+            case 128: {
+              CcGenericServices = input.ReadBool();
+              break;
+            }
+            case 136: {
+              JavaGenericServices = input.ReadBool();
+              break;
+            }
+            case 144: {
+              PyGenericServices = input.ReadBool();
+              break;
+            }
             case 7994: {
               global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption.Builder subBuilder = global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption.CreateBuilder();
               input.ReadMessage(subBuilder, extensionRegistry);
@@ -4375,6 +4449,60 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
         return this;
       }
       
+      public bool HasCcGenericServices {
+        get { return result.HasCcGenericServices; }
+      }
+      public bool CcGenericServices {
+        get { return result.CcGenericServices; }
+        set { SetCcGenericServices(value); }
+      }
+      public Builder SetCcGenericServices(bool value) {
+        result.hasCcGenericServices = true;
+        result.ccGenericServices_ = value;
+        return this;
+      }
+      public Builder ClearCcGenericServices() {
+        result.hasCcGenericServices = false;
+        result.ccGenericServices_ = true;
+        return this;
+      }
+      
+      public bool HasJavaGenericServices {
+        get { return result.HasJavaGenericServices; }
+      }
+      public bool JavaGenericServices {
+        get { return result.JavaGenericServices; }
+        set { SetJavaGenericServices(value); }
+      }
+      public Builder SetJavaGenericServices(bool value) {
+        result.hasJavaGenericServices = true;
+        result.javaGenericServices_ = value;
+        return this;
+      }
+      public Builder ClearJavaGenericServices() {
+        result.hasJavaGenericServices = false;
+        result.javaGenericServices_ = true;
+        return this;
+      }
+      
+      public bool HasPyGenericServices {
+        get { return result.HasPyGenericServices; }
+      }
+      public bool PyGenericServices {
+        get { return result.PyGenericServices; }
+        set { SetPyGenericServices(value); }
+      }
+      public Builder SetPyGenericServices(bool value) {
+        result.hasPyGenericServices = true;
+        result.pyGenericServices_ = value;
+        return this;
+      }
+      public Builder ClearPyGenericServices() {
+        result.hasPyGenericServices = false;
+        result.pyGenericServices_ = true;
+        return this;
+      }
+      
       public pbc::IPopsicleList<global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption> UninterpretedOptionList {
         get { return result.uninterpretedOption_; }
       }
@@ -4450,6 +4578,16 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
       get { return messageSetWireFormat_; }
     }
     
+    public const int NoStandardDescriptorAccessorFieldNumber = 2;
+    private bool hasNoStandardDescriptorAccessor;
+    private bool noStandardDescriptorAccessor_ = false;
+    public bool HasNoStandardDescriptorAccessor {
+      get { return hasNoStandardDescriptorAccessor; }
+    }
+    public bool NoStandardDescriptorAccessor {
+      get { return noStandardDescriptorAccessor_; }
+    }
+    
     public const int UninterpretedOptionFieldNumber = 999;
     private pbc::PopsicleList<global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption> uninterpretedOption_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption>();
     public scg::IList<global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption> UninterpretedOptionList {
@@ -4478,6 +4616,9 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
       if (HasMessageSetWireFormat) {
         output.WriteBool(1, MessageSetWireFormat);
       }
+      if (HasNoStandardDescriptorAccessor) {
+        output.WriteBool(2, NoStandardDescriptorAccessor);
+      }
       foreach (global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption element in UninterpretedOptionList) {
         output.WriteMessage(999, element);
       }
@@ -4495,6 +4636,9 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
         if (HasMessageSetWireFormat) {
           size += pb::CodedOutputStream.ComputeBoolSize(1, MessageSetWireFormat);
         }
+        if (HasNoStandardDescriptorAccessor) {
+          size += pb::CodedOutputStream.ComputeBoolSize(2, NoStandardDescriptorAccessor);
+        }
         foreach (global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption element in UninterpretedOptionList) {
           size += pb::CodedOutputStream.ComputeMessageSize(999, element);
         }
@@ -4595,6 +4739,9 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
         if (other.HasMessageSetWireFormat) {
           MessageSetWireFormat = other.MessageSetWireFormat;
         }
+        if (other.HasNoStandardDescriptorAccessor) {
+          NoStandardDescriptorAccessor = other.NoStandardDescriptorAccessor;
+        }
         if (other.uninterpretedOption_.Count != 0) {
           base.AddRange(other.uninterpretedOption_, result.uninterpretedOption_);
         }
@@ -4635,6 +4782,10 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
               MessageSetWireFormat = input.ReadBool();
               break;
             }
+            case 16: {
+              NoStandardDescriptorAccessor = input.ReadBool();
+              break;
+            }
             case 7994: {
               global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption.Builder subBuilder = global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption.CreateBuilder();
               input.ReadMessage(subBuilder, extensionRegistry);
@@ -4664,6 +4815,24 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
         return this;
       }
       
+      public bool HasNoStandardDescriptorAccessor {
+        get { return result.HasNoStandardDescriptorAccessor; }
+      }
+      public bool NoStandardDescriptorAccessor {
+        get { return result.NoStandardDescriptorAccessor; }
+        set { SetNoStandardDescriptorAccessor(value); }
+      }
+      public Builder SetNoStandardDescriptorAccessor(bool value) {
+        result.hasNoStandardDescriptorAccessor = true;
+        result.noStandardDescriptorAccessor_ = value;
+        return this;
+      }
+      public Builder ClearNoStandardDescriptorAccessor() {
+        result.hasNoStandardDescriptorAccessor = false;
+        result.noStandardDescriptorAccessor_ = false;
+        return this;
+      }
+      
       public pbc::IPopsicleList<global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption> UninterpretedOptionList {
         get { return result.uninterpretedOption_; }
       }
@@ -4732,6 +4901,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
     #region Nested types
     public static class Types {
       public enum CType {
+        STRING = 0,
         CORD = 1,
         STRING_PIECE = 2,
       }
@@ -4741,7 +4911,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
     
     public const int CtypeFieldNumber = 1;
     private bool hasCtype;
-    private global::Google.ProtocolBuffers.DescriptorProtos.FieldOptions.Types.CType ctype_ = global::Google.ProtocolBuffers.DescriptorProtos.FieldOptions.Types.CType.CORD;
+    private global::Google.ProtocolBuffers.DescriptorProtos.FieldOptions.Types.CType ctype_ = global::Google.ProtocolBuffers.DescriptorProtos.FieldOptions.Types.CType.STRING;
     public bool HasCtype {
       get { return hasCtype; }
     }
@@ -5036,7 +5206,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
       }
       public Builder ClearCtype() {
         result.hasCtype = false;
-        result.ctype_ = global::Google.ProtocolBuffers.DescriptorProtos.FieldOptions.Types.CType.CORD;
+        result.ctype_ = global::Google.ProtocolBuffers.DescriptorProtos.FieldOptions.Types.CType.STRING;
         return this;
       }
       

+ 6 - 0
src/ProtocolBuffers/Properties/AssemblyInfo.cs

@@ -74,6 +74,12 @@ using System.Runtime.CompilerServices;
 "72f738140072bb69990bc4f98a21365de2c105e848974a3d210e938b0a56103c0662901efd6b78"+
 "0ee6dbe977923d46a8fda18fb25c65dd73b149a5cd9f3100668b56649932dadd8cf5be52eb1dce"+
 "ad5cedbf")]
+[assembly: InternalsVisibleTo("Google.ProtocolBuffersLite.Test,PublicKey=" +
+"00240000048000009400000006020000002400005253413100040000010001008179f2dd31a648" +
+"2a2359dbe33e53701167a888e7c369a9ae3210b64f93861d8a7d286447e58bc167e3d99483beda" +
+"72f738140072bb69990bc4f98a21365de2c105e848974a3d210e938b0a56103c0662901efd6b78" +
+"0ee6dbe977923d46a8fda18fb25c65dd73b149a5cd9f3100668b56649932dadd8cf5be52eb1dce" +
+"ad5cedbf")]
 [assembly: InternalsVisibleTo("ProtoGen,PublicKey=" +
 "00240000048000009400000006020000002400005253413100040000010001006d739020e13bdc" +
 "038e86fa8aa5e1b13aae65d3ae79d622816c6067ab5b6955be50cc887130117582349208c13a55" +

+ 82 - 0
src/ProtocolBuffersLite.Test/ProtocolBuffersLite.Test.csproj

@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.30729</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{EE01ED24-3750-4567-9A23-1DB676A15610}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>Google.ProtocolBuffers</RootNamespace>
+    <AssemblyName>Google.ProtocolBuffersLite.Test</AssemblyName>
+    <TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <SignAssembly>true</SignAssembly>
+    <AssemblyOriginatorKeyFile>..\ProtocolBuffers.Test\Properties\Google.ProtocolBuffers.Test.snk</AssemblyOriginatorKeyFile>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Silverlight2|AnyCPU' ">
+    <OutputPath>bin\Silverlight2\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="nunit.framework, Version=2.2.8.0, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\lib\nunit.framework.dll</HintPath>
+    </Reference>
+    <Reference Include="Rhino.Mocks, Version=3.5.0.2, Culture=neutral, PublicKeyToken=0b3305902db7183f, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\lib\Rhino.Mocks.dll</HintPath>
+    </Reference>
+    <Reference Include="System" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="..\ProtocolBuffers.Test\Properties\AssemblyInfo.cs">
+      <Link>Properties\AssemblyInfo.cs</Link>
+    </Compile>
+    <None Include="TestProtos\UnittestLite.cs" />
+    <None Include="TestProtos\UnittestLiteImportsNonlite.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="..\ProtocolBuffers.Test\Properties\Google.ProtocolBuffers.Test.snk">
+      <Link>Properties\Google.ProtocolBuffers.Test.snk</Link>
+    </None>
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\ProtocolBuffers\ProtocolBuffersLite.csproj">
+      <Project>{6969BDCE-D925-43F3-94AC-A531E6DF2591}</Project>
+      <Name>ProtocolBuffersLite</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>

+ 207 - 0
src/ProtocolBuffersLite.Test/TestProtos/UnitTestLiteImportNonLiteProtoFile.cs

@@ -0,0 +1,207 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+
+using pb = global::Google.ProtocolBuffers;
+using pbc = global::Google.ProtocolBuffers.Collections;
+using pbd = global::Google.ProtocolBuffers.Descriptors;
+using scg = global::System.Collections.Generic;
+namespace Google.ProtocolBuffers.TestProtos {
+  
+  public static partial class UnitTestLiteImportNonLiteProtoFile {
+  
+    #region Extension registration
+    public static void RegisterAllExtensions(pb::ExtensionRegistry registry) {
+    }
+    #endregion
+    #region Static variables
+    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestLiteImportsNonlite__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestLiteImportsNonlite, global::Google.ProtocolBuffers.TestProtos.TestLiteImportsNonlite.Builder> internal__static_protobuf_unittest_TestLiteImportsNonlite__FieldAccessorTable;
+    #endregion
+    #region Descriptor
+    public static pbd::FileDescriptor Descriptor {
+      get { return descriptor; }
+    }
+    private static pbd::FileDescriptor descriptor;
+    
+    static UnitTestLiteImportNonLiteProtoFile() {
+      byte[] descriptorData = global::System.Convert.FromBase64String(
+          "CjNnb29nbGUvcHJvdG9idWYvdW5pdHRlc3RfbGl0ZV9pbXBvcnRzX25vbmxp" + 
+          "dGUucHJvdG8SEXByb3RvYnVmX3VuaXR0ZXN0GiRnb29nbGUvcHJvdG9idWYv" + 
+          "Y3NoYXJwX29wdGlvbnMucHJvdG8aHmdvb2dsZS9wcm90b2J1Zi91bml0dGVz" + 
+          "dC5wcm90byJKChZUZXN0TGl0ZUltcG9ydHNOb25saXRlEjAKB21lc3NhZ2UY" + 
+          "ASABKAsyHy5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsVHlwZXNCTEgDwj5H" + 
+          "CiFHb29nbGUuUHJvdG9jb2xCdWZmZXJzLlRlc3RQcm90b3MSIlVuaXRUZXN0" + 
+          "TGl0ZUltcG9ydE5vbkxpdGVQcm90b0ZpbGU=");
+      pbd::FileDescriptor.InternalDescriptorAssigner assigner = delegate(pbd::FileDescriptor root) {
+        descriptor = root;
+        internal__static_protobuf_unittest_TestLiteImportsNonlite__Descriptor = Descriptor.MessageTypes[0];
+        internal__static_protobuf_unittest_TestLiteImportsNonlite__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestLiteImportsNonlite, global::Google.ProtocolBuffers.TestProtos.TestLiteImportsNonlite.Builder>(internal__static_protobuf_unittest_TestLiteImportsNonlite__Descriptor,
+                new string[] { "Message", });
+        pb::ExtensionRegistry registry = pb::ExtensionRegistry.CreateInstance();
+        RegisterAllExtensions(registry);
+        global::Google.ProtocolBuffers.DescriptorProtos.CSharpOptions.RegisterAllExtensions(registry);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.RegisterAllExtensions(registry);
+        return registry;
+      };
+      pbd::FileDescriptor.InternalBuildGeneratedFileFrom(descriptorData,
+          new pbd::FileDescriptor[] {
+          global::Google.ProtocolBuffers.DescriptorProtos.CSharpOptions.Descriptor, 
+          global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor, 
+          }, assigner);
+    }
+    #endregion
+    
+  }
+  #region Messages
+  public sealed partial class TestLiteImportsNonlite : pb::GeneratedMessage<TestLiteImportsNonlite, TestLiteImportsNonlite.Builder> {
+    private static readonly TestLiteImportsNonlite defaultInstance = new Builder().BuildPartial();
+    public static TestLiteImportsNonlite DefaultInstance {
+      get { return defaultInstance; }
+    }
+    
+    public override TestLiteImportsNonlite DefaultInstanceForType {
+      get { return defaultInstance; }
+    }
+    
+    protected override TestLiteImportsNonlite ThisMessage {
+      get { return this; }
+    }
+    
+    public static pbd::MessageDescriptor Descriptor {
+      get { return global::Google.ProtocolBuffers.TestProtos.UnitTestLiteImportNonLiteProtoFile.internal__static_protobuf_unittest_TestLiteImportsNonlite__Descriptor; }
+    }
+    
+    protected override pb::FieldAccess.FieldAccessorTable<TestLiteImportsNonlite, TestLiteImportsNonlite.Builder> InternalFieldAccessors {
+      get { return global::Google.ProtocolBuffers.TestProtos.UnitTestLiteImportNonLiteProtoFile.internal__static_protobuf_unittest_TestLiteImportsNonlite__FieldAccessorTable; }
+    }
+    
+    public const int MessageFieldNumber = 1;
+    private bool hasMessage;
+    private global::Google.ProtocolBuffers.TestProtos.TestAllTypes message_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypes.DefaultInstance;
+    public bool HasMessage {
+      get { return hasMessage; }
+    }
+    public global::Google.ProtocolBuffers.TestProtos.TestAllTypes Message {
+      get { return message_; }
+    }
+    
+    public static TestLiteImportsNonlite ParseFrom(pb::ByteString data) {
+      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
+    }
+    public static TestLiteImportsNonlite ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
+      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
+    }
+    public static TestLiteImportsNonlite ParseFrom(byte[] data) {
+      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
+    }
+    public static TestLiteImportsNonlite ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
+      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
+    }
+    public static TestLiteImportsNonlite ParseFrom(global::System.IO.Stream input) {
+      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
+    }
+    public static TestLiteImportsNonlite ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
+      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
+    }
+    public static TestLiteImportsNonlite ParseDelimitedFrom(global::System.IO.Stream input) {
+      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
+    }
+    public static TestLiteImportsNonlite ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
+      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
+    }
+    public static TestLiteImportsNonlite ParseFrom(pb::CodedInputStream input) {
+      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
+    }
+    public static TestLiteImportsNonlite ParseFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
+      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
+    }
+    public static Builder CreateBuilder() { return new Builder(); }
+    public override Builder ToBuilder() { return CreateBuilder(this); }
+    public override Builder CreateBuilderForType() { return new Builder(); }
+    public static Builder CreateBuilder(TestLiteImportsNonlite prototype) {
+      return (Builder) new Builder().MergeFrom(prototype);
+    }
+    
+    public sealed partial class Builder : pb::GeneratedBuilder<TestLiteImportsNonlite, Builder> {
+      protected override Builder ThisBuilder {
+        get { return this; }
+      }
+      public Builder() {}
+      
+      TestLiteImportsNonlite result = new TestLiteImportsNonlite();
+      
+      protected override TestLiteImportsNonlite MessageBeingBuilt {
+        get { return result; }
+      }
+      
+      public override Builder Clear() {
+        result = new TestLiteImportsNonlite();
+        return this;
+      }
+      
+      public override Builder Clone() {
+        return new Builder().MergeFrom(result);
+      }
+      
+      public override pbd::MessageDescriptor DescriptorForType {
+        get { return global::Google.ProtocolBuffers.TestProtos.TestLiteImportsNonlite.Descriptor; }
+      }
+      
+      public override TestLiteImportsNonlite DefaultInstanceForType {
+        get { return global::Google.ProtocolBuffers.TestProtos.TestLiteImportsNonlite.DefaultInstance; }
+      }
+      
+      public override TestLiteImportsNonlite BuildPartial() {
+        if (result == null) {
+          throw new global::System.InvalidOperationException("build() has already been called on this Builder");
+        }
+        TestLiteImportsNonlite returnMe = result;
+        result = null;
+        return returnMe;
+      }
+      
+      
+      public bool HasMessage {
+       get { return result.HasMessage; }
+      }
+      public global::Google.ProtocolBuffers.TestProtos.TestAllTypes Message {
+        get { return result.Message; }
+        set { SetMessage(value); }
+      }
+      public Builder SetMessage(global::Google.ProtocolBuffers.TestProtos.TestAllTypes value) {
+        pb::ThrowHelper.ThrowIfNull(value, "value");
+        result.hasMessage = true;
+        result.message_ = value;
+        return this;
+      }
+      public Builder SetMessage(global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Builder builderForValue) {
+        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
+        result.hasMessage = true;
+        result.message_ = builderForValue.Build();
+        return this;
+      }
+      public Builder MergeMessage(global::Google.ProtocolBuffers.TestProtos.TestAllTypes value) {
+        pb::ThrowHelper.ThrowIfNull(value, "value");
+        if (result.HasMessage &&
+            result.message_ != global::Google.ProtocolBuffers.TestProtos.TestAllTypes.DefaultInstance) {
+            result.message_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypes.CreateBuilder(result.message_).MergeFrom(value).BuildPartial();
+        } else {
+          result.message_ = value;
+        }
+        result.hasMessage = true;
+        return this;
+      }
+      public Builder ClearMessage() {
+        result.hasMessage = false;
+        result.message_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypes.DefaultInstance;
+        return this;
+      }
+    }
+    static TestLiteImportsNonlite() {
+      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteImportNonLiteProtoFile.Descriptor, null);
+    }
+  }
+  
+  #endregion
+  
+}

+ 5111 - 0
src/ProtocolBuffersLite.Test/TestProtos/UnitTestLiteProtoFile.cs

@@ -0,0 +1,5111 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+
+using pb = global::Google.ProtocolBuffers;
+using pbc = global::Google.ProtocolBuffers.Collections;
+using pbd = global::Google.ProtocolBuffers.Descriptors;
+using scg = global::System.Collections.Generic;
+namespace Google.ProtocolBuffers.TestProtos {
+  
+  public static partial class UnitTestLiteProtoFile {
+  
+    #region Extension registration
+    public static void RegisterAllExtensions(pb::ExtensionRegistry registry) {
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.OptionalInt32ExtensionLite);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.OptionalInt64ExtensionLite);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.OptionalUint32ExtensionLite);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.OptionalUint64ExtensionLite);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.OptionalSint32ExtensionLite);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.OptionalSint64ExtensionLite);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.OptionalFixed32ExtensionLite);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.OptionalFixed64ExtensionLite);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.OptionalSfixed32ExtensionLite);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.OptionalSfixed64ExtensionLite);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.OptionalFloatExtensionLite);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.OptionalDoubleExtensionLite);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.OptionalBoolExtensionLite);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.OptionalStringExtensionLite);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.OptionalBytesExtensionLite);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.OptionalGroupExtensionLite);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.OptionalNestedMessageExtensionLite);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.OptionalForeignMessageExtensionLite);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.OptionalImportMessageExtensionLite);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.OptionalNestedEnumExtensionLite);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.OptionalForeignEnumExtensionLite);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.OptionalImportEnumExtensionLite);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.OptionalStringPieceExtensionLite);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.OptionalCordExtensionLite);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.RepeatedInt32ExtensionLite);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.RepeatedInt64ExtensionLite);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.RepeatedUint32ExtensionLite);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.RepeatedUint64ExtensionLite);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.RepeatedSint32ExtensionLite);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.RepeatedSint64ExtensionLite);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.RepeatedFixed32ExtensionLite);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.RepeatedFixed64ExtensionLite);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.RepeatedSfixed32ExtensionLite);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.RepeatedSfixed64ExtensionLite);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.RepeatedFloatExtensionLite);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.RepeatedDoubleExtensionLite);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.RepeatedBoolExtensionLite);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.RepeatedStringExtensionLite);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.RepeatedBytesExtensionLite);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.RepeatedGroupExtensionLite);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.RepeatedNestedMessageExtensionLite);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.RepeatedForeignMessageExtensionLite);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.RepeatedImportMessageExtensionLite);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.RepeatedNestedEnumExtensionLite);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.RepeatedForeignEnumExtensionLite);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.RepeatedImportEnumExtensionLite);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.RepeatedStringPieceExtensionLite);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.RepeatedCordExtensionLite);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.DefaultInt32ExtensionLite);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.DefaultInt64ExtensionLite);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.DefaultUint32ExtensionLite);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.DefaultUint64ExtensionLite);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.DefaultSint32ExtensionLite);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.DefaultSint64ExtensionLite);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.DefaultFixed32ExtensionLite);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.DefaultFixed64ExtensionLite);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.DefaultSfixed32ExtensionLite);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.DefaultSfixed64ExtensionLite);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.DefaultFloatExtensionLite);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.DefaultDoubleExtensionLite);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.DefaultBoolExtensionLite);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.DefaultStringExtensionLite);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.DefaultBytesExtensionLite);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.DefaultNestedEnumExtensionLite);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.DefaultForeignEnumExtensionLite);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.DefaultImportEnumExtensionLite);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.DefaultStringPieceExtensionLite);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.DefaultCordExtensionLite);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.PackedInt32ExtensionLite);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.PackedInt64ExtensionLite);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.PackedUint32ExtensionLite);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.PackedUint64ExtensionLite);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.PackedSint32ExtensionLite);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.PackedSint64ExtensionLite);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.PackedFixed32ExtensionLite);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.PackedFixed64ExtensionLite);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.PackedSfixed32ExtensionLite);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.PackedSfixed64ExtensionLite);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.PackedFloatExtensionLite);
+      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.TestNestedExtensionLite.NestedExtension);
+    }
+    #endregion
+    #region Extensions
+    public const int OptionalInt32ExtensionLiteFieldNumber = 1;
+    public static pb::GeneratedExtensionBase<int> OptionalInt32ExtensionLite;
+    public const int OptionalInt64ExtensionLiteFieldNumber = 2;
+    public static pb::GeneratedExtensionBase<long> OptionalInt64ExtensionLite;
+    public const int OptionalUint32ExtensionLiteFieldNumber = 3;
+    [global::System.CLSCompliant(false)]
+    public static pb::GeneratedExtensionBase<uint> OptionalUint32ExtensionLite;
+    public const int OptionalUint64ExtensionLiteFieldNumber = 4;
+    [global::System.CLSCompliant(false)]
+    public static pb::GeneratedExtensionBase<ulong> OptionalUint64ExtensionLite;
+    public const int OptionalSint32ExtensionLiteFieldNumber = 5;
+    public static pb::GeneratedExtensionBase<int> OptionalSint32ExtensionLite;
+    public const int OptionalSint64ExtensionLiteFieldNumber = 6;
+    public static pb::GeneratedExtensionBase<long> OptionalSint64ExtensionLite;
+    public const int OptionalFixed32ExtensionLiteFieldNumber = 7;
+    [global::System.CLSCompliant(false)]
+    public static pb::GeneratedExtensionBase<uint> OptionalFixed32ExtensionLite;
+    public const int OptionalFixed64ExtensionLiteFieldNumber = 8;
+    [global::System.CLSCompliant(false)]
+    public static pb::GeneratedExtensionBase<ulong> OptionalFixed64ExtensionLite;
+    public const int OptionalSfixed32ExtensionLiteFieldNumber = 9;
+    public static pb::GeneratedExtensionBase<int> OptionalSfixed32ExtensionLite;
+    public const int OptionalSfixed64ExtensionLiteFieldNumber = 10;
+    public static pb::GeneratedExtensionBase<long> OptionalSfixed64ExtensionLite;
+    public const int OptionalFloatExtensionLiteFieldNumber = 11;
+    public static pb::GeneratedExtensionBase<float> OptionalFloatExtensionLite;
+    public const int OptionalDoubleExtensionLiteFieldNumber = 12;
+    public static pb::GeneratedExtensionBase<double> OptionalDoubleExtensionLite;
+    public const int OptionalBoolExtensionLiteFieldNumber = 13;
+    public static pb::GeneratedExtensionBase<bool> OptionalBoolExtensionLite;
+    public const int OptionalStringExtensionLiteFieldNumber = 14;
+    public static pb::GeneratedExtensionBase<string> OptionalStringExtensionLite;
+    public const int OptionalBytesExtensionLiteFieldNumber = 15;
+    public static pb::GeneratedExtensionBase<pb::ByteString> OptionalBytesExtensionLite;
+    public const int OptionalGroupExtensionLiteFieldNumber = 16;
+    public static pb::GeneratedExtensionBase<global::Google.ProtocolBuffers.TestProtos.OptionalGroup_extension_lite> OptionalGroupExtensionLite;
+    public const int OptionalNestedMessageExtensionLiteFieldNumber = 18;
+    public static pb::GeneratedExtensionBase<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage> OptionalNestedMessageExtensionLite;
+    public const int OptionalForeignMessageExtensionLiteFieldNumber = 19;
+    public static pb::GeneratedExtensionBase<global::Google.ProtocolBuffers.TestProtos.ForeignMessageLite> OptionalForeignMessageExtensionLite;
+    public const int OptionalImportMessageExtensionLiteFieldNumber = 20;
+    public static pb::GeneratedExtensionBase<global::Google.ProtocolBuffers.TestProtos.ImportMessageLite> OptionalImportMessageExtensionLite;
+    public const int OptionalNestedEnumExtensionLiteFieldNumber = 21;
+    public static pb::GeneratedExtensionBase<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedEnum> OptionalNestedEnumExtensionLite;
+    public const int OptionalForeignEnumExtensionLiteFieldNumber = 22;
+    public static pb::GeneratedExtensionBase<global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite> OptionalForeignEnumExtensionLite;
+    public const int OptionalImportEnumExtensionLiteFieldNumber = 23;
+    public static pb::GeneratedExtensionBase<global::Google.ProtocolBuffers.TestProtos.ImportEnumLite> OptionalImportEnumExtensionLite;
+    public const int OptionalStringPieceExtensionLiteFieldNumber = 24;
+    public static pb::GeneratedExtensionBase<string> OptionalStringPieceExtensionLite;
+    public const int OptionalCordExtensionLiteFieldNumber = 25;
+    public static pb::GeneratedExtensionBase<string> OptionalCordExtensionLite;
+    public const int RepeatedInt32ExtensionLiteFieldNumber = 31;
+    public static pb::GeneratedExtensionBase<scg::IList<int>> RepeatedInt32ExtensionLite;
+    public const int RepeatedInt64ExtensionLiteFieldNumber = 32;
+    public static pb::GeneratedExtensionBase<scg::IList<long>> RepeatedInt64ExtensionLite;
+    public const int RepeatedUint32ExtensionLiteFieldNumber = 33;
+    [global::System.CLSCompliant(false)]
+    public static pb::GeneratedExtensionBase<scg::IList<uint>> RepeatedUint32ExtensionLite;
+    public const int RepeatedUint64ExtensionLiteFieldNumber = 34;
+    [global::System.CLSCompliant(false)]
+    public static pb::GeneratedExtensionBase<scg::IList<ulong>> RepeatedUint64ExtensionLite;
+    public const int RepeatedSint32ExtensionLiteFieldNumber = 35;
+    public static pb::GeneratedExtensionBase<scg::IList<int>> RepeatedSint32ExtensionLite;
+    public const int RepeatedSint64ExtensionLiteFieldNumber = 36;
+    public static pb::GeneratedExtensionBase<scg::IList<long>> RepeatedSint64ExtensionLite;
+    public const int RepeatedFixed32ExtensionLiteFieldNumber = 37;
+    [global::System.CLSCompliant(false)]
+    public static pb::GeneratedExtensionBase<scg::IList<uint>> RepeatedFixed32ExtensionLite;
+    public const int RepeatedFixed64ExtensionLiteFieldNumber = 38;
+    [global::System.CLSCompliant(false)]
+    public static pb::GeneratedExtensionBase<scg::IList<ulong>> RepeatedFixed64ExtensionLite;
+    public const int RepeatedSfixed32ExtensionLiteFieldNumber = 39;
+    public static pb::GeneratedExtensionBase<scg::IList<int>> RepeatedSfixed32ExtensionLite;
+    public const int RepeatedSfixed64ExtensionLiteFieldNumber = 40;
+    public static pb::GeneratedExtensionBase<scg::IList<long>> RepeatedSfixed64ExtensionLite;
+    public const int RepeatedFloatExtensionLiteFieldNumber = 41;
+    public static pb::GeneratedExtensionBase<scg::IList<float>> RepeatedFloatExtensionLite;
+    public const int RepeatedDoubleExtensionLiteFieldNumber = 42;
+    public static pb::GeneratedExtensionBase<scg::IList<double>> RepeatedDoubleExtensionLite;
+    public const int RepeatedBoolExtensionLiteFieldNumber = 43;
+    public static pb::GeneratedExtensionBase<scg::IList<bool>> RepeatedBoolExtensionLite;
+    public const int RepeatedStringExtensionLiteFieldNumber = 44;
+    public static pb::GeneratedExtensionBase<scg::IList<string>> RepeatedStringExtensionLite;
+    public const int RepeatedBytesExtensionLiteFieldNumber = 45;
+    public static pb::GeneratedExtensionBase<scg::IList<pb::ByteString>> RepeatedBytesExtensionLite;
+    public const int RepeatedGroupExtensionLiteFieldNumber = 46;
+    public static pb::GeneratedExtensionBase<scg::IList<global::Google.ProtocolBuffers.TestProtos.RepeatedGroup_extension_lite>> RepeatedGroupExtensionLite;
+    public const int RepeatedNestedMessageExtensionLiteFieldNumber = 48;
+    public static pb::GeneratedExtensionBase<scg::IList<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage>> RepeatedNestedMessageExtensionLite;
+    public const int RepeatedForeignMessageExtensionLiteFieldNumber = 49;
+    public static pb::GeneratedExtensionBase<scg::IList<global::Google.ProtocolBuffers.TestProtos.ForeignMessageLite>> RepeatedForeignMessageExtensionLite;
+    public const int RepeatedImportMessageExtensionLiteFieldNumber = 50;
+    public static pb::GeneratedExtensionBase<scg::IList<global::Google.ProtocolBuffers.TestProtos.ImportMessageLite>> RepeatedImportMessageExtensionLite;
+    public const int RepeatedNestedEnumExtensionLiteFieldNumber = 51;
+    public static pb::GeneratedExtensionBase<scg::IList<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedEnum>> RepeatedNestedEnumExtensionLite;
+    public const int RepeatedForeignEnumExtensionLiteFieldNumber = 52;
+    public static pb::GeneratedExtensionBase<scg::IList<global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite>> RepeatedForeignEnumExtensionLite;
+    public const int RepeatedImportEnumExtensionLiteFieldNumber = 53;
+    public static pb::GeneratedExtensionBase<scg::IList<global::Google.ProtocolBuffers.TestProtos.ImportEnumLite>> RepeatedImportEnumExtensionLite;
+    public const int RepeatedStringPieceExtensionLiteFieldNumber = 54;
+    public static pb::GeneratedExtensionBase<scg::IList<string>> RepeatedStringPieceExtensionLite;
+    public const int RepeatedCordExtensionLiteFieldNumber = 55;
+    public static pb::GeneratedExtensionBase<scg::IList<string>> RepeatedCordExtensionLite;
+    public const int DefaultInt32ExtensionLiteFieldNumber = 61;
+    public static pb::GeneratedExtensionBase<int> DefaultInt32ExtensionLite;
+    public const int DefaultInt64ExtensionLiteFieldNumber = 62;
+    public static pb::GeneratedExtensionBase<long> DefaultInt64ExtensionLite;
+    public const int DefaultUint32ExtensionLiteFieldNumber = 63;
+    [global::System.CLSCompliant(false)]
+    public static pb::GeneratedExtensionBase<uint> DefaultUint32ExtensionLite;
+    public const int DefaultUint64ExtensionLiteFieldNumber = 64;
+    [global::System.CLSCompliant(false)]
+    public static pb::GeneratedExtensionBase<ulong> DefaultUint64ExtensionLite;
+    public const int DefaultSint32ExtensionLiteFieldNumber = 65;
+    public static pb::GeneratedExtensionBase<int> DefaultSint32ExtensionLite;
+    public const int DefaultSint64ExtensionLiteFieldNumber = 66;
+    public static pb::GeneratedExtensionBase<long> DefaultSint64ExtensionLite;
+    public const int DefaultFixed32ExtensionLiteFieldNumber = 67;
+    [global::System.CLSCompliant(false)]
+    public static pb::GeneratedExtensionBase<uint> DefaultFixed32ExtensionLite;
+    public const int DefaultFixed64ExtensionLiteFieldNumber = 68;
+    [global::System.CLSCompliant(false)]
+    public static pb::GeneratedExtensionBase<ulong> DefaultFixed64ExtensionLite;
+    public const int DefaultSfixed32ExtensionLiteFieldNumber = 69;
+    public static pb::GeneratedExtensionBase<int> DefaultSfixed32ExtensionLite;
+    public const int DefaultSfixed64ExtensionLiteFieldNumber = 70;
+    public static pb::GeneratedExtensionBase<long> DefaultSfixed64ExtensionLite;
+    public const int DefaultFloatExtensionLiteFieldNumber = 71;
+    public static pb::GeneratedExtensionBase<float> DefaultFloatExtensionLite;
+    public const int DefaultDoubleExtensionLiteFieldNumber = 72;
+    public static pb::GeneratedExtensionBase<double> DefaultDoubleExtensionLite;
+    public const int DefaultBoolExtensionLiteFieldNumber = 73;
+    public static pb::GeneratedExtensionBase<bool> DefaultBoolExtensionLite;
+    public const int DefaultStringExtensionLiteFieldNumber = 74;
+    public static pb::GeneratedExtensionBase<string> DefaultStringExtensionLite;
+    public const int DefaultBytesExtensionLiteFieldNumber = 75;
+    public static pb::GeneratedExtensionBase<pb::ByteString> DefaultBytesExtensionLite;
+    public const int DefaultNestedEnumExtensionLiteFieldNumber = 81;
+    public static pb::GeneratedExtensionBase<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedEnum> DefaultNestedEnumExtensionLite;
+    public const int DefaultForeignEnumExtensionLiteFieldNumber = 82;
+    public static pb::GeneratedExtensionBase<global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite> DefaultForeignEnumExtensionLite;
+    public const int DefaultImportEnumExtensionLiteFieldNumber = 83;
+    public static pb::GeneratedExtensionBase<global::Google.ProtocolBuffers.TestProtos.ImportEnumLite> DefaultImportEnumExtensionLite;
+    public const int DefaultStringPieceExtensionLiteFieldNumber = 84;
+    public static pb::GeneratedExtensionBase<string> DefaultStringPieceExtensionLite;
+    public const int DefaultCordExtensionLiteFieldNumber = 85;
+    public static pb::GeneratedExtensionBase<string> DefaultCordExtensionLite;
+    public const int PackedInt32ExtensionLiteFieldNumber = 90;
+    public static pb::GeneratedExtensionBase<scg::IList<int>> PackedInt32ExtensionLite;
+    public const int PackedInt64ExtensionLiteFieldNumber = 91;
+    public static pb::GeneratedExtensionBase<scg::IList<long>> PackedInt64ExtensionLite;
+    public const int PackedUint32ExtensionLiteFieldNumber = 92;
+    [global::System.CLSCompliant(false)]
+    public static pb::GeneratedExtensionBase<scg::IList<uint>> PackedUint32ExtensionLite;
+    public const int PackedUint64ExtensionLiteFieldNumber = 93;
+    [global::System.CLSCompliant(false)]
+    public static pb::GeneratedExtensionBase<scg::IList<ulong>> PackedUint64ExtensionLite;
+    public const int PackedSint32ExtensionLiteFieldNumber = 94;
+    public static pb::GeneratedExtensionBase<scg::IList<int>> PackedSint32ExtensionLite;
+    public const int PackedSint64ExtensionLiteFieldNumber = 95;
+    public static pb::GeneratedExtensionBase<scg::IList<long>> PackedSint64ExtensionLite;
+    public const int PackedFixed32ExtensionLiteFieldNumber = 96;
+    [global::System.CLSCompliant(false)]
+    public static pb::GeneratedExtensionBase<scg::IList<uint>> PackedFixed32ExtensionLite;
+    public const int PackedFixed64ExtensionLiteFieldNumber = 97;
+    [global::System.CLSCompliant(false)]
+    public static pb::GeneratedExtensionBase<scg::IList<ulong>> PackedFixed64ExtensionLite;
+    public const int PackedSfixed32ExtensionLiteFieldNumber = 98;
+    public static pb::GeneratedExtensionBase<scg::IList<int>> PackedSfixed32ExtensionLite;
+    public const int PackedSfixed64ExtensionLiteFieldNumber = 99;
+    public static pb::GeneratedExtensionBase<scg::IList<long>> PackedSfixed64ExtensionLite;
+    public const int PackedFloatExtensionLiteFieldNumber = 100;
+    public static pb::GeneratedExtensionBase<scg::IList<float>> PackedFloatExtensionLite;
+    public const int PackedDoubleExtensionLiteFieldNumber = 101;
+    public static pb::GeneratedExtensionBase<scg::IList<double>> PackedDoubleExtensionLite;
+    public const int PackedBoolExtensionLiteFieldNumber = 102;
+    public static pb::GeneratedExtensionBase<scg::IList<bool>> PackedBoolExtensionLite;
+    public const int PackedEnumExtensionLiteFieldNumber = 103;
+    public static pb::GeneratedExtensionBase<scg::IList<global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite>> PackedEnumExtensionLite;
+    #endregion
+    
+    #region Static variables
+    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestAllTypesLite__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite, global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Builder> internal__static_protobuf_unittest_TestAllTypesLite__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestAllTypesLite_NestedMessage__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage, global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage.Builder> internal__static_protobuf_unittest_TestAllTypesLite_NestedMessage__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestAllTypesLite_OptionalGroup__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.OptionalGroup, global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.OptionalGroup.Builder> internal__static_protobuf_unittest_TestAllTypesLite_OptionalGroup__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestAllTypesLite_RepeatedGroup__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.RepeatedGroup, global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.RepeatedGroup.Builder> internal__static_protobuf_unittest_TestAllTypesLite_RepeatedGroup__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_ForeignMessageLite__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.ForeignMessageLite, global::Google.ProtocolBuffers.TestProtos.ForeignMessageLite.Builder> internal__static_protobuf_unittest_ForeignMessageLite__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestPackedTypesLite__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestPackedTypesLite, global::Google.ProtocolBuffers.TestProtos.TestPackedTypesLite.Builder> internal__static_protobuf_unittest_TestPackedTypesLite__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestAllExtensionsLite__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.Builder> internal__static_protobuf_unittest_TestAllExtensionsLite__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_OptionalGroup_extension_lite__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.OptionalGroup_extension_lite, global::Google.ProtocolBuffers.TestProtos.OptionalGroup_extension_lite.Builder> internal__static_protobuf_unittest_OptionalGroup_extension_lite__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_RepeatedGroup_extension_lite__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.RepeatedGroup_extension_lite, global::Google.ProtocolBuffers.TestProtos.RepeatedGroup_extension_lite.Builder> internal__static_protobuf_unittest_RepeatedGroup_extension_lite__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestPackedExtensionsLite__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestPackedExtensionsLite, global::Google.ProtocolBuffers.TestProtos.TestPackedExtensionsLite.Builder> internal__static_protobuf_unittest_TestPackedExtensionsLite__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestNestedExtensionLite__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestNestedExtensionLite, global::Google.ProtocolBuffers.TestProtos.TestNestedExtensionLite.Builder> internal__static_protobuf_unittest_TestNestedExtensionLite__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestDeprecatedLite__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestDeprecatedLite, global::Google.ProtocolBuffers.TestProtos.TestDeprecatedLite.Builder> internal__static_protobuf_unittest_TestDeprecatedLite__FieldAccessorTable;
+    #endregion
+    #region Descriptor
+    public static pbd::FileDescriptor Descriptor {
+      get { return descriptor; }
+    }
+    private static pbd::FileDescriptor descriptor;
+    
+    static UnitTestLiteProtoFile() {
+      byte[] descriptorData = global::System.Convert.FromBase64String(
+          "CiNnb29nbGUvcHJvdG9idWYvdW5pdHRlc3RfbGl0ZS5wcm90bxIRcHJvdG9i" + 
+          "dWZfdW5pdHRlc3QaJGdvb2dsZS9wcm90b2J1Zi9jc2hhcnBfb3B0aW9ucy5w" + 
+          "cm90bxoqZ29vZ2xlL3Byb3RvYnVmL3VuaXR0ZXN0X2ltcG9ydF9saXRlLnBy" + 
+          "b3RvIo0WChBUZXN0QWxsVHlwZXNMaXRlEhYKDm9wdGlvbmFsX2ludDMyGAEg" + 
+          "ASgFEhYKDm9wdGlvbmFsX2ludDY0GAIgASgDEhcKD29wdGlvbmFsX3VpbnQz" + 
+          "MhgDIAEoDRIXCg9vcHRpb25hbF91aW50NjQYBCABKAQSFwoPb3B0aW9uYWxf" + 
+          "c2ludDMyGAUgASgREhcKD29wdGlvbmFsX3NpbnQ2NBgGIAEoEhIYChBvcHRp" + 
+          "b25hbF9maXhlZDMyGAcgASgHEhgKEG9wdGlvbmFsX2ZpeGVkNjQYCCABKAYS" + 
+          "GQoRb3B0aW9uYWxfc2ZpeGVkMzIYCSABKA8SGQoRb3B0aW9uYWxfc2ZpeGVk" + 
+          "NjQYCiABKBASFgoOb3B0aW9uYWxfZmxvYXQYCyABKAISFwoPb3B0aW9uYWxf" + 
+          "ZG91YmxlGAwgASgBEhUKDW9wdGlvbmFsX2Jvb2wYDSABKAgSFwoPb3B0aW9u" + 
+          "YWxfc3RyaW5nGA4gASgJEhYKDm9wdGlvbmFsX2J5dGVzGA8gASgMEkgKDW9w" + 
+          "dGlvbmFsZ3JvdXAYECABKAoyMS5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxs" + 
+          "VHlwZXNMaXRlLk9wdGlvbmFsR3JvdXASUgoXb3B0aW9uYWxfbmVzdGVkX21l" + 
+          "c3NhZ2UYEiABKAsyMS5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsVHlwZXNM" + 
+          "aXRlLk5lc3RlZE1lc3NhZ2USRwoYb3B0aW9uYWxfZm9yZWlnbl9tZXNzYWdl" + 
+          "GBMgASgLMiUucHJvdG9idWZfdW5pdHRlc3QuRm9yZWlnbk1lc3NhZ2VMaXRl" + 
+          "EkwKF29wdGlvbmFsX2ltcG9ydF9tZXNzYWdlGBQgASgLMisucHJvdG9idWZf" + 
+          "dW5pdHRlc3RfaW1wb3J0LkltcG9ydE1lc3NhZ2VMaXRlEkwKFG9wdGlvbmFs" + 
+          "X25lc3RlZF9lbnVtGBUgASgOMi4ucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFs" + 
+          "bFR5cGVzTGl0ZS5OZXN0ZWRFbnVtEkEKFW9wdGlvbmFsX2ZvcmVpZ25fZW51" + 
+          "bRgWIAEoDjIiLnByb3RvYnVmX3VuaXR0ZXN0LkZvcmVpZ25FbnVtTGl0ZRJG" + 
+          "ChRvcHRpb25hbF9pbXBvcnRfZW51bRgXIAEoDjIoLnByb3RvYnVmX3VuaXR0" + 
+          "ZXN0X2ltcG9ydC5JbXBvcnRFbnVtTGl0ZRIhChVvcHRpb25hbF9zdHJpbmdf" + 
+          "cGllY2UYGCABKAlCAggCEhkKDW9wdGlvbmFsX2NvcmQYGSABKAlCAggBEhYK" + 
+          "DnJlcGVhdGVkX2ludDMyGB8gAygFEhYKDnJlcGVhdGVkX2ludDY0GCAgAygD" + 
+          "EhcKD3JlcGVhdGVkX3VpbnQzMhghIAMoDRIXCg9yZXBlYXRlZF91aW50NjQY" + 
+          "IiADKAQSFwoPcmVwZWF0ZWRfc2ludDMyGCMgAygREhcKD3JlcGVhdGVkX3Np" + 
+          "bnQ2NBgkIAMoEhIYChByZXBlYXRlZF9maXhlZDMyGCUgAygHEhgKEHJlcGVh" + 
+          "dGVkX2ZpeGVkNjQYJiADKAYSGQoRcmVwZWF0ZWRfc2ZpeGVkMzIYJyADKA8S" + 
+          "GQoRcmVwZWF0ZWRfc2ZpeGVkNjQYKCADKBASFgoOcmVwZWF0ZWRfZmxvYXQY" + 
+          "KSADKAISFwoPcmVwZWF0ZWRfZG91YmxlGCogAygBEhUKDXJlcGVhdGVkX2Jv" + 
+          "b2wYKyADKAgSFwoPcmVwZWF0ZWRfc3RyaW5nGCwgAygJEhYKDnJlcGVhdGVk" + 
+          "X2J5dGVzGC0gAygMEkgKDXJlcGVhdGVkZ3JvdXAYLiADKAoyMS5wcm90b2J1" + 
+          "Zl91bml0dGVzdC5UZXN0QWxsVHlwZXNMaXRlLlJlcGVhdGVkR3JvdXASUgoX" + 
+          "cmVwZWF0ZWRfbmVzdGVkX21lc3NhZ2UYMCADKAsyMS5wcm90b2J1Zl91bml0" + 
+          "dGVzdC5UZXN0QWxsVHlwZXNMaXRlLk5lc3RlZE1lc3NhZ2USRwoYcmVwZWF0" + 
+          "ZWRfZm9yZWlnbl9tZXNzYWdlGDEgAygLMiUucHJvdG9idWZfdW5pdHRlc3Qu" + 
+          "Rm9yZWlnbk1lc3NhZ2VMaXRlEkwKF3JlcGVhdGVkX2ltcG9ydF9tZXNzYWdl" + 
+          "GDIgAygLMisucHJvdG9idWZfdW5pdHRlc3RfaW1wb3J0LkltcG9ydE1lc3Nh" + 
+          "Z2VMaXRlEkwKFHJlcGVhdGVkX25lc3RlZF9lbnVtGDMgAygOMi4ucHJvdG9i" + 
+          "dWZfdW5pdHRlc3QuVGVzdEFsbFR5cGVzTGl0ZS5OZXN0ZWRFbnVtEkEKFXJl" + 
+          "cGVhdGVkX2ZvcmVpZ25fZW51bRg0IAMoDjIiLnByb3RvYnVmX3VuaXR0ZXN0" + 
+          "LkZvcmVpZ25FbnVtTGl0ZRJGChRyZXBlYXRlZF9pbXBvcnRfZW51bRg1IAMo" + 
+          "DjIoLnByb3RvYnVmX3VuaXR0ZXN0X2ltcG9ydC5JbXBvcnRFbnVtTGl0ZRIh" + 
+          "ChVyZXBlYXRlZF9zdHJpbmdfcGllY2UYNiADKAlCAggCEhkKDXJlcGVhdGVk" + 
+          "X2NvcmQYNyADKAlCAggBEhkKDWRlZmF1bHRfaW50MzIYPSABKAU6AjQxEhkK" + 
+          "DWRlZmF1bHRfaW50NjQYPiABKAM6AjQyEhoKDmRlZmF1bHRfdWludDMyGD8g" + 
+          "ASgNOgI0MxIaCg5kZWZhdWx0X3VpbnQ2NBhAIAEoBDoCNDQSGwoOZGVmYXVs" + 
+          "dF9zaW50MzIYQSABKBE6Ay00NRIaCg5kZWZhdWx0X3NpbnQ2NBhCIAEoEjoC" + 
+          "NDYSGwoPZGVmYXVsdF9maXhlZDMyGEMgASgHOgI0NxIbCg9kZWZhdWx0X2Zp" + 
+          "eGVkNjQYRCABKAY6AjQ4EhwKEGRlZmF1bHRfc2ZpeGVkMzIYRSABKA86AjQ5" + 
+          "Eh0KEGRlZmF1bHRfc2ZpeGVkNjQYRiABKBA6Ay01MBIbCg1kZWZhdWx0X2Zs" + 
+          "b2F0GEcgASgCOgQ1MS41Eh0KDmRlZmF1bHRfZG91YmxlGEggASgBOgU1MjAw" + 
+          "MBIaCgxkZWZhdWx0X2Jvb2wYSSABKAg6BHRydWUSHQoOZGVmYXVsdF9zdHJp" + 
+          "bmcYSiABKAk6BWhlbGxvEhwKDWRlZmF1bHRfYnl0ZXMYSyABKAw6BXdvcmxk" + 
+          "ElAKE2RlZmF1bHRfbmVzdGVkX2VudW0YUSABKA4yLi5wcm90b2J1Zl91bml0" + 
+          "dGVzdC5UZXN0QWxsVHlwZXNMaXRlLk5lc3RlZEVudW06A0JBUhJSChRkZWZh" + 
+          "dWx0X2ZvcmVpZ25fZW51bRhSIAEoDjIiLnByb3RvYnVmX3VuaXR0ZXN0LkZv" + 
+          "cmVpZ25FbnVtTGl0ZToQRk9SRUlHTl9MSVRFX0JBUhJWChNkZWZhdWx0X2lt" + 
+          "cG9ydF9lbnVtGFMgASgOMigucHJvdG9idWZfdW5pdHRlc3RfaW1wb3J0Lklt" + 
+          "cG9ydEVudW1MaXRlOg9JTVBPUlRfTElURV9CQVISJQoUZGVmYXVsdF9zdHJp" + 
+          "bmdfcGllY2UYVCABKAk6A2FiY0ICCAISHQoMZGVmYXVsdF9jb3JkGFUgASgJ" + 
+          "OgMxMjNCAggBGhsKDU5lc3RlZE1lc3NhZ2USCgoCYmIYASABKAUaGgoNT3B0" + 
+          "aW9uYWxHcm91cBIJCgFhGBEgASgFGhoKDVJlcGVhdGVkR3JvdXASCQoBYRgv" + 
+          "IAEoBSInCgpOZXN0ZWRFbnVtEgcKA0ZPTxABEgcKA0JBUhACEgcKA0JBWhAD" + 
+          "Ih8KEkZvcmVpZ25NZXNzYWdlTGl0ZRIJCgFjGAEgASgFIrIDChNUZXN0UGFj" + 
+          "a2VkVHlwZXNMaXRlEhgKDHBhY2tlZF9pbnQzMhhaIAMoBUICEAESGAoMcGFj" + 
+          "a2VkX2ludDY0GFsgAygDQgIQARIZCg1wYWNrZWRfdWludDMyGFwgAygNQgIQ" + 
+          "ARIZCg1wYWNrZWRfdWludDY0GF0gAygEQgIQARIZCg1wYWNrZWRfc2ludDMy" + 
+          "GF4gAygRQgIQARIZCg1wYWNrZWRfc2ludDY0GF8gAygSQgIQARIaCg5wYWNr" + 
+          "ZWRfZml4ZWQzMhhgIAMoB0ICEAESGgoOcGFja2VkX2ZpeGVkNjQYYSADKAZC" + 
+          "AhABEhsKD3BhY2tlZF9zZml4ZWQzMhhiIAMoD0ICEAESGwoPcGFja2VkX3Nm" + 
+          "aXhlZDY0GGMgAygQQgIQARIYCgxwYWNrZWRfZmxvYXQYZCADKAJCAhABEhkK" + 
+          "DXBhY2tlZF9kb3VibGUYZSADKAFCAhABEhcKC3BhY2tlZF9ib29sGGYgAygI" + 
+          "QgIQARI7CgtwYWNrZWRfZW51bRhnIAMoDjIiLnByb3RvYnVmX3VuaXR0ZXN0" + 
+          "LkZvcmVpZ25FbnVtTGl0ZUICEAEiIQoVVGVzdEFsbEV4dGVuc2lvbnNMaXRl" + 
+          "KggIARCAgICAAiIpChxPcHRpb25hbEdyb3VwX2V4dGVuc2lvbl9saXRlEgkK" + 
+          "AWEYESABKAUiKQocUmVwZWF0ZWRHcm91cF9leHRlbnNpb25fbGl0ZRIJCgFh" + 
+          "GC8gASgFIiQKGFRlc3RQYWNrZWRFeHRlbnNpb25zTGl0ZSoICAEQgICAgAIi" + 
+          "XgoXVGVzdE5lc3RlZEV4dGVuc2lvbkxpdGUyQwoQbmVzdGVkX2V4dGVuc2lv" + 
+          "bhIoLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zTGl0ZRi5" + 
+          "YCABKAUiMgoSVGVzdERlcHJlY2F0ZWRMaXRlEhwKEGRlcHJlY2F0ZWRfZmll" + 
+          "bGQYASABKAVCAhgBKlMKD0ZvcmVpZ25FbnVtTGl0ZRIUChBGT1JFSUdOX0xJ" + 
+          "VEVfRk9PEAQSFAoQRk9SRUlHTl9MSVRFX0JBUhAFEhQKEEZPUkVJR05fTElU" + 
+          "RV9CQVoQBjpPCh1vcHRpb25hbF9pbnQzMl9leHRlbnNpb25fbGl0ZRIoLnBy" + 
+          "b3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zTGl0ZRgBIAEoBTpP" + 
+          "Ch1vcHRpb25hbF9pbnQ2NF9leHRlbnNpb25fbGl0ZRIoLnByb3RvYnVmX3Vu" + 
+          "aXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zTGl0ZRgCIAEoAzpQCh5vcHRpb25h" + 
+          "bF91aW50MzJfZXh0ZW5zaW9uX2xpdGUSKC5wcm90b2J1Zl91bml0dGVzdC5U" + 
+          "ZXN0QWxsRXh0ZW5zaW9uc0xpdGUYAyABKA06UAoeb3B0aW9uYWxfdWludDY0" + 
+          "X2V4dGVuc2lvbl9saXRlEigucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4" + 
+          "dGVuc2lvbnNMaXRlGAQgASgEOlAKHm9wdGlvbmFsX3NpbnQzMl9leHRlbnNp" + 
+          "b25fbGl0ZRIoLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25z" + 
+          "TGl0ZRgFIAEoETpQCh5vcHRpb25hbF9zaW50NjRfZXh0ZW5zaW9uX2xpdGUS" + 
+          "KC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9uc0xpdGUYBiAB" + 
+          "KBI6UQofb3B0aW9uYWxfZml4ZWQzMl9leHRlbnNpb25fbGl0ZRIoLnByb3Rv" + 
+          "YnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zTGl0ZRgHIAEoBzpRCh9v" + 
+          "cHRpb25hbF9maXhlZDY0X2V4dGVuc2lvbl9saXRlEigucHJvdG9idWZfdW5p" + 
+          "dHRlc3QuVGVzdEFsbEV4dGVuc2lvbnNMaXRlGAggASgGOlIKIG9wdGlvbmFs" + 
+          "X3NmaXhlZDMyX2V4dGVuc2lvbl9saXRlEigucHJvdG9idWZfdW5pdHRlc3Qu" + 
+          "VGVzdEFsbEV4dGVuc2lvbnNMaXRlGAkgASgPOlIKIG9wdGlvbmFsX3NmaXhl" + 
+          "ZDY0X2V4dGVuc2lvbl9saXRlEigucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFs" + 
+          "bEV4dGVuc2lvbnNMaXRlGAogASgQOk8KHW9wdGlvbmFsX2Zsb2F0X2V4dGVu" + 
+          "c2lvbl9saXRlEigucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lv" + 
+          "bnNMaXRlGAsgASgCOlAKHm9wdGlvbmFsX2RvdWJsZV9leHRlbnNpb25fbGl0" + 
+          "ZRIoLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zTGl0ZRgM" + 
+          "IAEoATpOChxvcHRpb25hbF9ib29sX2V4dGVuc2lvbl9saXRlEigucHJvdG9i" + 
+          "dWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnNMaXRlGA0gASgIOlAKHm9w" + 
+          "dGlvbmFsX3N0cmluZ19leHRlbnNpb25fbGl0ZRIoLnByb3RvYnVmX3VuaXR0" + 
+          "ZXN0LlRlc3RBbGxFeHRlbnNpb25zTGl0ZRgOIAEoCTpPCh1vcHRpb25hbF9i" + 
+          "eXRlc19leHRlbnNpb25fbGl0ZRIoLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RB" + 
+          "bGxFeHRlbnNpb25zTGl0ZRgPIAEoDDp/ChxvcHRpb25hbGdyb3VwX2V4dGVu" + 
+          "c2lvbl9saXRlEigucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lv" + 
+          "bnNMaXRlGBAgASgKMi8ucHJvdG9idWZfdW5pdHRlc3QuT3B0aW9uYWxHcm91" + 
+          "cF9leHRlbnNpb25fbGl0ZTqLAQomb3B0aW9uYWxfbmVzdGVkX21lc3NhZ2Vf" + 
+          "ZXh0ZW5zaW9uX2xpdGUSKC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0" + 
+          "ZW5zaW9uc0xpdGUYEiABKAsyMS5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxs" + 
+          "VHlwZXNMaXRlLk5lc3RlZE1lc3NhZ2U6gAEKJ29wdGlvbmFsX2ZvcmVpZ25f" + 
+          "bWVzc2FnZV9leHRlbnNpb25fbGl0ZRIoLnByb3RvYnVmX3VuaXR0ZXN0LlRl" + 
+          "c3RBbGxFeHRlbnNpb25zTGl0ZRgTIAEoCzIlLnByb3RvYnVmX3VuaXR0ZXN0" + 
+          "LkZvcmVpZ25NZXNzYWdlTGl0ZTqFAQomb3B0aW9uYWxfaW1wb3J0X21lc3Nh" + 
+          "Z2VfZXh0ZW5zaW9uX2xpdGUSKC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxs" + 
+          "RXh0ZW5zaW9uc0xpdGUYFCABKAsyKy5wcm90b2J1Zl91bml0dGVzdF9pbXBv" + 
+          "cnQuSW1wb3J0TWVzc2FnZUxpdGU6hQEKI29wdGlvbmFsX25lc3RlZF9lbnVt" + 
+          "X2V4dGVuc2lvbl9saXRlEigucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4" + 
+          "dGVuc2lvbnNMaXRlGBUgASgOMi4ucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFs" + 
+          "bFR5cGVzTGl0ZS5OZXN0ZWRFbnVtOnoKJG9wdGlvbmFsX2ZvcmVpZ25fZW51" + 
+          "bV9leHRlbnNpb25fbGl0ZRIoLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxF" + 
+          "eHRlbnNpb25zTGl0ZRgWIAEoDjIiLnByb3RvYnVmX3VuaXR0ZXN0LkZvcmVp" + 
+          "Z25FbnVtTGl0ZTp/CiNvcHRpb25hbF9pbXBvcnRfZW51bV9leHRlbnNpb25f" + 
+          "bGl0ZRIoLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zTGl0" + 
+          "ZRgXIAEoDjIoLnByb3RvYnVmX3VuaXR0ZXN0X2ltcG9ydC5JbXBvcnRFbnVt" + 
+          "TGl0ZTpaCiRvcHRpb25hbF9zdHJpbmdfcGllY2VfZXh0ZW5zaW9uX2xpdGUS" + 
+          "KC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9uc0xpdGUYGCAB" + 
+          "KAlCAggCOlIKHG9wdGlvbmFsX2NvcmRfZXh0ZW5zaW9uX2xpdGUSKC5wcm90" + 
+          "b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9uc0xpdGUYGSABKAlCAggB" + 
+          "Ok8KHXJlcGVhdGVkX2ludDMyX2V4dGVuc2lvbl9saXRlEigucHJvdG9idWZf" + 
+          "dW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnNMaXRlGB8gAygFOk8KHXJlcGVh" + 
+          "dGVkX2ludDY0X2V4dGVuc2lvbl9saXRlEigucHJvdG9idWZfdW5pdHRlc3Qu" + 
+          "VGVzdEFsbEV4dGVuc2lvbnNMaXRlGCAgAygDOlAKHnJlcGVhdGVkX3VpbnQz" + 
+          "Ml9leHRlbnNpb25fbGl0ZRIoLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxF" + 
+          "eHRlbnNpb25zTGl0ZRghIAMoDTpQCh5yZXBlYXRlZF91aW50NjRfZXh0ZW5z" + 
+          "aW9uX2xpdGUSKC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9u" + 
+          "c0xpdGUYIiADKAQ6UAoecmVwZWF0ZWRfc2ludDMyX2V4dGVuc2lvbl9saXRl" + 
+          "EigucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnNMaXRlGCMg" + 
+          "AygROlAKHnJlcGVhdGVkX3NpbnQ2NF9leHRlbnNpb25fbGl0ZRIoLnByb3Rv" + 
+          "YnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zTGl0ZRgkIAMoEjpRCh9y" + 
+          "ZXBlYXRlZF9maXhlZDMyX2V4dGVuc2lvbl9saXRlEigucHJvdG9idWZfdW5p" + 
+          "dHRlc3QuVGVzdEFsbEV4dGVuc2lvbnNMaXRlGCUgAygHOlEKH3JlcGVhdGVk" + 
+          "X2ZpeGVkNjRfZXh0ZW5zaW9uX2xpdGUSKC5wcm90b2J1Zl91bml0dGVzdC5U" + 
+          "ZXN0QWxsRXh0ZW5zaW9uc0xpdGUYJiADKAY6UgogcmVwZWF0ZWRfc2ZpeGVk" + 
+          "MzJfZXh0ZW5zaW9uX2xpdGUSKC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxs" + 
+          "RXh0ZW5zaW9uc0xpdGUYJyADKA86UgogcmVwZWF0ZWRfc2ZpeGVkNjRfZXh0" + 
+          "ZW5zaW9uX2xpdGUSKC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5z" + 
+          "aW9uc0xpdGUYKCADKBA6TwodcmVwZWF0ZWRfZmxvYXRfZXh0ZW5zaW9uX2xp" + 
+          "dGUSKC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9uc0xpdGUY" + 
+          "KSADKAI6UAoecmVwZWF0ZWRfZG91YmxlX2V4dGVuc2lvbl9saXRlEigucHJv" + 
+          "dG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnNMaXRlGCogAygBOk4K" + 
+          "HHJlcGVhdGVkX2Jvb2xfZXh0ZW5zaW9uX2xpdGUSKC5wcm90b2J1Zl91bml0" + 
+          "dGVzdC5UZXN0QWxsRXh0ZW5zaW9uc0xpdGUYKyADKAg6UAoecmVwZWF0ZWRf" + 
+          "c3RyaW5nX2V4dGVuc2lvbl9saXRlEigucHJvdG9idWZfdW5pdHRlc3QuVGVz" + 
+          "dEFsbEV4dGVuc2lvbnNMaXRlGCwgAygJOk8KHXJlcGVhdGVkX2J5dGVzX2V4" + 
+          "dGVuc2lvbl9saXRlEigucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVu" + 
+          "c2lvbnNMaXRlGC0gAygMOn8KHHJlcGVhdGVkZ3JvdXBfZXh0ZW5zaW9uX2xp" + 
+          "dGUSKC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9uc0xpdGUY" + 
+          "LiADKAoyLy5wcm90b2J1Zl91bml0dGVzdC5SZXBlYXRlZEdyb3VwX2V4dGVu" + 
+          "c2lvbl9saXRlOosBCiZyZXBlYXRlZF9uZXN0ZWRfbWVzc2FnZV9leHRlbnNp" + 
+          "b25fbGl0ZRIoLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25z" + 
+          "TGl0ZRgwIAMoCzIxLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxUeXBlc0xp" + 
+          "dGUuTmVzdGVkTWVzc2FnZTqAAQoncmVwZWF0ZWRfZm9yZWlnbl9tZXNzYWdl" + 
+          "X2V4dGVuc2lvbl9saXRlEigucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4" + 
+          "dGVuc2lvbnNMaXRlGDEgAygLMiUucHJvdG9idWZfdW5pdHRlc3QuRm9yZWln" + 
+          "bk1lc3NhZ2VMaXRlOoUBCiZyZXBlYXRlZF9pbXBvcnRfbWVzc2FnZV9leHRl" + 
+          "bnNpb25fbGl0ZRIoLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNp" + 
+          "b25zTGl0ZRgyIAMoCzIrLnByb3RvYnVmX3VuaXR0ZXN0X2ltcG9ydC5JbXBv" + 
+          "cnRNZXNzYWdlTGl0ZTqFAQojcmVwZWF0ZWRfbmVzdGVkX2VudW1fZXh0ZW5z" + 
+          "aW9uX2xpdGUSKC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9u" + 
+          "c0xpdGUYMyADKA4yLi5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsVHlwZXNM" + 
+          "aXRlLk5lc3RlZEVudW06egokcmVwZWF0ZWRfZm9yZWlnbl9lbnVtX2V4dGVu" + 
+          "c2lvbl9saXRlEigucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lv" + 
+          "bnNMaXRlGDQgAygOMiIucHJvdG9idWZfdW5pdHRlc3QuRm9yZWlnbkVudW1M" + 
+          "aXRlOn8KI3JlcGVhdGVkX2ltcG9ydF9lbnVtX2V4dGVuc2lvbl9saXRlEigu" + 
+          "cHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnNMaXRlGDUgAygO" + 
+          "MigucHJvdG9idWZfdW5pdHRlc3RfaW1wb3J0LkltcG9ydEVudW1MaXRlOloK" + 
+          "JHJlcGVhdGVkX3N0cmluZ19waWVjZV9leHRlbnNpb25fbGl0ZRIoLnByb3Rv" + 
+          "YnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zTGl0ZRg2IAMoCUICCAI6" + 
+          "UgoccmVwZWF0ZWRfY29yZF9leHRlbnNpb25fbGl0ZRIoLnByb3RvYnVmX3Vu" + 
+          "aXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zTGl0ZRg3IAMoCUICCAE6UgocZGVm" + 
+          "YXVsdF9pbnQzMl9leHRlbnNpb25fbGl0ZRIoLnByb3RvYnVmX3VuaXR0ZXN0" + 
+          "LlRlc3RBbGxFeHRlbnNpb25zTGl0ZRg9IAEoBToCNDE6UgocZGVmYXVsdF9p" + 
+          "bnQ2NF9leHRlbnNpb25fbGl0ZRIoLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RB" + 
+          "bGxFeHRlbnNpb25zTGl0ZRg+IAEoAzoCNDI6UwodZGVmYXVsdF91aW50MzJf" + 
+          "ZXh0ZW5zaW9uX2xpdGUSKC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0" + 
+          "ZW5zaW9uc0xpdGUYPyABKA06AjQzOlMKHWRlZmF1bHRfdWludDY0X2V4dGVu" + 
+          "c2lvbl9saXRlEigucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lv" + 
+          "bnNMaXRlGEAgASgEOgI0NDpUCh1kZWZhdWx0X3NpbnQzMl9leHRlbnNpb25f" + 
+          "bGl0ZRIoLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zTGl0" + 
+          "ZRhBIAEoEToDLTQ1OlMKHWRlZmF1bHRfc2ludDY0X2V4dGVuc2lvbl9saXRl" + 
+          "EigucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnNMaXRlGEIg" + 
+          "ASgSOgI0NjpUCh5kZWZhdWx0X2ZpeGVkMzJfZXh0ZW5zaW9uX2xpdGUSKC5w" + 
+          "cm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9uc0xpdGUYQyABKAc6" + 
+          "AjQ3OlQKHmRlZmF1bHRfZml4ZWQ2NF9leHRlbnNpb25fbGl0ZRIoLnByb3Rv" + 
+          "YnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zTGl0ZRhEIAEoBjoCNDg6" + 
+          "VQofZGVmYXVsdF9zZml4ZWQzMl9leHRlbnNpb25fbGl0ZRIoLnByb3RvYnVm" + 
+          "X3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zTGl0ZRhFIAEoDzoCNDk6Vgof" + 
+          "ZGVmYXVsdF9zZml4ZWQ2NF9leHRlbnNpb25fbGl0ZRIoLnByb3RvYnVmX3Vu" + 
+          "aXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zTGl0ZRhGIAEoEDoDLTUwOlQKHGRl" + 
+          "ZmF1bHRfZmxvYXRfZXh0ZW5zaW9uX2xpdGUSKC5wcm90b2J1Zl91bml0dGVz" + 
+          "dC5UZXN0QWxsRXh0ZW5zaW9uc0xpdGUYRyABKAI6BDUxLjU6VgodZGVmYXVs" + 
+          "dF9kb3VibGVfZXh0ZW5zaW9uX2xpdGUSKC5wcm90b2J1Zl91bml0dGVzdC5U" + 
+          "ZXN0QWxsRXh0ZW5zaW9uc0xpdGUYSCABKAE6BTUyMDAwOlMKG2RlZmF1bHRf" + 
+          "Ym9vbF9leHRlbnNpb25fbGl0ZRIoLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RB" + 
+          "bGxFeHRlbnNpb25zTGl0ZRhJIAEoCDoEdHJ1ZTpWCh1kZWZhdWx0X3N0cmlu" + 
+          "Z19leHRlbnNpb25fbGl0ZRIoLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxF" + 
+          "eHRlbnNpb25zTGl0ZRhKIAEoCToFaGVsbG86VQocZGVmYXVsdF9ieXRlc19l" + 
+          "eHRlbnNpb25fbGl0ZRIoLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRl" + 
+          "bnNpb25zTGl0ZRhLIAEoDDoFd29ybGQ6iQEKImRlZmF1bHRfbmVzdGVkX2Vu" + 
+          "dW1fZXh0ZW5zaW9uX2xpdGUSKC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxs" + 
+          "RXh0ZW5zaW9uc0xpdGUYUSABKA4yLi5wcm90b2J1Zl91bml0dGVzdC5UZXN0" + 
+          "QWxsVHlwZXNMaXRlLk5lc3RlZEVudW06A0JBUjqLAQojZGVmYXVsdF9mb3Jl" + 
+          "aWduX2VudW1fZXh0ZW5zaW9uX2xpdGUSKC5wcm90b2J1Zl91bml0dGVzdC5U" + 
+          "ZXN0QWxsRXh0ZW5zaW9uc0xpdGUYUiABKA4yIi5wcm90b2J1Zl91bml0dGVz" + 
+          "dC5Gb3JlaWduRW51bUxpdGU6EEZPUkVJR05fTElURV9CQVI6jwEKImRlZmF1" + 
+          "bHRfaW1wb3J0X2VudW1fZXh0ZW5zaW9uX2xpdGUSKC5wcm90b2J1Zl91bml0" + 
+          "dGVzdC5UZXN0QWxsRXh0ZW5zaW9uc0xpdGUYUyABKA4yKC5wcm90b2J1Zl91" + 
+          "bml0dGVzdF9pbXBvcnQuSW1wb3J0RW51bUxpdGU6D0lNUE9SVF9MSVRFX0JB" + 
+          "UjpeCiNkZWZhdWx0X3N0cmluZ19waWVjZV9leHRlbnNpb25fbGl0ZRIoLnBy" + 
+          "b3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zTGl0ZRhUIAEoCToD" + 
+          "YWJjQgIIAjpWChtkZWZhdWx0X2NvcmRfZXh0ZW5zaW9uX2xpdGUSKC5wcm90" + 
+          "b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9uc0xpdGUYVSABKAk6AzEy" + 
+          "M0ICCAE6VAobcGFja2VkX2ludDMyX2V4dGVuc2lvbl9saXRlEisucHJvdG9i" + 
+          "dWZfdW5pdHRlc3QuVGVzdFBhY2tlZEV4dGVuc2lvbnNMaXRlGFogAygFQgIQ" + 
+          "ATpUChtwYWNrZWRfaW50NjRfZXh0ZW5zaW9uX2xpdGUSKy5wcm90b2J1Zl91" + 
+          "bml0dGVzdC5UZXN0UGFja2VkRXh0ZW5zaW9uc0xpdGUYWyADKANCAhABOlUK" + 
+          "HHBhY2tlZF91aW50MzJfZXh0ZW5zaW9uX2xpdGUSKy5wcm90b2J1Zl91bml0" + 
+          "dGVzdC5UZXN0UGFja2VkRXh0ZW5zaW9uc0xpdGUYXCADKA1CAhABOlUKHHBh" + 
+          "Y2tlZF91aW50NjRfZXh0ZW5zaW9uX2xpdGUSKy5wcm90b2J1Zl91bml0dGVz" + 
+          "dC5UZXN0UGFja2VkRXh0ZW5zaW9uc0xpdGUYXSADKARCAhABOlUKHHBhY2tl" + 
+          "ZF9zaW50MzJfZXh0ZW5zaW9uX2xpdGUSKy5wcm90b2J1Zl91bml0dGVzdC5U" + 
+          "ZXN0UGFja2VkRXh0ZW5zaW9uc0xpdGUYXiADKBFCAhABOlUKHHBhY2tlZF9z" + 
+          "aW50NjRfZXh0ZW5zaW9uX2xpdGUSKy5wcm90b2J1Zl91bml0dGVzdC5UZXN0" + 
+          "UGFja2VkRXh0ZW5zaW9uc0xpdGUYXyADKBJCAhABOlYKHXBhY2tlZF9maXhl" + 
+          "ZDMyX2V4dGVuc2lvbl9saXRlEisucHJvdG9idWZfdW5pdHRlc3QuVGVzdFBh" + 
+          "Y2tlZEV4dGVuc2lvbnNMaXRlGGAgAygHQgIQATpWCh1wYWNrZWRfZml4ZWQ2" + 
+          "NF9leHRlbnNpb25fbGl0ZRIrLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RQYWNr" + 
+          "ZWRFeHRlbnNpb25zTGl0ZRhhIAMoBkICEAE6VwoecGFja2VkX3NmaXhlZDMy" + 
+          "X2V4dGVuc2lvbl9saXRlEisucHJvdG9idWZfdW5pdHRlc3QuVGVzdFBhY2tl" + 
+          "ZEV4dGVuc2lvbnNMaXRlGGIgAygPQgIQATpXCh5wYWNrZWRfc2ZpeGVkNjRf" + 
+          "ZXh0ZW5zaW9uX2xpdGUSKy5wcm90b2J1Zl91bml0dGVzdC5UZXN0UGFja2Vk" + 
+          "RXh0ZW5zaW9uc0xpdGUYYyADKBBCAhABOlQKG3BhY2tlZF9mbG9hdF9leHRl" + 
+          "bnNpb25fbGl0ZRIrLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RQYWNrZWRFeHRl" + 
+          "bnNpb25zTGl0ZRhkIAMoAkICEAE6VQoccGFja2VkX2RvdWJsZV9leHRlbnNp" + 
+          "b25fbGl0ZRIrLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RQYWNrZWRFeHRlbnNp" + 
+          "b25zTGl0ZRhlIAMoAUICEAE6UwoacGFja2VkX2Jvb2xfZXh0ZW5zaW9uX2xp" + 
+          "dGUSKy5wcm90b2J1Zl91bml0dGVzdC5UZXN0UGFja2VkRXh0ZW5zaW9uc0xp" + 
+          "dGUYZiADKAhCAhABOncKGnBhY2tlZF9lbnVtX2V4dGVuc2lvbl9saXRlEisu" + 
+          "cHJvdG9idWZfdW5pdHRlc3QuVGVzdFBhY2tlZEV4dGVuc2lvbnNMaXRlGGcg" + 
+          "AygOMiIucHJvdG9idWZfdW5pdHRlc3QuRm9yZWlnbkVudW1MaXRlQgIQAUJU" + 
+          "ChNjb20uZ29vZ2xlLnByb3RvYnVmSAPCPjoKIUdvb2dsZS5Qcm90b2NvbEJ1" + 
+          "ZmZlcnMuVGVzdFByb3RvcxIVVW5pdFRlc3RMaXRlUHJvdG9GaWxl");
+      pbd::FileDescriptor.InternalDescriptorAssigner assigner = delegate(pbd::FileDescriptor root) {
+        descriptor = root;
+        internal__static_protobuf_unittest_TestAllTypesLite__Descriptor = Descriptor.MessageTypes[0];
+        internal__static_protobuf_unittest_TestAllTypesLite__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite, global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Builder>(internal__static_protobuf_unittest_TestAllTypesLite__Descriptor,
+                new string[] { "OptionalInt32", "OptionalInt64", "OptionalUint32", "OptionalUint64", "OptionalSint32", "OptionalSint64", "OptionalFixed32", "OptionalFixed64", "OptionalSfixed32", "OptionalSfixed64", "OptionalFloat", "OptionalDouble", "OptionalBool", "OptionalString", "OptionalBytes", "OptionalGroup", "OptionalNestedMessage", "OptionalForeignMessage", "OptionalImportMessage", "OptionalNestedEnum", "OptionalForeignEnum", "OptionalImportEnum", "OptionalStringPiece", "OptionalCord", "RepeatedInt32", "RepeatedInt64", "RepeatedUint32", "RepeatedUint64", "RepeatedSint32", "RepeatedSint64", "RepeatedFixed32", "RepeatedFixed64", "RepeatedSfixed32", "RepeatedSfixed64", "RepeatedFloat", "RepeatedDouble", "RepeatedBool", "RepeatedString", "RepeatedBytes", "RepeatedGroup", "RepeatedNestedMessage", "RepeatedForeignMessage", "RepeatedImportMessage", "RepeatedNestedEnum", "RepeatedForeignEnum", "RepeatedImportEnum", "RepeatedStringPiece", "RepeatedCord", "DefaultInt32", "DefaultInt64", "DefaultUint32", "DefaultUint64", "DefaultSint32", "DefaultSint64", "DefaultFixed32", "DefaultFixed64", "DefaultSfixed32", "DefaultSfixed64", "DefaultFloat", "DefaultDouble", "DefaultBool", "DefaultString", "DefaultBytes", "DefaultNestedEnum", "DefaultForeignEnum", "DefaultImportEnum", "DefaultStringPiece", "DefaultCord", });
+        internal__static_protobuf_unittest_TestAllTypesLite_NestedMessage__Descriptor = internal__static_protobuf_unittest_TestAllTypesLite__Descriptor.NestedTypes[0];
+        internal__static_protobuf_unittest_TestAllTypesLite_NestedMessage__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage, global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage.Builder>(internal__static_protobuf_unittest_TestAllTypesLite_NestedMessage__Descriptor,
+                new string[] { "Bb", });
+        internal__static_protobuf_unittest_TestAllTypesLite_OptionalGroup__Descriptor = internal__static_protobuf_unittest_TestAllTypesLite__Descriptor.NestedTypes[1];
+        internal__static_protobuf_unittest_TestAllTypesLite_OptionalGroup__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.OptionalGroup, global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.OptionalGroup.Builder>(internal__static_protobuf_unittest_TestAllTypesLite_OptionalGroup__Descriptor,
+                new string[] { "A", });
+        internal__static_protobuf_unittest_TestAllTypesLite_RepeatedGroup__Descriptor = internal__static_protobuf_unittest_TestAllTypesLite__Descriptor.NestedTypes[2];
+        internal__static_protobuf_unittest_TestAllTypesLite_RepeatedGroup__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.RepeatedGroup, global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.RepeatedGroup.Builder>(internal__static_protobuf_unittest_TestAllTypesLite_RepeatedGroup__Descriptor,
+                new string[] { "A", });
+        internal__static_protobuf_unittest_ForeignMessageLite__Descriptor = Descriptor.MessageTypes[1];
+        internal__static_protobuf_unittest_ForeignMessageLite__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.ForeignMessageLite, global::Google.ProtocolBuffers.TestProtos.ForeignMessageLite.Builder>(internal__static_protobuf_unittest_ForeignMessageLite__Descriptor,
+                new string[] { "C", });
+        internal__static_protobuf_unittest_TestPackedTypesLite__Descriptor = Descriptor.MessageTypes[2];
+        internal__static_protobuf_unittest_TestPackedTypesLite__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestPackedTypesLite, global::Google.ProtocolBuffers.TestProtos.TestPackedTypesLite.Builder>(internal__static_protobuf_unittest_TestPackedTypesLite__Descriptor,
+                new string[] { "PackedInt32", "PackedInt64", "PackedUint32", "PackedUint64", "PackedSint32", "PackedSint64", "PackedFixed32", "PackedFixed64", "PackedSfixed32", "PackedSfixed64", "PackedFloat", "PackedDouble", "PackedBool", "PackedEnum", });
+        internal__static_protobuf_unittest_TestAllExtensionsLite__Descriptor = Descriptor.MessageTypes[3];
+        internal__static_protobuf_unittest_TestAllExtensionsLite__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.Builder>(internal__static_protobuf_unittest_TestAllExtensionsLite__Descriptor,
+                new string[] { });
+        internal__static_protobuf_unittest_OptionalGroup_extension_lite__Descriptor = Descriptor.MessageTypes[4];
+        internal__static_protobuf_unittest_OptionalGroup_extension_lite__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.OptionalGroup_extension_lite, global::Google.ProtocolBuffers.TestProtos.OptionalGroup_extension_lite.Builder>(internal__static_protobuf_unittest_OptionalGroup_extension_lite__Descriptor,
+                new string[] { "A", });
+        internal__static_protobuf_unittest_RepeatedGroup_extension_lite__Descriptor = Descriptor.MessageTypes[5];
+        internal__static_protobuf_unittest_RepeatedGroup_extension_lite__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.RepeatedGroup_extension_lite, global::Google.ProtocolBuffers.TestProtos.RepeatedGroup_extension_lite.Builder>(internal__static_protobuf_unittest_RepeatedGroup_extension_lite__Descriptor,
+                new string[] { "A", });
+        internal__static_protobuf_unittest_TestPackedExtensionsLite__Descriptor = Descriptor.MessageTypes[6];
+        internal__static_protobuf_unittest_TestPackedExtensionsLite__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestPackedExtensionsLite, global::Google.ProtocolBuffers.TestProtos.TestPackedExtensionsLite.Builder>(internal__static_protobuf_unittest_TestPackedExtensionsLite__Descriptor,
+                new string[] { });
+        internal__static_protobuf_unittest_TestNestedExtensionLite__Descriptor = Descriptor.MessageTypes[7];
+        internal__static_protobuf_unittest_TestNestedExtensionLite__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestNestedExtensionLite, global::Google.ProtocolBuffers.TestProtos.TestNestedExtensionLite.Builder>(internal__static_protobuf_unittest_TestNestedExtensionLite__Descriptor,
+                new string[] { });
+        global::Google.ProtocolBuffers.TestProtos.TestNestedExtensionLite.NestedExtension = pb::GeneratedSingleExtension<int>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.TestNestedExtensionLite.Descriptor.Extensions[0]);
+        internal__static_protobuf_unittest_TestDeprecatedLite__Descriptor = Descriptor.MessageTypes[8];
+        internal__static_protobuf_unittest_TestDeprecatedLite__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestDeprecatedLite, global::Google.ProtocolBuffers.TestProtos.TestDeprecatedLite.Builder>(internal__static_protobuf_unittest_TestDeprecatedLite__Descriptor,
+                new string[] { "DeprecatedField", });
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.OptionalInt32ExtensionLite = pb::GeneratedSingleExtension<int>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[0]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.OptionalInt64ExtensionLite = pb::GeneratedSingleExtension<long>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[1]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.OptionalUint32ExtensionLite = pb::GeneratedSingleExtension<uint>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[2]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.OptionalUint64ExtensionLite = pb::GeneratedSingleExtension<ulong>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[3]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.OptionalSint32ExtensionLite = pb::GeneratedSingleExtension<int>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[4]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.OptionalSint64ExtensionLite = pb::GeneratedSingleExtension<long>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[5]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.OptionalFixed32ExtensionLite = pb::GeneratedSingleExtension<uint>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[6]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.OptionalFixed64ExtensionLite = pb::GeneratedSingleExtension<ulong>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[7]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.OptionalSfixed32ExtensionLite = pb::GeneratedSingleExtension<int>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[8]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.OptionalSfixed64ExtensionLite = pb::GeneratedSingleExtension<long>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[9]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.OptionalFloatExtensionLite = pb::GeneratedSingleExtension<float>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[10]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.OptionalDoubleExtensionLite = pb::GeneratedSingleExtension<double>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[11]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.OptionalBoolExtensionLite = pb::GeneratedSingleExtension<bool>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[12]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.OptionalStringExtensionLite = pb::GeneratedSingleExtension<string>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[13]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.OptionalBytesExtensionLite = pb::GeneratedSingleExtension<pb::ByteString>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[14]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.OptionalGroupExtensionLite = pb::GeneratedSingleExtension<global::Google.ProtocolBuffers.TestProtos.OptionalGroup_extension_lite>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[15]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.OptionalNestedMessageExtensionLite = pb::GeneratedSingleExtension<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[16]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.OptionalForeignMessageExtensionLite = pb::GeneratedSingleExtension<global::Google.ProtocolBuffers.TestProtos.ForeignMessageLite>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[17]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.OptionalImportMessageExtensionLite = pb::GeneratedSingleExtension<global::Google.ProtocolBuffers.TestProtos.ImportMessageLite>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[18]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.OptionalNestedEnumExtensionLite = pb::GeneratedSingleExtension<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedEnum>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[19]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.OptionalForeignEnumExtensionLite = pb::GeneratedSingleExtension<global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[20]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.OptionalImportEnumExtensionLite = pb::GeneratedSingleExtension<global::Google.ProtocolBuffers.TestProtos.ImportEnumLite>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[21]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.OptionalStringPieceExtensionLite = pb::GeneratedSingleExtension<string>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[22]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.OptionalCordExtensionLite = pb::GeneratedSingleExtension<string>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[23]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.RepeatedInt32ExtensionLite = pb::GeneratedRepeatExtension<int>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[24]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.RepeatedInt64ExtensionLite = pb::GeneratedRepeatExtension<long>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[25]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.RepeatedUint32ExtensionLite = pb::GeneratedRepeatExtension<uint>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[26]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.RepeatedUint64ExtensionLite = pb::GeneratedRepeatExtension<ulong>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[27]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.RepeatedSint32ExtensionLite = pb::GeneratedRepeatExtension<int>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[28]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.RepeatedSint64ExtensionLite = pb::GeneratedRepeatExtension<long>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[29]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.RepeatedFixed32ExtensionLite = pb::GeneratedRepeatExtension<uint>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[30]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.RepeatedFixed64ExtensionLite = pb::GeneratedRepeatExtension<ulong>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[31]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.RepeatedSfixed32ExtensionLite = pb::GeneratedRepeatExtension<int>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[32]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.RepeatedSfixed64ExtensionLite = pb::GeneratedRepeatExtension<long>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[33]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.RepeatedFloatExtensionLite = pb::GeneratedRepeatExtension<float>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[34]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.RepeatedDoubleExtensionLite = pb::GeneratedRepeatExtension<double>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[35]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.RepeatedBoolExtensionLite = pb::GeneratedRepeatExtension<bool>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[36]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.RepeatedStringExtensionLite = pb::GeneratedRepeatExtension<string>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[37]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.RepeatedBytesExtensionLite = pb::GeneratedRepeatExtension<pb::ByteString>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[38]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.RepeatedGroupExtensionLite = pb::GeneratedRepeatExtension<global::Google.ProtocolBuffers.TestProtos.RepeatedGroup_extension_lite>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[39]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.RepeatedNestedMessageExtensionLite = pb::GeneratedRepeatExtension<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[40]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.RepeatedForeignMessageExtensionLite = pb::GeneratedRepeatExtension<global::Google.ProtocolBuffers.TestProtos.ForeignMessageLite>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[41]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.RepeatedImportMessageExtensionLite = pb::GeneratedRepeatExtension<global::Google.ProtocolBuffers.TestProtos.ImportMessageLite>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[42]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.RepeatedNestedEnumExtensionLite = pb::GeneratedRepeatExtension<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedEnum>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[43]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.RepeatedForeignEnumExtensionLite = pb::GeneratedRepeatExtension<global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[44]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.RepeatedImportEnumExtensionLite = pb::GeneratedRepeatExtension<global::Google.ProtocolBuffers.TestProtos.ImportEnumLite>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[45]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.RepeatedStringPieceExtensionLite = pb::GeneratedRepeatExtension<string>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[46]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.RepeatedCordExtensionLite = pb::GeneratedRepeatExtension<string>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[47]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.DefaultInt32ExtensionLite = pb::GeneratedSingleExtension<int>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[48]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.DefaultInt64ExtensionLite = pb::GeneratedSingleExtension<long>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[49]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.DefaultUint32ExtensionLite = pb::GeneratedSingleExtension<uint>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[50]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.DefaultUint64ExtensionLite = pb::GeneratedSingleExtension<ulong>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[51]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.DefaultSint32ExtensionLite = pb::GeneratedSingleExtension<int>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[52]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.DefaultSint64ExtensionLite = pb::GeneratedSingleExtension<long>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[53]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.DefaultFixed32ExtensionLite = pb::GeneratedSingleExtension<uint>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[54]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.DefaultFixed64ExtensionLite = pb::GeneratedSingleExtension<ulong>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[55]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.DefaultSfixed32ExtensionLite = pb::GeneratedSingleExtension<int>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[56]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.DefaultSfixed64ExtensionLite = pb::GeneratedSingleExtension<long>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[57]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.DefaultFloatExtensionLite = pb::GeneratedSingleExtension<float>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[58]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.DefaultDoubleExtensionLite = pb::GeneratedSingleExtension<double>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[59]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.DefaultBoolExtensionLite = pb::GeneratedSingleExtension<bool>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[60]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.DefaultStringExtensionLite = pb::GeneratedSingleExtension<string>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[61]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.DefaultBytesExtensionLite = pb::GeneratedSingleExtension<pb::ByteString>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[62]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.DefaultNestedEnumExtensionLite = pb::GeneratedSingleExtension<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedEnum>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[63]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.DefaultForeignEnumExtensionLite = pb::GeneratedSingleExtension<global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[64]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.DefaultImportEnumExtensionLite = pb::GeneratedSingleExtension<global::Google.ProtocolBuffers.TestProtos.ImportEnumLite>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[65]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.DefaultStringPieceExtensionLite = pb::GeneratedSingleExtension<string>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[66]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.DefaultCordExtensionLite = pb::GeneratedSingleExtension<string>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[67]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.PackedInt32ExtensionLite = pb::GeneratedRepeatExtension<int>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[68]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.PackedInt64ExtensionLite = pb::GeneratedRepeatExtension<long>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[69]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.PackedUint32ExtensionLite = pb::GeneratedRepeatExtension<uint>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[70]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.PackedUint64ExtensionLite = pb::GeneratedRepeatExtension<ulong>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[71]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.PackedSint32ExtensionLite = pb::GeneratedRepeatExtension<int>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[72]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.PackedSint64ExtensionLite = pb::GeneratedRepeatExtension<long>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[73]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.PackedFixed32ExtensionLite = pb::GeneratedRepeatExtension<uint>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[74]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.PackedFixed64ExtensionLite = pb::GeneratedRepeatExtension<ulong>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[75]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.PackedSfixed32ExtensionLite = pb::GeneratedRepeatExtension<int>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[76]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.PackedSfixed64ExtensionLite = pb::GeneratedRepeatExtension<long>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[77]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.PackedFloatExtensionLite = pb::GeneratedRepeatExtension<float>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[78]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.PackedDoubleExtensionLite = pb::GeneratedRepeatExtension<double>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[79]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.PackedBoolExtensionLite = pb::GeneratedRepeatExtension<bool>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[80]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.PackedEnumExtensionLite = pb::GeneratedRepeatExtension<global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor.Extensions[81]);
+        pb::ExtensionRegistry registry = pb::ExtensionRegistry.CreateInstance();
+        RegisterAllExtensions(registry);
+        global::Google.ProtocolBuffers.DescriptorProtos.CSharpOptions.RegisterAllExtensions(registry);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestImportLiteProtoFile.RegisterAllExtensions(registry);
+        return registry;
+      };
+      pbd::FileDescriptor.InternalBuildGeneratedFileFrom(descriptorData,
+          new pbd::FileDescriptor[] {
+          global::Google.ProtocolBuffers.DescriptorProtos.CSharpOptions.Descriptor, 
+          global::Google.ProtocolBuffers.TestProtos.UnitTestImportLiteProtoFile.Descriptor, 
+          }, assigner);
+    }
+    #endregion
+    
+  }
+  #region Enums
+  public enum ForeignEnumLite {
+    FOREIGN_LITE_FOO = 4,
+    FOREIGN_LITE_BAR = 5,
+    FOREIGN_LITE_BAZ = 6,
+  }
+  
+  #endregion
+  
+  #region Messages
+  public sealed partial class TestAllTypesLite : pb::GeneratedMessage<TestAllTypesLite, TestAllTypesLite.Builder> {
+    private static readonly TestAllTypesLite defaultInstance = new Builder().BuildPartial();
+    public static TestAllTypesLite DefaultInstance {
+      get { return defaultInstance; }
+    }
+    
+    public override TestAllTypesLite DefaultInstanceForType {
+      get { return defaultInstance; }
+    }
+    
+    protected override TestAllTypesLite ThisMessage {
+      get { return this; }
+    }
+    
+    public static pbd::MessageDescriptor Descriptor {
+      get { return global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.internal__static_protobuf_unittest_TestAllTypesLite__Descriptor; }
+    }
+    
+    protected override pb::FieldAccess.FieldAccessorTable<TestAllTypesLite, TestAllTypesLite.Builder> InternalFieldAccessors {
+      get { return global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.internal__static_protobuf_unittest_TestAllTypesLite__FieldAccessorTable; }
+    }
+    
+    #region Nested types
+    public static class Types {
+      public enum NestedEnum {
+        FOO = 1,
+        BAR = 2,
+        BAZ = 3,
+      }
+      
+      public sealed partial class NestedMessage : pb::GeneratedMessage<NestedMessage, NestedMessage.Builder> {
+        private static readonly NestedMessage defaultInstance = new Builder().BuildPartial();
+        public static NestedMessage DefaultInstance {
+          get { return defaultInstance; }
+        }
+        
+        public override NestedMessage DefaultInstanceForType {
+          get { return defaultInstance; }
+        }
+        
+        protected override NestedMessage ThisMessage {
+          get { return this; }
+        }
+        
+        public static pbd::MessageDescriptor Descriptor {
+          get { return global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.internal__static_protobuf_unittest_TestAllTypesLite_NestedMessage__Descriptor; }
+        }
+        
+        protected override pb::FieldAccess.FieldAccessorTable<NestedMessage, NestedMessage.Builder> InternalFieldAccessors {
+          get { return global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.internal__static_protobuf_unittest_TestAllTypesLite_NestedMessage__FieldAccessorTable; }
+        }
+        
+        public const int BbFieldNumber = 1;
+        private bool hasBb;
+        private int bb_ = 0;
+        public bool HasBb {
+          get { return hasBb; }
+        }
+        public int Bb {
+          get { return bb_; }
+        }
+        
+        public static NestedMessage ParseFrom(pb::ByteString data) {
+          return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
+        }
+        public static NestedMessage ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
+          return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
+        }
+        public static NestedMessage ParseFrom(byte[] data) {
+          return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
+        }
+        public static NestedMessage ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
+          return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
+        }
+        public static NestedMessage ParseFrom(global::System.IO.Stream input) {
+          return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
+        }
+        public static NestedMessage ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
+          return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
+        }
+        public static NestedMessage ParseDelimitedFrom(global::System.IO.Stream input) {
+          return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
+        }
+        public static NestedMessage ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
+          return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
+        }
+        public static NestedMessage ParseFrom(pb::CodedInputStream input) {
+          return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
+        }
+        public static NestedMessage ParseFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
+          return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
+        }
+        public static Builder CreateBuilder() { return new Builder(); }
+        public override Builder ToBuilder() { return CreateBuilder(this); }
+        public override Builder CreateBuilderForType() { return new Builder(); }
+        public static Builder CreateBuilder(NestedMessage prototype) {
+          return (Builder) new Builder().MergeFrom(prototype);
+        }
+        
+        public sealed partial class Builder : pb::GeneratedBuilder<NestedMessage, Builder> {
+          protected override Builder ThisBuilder {
+            get { return this; }
+          }
+          public Builder() {}
+          
+          NestedMessage result = new NestedMessage();
+          
+          protected override NestedMessage MessageBeingBuilt {
+            get { return result; }
+          }
+          
+          public override Builder Clear() {
+            result = new NestedMessage();
+            return this;
+          }
+          
+          public override Builder Clone() {
+            return new Builder().MergeFrom(result);
+          }
+          
+          public override pbd::MessageDescriptor DescriptorForType {
+            get { return global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage.Descriptor; }
+          }
+          
+          public override NestedMessage DefaultInstanceForType {
+            get { return global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage.DefaultInstance; }
+          }
+          
+          public override NestedMessage BuildPartial() {
+            if (result == null) {
+              throw new global::System.InvalidOperationException("build() has already been called on this Builder");
+            }
+            NestedMessage returnMe = result;
+            result = null;
+            return returnMe;
+          }
+          
+          
+          public bool HasBb {
+            get { return result.HasBb; }
+          }
+          public int Bb {
+            get { return result.Bb; }
+            set { SetBb(value); }
+          }
+          public Builder SetBb(int value) {
+            result.hasBb = true;
+            result.bb_ = value;
+            return this;
+          }
+          public Builder ClearBb() {
+            result.hasBb = false;
+            result.bb_ = 0;
+            return this;
+          }
+        }
+        static NestedMessage() {
+          object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor, null);
+        }
+      }
+      
+      public sealed partial class OptionalGroup : pb::GeneratedMessage<OptionalGroup, OptionalGroup.Builder> {
+        private static readonly OptionalGroup defaultInstance = new Builder().BuildPartial();
+        public static OptionalGroup DefaultInstance {
+          get { return defaultInstance; }
+        }
+        
+        public override OptionalGroup DefaultInstanceForType {
+          get { return defaultInstance; }
+        }
+        
+        protected override OptionalGroup ThisMessage {
+          get { return this; }
+        }
+        
+        public static pbd::MessageDescriptor Descriptor {
+          get { return global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.internal__static_protobuf_unittest_TestAllTypesLite_OptionalGroup__Descriptor; }
+        }
+        
+        protected override pb::FieldAccess.FieldAccessorTable<OptionalGroup, OptionalGroup.Builder> InternalFieldAccessors {
+          get { return global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.internal__static_protobuf_unittest_TestAllTypesLite_OptionalGroup__FieldAccessorTable; }
+        }
+        
+        public const int AFieldNumber = 17;
+        private bool hasA;
+        private int a_ = 0;
+        public bool HasA {
+          get { return hasA; }
+        }
+        public int A {
+          get { return a_; }
+        }
+        
+        public static OptionalGroup ParseFrom(pb::ByteString data) {
+          return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
+        }
+        public static OptionalGroup ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
+          return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
+        }
+        public static OptionalGroup ParseFrom(byte[] data) {
+          return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
+        }
+        public static OptionalGroup ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
+          return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
+        }
+        public static OptionalGroup ParseFrom(global::System.IO.Stream input) {
+          return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
+        }
+        public static OptionalGroup ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
+          return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
+        }
+        public static OptionalGroup ParseDelimitedFrom(global::System.IO.Stream input) {
+          return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
+        }
+        public static OptionalGroup ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
+          return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
+        }
+        public static OptionalGroup ParseFrom(pb::CodedInputStream input) {
+          return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
+        }
+        public static OptionalGroup ParseFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
+          return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
+        }
+        public static Builder CreateBuilder() { return new Builder(); }
+        public override Builder ToBuilder() { return CreateBuilder(this); }
+        public override Builder CreateBuilderForType() { return new Builder(); }
+        public static Builder CreateBuilder(OptionalGroup prototype) {
+          return (Builder) new Builder().MergeFrom(prototype);
+        }
+        
+        public sealed partial class Builder : pb::GeneratedBuilder<OptionalGroup, Builder> {
+          protected override Builder ThisBuilder {
+            get { return this; }
+          }
+          public Builder() {}
+          
+          OptionalGroup result = new OptionalGroup();
+          
+          protected override OptionalGroup MessageBeingBuilt {
+            get { return result; }
+          }
+          
+          public override Builder Clear() {
+            result = new OptionalGroup();
+            return this;
+          }
+          
+          public override Builder Clone() {
+            return new Builder().MergeFrom(result);
+          }
+          
+          public override pbd::MessageDescriptor DescriptorForType {
+            get { return global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.OptionalGroup.Descriptor; }
+          }
+          
+          public override OptionalGroup DefaultInstanceForType {
+            get { return global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.OptionalGroup.DefaultInstance; }
+          }
+          
+          public override OptionalGroup BuildPartial() {
+            if (result == null) {
+              throw new global::System.InvalidOperationException("build() has already been called on this Builder");
+            }
+            OptionalGroup returnMe = result;
+            result = null;
+            return returnMe;
+          }
+          
+          
+          public bool HasA {
+            get { return result.HasA; }
+          }
+          public int A {
+            get { return result.A; }
+            set { SetA(value); }
+          }
+          public Builder SetA(int value) {
+            result.hasA = true;
+            result.a_ = value;
+            return this;
+          }
+          public Builder ClearA() {
+            result.hasA = false;
+            result.a_ = 0;
+            return this;
+          }
+        }
+        static OptionalGroup() {
+          object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor, null);
+        }
+      }
+      
+      public sealed partial class RepeatedGroup : pb::GeneratedMessage<RepeatedGroup, RepeatedGroup.Builder> {
+        private static readonly RepeatedGroup defaultInstance = new Builder().BuildPartial();
+        public static RepeatedGroup DefaultInstance {
+          get { return defaultInstance; }
+        }
+        
+        public override RepeatedGroup DefaultInstanceForType {
+          get { return defaultInstance; }
+        }
+        
+        protected override RepeatedGroup ThisMessage {
+          get { return this; }
+        }
+        
+        public static pbd::MessageDescriptor Descriptor {
+          get { return global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.internal__static_protobuf_unittest_TestAllTypesLite_RepeatedGroup__Descriptor; }
+        }
+        
+        protected override pb::FieldAccess.FieldAccessorTable<RepeatedGroup, RepeatedGroup.Builder> InternalFieldAccessors {
+          get { return global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.internal__static_protobuf_unittest_TestAllTypesLite_RepeatedGroup__FieldAccessorTable; }
+        }
+        
+        public const int AFieldNumber = 47;
+        private bool hasA;
+        private int a_ = 0;
+        public bool HasA {
+          get { return hasA; }
+        }
+        public int A {
+          get { return a_; }
+        }
+        
+        public static RepeatedGroup ParseFrom(pb::ByteString data) {
+          return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
+        }
+        public static RepeatedGroup ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
+          return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
+        }
+        public static RepeatedGroup ParseFrom(byte[] data) {
+          return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
+        }
+        public static RepeatedGroup ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
+          return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
+        }
+        public static RepeatedGroup ParseFrom(global::System.IO.Stream input) {
+          return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
+        }
+        public static RepeatedGroup ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
+          return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
+        }
+        public static RepeatedGroup ParseDelimitedFrom(global::System.IO.Stream input) {
+          return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
+        }
+        public static RepeatedGroup ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
+          return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
+        }
+        public static RepeatedGroup ParseFrom(pb::CodedInputStream input) {
+          return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
+        }
+        public static RepeatedGroup ParseFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
+          return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
+        }
+        public static Builder CreateBuilder() { return new Builder(); }
+        public override Builder ToBuilder() { return CreateBuilder(this); }
+        public override Builder CreateBuilderForType() { return new Builder(); }
+        public static Builder CreateBuilder(RepeatedGroup prototype) {
+          return (Builder) new Builder().MergeFrom(prototype);
+        }
+        
+        public sealed partial class Builder : pb::GeneratedBuilder<RepeatedGroup, Builder> {
+          protected override Builder ThisBuilder {
+            get { return this; }
+          }
+          public Builder() {}
+          
+          RepeatedGroup result = new RepeatedGroup();
+          
+          protected override RepeatedGroup MessageBeingBuilt {
+            get { return result; }
+          }
+          
+          public override Builder Clear() {
+            result = new RepeatedGroup();
+            return this;
+          }
+          
+          public override Builder Clone() {
+            return new Builder().MergeFrom(result);
+          }
+          
+          public override pbd::MessageDescriptor DescriptorForType {
+            get { return global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.RepeatedGroup.Descriptor; }
+          }
+          
+          public override RepeatedGroup DefaultInstanceForType {
+            get { return global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.RepeatedGroup.DefaultInstance; }
+          }
+          
+          public override RepeatedGroup BuildPartial() {
+            if (result == null) {
+              throw new global::System.InvalidOperationException("build() has already been called on this Builder");
+            }
+            RepeatedGroup returnMe = result;
+            result = null;
+            return returnMe;
+          }
+          
+          
+          public bool HasA {
+            get { return result.HasA; }
+          }
+          public int A {
+            get { return result.A; }
+            set { SetA(value); }
+          }
+          public Builder SetA(int value) {
+            result.hasA = true;
+            result.a_ = value;
+            return this;
+          }
+          public Builder ClearA() {
+            result.hasA = false;
+            result.a_ = 0;
+            return this;
+          }
+        }
+        static RepeatedGroup() {
+          object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor, null);
+        }
+      }
+      
+    }
+    #endregion
+    
+    public const int OptionalInt32FieldNumber = 1;
+    private bool hasOptionalInt32;
+    private int optionalInt32_ = 0;
+    public bool HasOptionalInt32 {
+      get { return hasOptionalInt32; }
+    }
+    public int OptionalInt32 {
+      get { return optionalInt32_; }
+    }
+    
+    public const int OptionalInt64FieldNumber = 2;
+    private bool hasOptionalInt64;
+    private long optionalInt64_ = 0L;
+    public bool HasOptionalInt64 {
+      get { return hasOptionalInt64; }
+    }
+    public long OptionalInt64 {
+      get { return optionalInt64_; }
+    }
+    
+    public const int OptionalUint32FieldNumber = 3;
+    private bool hasOptionalUint32;
+    private uint optionalUint32_ = 0;
+    public bool HasOptionalUint32 {
+      get { return hasOptionalUint32; }
+    }
+    [global::System.CLSCompliant(false)]
+    public uint OptionalUint32 {
+      get { return optionalUint32_; }
+    }
+    
+    public const int OptionalUint64FieldNumber = 4;
+    private bool hasOptionalUint64;
+    private ulong optionalUint64_ = 0UL;
+    public bool HasOptionalUint64 {
+      get { return hasOptionalUint64; }
+    }
+    [global::System.CLSCompliant(false)]
+    public ulong OptionalUint64 {
+      get { return optionalUint64_; }
+    }
+    
+    public const int OptionalSint32FieldNumber = 5;
+    private bool hasOptionalSint32;
+    private int optionalSint32_ = 0;
+    public bool HasOptionalSint32 {
+      get { return hasOptionalSint32; }
+    }
+    public int OptionalSint32 {
+      get { return optionalSint32_; }
+    }
+    
+    public const int OptionalSint64FieldNumber = 6;
+    private bool hasOptionalSint64;
+    private long optionalSint64_ = 0;
+    public bool HasOptionalSint64 {
+      get { return hasOptionalSint64; }
+    }
+    public long OptionalSint64 {
+      get { return optionalSint64_; }
+    }
+    
+    public const int OptionalFixed32FieldNumber = 7;
+    private bool hasOptionalFixed32;
+    private uint optionalFixed32_ = 0;
+    public bool HasOptionalFixed32 {
+      get { return hasOptionalFixed32; }
+    }
+    [global::System.CLSCompliant(false)]
+    public uint OptionalFixed32 {
+      get { return optionalFixed32_; }
+    }
+    
+    public const int OptionalFixed64FieldNumber = 8;
+    private bool hasOptionalFixed64;
+    private ulong optionalFixed64_ = 0;
+    public bool HasOptionalFixed64 {
+      get { return hasOptionalFixed64; }
+    }
+    [global::System.CLSCompliant(false)]
+    public ulong OptionalFixed64 {
+      get { return optionalFixed64_; }
+    }
+    
+    public const int OptionalSfixed32FieldNumber = 9;
+    private bool hasOptionalSfixed32;
+    private int optionalSfixed32_ = 0;
+    public bool HasOptionalSfixed32 {
+      get { return hasOptionalSfixed32; }
+    }
+    public int OptionalSfixed32 {
+      get { return optionalSfixed32_; }
+    }
+    
+    public const int OptionalSfixed64FieldNumber = 10;
+    private bool hasOptionalSfixed64;
+    private long optionalSfixed64_ = 0;
+    public bool HasOptionalSfixed64 {
+      get { return hasOptionalSfixed64; }
+    }
+    public long OptionalSfixed64 {
+      get { return optionalSfixed64_; }
+    }
+    
+    public const int OptionalFloatFieldNumber = 11;
+    private bool hasOptionalFloat;
+    private float optionalFloat_ = 0F;
+    public bool HasOptionalFloat {
+      get { return hasOptionalFloat; }
+    }
+    public float OptionalFloat {
+      get { return optionalFloat_; }
+    }
+    
+    public const int OptionalDoubleFieldNumber = 12;
+    private bool hasOptionalDouble;
+    private double optionalDouble_ = 0D;
+    public bool HasOptionalDouble {
+      get { return hasOptionalDouble; }
+    }
+    public double OptionalDouble {
+      get { return optionalDouble_; }
+    }
+    
+    public const int OptionalBoolFieldNumber = 13;
+    private bool hasOptionalBool;
+    private bool optionalBool_ = false;
+    public bool HasOptionalBool {
+      get { return hasOptionalBool; }
+    }
+    public bool OptionalBool {
+      get { return optionalBool_; }
+    }
+    
+    public const int OptionalStringFieldNumber = 14;
+    private bool hasOptionalString;
+    private string optionalString_ = "";
+    public bool HasOptionalString {
+      get { return hasOptionalString; }
+    }
+    public string OptionalString {
+      get { return optionalString_; }
+    }
+    
+    public const int OptionalBytesFieldNumber = 15;
+    private bool hasOptionalBytes;
+    private pb::ByteString optionalBytes_ = pb::ByteString.Empty;
+    public bool HasOptionalBytes {
+      get { return hasOptionalBytes; }
+    }
+    public pb::ByteString OptionalBytes {
+      get { return optionalBytes_; }
+    }
+    
+    public const int OptionalGroupFieldNumber = 16;
+    private bool hasOptionalGroup;
+    private global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.OptionalGroup optionalGroup_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.OptionalGroup.DefaultInstance;
+    public bool HasOptionalGroup {
+      get { return hasOptionalGroup; }
+    }
+    public global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.OptionalGroup OptionalGroup {
+      get { return optionalGroup_; }
+    }
+    
+    public const int OptionalNestedMessageFieldNumber = 18;
+    private bool hasOptionalNestedMessage;
+    private global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage optionalNestedMessage_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage.DefaultInstance;
+    public bool HasOptionalNestedMessage {
+      get { return hasOptionalNestedMessage; }
+    }
+    public global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage OptionalNestedMessage {
+      get { return optionalNestedMessage_; }
+    }
+    
+    public const int OptionalForeignMessageFieldNumber = 19;
+    private bool hasOptionalForeignMessage;
+    private global::Google.ProtocolBuffers.TestProtos.ForeignMessageLite optionalForeignMessage_ = global::Google.ProtocolBuffers.TestProtos.ForeignMessageLite.DefaultInstance;
+    public bool HasOptionalForeignMessage {
+      get { return hasOptionalForeignMessage; }
+    }
+    public global::Google.ProtocolBuffers.TestProtos.ForeignMessageLite OptionalForeignMessage {
+      get { return optionalForeignMessage_; }
+    }
+    
+    public const int OptionalImportMessageFieldNumber = 20;
+    private bool hasOptionalImportMessage;
+    private global::Google.ProtocolBuffers.TestProtos.ImportMessageLite optionalImportMessage_ = global::Google.ProtocolBuffers.TestProtos.ImportMessageLite.DefaultInstance;
+    public bool HasOptionalImportMessage {
+      get { return hasOptionalImportMessage; }
+    }
+    public global::Google.ProtocolBuffers.TestProtos.ImportMessageLite OptionalImportMessage {
+      get { return optionalImportMessage_; }
+    }
+    
+    public const int OptionalNestedEnumFieldNumber = 21;
+    private bool hasOptionalNestedEnum;
+    private global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedEnum optionalNestedEnum_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedEnum.FOO;
+    public bool HasOptionalNestedEnum {
+      get { return hasOptionalNestedEnum; }
+    }
+    public global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedEnum OptionalNestedEnum {
+      get { return optionalNestedEnum_; }
+    }
+    
+    public const int OptionalForeignEnumFieldNumber = 22;
+    private bool hasOptionalForeignEnum;
+    private global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite optionalForeignEnum_ = global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite.FOREIGN_LITE_FOO;
+    public bool HasOptionalForeignEnum {
+      get { return hasOptionalForeignEnum; }
+    }
+    public global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite OptionalForeignEnum {
+      get { return optionalForeignEnum_; }
+    }
+    
+    public const int OptionalImportEnumFieldNumber = 23;
+    private bool hasOptionalImportEnum;
+    private global::Google.ProtocolBuffers.TestProtos.ImportEnumLite optionalImportEnum_ = global::Google.ProtocolBuffers.TestProtos.ImportEnumLite.IMPORT_LITE_FOO;
+    public bool HasOptionalImportEnum {
+      get { return hasOptionalImportEnum; }
+    }
+    public global::Google.ProtocolBuffers.TestProtos.ImportEnumLite OptionalImportEnum {
+      get { return optionalImportEnum_; }
+    }
+    
+    public const int OptionalStringPieceFieldNumber = 24;
+    private bool hasOptionalStringPiece;
+    private string optionalStringPiece_ = "";
+    public bool HasOptionalStringPiece {
+      get { return hasOptionalStringPiece; }
+    }
+    public string OptionalStringPiece {
+      get { return optionalStringPiece_; }
+    }
+    
+    public const int OptionalCordFieldNumber = 25;
+    private bool hasOptionalCord;
+    private string optionalCord_ = "";
+    public bool HasOptionalCord {
+      get { return hasOptionalCord; }
+    }
+    public string OptionalCord {
+      get { return optionalCord_; }
+    }
+    
+    public const int RepeatedInt32FieldNumber = 31;
+    private pbc::PopsicleList<int> repeatedInt32_ = new pbc::PopsicleList<int>();
+    public scg::IList<int> RepeatedInt32List {
+      get { return pbc::Lists.AsReadOnly(repeatedInt32_); }
+    }
+    public int RepeatedInt32Count {
+      get { return repeatedInt32_.Count; }
+    }
+    public int GetRepeatedInt32(int index) {
+      return repeatedInt32_[index];
+    }
+    
+    public const int RepeatedInt64FieldNumber = 32;
+    private pbc::PopsicleList<long> repeatedInt64_ = new pbc::PopsicleList<long>();
+    public scg::IList<long> RepeatedInt64List {
+      get { return pbc::Lists.AsReadOnly(repeatedInt64_); }
+    }
+    public int RepeatedInt64Count {
+      get { return repeatedInt64_.Count; }
+    }
+    public long GetRepeatedInt64(int index) {
+      return repeatedInt64_[index];
+    }
+    
+    public const int RepeatedUint32FieldNumber = 33;
+    private pbc::PopsicleList<uint> repeatedUint32_ = new pbc::PopsicleList<uint>();
+    [global::System.CLSCompliant(false)]
+    public scg::IList<uint> RepeatedUint32List {
+      get { return pbc::Lists.AsReadOnly(repeatedUint32_); }
+    }
+    public int RepeatedUint32Count {
+      get { return repeatedUint32_.Count; }
+    }
+    [global::System.CLSCompliant(false)]
+    public uint GetRepeatedUint32(int index) {
+      return repeatedUint32_[index];
+    }
+    
+    public const int RepeatedUint64FieldNumber = 34;
+    private pbc::PopsicleList<ulong> repeatedUint64_ = new pbc::PopsicleList<ulong>();
+    [global::System.CLSCompliant(false)]
+    public scg::IList<ulong> RepeatedUint64List {
+      get { return pbc::Lists.AsReadOnly(repeatedUint64_); }
+    }
+    public int RepeatedUint64Count {
+      get { return repeatedUint64_.Count; }
+    }
+    [global::System.CLSCompliant(false)]
+    public ulong GetRepeatedUint64(int index) {
+      return repeatedUint64_[index];
+    }
+    
+    public const int RepeatedSint32FieldNumber = 35;
+    private pbc::PopsicleList<int> repeatedSint32_ = new pbc::PopsicleList<int>();
+    public scg::IList<int> RepeatedSint32List {
+      get { return pbc::Lists.AsReadOnly(repeatedSint32_); }
+    }
+    public int RepeatedSint32Count {
+      get { return repeatedSint32_.Count; }
+    }
+    public int GetRepeatedSint32(int index) {
+      return repeatedSint32_[index];
+    }
+    
+    public const int RepeatedSint64FieldNumber = 36;
+    private pbc::PopsicleList<long> repeatedSint64_ = new pbc::PopsicleList<long>();
+    public scg::IList<long> RepeatedSint64List {
+      get { return pbc::Lists.AsReadOnly(repeatedSint64_); }
+    }
+    public int RepeatedSint64Count {
+      get { return repeatedSint64_.Count; }
+    }
+    public long GetRepeatedSint64(int index) {
+      return repeatedSint64_[index];
+    }
+    
+    public const int RepeatedFixed32FieldNumber = 37;
+    private pbc::PopsicleList<uint> repeatedFixed32_ = new pbc::PopsicleList<uint>();
+    [global::System.CLSCompliant(false)]
+    public scg::IList<uint> RepeatedFixed32List {
+      get { return pbc::Lists.AsReadOnly(repeatedFixed32_); }
+    }
+    public int RepeatedFixed32Count {
+      get { return repeatedFixed32_.Count; }
+    }
+    [global::System.CLSCompliant(false)]
+    public uint GetRepeatedFixed32(int index) {
+      return repeatedFixed32_[index];
+    }
+    
+    public const int RepeatedFixed64FieldNumber = 38;
+    private pbc::PopsicleList<ulong> repeatedFixed64_ = new pbc::PopsicleList<ulong>();
+    [global::System.CLSCompliant(false)]
+    public scg::IList<ulong> RepeatedFixed64List {
+      get { return pbc::Lists.AsReadOnly(repeatedFixed64_); }
+    }
+    public int RepeatedFixed64Count {
+      get { return repeatedFixed64_.Count; }
+    }
+    [global::System.CLSCompliant(false)]
+    public ulong GetRepeatedFixed64(int index) {
+      return repeatedFixed64_[index];
+    }
+    
+    public const int RepeatedSfixed32FieldNumber = 39;
+    private pbc::PopsicleList<int> repeatedSfixed32_ = new pbc::PopsicleList<int>();
+    public scg::IList<int> RepeatedSfixed32List {
+      get { return pbc::Lists.AsReadOnly(repeatedSfixed32_); }
+    }
+    public int RepeatedSfixed32Count {
+      get { return repeatedSfixed32_.Count; }
+    }
+    public int GetRepeatedSfixed32(int index) {
+      return repeatedSfixed32_[index];
+    }
+    
+    public const int RepeatedSfixed64FieldNumber = 40;
+    private pbc::PopsicleList<long> repeatedSfixed64_ = new pbc::PopsicleList<long>();
+    public scg::IList<long> RepeatedSfixed64List {
+      get { return pbc::Lists.AsReadOnly(repeatedSfixed64_); }
+    }
+    public int RepeatedSfixed64Count {
+      get { return repeatedSfixed64_.Count; }
+    }
+    public long GetRepeatedSfixed64(int index) {
+      return repeatedSfixed64_[index];
+    }
+    
+    public const int RepeatedFloatFieldNumber = 41;
+    private pbc::PopsicleList<float> repeatedFloat_ = new pbc::PopsicleList<float>();
+    public scg::IList<float> RepeatedFloatList {
+      get { return pbc::Lists.AsReadOnly(repeatedFloat_); }
+    }
+    public int RepeatedFloatCount {
+      get { return repeatedFloat_.Count; }
+    }
+    public float GetRepeatedFloat(int index) {
+      return repeatedFloat_[index];
+    }
+    
+    public const int RepeatedDoubleFieldNumber = 42;
+    private pbc::PopsicleList<double> repeatedDouble_ = new pbc::PopsicleList<double>();
+    public scg::IList<double> RepeatedDoubleList {
+      get { return pbc::Lists.AsReadOnly(repeatedDouble_); }
+    }
+    public int RepeatedDoubleCount {
+      get { return repeatedDouble_.Count; }
+    }
+    public double GetRepeatedDouble(int index) {
+      return repeatedDouble_[index];
+    }
+    
+    public const int RepeatedBoolFieldNumber = 43;
+    private pbc::PopsicleList<bool> repeatedBool_ = new pbc::PopsicleList<bool>();
+    public scg::IList<bool> RepeatedBoolList {
+      get { return pbc::Lists.AsReadOnly(repeatedBool_); }
+    }
+    public int RepeatedBoolCount {
+      get { return repeatedBool_.Count; }
+    }
+    public bool GetRepeatedBool(int index) {
+      return repeatedBool_[index];
+    }
+    
+    public const int RepeatedStringFieldNumber = 44;
+    private pbc::PopsicleList<string> repeatedString_ = new pbc::PopsicleList<string>();
+    public scg::IList<string> RepeatedStringList {
+      get { return pbc::Lists.AsReadOnly(repeatedString_); }
+    }
+    public int RepeatedStringCount {
+      get { return repeatedString_.Count; }
+    }
+    public string GetRepeatedString(int index) {
+      return repeatedString_[index];
+    }
+    
+    public const int RepeatedBytesFieldNumber = 45;
+    private pbc::PopsicleList<pb::ByteString> repeatedBytes_ = new pbc::PopsicleList<pb::ByteString>();
+    public scg::IList<pb::ByteString> RepeatedBytesList {
+      get { return pbc::Lists.AsReadOnly(repeatedBytes_); }
+    }
+    public int RepeatedBytesCount {
+      get { return repeatedBytes_.Count; }
+    }
+    public pb::ByteString GetRepeatedBytes(int index) {
+      return repeatedBytes_[index];
+    }
+    
+    public const int RepeatedGroupFieldNumber = 46;
+    private pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.RepeatedGroup> repeatedGroup_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.RepeatedGroup>();
+    public scg::IList<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.RepeatedGroup> RepeatedGroupList {
+      get { return repeatedGroup_; }
+    }
+    public int RepeatedGroupCount {
+      get { return repeatedGroup_.Count; }
+    }
+    public global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.RepeatedGroup GetRepeatedGroup(int index) {
+      return repeatedGroup_[index];
+    }
+    
+    public const int RepeatedNestedMessageFieldNumber = 48;
+    private pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage> repeatedNestedMessage_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage>();
+    public scg::IList<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage> RepeatedNestedMessageList {
+      get { return repeatedNestedMessage_; }
+    }
+    public int RepeatedNestedMessageCount {
+      get { return repeatedNestedMessage_.Count; }
+    }
+    public global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage GetRepeatedNestedMessage(int index) {
+      return repeatedNestedMessage_[index];
+    }
+    
+    public const int RepeatedForeignMessageFieldNumber = 49;
+    private pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.ForeignMessageLite> repeatedForeignMessage_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.ForeignMessageLite>();
+    public scg::IList<global::Google.ProtocolBuffers.TestProtos.ForeignMessageLite> RepeatedForeignMessageList {
+      get { return repeatedForeignMessage_; }
+    }
+    public int RepeatedForeignMessageCount {
+      get { return repeatedForeignMessage_.Count; }
+    }
+    public global::Google.ProtocolBuffers.TestProtos.ForeignMessageLite GetRepeatedForeignMessage(int index) {
+      return repeatedForeignMessage_[index];
+    }
+    
+    public const int RepeatedImportMessageFieldNumber = 50;
+    private pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.ImportMessageLite> repeatedImportMessage_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.ImportMessageLite>();
+    public scg::IList<global::Google.ProtocolBuffers.TestProtos.ImportMessageLite> RepeatedImportMessageList {
+      get { return repeatedImportMessage_; }
+    }
+    public int RepeatedImportMessageCount {
+      get { return repeatedImportMessage_.Count; }
+    }
+    public global::Google.ProtocolBuffers.TestProtos.ImportMessageLite GetRepeatedImportMessage(int index) {
+      return repeatedImportMessage_[index];
+    }
+    
+    public const int RepeatedNestedEnumFieldNumber = 51;
+    private pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedEnum> repeatedNestedEnum_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedEnum>();
+    public scg::IList<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedEnum> RepeatedNestedEnumList {
+      get { return pbc::Lists.AsReadOnly(repeatedNestedEnum_); }
+    }
+    public int RepeatedNestedEnumCount {
+      get { return repeatedNestedEnum_.Count; }
+    }
+    public global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedEnum GetRepeatedNestedEnum(int index) {
+      return repeatedNestedEnum_[index];
+    }
+    
+    public const int RepeatedForeignEnumFieldNumber = 52;
+    private pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite> repeatedForeignEnum_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite>();
+    public scg::IList<global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite> RepeatedForeignEnumList {
+      get { return pbc::Lists.AsReadOnly(repeatedForeignEnum_); }
+    }
+    public int RepeatedForeignEnumCount {
+      get { return repeatedForeignEnum_.Count; }
+    }
+    public global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite GetRepeatedForeignEnum(int index) {
+      return repeatedForeignEnum_[index];
+    }
+    
+    public const int RepeatedImportEnumFieldNumber = 53;
+    private pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.ImportEnumLite> repeatedImportEnum_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.ImportEnumLite>();
+    public scg::IList<global::Google.ProtocolBuffers.TestProtos.ImportEnumLite> RepeatedImportEnumList {
+      get { return pbc::Lists.AsReadOnly(repeatedImportEnum_); }
+    }
+    public int RepeatedImportEnumCount {
+      get { return repeatedImportEnum_.Count; }
+    }
+    public global::Google.ProtocolBuffers.TestProtos.ImportEnumLite GetRepeatedImportEnum(int index) {
+      return repeatedImportEnum_[index];
+    }
+    
+    public const int RepeatedStringPieceFieldNumber = 54;
+    private pbc::PopsicleList<string> repeatedStringPiece_ = new pbc::PopsicleList<string>();
+    public scg::IList<string> RepeatedStringPieceList {
+      get { return pbc::Lists.AsReadOnly(repeatedStringPiece_); }
+    }
+    public int RepeatedStringPieceCount {
+      get { return repeatedStringPiece_.Count; }
+    }
+    public string GetRepeatedStringPiece(int index) {
+      return repeatedStringPiece_[index];
+    }
+    
+    public const int RepeatedCordFieldNumber = 55;
+    private pbc::PopsicleList<string> repeatedCord_ = new pbc::PopsicleList<string>();
+    public scg::IList<string> RepeatedCordList {
+      get { return pbc::Lists.AsReadOnly(repeatedCord_); }
+    }
+    public int RepeatedCordCount {
+      get { return repeatedCord_.Count; }
+    }
+    public string GetRepeatedCord(int index) {
+      return repeatedCord_[index];
+    }
+    
+    public const int DefaultInt32FieldNumber = 61;
+    private bool hasDefaultInt32;
+    private int defaultInt32_ = 41;
+    public bool HasDefaultInt32 {
+      get { return hasDefaultInt32; }
+    }
+    public int DefaultInt32 {
+      get { return defaultInt32_; }
+    }
+    
+    public const int DefaultInt64FieldNumber = 62;
+    private bool hasDefaultInt64;
+    private long defaultInt64_ = 42L;
+    public bool HasDefaultInt64 {
+      get { return hasDefaultInt64; }
+    }
+    public long DefaultInt64 {
+      get { return defaultInt64_; }
+    }
+    
+    public const int DefaultUint32FieldNumber = 63;
+    private bool hasDefaultUint32;
+    private uint defaultUint32_ = 43;
+    public bool HasDefaultUint32 {
+      get { return hasDefaultUint32; }
+    }
+    [global::System.CLSCompliant(false)]
+    public uint DefaultUint32 {
+      get { return defaultUint32_; }
+    }
+    
+    public const int DefaultUint64FieldNumber = 64;
+    private bool hasDefaultUint64;
+    private ulong defaultUint64_ = 44UL;
+    public bool HasDefaultUint64 {
+      get { return hasDefaultUint64; }
+    }
+    [global::System.CLSCompliant(false)]
+    public ulong DefaultUint64 {
+      get { return defaultUint64_; }
+    }
+    
+    public const int DefaultSint32FieldNumber = 65;
+    private bool hasDefaultSint32;
+    private int defaultSint32_ = -45;
+    public bool HasDefaultSint32 {
+      get { return hasDefaultSint32; }
+    }
+    public int DefaultSint32 {
+      get { return defaultSint32_; }
+    }
+    
+    public const int DefaultSint64FieldNumber = 66;
+    private bool hasDefaultSint64;
+    private long defaultSint64_ = 46;
+    public bool HasDefaultSint64 {
+      get { return hasDefaultSint64; }
+    }
+    public long DefaultSint64 {
+      get { return defaultSint64_; }
+    }
+    
+    public const int DefaultFixed32FieldNumber = 67;
+    private bool hasDefaultFixed32;
+    private uint defaultFixed32_ = 47;
+    public bool HasDefaultFixed32 {
+      get { return hasDefaultFixed32; }
+    }
+    [global::System.CLSCompliant(false)]
+    public uint DefaultFixed32 {
+      get { return defaultFixed32_; }
+    }
+    
+    public const int DefaultFixed64FieldNumber = 68;
+    private bool hasDefaultFixed64;
+    private ulong defaultFixed64_ = 48;
+    public bool HasDefaultFixed64 {
+      get { return hasDefaultFixed64; }
+    }
+    [global::System.CLSCompliant(false)]
+    public ulong DefaultFixed64 {
+      get { return defaultFixed64_; }
+    }
+    
+    public const int DefaultSfixed32FieldNumber = 69;
+    private bool hasDefaultSfixed32;
+    private int defaultSfixed32_ = 49;
+    public bool HasDefaultSfixed32 {
+      get { return hasDefaultSfixed32; }
+    }
+    public int DefaultSfixed32 {
+      get { return defaultSfixed32_; }
+    }
+    
+    public const int DefaultSfixed64FieldNumber = 70;
+    private bool hasDefaultSfixed64;
+    private long defaultSfixed64_ = -50;
+    public bool HasDefaultSfixed64 {
+      get { return hasDefaultSfixed64; }
+    }
+    public long DefaultSfixed64 {
+      get { return defaultSfixed64_; }
+    }
+    
+    public const int DefaultFloatFieldNumber = 71;
+    private bool hasDefaultFloat;
+    private float defaultFloat_ = 51.5F;
+    public bool HasDefaultFloat {
+      get { return hasDefaultFloat; }
+    }
+    public float DefaultFloat {
+      get { return defaultFloat_; }
+    }
+    
+    public const int DefaultDoubleFieldNumber = 72;
+    private bool hasDefaultDouble;
+    private double defaultDouble_ = 52000D;
+    public bool HasDefaultDouble {
+      get { return hasDefaultDouble; }
+    }
+    public double DefaultDouble {
+      get { return defaultDouble_; }
+    }
+    
+    public const int DefaultBoolFieldNumber = 73;
+    private bool hasDefaultBool;
+    private bool defaultBool_ = true;
+    public bool HasDefaultBool {
+      get { return hasDefaultBool; }
+    }
+    public bool DefaultBool {
+      get { return defaultBool_; }
+    }
+    
+    public const int DefaultStringFieldNumber = 74;
+    private bool hasDefaultString;
+    private string defaultString_ = "hello";
+    public bool HasDefaultString {
+      get { return hasDefaultString; }
+    }
+    public string DefaultString {
+      get { return defaultString_; }
+    }
+    
+    public const int DefaultBytesFieldNumber = 75;
+    private bool hasDefaultBytes;
+    private pb::ByteString defaultBytes_ = (pb::ByteString) global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Descriptor.Fields[62].DefaultValue;
+    public bool HasDefaultBytes {
+      get { return hasDefaultBytes; }
+    }
+    public pb::ByteString DefaultBytes {
+      get { return defaultBytes_; }
+    }
+    
+    public const int DefaultNestedEnumFieldNumber = 81;
+    private bool hasDefaultNestedEnum;
+    private global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedEnum defaultNestedEnum_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedEnum.BAR;
+    public bool HasDefaultNestedEnum {
+      get { return hasDefaultNestedEnum; }
+    }
+    public global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedEnum DefaultNestedEnum {
+      get { return defaultNestedEnum_; }
+    }
+    
+    public const int DefaultForeignEnumFieldNumber = 82;
+    private bool hasDefaultForeignEnum;
+    private global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite defaultForeignEnum_ = global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite.FOREIGN_LITE_BAR;
+    public bool HasDefaultForeignEnum {
+      get { return hasDefaultForeignEnum; }
+    }
+    public global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite DefaultForeignEnum {
+      get { return defaultForeignEnum_; }
+    }
+    
+    public const int DefaultImportEnumFieldNumber = 83;
+    private bool hasDefaultImportEnum;
+    private global::Google.ProtocolBuffers.TestProtos.ImportEnumLite defaultImportEnum_ = global::Google.ProtocolBuffers.TestProtos.ImportEnumLite.IMPORT_LITE_BAR;
+    public bool HasDefaultImportEnum {
+      get { return hasDefaultImportEnum; }
+    }
+    public global::Google.ProtocolBuffers.TestProtos.ImportEnumLite DefaultImportEnum {
+      get { return defaultImportEnum_; }
+    }
+    
+    public const int DefaultStringPieceFieldNumber = 84;
+    private bool hasDefaultStringPiece;
+    private string defaultStringPiece_ = "abc";
+    public bool HasDefaultStringPiece {
+      get { return hasDefaultStringPiece; }
+    }
+    public string DefaultStringPiece {
+      get { return defaultStringPiece_; }
+    }
+    
+    public const int DefaultCordFieldNumber = 85;
+    private bool hasDefaultCord;
+    private string defaultCord_ = "123";
+    public bool HasDefaultCord {
+      get { return hasDefaultCord; }
+    }
+    public string DefaultCord {
+      get { return defaultCord_; }
+    }
+    
+    public static TestAllTypesLite ParseFrom(pb::ByteString data) {
+      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
+    }
+    public static TestAllTypesLite ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
+      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
+    }
+    public static TestAllTypesLite ParseFrom(byte[] data) {
+      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
+    }
+    public static TestAllTypesLite ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
+      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
+    }
+    public static TestAllTypesLite ParseFrom(global::System.IO.Stream input) {
+      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
+    }
+    public static TestAllTypesLite ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
+      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
+    }
+    public static TestAllTypesLite ParseDelimitedFrom(global::System.IO.Stream input) {
+      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
+    }
+    public static TestAllTypesLite ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
+      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
+    }
+    public static TestAllTypesLite ParseFrom(pb::CodedInputStream input) {
+      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
+    }
+    public static TestAllTypesLite ParseFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
+      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
+    }
+    public static Builder CreateBuilder() { return new Builder(); }
+    public override Builder ToBuilder() { return CreateBuilder(this); }
+    public override Builder CreateBuilderForType() { return new Builder(); }
+    public static Builder CreateBuilder(TestAllTypesLite prototype) {
+      return (Builder) new Builder().MergeFrom(prototype);
+    }
+    
+    public sealed partial class Builder : pb::GeneratedBuilder<TestAllTypesLite, Builder> {
+      protected override Builder ThisBuilder {
+        get { return this; }
+      }
+      public Builder() {}
+      
+      TestAllTypesLite result = new TestAllTypesLite();
+      
+      protected override TestAllTypesLite MessageBeingBuilt {
+        get { return result; }
+      }
+      
+      public override Builder Clear() {
+        result = new TestAllTypesLite();
+        return this;
+      }
+      
+      public override Builder Clone() {
+        return new Builder().MergeFrom(result);
+      }
+      
+      public override pbd::MessageDescriptor DescriptorForType {
+        get { return global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Descriptor; }
+      }
+      
+      public override TestAllTypesLite DefaultInstanceForType {
+        get { return global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.DefaultInstance; }
+      }
+      
+      public override TestAllTypesLite BuildPartial() {
+        if (result == null) {
+          throw new global::System.InvalidOperationException("build() has already been called on this Builder");
+        }
+        result.repeatedInt32_.MakeReadOnly();
+        result.repeatedInt64_.MakeReadOnly();
+        result.repeatedUint32_.MakeReadOnly();
+        result.repeatedUint64_.MakeReadOnly();
+        result.repeatedSint32_.MakeReadOnly();
+        result.repeatedSint64_.MakeReadOnly();
+        result.repeatedFixed32_.MakeReadOnly();
+        result.repeatedFixed64_.MakeReadOnly();
+        result.repeatedSfixed32_.MakeReadOnly();
+        result.repeatedSfixed64_.MakeReadOnly();
+        result.repeatedFloat_.MakeReadOnly();
+        result.repeatedDouble_.MakeReadOnly();
+        result.repeatedBool_.MakeReadOnly();
+        result.repeatedString_.MakeReadOnly();
+        result.repeatedBytes_.MakeReadOnly();
+        result.repeatedGroup_.MakeReadOnly();
+        result.repeatedNestedMessage_.MakeReadOnly();
+        result.repeatedForeignMessage_.MakeReadOnly();
+        result.repeatedImportMessage_.MakeReadOnly();
+        result.repeatedNestedEnum_.MakeReadOnly();
+        result.repeatedForeignEnum_.MakeReadOnly();
+        result.repeatedImportEnum_.MakeReadOnly();
+        result.repeatedStringPiece_.MakeReadOnly();
+        result.repeatedCord_.MakeReadOnly();
+        TestAllTypesLite returnMe = result;
+        result = null;
+        return returnMe;
+      }
+      
+      
+      public bool HasOptionalInt32 {
+        get { return result.HasOptionalInt32; }
+      }
+      public int OptionalInt32 {
+        get { return result.OptionalInt32; }
+        set { SetOptionalInt32(value); }
+      }
+      public Builder SetOptionalInt32(int value) {
+        result.hasOptionalInt32 = true;
+        result.optionalInt32_ = value;
+        return this;
+      }
+      public Builder ClearOptionalInt32() {
+        result.hasOptionalInt32 = false;
+        result.optionalInt32_ = 0;
+        return this;
+      }
+      
+      public bool HasOptionalInt64 {
+        get { return result.HasOptionalInt64; }
+      }
+      public long OptionalInt64 {
+        get { return result.OptionalInt64; }
+        set { SetOptionalInt64(value); }
+      }
+      public Builder SetOptionalInt64(long value) {
+        result.hasOptionalInt64 = true;
+        result.optionalInt64_ = value;
+        return this;
+      }
+      public Builder ClearOptionalInt64() {
+        result.hasOptionalInt64 = false;
+        result.optionalInt64_ = 0L;
+        return this;
+      }
+      
+      public bool HasOptionalUint32 {
+        get { return result.HasOptionalUint32; }
+      }
+      [global::System.CLSCompliant(false)]
+      public uint OptionalUint32 {
+        get { return result.OptionalUint32; }
+        set { SetOptionalUint32(value); }
+      }
+      [global::System.CLSCompliant(false)]
+      public Builder SetOptionalUint32(uint value) {
+        result.hasOptionalUint32 = true;
+        result.optionalUint32_ = value;
+        return this;
+      }
+      public Builder ClearOptionalUint32() {
+        result.hasOptionalUint32 = false;
+        result.optionalUint32_ = 0;
+        return this;
+      }
+      
+      public bool HasOptionalUint64 {
+        get { return result.HasOptionalUint64; }
+      }
+      [global::System.CLSCompliant(false)]
+      public ulong OptionalUint64 {
+        get { return result.OptionalUint64; }
+        set { SetOptionalUint64(value); }
+      }
+      [global::System.CLSCompliant(false)]
+      public Builder SetOptionalUint64(ulong value) {
+        result.hasOptionalUint64 = true;
+        result.optionalUint64_ = value;
+        return this;
+      }
+      public Builder ClearOptionalUint64() {
+        result.hasOptionalUint64 = false;
+        result.optionalUint64_ = 0UL;
+        return this;
+      }
+      
+      public bool HasOptionalSint32 {
+        get { return result.HasOptionalSint32; }
+      }
+      public int OptionalSint32 {
+        get { return result.OptionalSint32; }
+        set { SetOptionalSint32(value); }
+      }
+      public Builder SetOptionalSint32(int value) {
+        result.hasOptionalSint32 = true;
+        result.optionalSint32_ = value;
+        return this;
+      }
+      public Builder ClearOptionalSint32() {
+        result.hasOptionalSint32 = false;
+        result.optionalSint32_ = 0;
+        return this;
+      }
+      
+      public bool HasOptionalSint64 {
+        get { return result.HasOptionalSint64; }
+      }
+      public long OptionalSint64 {
+        get { return result.OptionalSint64; }
+        set { SetOptionalSint64(value); }
+      }
+      public Builder SetOptionalSint64(long value) {
+        result.hasOptionalSint64 = true;
+        result.optionalSint64_ = value;
+        return this;
+      }
+      public Builder ClearOptionalSint64() {
+        result.hasOptionalSint64 = false;
+        result.optionalSint64_ = 0;
+        return this;
+      }
+      
+      public bool HasOptionalFixed32 {
+        get { return result.HasOptionalFixed32; }
+      }
+      [global::System.CLSCompliant(false)]
+      public uint OptionalFixed32 {
+        get { return result.OptionalFixed32; }
+        set { SetOptionalFixed32(value); }
+      }
+      [global::System.CLSCompliant(false)]
+      public Builder SetOptionalFixed32(uint value) {
+        result.hasOptionalFixed32 = true;
+        result.optionalFixed32_ = value;
+        return this;
+      }
+      public Builder ClearOptionalFixed32() {
+        result.hasOptionalFixed32 = false;
+        result.optionalFixed32_ = 0;
+        return this;
+      }
+      
+      public bool HasOptionalFixed64 {
+        get { return result.HasOptionalFixed64; }
+      }
+      [global::System.CLSCompliant(false)]
+      public ulong OptionalFixed64 {
+        get { return result.OptionalFixed64; }
+        set { SetOptionalFixed64(value); }
+      }
+      [global::System.CLSCompliant(false)]
+      public Builder SetOptionalFixed64(ulong value) {
+        result.hasOptionalFixed64 = true;
+        result.optionalFixed64_ = value;
+        return this;
+      }
+      public Builder ClearOptionalFixed64() {
+        result.hasOptionalFixed64 = false;
+        result.optionalFixed64_ = 0;
+        return this;
+      }
+      
+      public bool HasOptionalSfixed32 {
+        get { return result.HasOptionalSfixed32; }
+      }
+      public int OptionalSfixed32 {
+        get { return result.OptionalSfixed32; }
+        set { SetOptionalSfixed32(value); }
+      }
+      public Builder SetOptionalSfixed32(int value) {
+        result.hasOptionalSfixed32 = true;
+        result.optionalSfixed32_ = value;
+        return this;
+      }
+      public Builder ClearOptionalSfixed32() {
+        result.hasOptionalSfixed32 = false;
+        result.optionalSfixed32_ = 0;
+        return this;
+      }
+      
+      public bool HasOptionalSfixed64 {
+        get { return result.HasOptionalSfixed64; }
+      }
+      public long OptionalSfixed64 {
+        get { return result.OptionalSfixed64; }
+        set { SetOptionalSfixed64(value); }
+      }
+      public Builder SetOptionalSfixed64(long value) {
+        result.hasOptionalSfixed64 = true;
+        result.optionalSfixed64_ = value;
+        return this;
+      }
+      public Builder ClearOptionalSfixed64() {
+        result.hasOptionalSfixed64 = false;
+        result.optionalSfixed64_ = 0;
+        return this;
+      }
+      
+      public bool HasOptionalFloat {
+        get { return result.HasOptionalFloat; }
+      }
+      public float OptionalFloat {
+        get { return result.OptionalFloat; }
+        set { SetOptionalFloat(value); }
+      }
+      public Builder SetOptionalFloat(float value) {
+        result.hasOptionalFloat = true;
+        result.optionalFloat_ = value;
+        return this;
+      }
+      public Builder ClearOptionalFloat() {
+        result.hasOptionalFloat = false;
+        result.optionalFloat_ = 0F;
+        return this;
+      }
+      
+      public bool HasOptionalDouble {
+        get { return result.HasOptionalDouble; }
+      }
+      public double OptionalDouble {
+        get { return result.OptionalDouble; }
+        set { SetOptionalDouble(value); }
+      }
+      public Builder SetOptionalDouble(double value) {
+        result.hasOptionalDouble = true;
+        result.optionalDouble_ = value;
+        return this;
+      }
+      public Builder ClearOptionalDouble() {
+        result.hasOptionalDouble = false;
+        result.optionalDouble_ = 0D;
+        return this;
+      }
+      
+      public bool HasOptionalBool {
+        get { return result.HasOptionalBool; }
+      }
+      public bool OptionalBool {
+        get { return result.OptionalBool; }
+        set { SetOptionalBool(value); }
+      }
+      public Builder SetOptionalBool(bool value) {
+        result.hasOptionalBool = true;
+        result.optionalBool_ = value;
+        return this;
+      }
+      public Builder ClearOptionalBool() {
+        result.hasOptionalBool = false;
+        result.optionalBool_ = false;
+        return this;
+      }
+      
+      public bool HasOptionalString {
+        get { return result.HasOptionalString; }
+      }
+      public string OptionalString {
+        get { return result.OptionalString; }
+        set { SetOptionalString(value); }
+      }
+      public Builder SetOptionalString(string value) {
+        pb::ThrowHelper.ThrowIfNull(value, "value");
+        result.hasOptionalString = true;
+        result.optionalString_ = value;
+        return this;
+      }
+      public Builder ClearOptionalString() {
+        result.hasOptionalString = false;
+        result.optionalString_ = "";
+        return this;
+      }
+      
+      public bool HasOptionalBytes {
+        get { return result.HasOptionalBytes; }
+      }
+      public pb::ByteString OptionalBytes {
+        get { return result.OptionalBytes; }
+        set { SetOptionalBytes(value); }
+      }
+      public Builder SetOptionalBytes(pb::ByteString value) {
+        pb::ThrowHelper.ThrowIfNull(value, "value");
+        result.hasOptionalBytes = true;
+        result.optionalBytes_ = value;
+        return this;
+      }
+      public Builder ClearOptionalBytes() {
+        result.hasOptionalBytes = false;
+        result.optionalBytes_ = pb::ByteString.Empty;
+        return this;
+      }
+      
+      public bool HasOptionalGroup {
+       get { return result.HasOptionalGroup; }
+      }
+      public global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.OptionalGroup OptionalGroup {
+        get { return result.OptionalGroup; }
+        set { SetOptionalGroup(value); }
+      }
+      public Builder SetOptionalGroup(global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.OptionalGroup value) {
+        pb::ThrowHelper.ThrowIfNull(value, "value");
+        result.hasOptionalGroup = true;
+        result.optionalGroup_ = value;
+        return this;
+      }
+      public Builder SetOptionalGroup(global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.OptionalGroup.Builder builderForValue) {
+        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
+        result.hasOptionalGroup = true;
+        result.optionalGroup_ = builderForValue.Build();
+        return this;
+      }
+      public Builder MergeOptionalGroup(global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.OptionalGroup value) {
+        pb::ThrowHelper.ThrowIfNull(value, "value");
+        if (result.HasOptionalGroup &&
+            result.optionalGroup_ != global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.OptionalGroup.DefaultInstance) {
+            result.optionalGroup_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.OptionalGroup.CreateBuilder(result.optionalGroup_).MergeFrom(value).BuildPartial();
+        } else {
+          result.optionalGroup_ = value;
+        }
+        result.hasOptionalGroup = true;
+        return this;
+      }
+      public Builder ClearOptionalGroup() {
+        result.hasOptionalGroup = false;
+        result.optionalGroup_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.OptionalGroup.DefaultInstance;
+        return this;
+      }
+      
+      public bool HasOptionalNestedMessage {
+       get { return result.HasOptionalNestedMessage; }
+      }
+      public global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage OptionalNestedMessage {
+        get { return result.OptionalNestedMessage; }
+        set { SetOptionalNestedMessage(value); }
+      }
+      public Builder SetOptionalNestedMessage(global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage value) {
+        pb::ThrowHelper.ThrowIfNull(value, "value");
+        result.hasOptionalNestedMessage = true;
+        result.optionalNestedMessage_ = value;
+        return this;
+      }
+      public Builder SetOptionalNestedMessage(global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage.Builder builderForValue) {
+        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
+        result.hasOptionalNestedMessage = true;
+        result.optionalNestedMessage_ = builderForValue.Build();
+        return this;
+      }
+      public Builder MergeOptionalNestedMessage(global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage value) {
+        pb::ThrowHelper.ThrowIfNull(value, "value");
+        if (result.HasOptionalNestedMessage &&
+            result.optionalNestedMessage_ != global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage.DefaultInstance) {
+            result.optionalNestedMessage_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage.CreateBuilder(result.optionalNestedMessage_).MergeFrom(value).BuildPartial();
+        } else {
+          result.optionalNestedMessage_ = value;
+        }
+        result.hasOptionalNestedMessage = true;
+        return this;
+      }
+      public Builder ClearOptionalNestedMessage() {
+        result.hasOptionalNestedMessage = false;
+        result.optionalNestedMessage_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage.DefaultInstance;
+        return this;
+      }
+      
+      public bool HasOptionalForeignMessage {
+       get { return result.HasOptionalForeignMessage; }
+      }
+      public global::Google.ProtocolBuffers.TestProtos.ForeignMessageLite OptionalForeignMessage {
+        get { return result.OptionalForeignMessage; }
+        set { SetOptionalForeignMessage(value); }
+      }
+      public Builder SetOptionalForeignMessage(global::Google.ProtocolBuffers.TestProtos.ForeignMessageLite value) {
+        pb::ThrowHelper.ThrowIfNull(value, "value");
+        result.hasOptionalForeignMessage = true;
+        result.optionalForeignMessage_ = value;
+        return this;
+      }
+      public Builder SetOptionalForeignMessage(global::Google.ProtocolBuffers.TestProtos.ForeignMessageLite.Builder builderForValue) {
+        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
+        result.hasOptionalForeignMessage = true;
+        result.optionalForeignMessage_ = builderForValue.Build();
+        return this;
+      }
+      public Builder MergeOptionalForeignMessage(global::Google.ProtocolBuffers.TestProtos.ForeignMessageLite value) {
+        pb::ThrowHelper.ThrowIfNull(value, "value");
+        if (result.HasOptionalForeignMessage &&
+            result.optionalForeignMessage_ != global::Google.ProtocolBuffers.TestProtos.ForeignMessageLite.DefaultInstance) {
+            result.optionalForeignMessage_ = global::Google.ProtocolBuffers.TestProtos.ForeignMessageLite.CreateBuilder(result.optionalForeignMessage_).MergeFrom(value).BuildPartial();
+        } else {
+          result.optionalForeignMessage_ = value;
+        }
+        result.hasOptionalForeignMessage = true;
+        return this;
+      }
+      public Builder ClearOptionalForeignMessage() {
+        result.hasOptionalForeignMessage = false;
+        result.optionalForeignMessage_ = global::Google.ProtocolBuffers.TestProtos.ForeignMessageLite.DefaultInstance;
+        return this;
+      }
+      
+      public bool HasOptionalImportMessage {
+       get { return result.HasOptionalImportMessage; }
+      }
+      public global::Google.ProtocolBuffers.TestProtos.ImportMessageLite OptionalImportMessage {
+        get { return result.OptionalImportMessage; }
+        set { SetOptionalImportMessage(value); }
+      }
+      public Builder SetOptionalImportMessage(global::Google.ProtocolBuffers.TestProtos.ImportMessageLite value) {
+        pb::ThrowHelper.ThrowIfNull(value, "value");
+        result.hasOptionalImportMessage = true;
+        result.optionalImportMessage_ = value;
+        return this;
+      }
+      public Builder SetOptionalImportMessage(global::Google.ProtocolBuffers.TestProtos.ImportMessageLite.Builder builderForValue) {
+        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
+        result.hasOptionalImportMessage = true;
+        result.optionalImportMessage_ = builderForValue.Build();
+        return this;
+      }
+      public Builder MergeOptionalImportMessage(global::Google.ProtocolBuffers.TestProtos.ImportMessageLite value) {
+        pb::ThrowHelper.ThrowIfNull(value, "value");
+        if (result.HasOptionalImportMessage &&
+            result.optionalImportMessage_ != global::Google.ProtocolBuffers.TestProtos.ImportMessageLite.DefaultInstance) {
+            result.optionalImportMessage_ = global::Google.ProtocolBuffers.TestProtos.ImportMessageLite.CreateBuilder(result.optionalImportMessage_).MergeFrom(value).BuildPartial();
+        } else {
+          result.optionalImportMessage_ = value;
+        }
+        result.hasOptionalImportMessage = true;
+        return this;
+      }
+      public Builder ClearOptionalImportMessage() {
+        result.hasOptionalImportMessage = false;
+        result.optionalImportMessage_ = global::Google.ProtocolBuffers.TestProtos.ImportMessageLite.DefaultInstance;
+        return this;
+      }
+      
+      public bool HasOptionalNestedEnum {
+       get { return result.HasOptionalNestedEnum; }
+      }
+      public global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedEnum OptionalNestedEnum {
+        get { return result.OptionalNestedEnum; }
+        set { SetOptionalNestedEnum(value); }
+      }
+      public Builder SetOptionalNestedEnum(global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedEnum value) {
+        result.hasOptionalNestedEnum = true;
+        result.optionalNestedEnum_ = value;
+        return this;
+      }
+      public Builder ClearOptionalNestedEnum() {
+        result.hasOptionalNestedEnum = false;
+        result.optionalNestedEnum_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedEnum.FOO;
+        return this;
+      }
+      
+      public bool HasOptionalForeignEnum {
+       get { return result.HasOptionalForeignEnum; }
+      }
+      public global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite OptionalForeignEnum {
+        get { return result.OptionalForeignEnum; }
+        set { SetOptionalForeignEnum(value); }
+      }
+      public Builder SetOptionalForeignEnum(global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite value) {
+        result.hasOptionalForeignEnum = true;
+        result.optionalForeignEnum_ = value;
+        return this;
+      }
+      public Builder ClearOptionalForeignEnum() {
+        result.hasOptionalForeignEnum = false;
+        result.optionalForeignEnum_ = global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite.FOREIGN_LITE_FOO;
+        return this;
+      }
+      
+      public bool HasOptionalImportEnum {
+       get { return result.HasOptionalImportEnum; }
+      }
+      public global::Google.ProtocolBuffers.TestProtos.ImportEnumLite OptionalImportEnum {
+        get { return result.OptionalImportEnum; }
+        set { SetOptionalImportEnum(value); }
+      }
+      public Builder SetOptionalImportEnum(global::Google.ProtocolBuffers.TestProtos.ImportEnumLite value) {
+        result.hasOptionalImportEnum = true;
+        result.optionalImportEnum_ = value;
+        return this;
+      }
+      public Builder ClearOptionalImportEnum() {
+        result.hasOptionalImportEnum = false;
+        result.optionalImportEnum_ = global::Google.ProtocolBuffers.TestProtos.ImportEnumLite.IMPORT_LITE_FOO;
+        return this;
+      }
+      
+      public bool HasOptionalStringPiece {
+        get { return result.HasOptionalStringPiece; }
+      }
+      public string OptionalStringPiece {
+        get { return result.OptionalStringPiece; }
+        set { SetOptionalStringPiece(value); }
+      }
+      public Builder SetOptionalStringPiece(string value) {
+        pb::ThrowHelper.ThrowIfNull(value, "value");
+        result.hasOptionalStringPiece = true;
+        result.optionalStringPiece_ = value;
+        return this;
+      }
+      public Builder ClearOptionalStringPiece() {
+        result.hasOptionalStringPiece = false;
+        result.optionalStringPiece_ = "";
+        return this;
+      }
+      
+      public bool HasOptionalCord {
+        get { return result.HasOptionalCord; }
+      }
+      public string OptionalCord {
+        get { return result.OptionalCord; }
+        set { SetOptionalCord(value); }
+      }
+      public Builder SetOptionalCord(string value) {
+        pb::ThrowHelper.ThrowIfNull(value, "value");
+        result.hasOptionalCord = true;
+        result.optionalCord_ = value;
+        return this;
+      }
+      public Builder ClearOptionalCord() {
+        result.hasOptionalCord = false;
+        result.optionalCord_ = "";
+        return this;
+      }
+      
+      public pbc::IPopsicleList<int> RepeatedInt32List {
+        get { return result.repeatedInt32_; }
+      }
+      public int RepeatedInt32Count {
+        get { return result.RepeatedInt32Count; }
+      }
+      public int GetRepeatedInt32(int index) {
+        return result.GetRepeatedInt32(index);
+      }
+      public Builder SetRepeatedInt32(int index, int value) {
+        result.repeatedInt32_[index] = value;
+        return this;
+      }
+      public Builder AddRepeatedInt32(int value) {
+        result.repeatedInt32_.Add(value);
+        return this;
+      }
+      public Builder AddRangeRepeatedInt32(scg::IEnumerable<int> values) {
+        base.AddRange(values, result.repeatedInt32_);
+        return this;
+      }
+      public Builder ClearRepeatedInt32() {
+        result.repeatedInt32_.Clear();
+        return this;
+      }
+      
+      public pbc::IPopsicleList<long> RepeatedInt64List {
+        get { return result.repeatedInt64_; }
+      }
+      public int RepeatedInt64Count {
+        get { return result.RepeatedInt64Count; }
+      }
+      public long GetRepeatedInt64(int index) {
+        return result.GetRepeatedInt64(index);
+      }
+      public Builder SetRepeatedInt64(int index, long value) {
+        result.repeatedInt64_[index] = value;
+        return this;
+      }
+      public Builder AddRepeatedInt64(long value) {
+        result.repeatedInt64_.Add(value);
+        return this;
+      }
+      public Builder AddRangeRepeatedInt64(scg::IEnumerable<long> values) {
+        base.AddRange(values, result.repeatedInt64_);
+        return this;
+      }
+      public Builder ClearRepeatedInt64() {
+        result.repeatedInt64_.Clear();
+        return this;
+      }
+      
+      [global::System.CLSCompliant(false)]
+      public pbc::IPopsicleList<uint> RepeatedUint32List {
+        get { return result.repeatedUint32_; }
+      }
+      public int RepeatedUint32Count {
+        get { return result.RepeatedUint32Count; }
+      }
+      [global::System.CLSCompliant(false)]
+      public uint GetRepeatedUint32(int index) {
+        return result.GetRepeatedUint32(index);
+      }
+      [global::System.CLSCompliant(false)]
+      public Builder SetRepeatedUint32(int index, uint value) {
+        result.repeatedUint32_[index] = value;
+        return this;
+      }
+      [global::System.CLSCompliant(false)]
+      public Builder AddRepeatedUint32(uint value) {
+        result.repeatedUint32_.Add(value);
+        return this;
+      }
+      [global::System.CLSCompliant(false)]
+      public Builder AddRangeRepeatedUint32(scg::IEnumerable<uint> values) {
+        base.AddRange(values, result.repeatedUint32_);
+        return this;
+      }
+      public Builder ClearRepeatedUint32() {
+        result.repeatedUint32_.Clear();
+        return this;
+      }
+      
+      [global::System.CLSCompliant(false)]
+      public pbc::IPopsicleList<ulong> RepeatedUint64List {
+        get { return result.repeatedUint64_; }
+      }
+      public int RepeatedUint64Count {
+        get { return result.RepeatedUint64Count; }
+      }
+      [global::System.CLSCompliant(false)]
+      public ulong GetRepeatedUint64(int index) {
+        return result.GetRepeatedUint64(index);
+      }
+      [global::System.CLSCompliant(false)]
+      public Builder SetRepeatedUint64(int index, ulong value) {
+        result.repeatedUint64_[index] = value;
+        return this;
+      }
+      [global::System.CLSCompliant(false)]
+      public Builder AddRepeatedUint64(ulong value) {
+        result.repeatedUint64_.Add(value);
+        return this;
+      }
+      [global::System.CLSCompliant(false)]
+      public Builder AddRangeRepeatedUint64(scg::IEnumerable<ulong> values) {
+        base.AddRange(values, result.repeatedUint64_);
+        return this;
+      }
+      public Builder ClearRepeatedUint64() {
+        result.repeatedUint64_.Clear();
+        return this;
+      }
+      
+      public pbc::IPopsicleList<int> RepeatedSint32List {
+        get { return result.repeatedSint32_; }
+      }
+      public int RepeatedSint32Count {
+        get { return result.RepeatedSint32Count; }
+      }
+      public int GetRepeatedSint32(int index) {
+        return result.GetRepeatedSint32(index);
+      }
+      public Builder SetRepeatedSint32(int index, int value) {
+        result.repeatedSint32_[index] = value;
+        return this;
+      }
+      public Builder AddRepeatedSint32(int value) {
+        result.repeatedSint32_.Add(value);
+        return this;
+      }
+      public Builder AddRangeRepeatedSint32(scg::IEnumerable<int> values) {
+        base.AddRange(values, result.repeatedSint32_);
+        return this;
+      }
+      public Builder ClearRepeatedSint32() {
+        result.repeatedSint32_.Clear();
+        return this;
+      }
+      
+      public pbc::IPopsicleList<long> RepeatedSint64List {
+        get { return result.repeatedSint64_; }
+      }
+      public int RepeatedSint64Count {
+        get { return result.RepeatedSint64Count; }
+      }
+      public long GetRepeatedSint64(int index) {
+        return result.GetRepeatedSint64(index);
+      }
+      public Builder SetRepeatedSint64(int index, long value) {
+        result.repeatedSint64_[index] = value;
+        return this;
+      }
+      public Builder AddRepeatedSint64(long value) {
+        result.repeatedSint64_.Add(value);
+        return this;
+      }
+      public Builder AddRangeRepeatedSint64(scg::IEnumerable<long> values) {
+        base.AddRange(values, result.repeatedSint64_);
+        return this;
+      }
+      public Builder ClearRepeatedSint64() {
+        result.repeatedSint64_.Clear();
+        return this;
+      }
+      
+      [global::System.CLSCompliant(false)]
+      public pbc::IPopsicleList<uint> RepeatedFixed32List {
+        get { return result.repeatedFixed32_; }
+      }
+      public int RepeatedFixed32Count {
+        get { return result.RepeatedFixed32Count; }
+      }
+      [global::System.CLSCompliant(false)]
+      public uint GetRepeatedFixed32(int index) {
+        return result.GetRepeatedFixed32(index);
+      }
+      [global::System.CLSCompliant(false)]
+      public Builder SetRepeatedFixed32(int index, uint value) {
+        result.repeatedFixed32_[index] = value;
+        return this;
+      }
+      [global::System.CLSCompliant(false)]
+      public Builder AddRepeatedFixed32(uint value) {
+        result.repeatedFixed32_.Add(value);
+        return this;
+      }
+      [global::System.CLSCompliant(false)]
+      public Builder AddRangeRepeatedFixed32(scg::IEnumerable<uint> values) {
+        base.AddRange(values, result.repeatedFixed32_);
+        return this;
+      }
+      public Builder ClearRepeatedFixed32() {
+        result.repeatedFixed32_.Clear();
+        return this;
+      }
+      
+      [global::System.CLSCompliant(false)]
+      public pbc::IPopsicleList<ulong> RepeatedFixed64List {
+        get { return result.repeatedFixed64_; }
+      }
+      public int RepeatedFixed64Count {
+        get { return result.RepeatedFixed64Count; }
+      }
+      [global::System.CLSCompliant(false)]
+      public ulong GetRepeatedFixed64(int index) {
+        return result.GetRepeatedFixed64(index);
+      }
+      [global::System.CLSCompliant(false)]
+      public Builder SetRepeatedFixed64(int index, ulong value) {
+        result.repeatedFixed64_[index] = value;
+        return this;
+      }
+      [global::System.CLSCompliant(false)]
+      public Builder AddRepeatedFixed64(ulong value) {
+        result.repeatedFixed64_.Add(value);
+        return this;
+      }
+      [global::System.CLSCompliant(false)]
+      public Builder AddRangeRepeatedFixed64(scg::IEnumerable<ulong> values) {
+        base.AddRange(values, result.repeatedFixed64_);
+        return this;
+      }
+      public Builder ClearRepeatedFixed64() {
+        result.repeatedFixed64_.Clear();
+        return this;
+      }
+      
+      public pbc::IPopsicleList<int> RepeatedSfixed32List {
+        get { return result.repeatedSfixed32_; }
+      }
+      public int RepeatedSfixed32Count {
+        get { return result.RepeatedSfixed32Count; }
+      }
+      public int GetRepeatedSfixed32(int index) {
+        return result.GetRepeatedSfixed32(index);
+      }
+      public Builder SetRepeatedSfixed32(int index, int value) {
+        result.repeatedSfixed32_[index] = value;
+        return this;
+      }
+      public Builder AddRepeatedSfixed32(int value) {
+        result.repeatedSfixed32_.Add(value);
+        return this;
+      }
+      public Builder AddRangeRepeatedSfixed32(scg::IEnumerable<int> values) {
+        base.AddRange(values, result.repeatedSfixed32_);
+        return this;
+      }
+      public Builder ClearRepeatedSfixed32() {
+        result.repeatedSfixed32_.Clear();
+        return this;
+      }
+      
+      public pbc::IPopsicleList<long> RepeatedSfixed64List {
+        get { return result.repeatedSfixed64_; }
+      }
+      public int RepeatedSfixed64Count {
+        get { return result.RepeatedSfixed64Count; }
+      }
+      public long GetRepeatedSfixed64(int index) {
+        return result.GetRepeatedSfixed64(index);
+      }
+      public Builder SetRepeatedSfixed64(int index, long value) {
+        result.repeatedSfixed64_[index] = value;
+        return this;
+      }
+      public Builder AddRepeatedSfixed64(long value) {
+        result.repeatedSfixed64_.Add(value);
+        return this;
+      }
+      public Builder AddRangeRepeatedSfixed64(scg::IEnumerable<long> values) {
+        base.AddRange(values, result.repeatedSfixed64_);
+        return this;
+      }
+      public Builder ClearRepeatedSfixed64() {
+        result.repeatedSfixed64_.Clear();
+        return this;
+      }
+      
+      public pbc::IPopsicleList<float> RepeatedFloatList {
+        get { return result.repeatedFloat_; }
+      }
+      public int RepeatedFloatCount {
+        get { return result.RepeatedFloatCount; }
+      }
+      public float GetRepeatedFloat(int index) {
+        return result.GetRepeatedFloat(index);
+      }
+      public Builder SetRepeatedFloat(int index, float value) {
+        result.repeatedFloat_[index] = value;
+        return this;
+      }
+      public Builder AddRepeatedFloat(float value) {
+        result.repeatedFloat_.Add(value);
+        return this;
+      }
+      public Builder AddRangeRepeatedFloat(scg::IEnumerable<float> values) {
+        base.AddRange(values, result.repeatedFloat_);
+        return this;
+      }
+      public Builder ClearRepeatedFloat() {
+        result.repeatedFloat_.Clear();
+        return this;
+      }
+      
+      public pbc::IPopsicleList<double> RepeatedDoubleList {
+        get { return result.repeatedDouble_; }
+      }
+      public int RepeatedDoubleCount {
+        get { return result.RepeatedDoubleCount; }
+      }
+      public double GetRepeatedDouble(int index) {
+        return result.GetRepeatedDouble(index);
+      }
+      public Builder SetRepeatedDouble(int index, double value) {
+        result.repeatedDouble_[index] = value;
+        return this;
+      }
+      public Builder AddRepeatedDouble(double value) {
+        result.repeatedDouble_.Add(value);
+        return this;
+      }
+      public Builder AddRangeRepeatedDouble(scg::IEnumerable<double> values) {
+        base.AddRange(values, result.repeatedDouble_);
+        return this;
+      }
+      public Builder ClearRepeatedDouble() {
+        result.repeatedDouble_.Clear();
+        return this;
+      }
+      
+      public pbc::IPopsicleList<bool> RepeatedBoolList {
+        get { return result.repeatedBool_; }
+      }
+      public int RepeatedBoolCount {
+        get { return result.RepeatedBoolCount; }
+      }
+      public bool GetRepeatedBool(int index) {
+        return result.GetRepeatedBool(index);
+      }
+      public Builder SetRepeatedBool(int index, bool value) {
+        result.repeatedBool_[index] = value;
+        return this;
+      }
+      public Builder AddRepeatedBool(bool value) {
+        result.repeatedBool_.Add(value);
+        return this;
+      }
+      public Builder AddRangeRepeatedBool(scg::IEnumerable<bool> values) {
+        base.AddRange(values, result.repeatedBool_);
+        return this;
+      }
+      public Builder ClearRepeatedBool() {
+        result.repeatedBool_.Clear();
+        return this;
+      }
+      
+      public pbc::IPopsicleList<string> RepeatedStringList {
+        get { return result.repeatedString_; }
+      }
+      public int RepeatedStringCount {
+        get { return result.RepeatedStringCount; }
+      }
+      public string GetRepeatedString(int index) {
+        return result.GetRepeatedString(index);
+      }
+      public Builder SetRepeatedString(int index, string value) {
+        pb::ThrowHelper.ThrowIfNull(value, "value");
+        result.repeatedString_[index] = value;
+        return this;
+      }
+      public Builder AddRepeatedString(string value) {
+        pb::ThrowHelper.ThrowIfNull(value, "value");
+        result.repeatedString_.Add(value);
+        return this;
+      }
+      public Builder AddRangeRepeatedString(scg::IEnumerable<string> values) {
+        base.AddRange(values, result.repeatedString_);
+        return this;
+      }
+      public Builder ClearRepeatedString() {
+        result.repeatedString_.Clear();
+        return this;
+      }
+      
+      public pbc::IPopsicleList<pb::ByteString> RepeatedBytesList {
+        get { return result.repeatedBytes_; }
+      }
+      public int RepeatedBytesCount {
+        get { return result.RepeatedBytesCount; }
+      }
+      public pb::ByteString GetRepeatedBytes(int index) {
+        return result.GetRepeatedBytes(index);
+      }
+      public Builder SetRepeatedBytes(int index, pb::ByteString value) {
+        pb::ThrowHelper.ThrowIfNull(value, "value");
+        result.repeatedBytes_[index] = value;
+        return this;
+      }
+      public Builder AddRepeatedBytes(pb::ByteString value) {
+        pb::ThrowHelper.ThrowIfNull(value, "value");
+        result.repeatedBytes_.Add(value);
+        return this;
+      }
+      public Builder AddRangeRepeatedBytes(scg::IEnumerable<pb::ByteString> values) {
+        base.AddRange(values, result.repeatedBytes_);
+        return this;
+      }
+      public Builder ClearRepeatedBytes() {
+        result.repeatedBytes_.Clear();
+        return this;
+      }
+      
+      public pbc::IPopsicleList<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.RepeatedGroup> RepeatedGroupList {
+        get { return result.repeatedGroup_; }
+      }
+      public int RepeatedGroupCount {
+        get { return result.RepeatedGroupCount; }
+      }
+      public global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.RepeatedGroup GetRepeatedGroup(int index) {
+        return result.GetRepeatedGroup(index);
+      }
+      public Builder SetRepeatedGroup(int index, global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.RepeatedGroup value) {
+        pb::ThrowHelper.ThrowIfNull(value, "value");
+        result.repeatedGroup_[index] = value;
+        return this;
+      }
+      public Builder SetRepeatedGroup(int index, global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.RepeatedGroup.Builder builderForValue) {
+        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
+        result.repeatedGroup_[index] = builderForValue.Build();
+        return this;
+      }
+      public Builder AddRepeatedGroup(global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.RepeatedGroup value) {
+        pb::ThrowHelper.ThrowIfNull(value, "value");
+        result.repeatedGroup_.Add(value);
+        return this;
+      }
+      public Builder AddRepeatedGroup(global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.RepeatedGroup.Builder builderForValue) {
+        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
+        result.repeatedGroup_.Add(builderForValue.Build());
+        return this;
+      }
+      public Builder AddRangeRepeatedGroup(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.RepeatedGroup> values) {
+        base.AddRange(values, result.repeatedGroup_);
+        return this;
+      }
+      public Builder ClearRepeatedGroup() {
+        result.repeatedGroup_.Clear();
+        return this;
+      }
+      
+      public pbc::IPopsicleList<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage> RepeatedNestedMessageList {
+        get { return result.repeatedNestedMessage_; }
+      }
+      public int RepeatedNestedMessageCount {
+        get { return result.RepeatedNestedMessageCount; }
+      }
+      public global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage GetRepeatedNestedMessage(int index) {
+        return result.GetRepeatedNestedMessage(index);
+      }
+      public Builder SetRepeatedNestedMessage(int index, global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage value) {
+        pb::ThrowHelper.ThrowIfNull(value, "value");
+        result.repeatedNestedMessage_[index] = value;
+        return this;
+      }
+      public Builder SetRepeatedNestedMessage(int index, global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage.Builder builderForValue) {
+        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
+        result.repeatedNestedMessage_[index] = builderForValue.Build();
+        return this;
+      }
+      public Builder AddRepeatedNestedMessage(global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage value) {
+        pb::ThrowHelper.ThrowIfNull(value, "value");
+        result.repeatedNestedMessage_.Add(value);
+        return this;
+      }
+      public Builder AddRepeatedNestedMessage(global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage.Builder builderForValue) {
+        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
+        result.repeatedNestedMessage_.Add(builderForValue.Build());
+        return this;
+      }
+      public Builder AddRangeRepeatedNestedMessage(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage> values) {
+        base.AddRange(values, result.repeatedNestedMessage_);
+        return this;
+      }
+      public Builder ClearRepeatedNestedMessage() {
+        result.repeatedNestedMessage_.Clear();
+        return this;
+      }
+      
+      public pbc::IPopsicleList<global::Google.ProtocolBuffers.TestProtos.ForeignMessageLite> RepeatedForeignMessageList {
+        get { return result.repeatedForeignMessage_; }
+      }
+      public int RepeatedForeignMessageCount {
+        get { return result.RepeatedForeignMessageCount; }
+      }
+      public global::Google.ProtocolBuffers.TestProtos.ForeignMessageLite GetRepeatedForeignMessage(int index) {
+        return result.GetRepeatedForeignMessage(index);
+      }
+      public Builder SetRepeatedForeignMessage(int index, global::Google.ProtocolBuffers.TestProtos.ForeignMessageLite value) {
+        pb::ThrowHelper.ThrowIfNull(value, "value");
+        result.repeatedForeignMessage_[index] = value;
+        return this;
+      }
+      public Builder SetRepeatedForeignMessage(int index, global::Google.ProtocolBuffers.TestProtos.ForeignMessageLite.Builder builderForValue) {
+        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
+        result.repeatedForeignMessage_[index] = builderForValue.Build();
+        return this;
+      }
+      public Builder AddRepeatedForeignMessage(global::Google.ProtocolBuffers.TestProtos.ForeignMessageLite value) {
+        pb::ThrowHelper.ThrowIfNull(value, "value");
+        result.repeatedForeignMessage_.Add(value);
+        return this;
+      }
+      public Builder AddRepeatedForeignMessage(global::Google.ProtocolBuffers.TestProtos.ForeignMessageLite.Builder builderForValue) {
+        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
+        result.repeatedForeignMessage_.Add(builderForValue.Build());
+        return this;
+      }
+      public Builder AddRangeRepeatedForeignMessage(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.ForeignMessageLite> values) {
+        base.AddRange(values, result.repeatedForeignMessage_);
+        return this;
+      }
+      public Builder ClearRepeatedForeignMessage() {
+        result.repeatedForeignMessage_.Clear();
+        return this;
+      }
+      
+      public pbc::IPopsicleList<global::Google.ProtocolBuffers.TestProtos.ImportMessageLite> RepeatedImportMessageList {
+        get { return result.repeatedImportMessage_; }
+      }
+      public int RepeatedImportMessageCount {
+        get { return result.RepeatedImportMessageCount; }
+      }
+      public global::Google.ProtocolBuffers.TestProtos.ImportMessageLite GetRepeatedImportMessage(int index) {
+        return result.GetRepeatedImportMessage(index);
+      }
+      public Builder SetRepeatedImportMessage(int index, global::Google.ProtocolBuffers.TestProtos.ImportMessageLite value) {
+        pb::ThrowHelper.ThrowIfNull(value, "value");
+        result.repeatedImportMessage_[index] = value;
+        return this;
+      }
+      public Builder SetRepeatedImportMessage(int index, global::Google.ProtocolBuffers.TestProtos.ImportMessageLite.Builder builderForValue) {
+        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
+        result.repeatedImportMessage_[index] = builderForValue.Build();
+        return this;
+      }
+      public Builder AddRepeatedImportMessage(global::Google.ProtocolBuffers.TestProtos.ImportMessageLite value) {
+        pb::ThrowHelper.ThrowIfNull(value, "value");
+        result.repeatedImportMessage_.Add(value);
+        return this;
+      }
+      public Builder AddRepeatedImportMessage(global::Google.ProtocolBuffers.TestProtos.ImportMessageLite.Builder builderForValue) {
+        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
+        result.repeatedImportMessage_.Add(builderForValue.Build());
+        return this;
+      }
+      public Builder AddRangeRepeatedImportMessage(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.ImportMessageLite> values) {
+        base.AddRange(values, result.repeatedImportMessage_);
+        return this;
+      }
+      public Builder ClearRepeatedImportMessage() {
+        result.repeatedImportMessage_.Clear();
+        return this;
+      }
+      
+      public pbc::IPopsicleList<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedEnum> RepeatedNestedEnumList {
+        get { return result.repeatedNestedEnum_; }
+      }
+      public int RepeatedNestedEnumCount {
+        get { return result.RepeatedNestedEnumCount; }
+      }
+      public global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedEnum GetRepeatedNestedEnum(int index) {
+        return result.GetRepeatedNestedEnum(index);
+      }
+      public Builder SetRepeatedNestedEnum(int index, global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedEnum value) {
+        result.repeatedNestedEnum_[index] = value;
+        return this;
+      }
+      public Builder AddRepeatedNestedEnum(global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedEnum value) {
+        result.repeatedNestedEnum_.Add(value);
+        return this;
+      }
+      public Builder AddRangeRepeatedNestedEnum(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedEnum> values) {
+        base.AddRange(values, result.repeatedNestedEnum_);
+        return this;
+      }
+      public Builder ClearRepeatedNestedEnum() {
+        result.repeatedNestedEnum_.Clear();
+        return this;
+      }
+      
+      public pbc::IPopsicleList<global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite> RepeatedForeignEnumList {
+        get { return result.repeatedForeignEnum_; }
+      }
+      public int RepeatedForeignEnumCount {
+        get { return result.RepeatedForeignEnumCount; }
+      }
+      public global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite GetRepeatedForeignEnum(int index) {
+        return result.GetRepeatedForeignEnum(index);
+      }
+      public Builder SetRepeatedForeignEnum(int index, global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite value) {
+        result.repeatedForeignEnum_[index] = value;
+        return this;
+      }
+      public Builder AddRepeatedForeignEnum(global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite value) {
+        result.repeatedForeignEnum_.Add(value);
+        return this;
+      }
+      public Builder AddRangeRepeatedForeignEnum(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite> values) {
+        base.AddRange(values, result.repeatedForeignEnum_);
+        return this;
+      }
+      public Builder ClearRepeatedForeignEnum() {
+        result.repeatedForeignEnum_.Clear();
+        return this;
+      }
+      
+      public pbc::IPopsicleList<global::Google.ProtocolBuffers.TestProtos.ImportEnumLite> RepeatedImportEnumList {
+        get { return result.repeatedImportEnum_; }
+      }
+      public int RepeatedImportEnumCount {
+        get { return result.RepeatedImportEnumCount; }
+      }
+      public global::Google.ProtocolBuffers.TestProtos.ImportEnumLite GetRepeatedImportEnum(int index) {
+        return result.GetRepeatedImportEnum(index);
+      }
+      public Builder SetRepeatedImportEnum(int index, global::Google.ProtocolBuffers.TestProtos.ImportEnumLite value) {
+        result.repeatedImportEnum_[index] = value;
+        return this;
+      }
+      public Builder AddRepeatedImportEnum(global::Google.ProtocolBuffers.TestProtos.ImportEnumLite value) {
+        result.repeatedImportEnum_.Add(value);
+        return this;
+      }
+      public Builder AddRangeRepeatedImportEnum(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.ImportEnumLite> values) {
+        base.AddRange(values, result.repeatedImportEnum_);
+        return this;
+      }
+      public Builder ClearRepeatedImportEnum() {
+        result.repeatedImportEnum_.Clear();
+        return this;
+      }
+      
+      public pbc::IPopsicleList<string> RepeatedStringPieceList {
+        get { return result.repeatedStringPiece_; }
+      }
+      public int RepeatedStringPieceCount {
+        get { return result.RepeatedStringPieceCount; }
+      }
+      public string GetRepeatedStringPiece(int index) {
+        return result.GetRepeatedStringPiece(index);
+      }
+      public Builder SetRepeatedStringPiece(int index, string value) {
+        pb::ThrowHelper.ThrowIfNull(value, "value");
+        result.repeatedStringPiece_[index] = value;
+        return this;
+      }
+      public Builder AddRepeatedStringPiece(string value) {
+        pb::ThrowHelper.ThrowIfNull(value, "value");
+        result.repeatedStringPiece_.Add(value);
+        return this;
+      }
+      public Builder AddRangeRepeatedStringPiece(scg::IEnumerable<string> values) {
+        base.AddRange(values, result.repeatedStringPiece_);
+        return this;
+      }
+      public Builder ClearRepeatedStringPiece() {
+        result.repeatedStringPiece_.Clear();
+        return this;
+      }
+      
+      public pbc::IPopsicleList<string> RepeatedCordList {
+        get { return result.repeatedCord_; }
+      }
+      public int RepeatedCordCount {
+        get { return result.RepeatedCordCount; }
+      }
+      public string GetRepeatedCord(int index) {
+        return result.GetRepeatedCord(index);
+      }
+      public Builder SetRepeatedCord(int index, string value) {
+        pb::ThrowHelper.ThrowIfNull(value, "value");
+        result.repeatedCord_[index] = value;
+        return this;
+      }
+      public Builder AddRepeatedCord(string value) {
+        pb::ThrowHelper.ThrowIfNull(value, "value");
+        result.repeatedCord_.Add(value);
+        return this;
+      }
+      public Builder AddRangeRepeatedCord(scg::IEnumerable<string> values) {
+        base.AddRange(values, result.repeatedCord_);
+        return this;
+      }
+      public Builder ClearRepeatedCord() {
+        result.repeatedCord_.Clear();
+        return this;
+      }
+      
+      public bool HasDefaultInt32 {
+        get { return result.HasDefaultInt32; }
+      }
+      public int DefaultInt32 {
+        get { return result.DefaultInt32; }
+        set { SetDefaultInt32(value); }
+      }
+      public Builder SetDefaultInt32(int value) {
+        result.hasDefaultInt32 = true;
+        result.defaultInt32_ = value;
+        return this;
+      }
+      public Builder ClearDefaultInt32() {
+        result.hasDefaultInt32 = false;
+        result.defaultInt32_ = 41;
+        return this;
+      }
+      
+      public bool HasDefaultInt64 {
+        get { return result.HasDefaultInt64; }
+      }
+      public long DefaultInt64 {
+        get { return result.DefaultInt64; }
+        set { SetDefaultInt64(value); }
+      }
+      public Builder SetDefaultInt64(long value) {
+        result.hasDefaultInt64 = true;
+        result.defaultInt64_ = value;
+        return this;
+      }
+      public Builder ClearDefaultInt64() {
+        result.hasDefaultInt64 = false;
+        result.defaultInt64_ = 42L;
+        return this;
+      }
+      
+      public bool HasDefaultUint32 {
+        get { return result.HasDefaultUint32; }
+      }
+      [global::System.CLSCompliant(false)]
+      public uint DefaultUint32 {
+        get { return result.DefaultUint32; }
+        set { SetDefaultUint32(value); }
+      }
+      [global::System.CLSCompliant(false)]
+      public Builder SetDefaultUint32(uint value) {
+        result.hasDefaultUint32 = true;
+        result.defaultUint32_ = value;
+        return this;
+      }
+      public Builder ClearDefaultUint32() {
+        result.hasDefaultUint32 = false;
+        result.defaultUint32_ = 43;
+        return this;
+      }
+      
+      public bool HasDefaultUint64 {
+        get { return result.HasDefaultUint64; }
+      }
+      [global::System.CLSCompliant(false)]
+      public ulong DefaultUint64 {
+        get { return result.DefaultUint64; }
+        set { SetDefaultUint64(value); }
+      }
+      [global::System.CLSCompliant(false)]
+      public Builder SetDefaultUint64(ulong value) {
+        result.hasDefaultUint64 = true;
+        result.defaultUint64_ = value;
+        return this;
+      }
+      public Builder ClearDefaultUint64() {
+        result.hasDefaultUint64 = false;
+        result.defaultUint64_ = 44UL;
+        return this;
+      }
+      
+      public bool HasDefaultSint32 {
+        get { return result.HasDefaultSint32; }
+      }
+      public int DefaultSint32 {
+        get { return result.DefaultSint32; }
+        set { SetDefaultSint32(value); }
+      }
+      public Builder SetDefaultSint32(int value) {
+        result.hasDefaultSint32 = true;
+        result.defaultSint32_ = value;
+        return this;
+      }
+      public Builder ClearDefaultSint32() {
+        result.hasDefaultSint32 = false;
+        result.defaultSint32_ = -45;
+        return this;
+      }
+      
+      public bool HasDefaultSint64 {
+        get { return result.HasDefaultSint64; }
+      }
+      public long DefaultSint64 {
+        get { return result.DefaultSint64; }
+        set { SetDefaultSint64(value); }
+      }
+      public Builder SetDefaultSint64(long value) {
+        result.hasDefaultSint64 = true;
+        result.defaultSint64_ = value;
+        return this;
+      }
+      public Builder ClearDefaultSint64() {
+        result.hasDefaultSint64 = false;
+        result.defaultSint64_ = 46;
+        return this;
+      }
+      
+      public bool HasDefaultFixed32 {
+        get { return result.HasDefaultFixed32; }
+      }
+      [global::System.CLSCompliant(false)]
+      public uint DefaultFixed32 {
+        get { return result.DefaultFixed32; }
+        set { SetDefaultFixed32(value); }
+      }
+      [global::System.CLSCompliant(false)]
+      public Builder SetDefaultFixed32(uint value) {
+        result.hasDefaultFixed32 = true;
+        result.defaultFixed32_ = value;
+        return this;
+      }
+      public Builder ClearDefaultFixed32() {
+        result.hasDefaultFixed32 = false;
+        result.defaultFixed32_ = 47;
+        return this;
+      }
+      
+      public bool HasDefaultFixed64 {
+        get { return result.HasDefaultFixed64; }
+      }
+      [global::System.CLSCompliant(false)]
+      public ulong DefaultFixed64 {
+        get { return result.DefaultFixed64; }
+        set { SetDefaultFixed64(value); }
+      }
+      [global::System.CLSCompliant(false)]
+      public Builder SetDefaultFixed64(ulong value) {
+        result.hasDefaultFixed64 = true;
+        result.defaultFixed64_ = value;
+        return this;
+      }
+      public Builder ClearDefaultFixed64() {
+        result.hasDefaultFixed64 = false;
+        result.defaultFixed64_ = 48;
+        return this;
+      }
+      
+      public bool HasDefaultSfixed32 {
+        get { return result.HasDefaultSfixed32; }
+      }
+      public int DefaultSfixed32 {
+        get { return result.DefaultSfixed32; }
+        set { SetDefaultSfixed32(value); }
+      }
+      public Builder SetDefaultSfixed32(int value) {
+        result.hasDefaultSfixed32 = true;
+        result.defaultSfixed32_ = value;
+        return this;
+      }
+      public Builder ClearDefaultSfixed32() {
+        result.hasDefaultSfixed32 = false;
+        result.defaultSfixed32_ = 49;
+        return this;
+      }
+      
+      public bool HasDefaultSfixed64 {
+        get { return result.HasDefaultSfixed64; }
+      }
+      public long DefaultSfixed64 {
+        get { return result.DefaultSfixed64; }
+        set { SetDefaultSfixed64(value); }
+      }
+      public Builder SetDefaultSfixed64(long value) {
+        result.hasDefaultSfixed64 = true;
+        result.defaultSfixed64_ = value;
+        return this;
+      }
+      public Builder ClearDefaultSfixed64() {
+        result.hasDefaultSfixed64 = false;
+        result.defaultSfixed64_ = -50;
+        return this;
+      }
+      
+      public bool HasDefaultFloat {
+        get { return result.HasDefaultFloat; }
+      }
+      public float DefaultFloat {
+        get { return result.DefaultFloat; }
+        set { SetDefaultFloat(value); }
+      }
+      public Builder SetDefaultFloat(float value) {
+        result.hasDefaultFloat = true;
+        result.defaultFloat_ = value;
+        return this;
+      }
+      public Builder ClearDefaultFloat() {
+        result.hasDefaultFloat = false;
+        result.defaultFloat_ = 51.5F;
+        return this;
+      }
+      
+      public bool HasDefaultDouble {
+        get { return result.HasDefaultDouble; }
+      }
+      public double DefaultDouble {
+        get { return result.DefaultDouble; }
+        set { SetDefaultDouble(value); }
+      }
+      public Builder SetDefaultDouble(double value) {
+        result.hasDefaultDouble = true;
+        result.defaultDouble_ = value;
+        return this;
+      }
+      public Builder ClearDefaultDouble() {
+        result.hasDefaultDouble = false;
+        result.defaultDouble_ = 52000D;
+        return this;
+      }
+      
+      public bool HasDefaultBool {
+        get { return result.HasDefaultBool; }
+      }
+      public bool DefaultBool {
+        get { return result.DefaultBool; }
+        set { SetDefaultBool(value); }
+      }
+      public Builder SetDefaultBool(bool value) {
+        result.hasDefaultBool = true;
+        result.defaultBool_ = value;
+        return this;
+      }
+      public Builder ClearDefaultBool() {
+        result.hasDefaultBool = false;
+        result.defaultBool_ = true;
+        return this;
+      }
+      
+      public bool HasDefaultString {
+        get { return result.HasDefaultString; }
+      }
+      public string DefaultString {
+        get { return result.DefaultString; }
+        set { SetDefaultString(value); }
+      }
+      public Builder SetDefaultString(string value) {
+        pb::ThrowHelper.ThrowIfNull(value, "value");
+        result.hasDefaultString = true;
+        result.defaultString_ = value;
+        return this;
+      }
+      public Builder ClearDefaultString() {
+        result.hasDefaultString = false;
+        result.defaultString_ = "hello";
+        return this;
+      }
+      
+      public bool HasDefaultBytes {
+        get { return result.HasDefaultBytes; }
+      }
+      public pb::ByteString DefaultBytes {
+        get { return result.DefaultBytes; }
+        set { SetDefaultBytes(value); }
+      }
+      public Builder SetDefaultBytes(pb::ByteString value) {
+        pb::ThrowHelper.ThrowIfNull(value, "value");
+        result.hasDefaultBytes = true;
+        result.defaultBytes_ = value;
+        return this;
+      }
+      public Builder ClearDefaultBytes() {
+        result.hasDefaultBytes = false;
+        result.defaultBytes_ = (pb::ByteString) global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Descriptor.Fields[62].DefaultValue;
+        return this;
+      }
+      
+      public bool HasDefaultNestedEnum {
+       get { return result.HasDefaultNestedEnum; }
+      }
+      public global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedEnum DefaultNestedEnum {
+        get { return result.DefaultNestedEnum; }
+        set { SetDefaultNestedEnum(value); }
+      }
+      public Builder SetDefaultNestedEnum(global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedEnum value) {
+        result.hasDefaultNestedEnum = true;
+        result.defaultNestedEnum_ = value;
+        return this;
+      }
+      public Builder ClearDefaultNestedEnum() {
+        result.hasDefaultNestedEnum = false;
+        result.defaultNestedEnum_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedEnum.BAR;
+        return this;
+      }
+      
+      public bool HasDefaultForeignEnum {
+       get { return result.HasDefaultForeignEnum; }
+      }
+      public global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite DefaultForeignEnum {
+        get { return result.DefaultForeignEnum; }
+        set { SetDefaultForeignEnum(value); }
+      }
+      public Builder SetDefaultForeignEnum(global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite value) {
+        result.hasDefaultForeignEnum = true;
+        result.defaultForeignEnum_ = value;
+        return this;
+      }
+      public Builder ClearDefaultForeignEnum() {
+        result.hasDefaultForeignEnum = false;
+        result.defaultForeignEnum_ = global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite.FOREIGN_LITE_BAR;
+        return this;
+      }
+      
+      public bool HasDefaultImportEnum {
+       get { return result.HasDefaultImportEnum; }
+      }
+      public global::Google.ProtocolBuffers.TestProtos.ImportEnumLite DefaultImportEnum {
+        get { return result.DefaultImportEnum; }
+        set { SetDefaultImportEnum(value); }
+      }
+      public Builder SetDefaultImportEnum(global::Google.ProtocolBuffers.TestProtos.ImportEnumLite value) {
+        result.hasDefaultImportEnum = true;
+        result.defaultImportEnum_ = value;
+        return this;
+      }
+      public Builder ClearDefaultImportEnum() {
+        result.hasDefaultImportEnum = false;
+        result.defaultImportEnum_ = global::Google.ProtocolBuffers.TestProtos.ImportEnumLite.IMPORT_LITE_BAR;
+        return this;
+      }
+      
+      public bool HasDefaultStringPiece {
+        get { return result.HasDefaultStringPiece; }
+      }
+      public string DefaultStringPiece {
+        get { return result.DefaultStringPiece; }
+        set { SetDefaultStringPiece(value); }
+      }
+      public Builder SetDefaultStringPiece(string value) {
+        pb::ThrowHelper.ThrowIfNull(value, "value");
+        result.hasDefaultStringPiece = true;
+        result.defaultStringPiece_ = value;
+        return this;
+      }
+      public Builder ClearDefaultStringPiece() {
+        result.hasDefaultStringPiece = false;
+        result.defaultStringPiece_ = "abc";
+        return this;
+      }
+      
+      public bool HasDefaultCord {
+        get { return result.HasDefaultCord; }
+      }
+      public string DefaultCord {
+        get { return result.DefaultCord; }
+        set { SetDefaultCord(value); }
+      }
+      public Builder SetDefaultCord(string value) {
+        pb::ThrowHelper.ThrowIfNull(value, "value");
+        result.hasDefaultCord = true;
+        result.defaultCord_ = value;
+        return this;
+      }
+      public Builder ClearDefaultCord() {
+        result.hasDefaultCord = false;
+        result.defaultCord_ = "123";
+        return this;
+      }
+    }
+    static TestAllTypesLite() {
+      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor, null);
+    }
+  }
+  
+  public sealed partial class ForeignMessageLite : pb::GeneratedMessage<ForeignMessageLite, ForeignMessageLite.Builder> {
+    private static readonly ForeignMessageLite defaultInstance = new Builder().BuildPartial();
+    public static ForeignMessageLite DefaultInstance {
+      get { return defaultInstance; }
+    }
+    
+    public override ForeignMessageLite DefaultInstanceForType {
+      get { return defaultInstance; }
+    }
+    
+    protected override ForeignMessageLite ThisMessage {
+      get { return this; }
+    }
+    
+    public static pbd::MessageDescriptor Descriptor {
+      get { return global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.internal__static_protobuf_unittest_ForeignMessageLite__Descriptor; }
+    }
+    
+    protected override pb::FieldAccess.FieldAccessorTable<ForeignMessageLite, ForeignMessageLite.Builder> InternalFieldAccessors {
+      get { return global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.internal__static_protobuf_unittest_ForeignMessageLite__FieldAccessorTable; }
+    }
+    
+    public const int CFieldNumber = 1;
+    private bool hasC;
+    private int c_ = 0;
+    public bool HasC {
+      get { return hasC; }
+    }
+    public int C {
+      get { return c_; }
+    }
+    
+    public static ForeignMessageLite ParseFrom(pb::ByteString data) {
+      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
+    }
+    public static ForeignMessageLite ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
+      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
+    }
+    public static ForeignMessageLite ParseFrom(byte[] data) {
+      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
+    }
+    public static ForeignMessageLite ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
+      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
+    }
+    public static ForeignMessageLite ParseFrom(global::System.IO.Stream input) {
+      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
+    }
+    public static ForeignMessageLite ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
+      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
+    }
+    public static ForeignMessageLite ParseDelimitedFrom(global::System.IO.Stream input) {
+      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
+    }
+    public static ForeignMessageLite ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
+      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
+    }
+    public static ForeignMessageLite ParseFrom(pb::CodedInputStream input) {
+      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
+    }
+    public static ForeignMessageLite ParseFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
+      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
+    }
+    public static Builder CreateBuilder() { return new Builder(); }
+    public override Builder ToBuilder() { return CreateBuilder(this); }
+    public override Builder CreateBuilderForType() { return new Builder(); }
+    public static Builder CreateBuilder(ForeignMessageLite prototype) {
+      return (Builder) new Builder().MergeFrom(prototype);
+    }
+    
+    public sealed partial class Builder : pb::GeneratedBuilder<ForeignMessageLite, Builder> {
+      protected override Builder ThisBuilder {
+        get { return this; }
+      }
+      public Builder() {}
+      
+      ForeignMessageLite result = new ForeignMessageLite();
+      
+      protected override ForeignMessageLite MessageBeingBuilt {
+        get { return result; }
+      }
+      
+      public override Builder Clear() {
+        result = new ForeignMessageLite();
+        return this;
+      }
+      
+      public override Builder Clone() {
+        return new Builder().MergeFrom(result);
+      }
+      
+      public override pbd::MessageDescriptor DescriptorForType {
+        get { return global::Google.ProtocolBuffers.TestProtos.ForeignMessageLite.Descriptor; }
+      }
+      
+      public override ForeignMessageLite DefaultInstanceForType {
+        get { return global::Google.ProtocolBuffers.TestProtos.ForeignMessageLite.DefaultInstance; }
+      }
+      
+      public override ForeignMessageLite BuildPartial() {
+        if (result == null) {
+          throw new global::System.InvalidOperationException("build() has already been called on this Builder");
+        }
+        ForeignMessageLite returnMe = result;
+        result = null;
+        return returnMe;
+      }
+      
+      
+      public bool HasC {
+        get { return result.HasC; }
+      }
+      public int C {
+        get { return result.C; }
+        set { SetC(value); }
+      }
+      public Builder SetC(int value) {
+        result.hasC = true;
+        result.c_ = value;
+        return this;
+      }
+      public Builder ClearC() {
+        result.hasC = false;
+        result.c_ = 0;
+        return this;
+      }
+    }
+    static ForeignMessageLite() {
+      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor, null);
+    }
+  }
+  
+  public sealed partial class TestPackedTypesLite : pb::GeneratedMessage<TestPackedTypesLite, TestPackedTypesLite.Builder> {
+    private static readonly TestPackedTypesLite defaultInstance = new Builder().BuildPartial();
+    public static TestPackedTypesLite DefaultInstance {
+      get { return defaultInstance; }
+    }
+    
+    public override TestPackedTypesLite DefaultInstanceForType {
+      get { return defaultInstance; }
+    }
+    
+    protected override TestPackedTypesLite ThisMessage {
+      get { return this; }
+    }
+    
+    public static pbd::MessageDescriptor Descriptor {
+      get { return global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.internal__static_protobuf_unittest_TestPackedTypesLite__Descriptor; }
+    }
+    
+    protected override pb::FieldAccess.FieldAccessorTable<TestPackedTypesLite, TestPackedTypesLite.Builder> InternalFieldAccessors {
+      get { return global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.internal__static_protobuf_unittest_TestPackedTypesLite__FieldAccessorTable; }
+    }
+    
+    public const int PackedInt32FieldNumber = 90;
+    private pbc::PopsicleList<int> packedInt32_ = new pbc::PopsicleList<int>();
+    public scg::IList<int> PackedInt32List {
+      get { return pbc::Lists.AsReadOnly(packedInt32_); }
+    }
+    public int PackedInt32Count {
+      get { return packedInt32_.Count; }
+    }
+    public int GetPackedInt32(int index) {
+      return packedInt32_[index];
+    }
+    
+    public const int PackedInt64FieldNumber = 91;
+    private pbc::PopsicleList<long> packedInt64_ = new pbc::PopsicleList<long>();
+    public scg::IList<long> PackedInt64List {
+      get { return pbc::Lists.AsReadOnly(packedInt64_); }
+    }
+    public int PackedInt64Count {
+      get { return packedInt64_.Count; }
+    }
+    public long GetPackedInt64(int index) {
+      return packedInt64_[index];
+    }
+    
+    public const int PackedUint32FieldNumber = 92;
+    private pbc::PopsicleList<uint> packedUint32_ = new pbc::PopsicleList<uint>();
+    [global::System.CLSCompliant(false)]
+    public scg::IList<uint> PackedUint32List {
+      get { return pbc::Lists.AsReadOnly(packedUint32_); }
+    }
+    public int PackedUint32Count {
+      get { return packedUint32_.Count; }
+    }
+    [global::System.CLSCompliant(false)]
+    public uint GetPackedUint32(int index) {
+      return packedUint32_[index];
+    }
+    
+    public const int PackedUint64FieldNumber = 93;
+    private pbc::PopsicleList<ulong> packedUint64_ = new pbc::PopsicleList<ulong>();
+    [global::System.CLSCompliant(false)]
+    public scg::IList<ulong> PackedUint64List {
+      get { return pbc::Lists.AsReadOnly(packedUint64_); }
+    }
+    public int PackedUint64Count {
+      get { return packedUint64_.Count; }
+    }
+    [global::System.CLSCompliant(false)]
+    public ulong GetPackedUint64(int index) {
+      return packedUint64_[index];
+    }
+    
+    public const int PackedSint32FieldNumber = 94;
+    private pbc::PopsicleList<int> packedSint32_ = new pbc::PopsicleList<int>();
+    public scg::IList<int> PackedSint32List {
+      get { return pbc::Lists.AsReadOnly(packedSint32_); }
+    }
+    public int PackedSint32Count {
+      get { return packedSint32_.Count; }
+    }
+    public int GetPackedSint32(int index) {
+      return packedSint32_[index];
+    }
+    
+    public const int PackedSint64FieldNumber = 95;
+    private pbc::PopsicleList<long> packedSint64_ = new pbc::PopsicleList<long>();
+    public scg::IList<long> PackedSint64List {
+      get { return pbc::Lists.AsReadOnly(packedSint64_); }
+    }
+    public int PackedSint64Count {
+      get { return packedSint64_.Count; }
+    }
+    public long GetPackedSint64(int index) {
+      return packedSint64_[index];
+    }
+    
+    public const int PackedFixed32FieldNumber = 96;
+    private pbc::PopsicleList<uint> packedFixed32_ = new pbc::PopsicleList<uint>();
+    [global::System.CLSCompliant(false)]
+    public scg::IList<uint> PackedFixed32List {
+      get { return pbc::Lists.AsReadOnly(packedFixed32_); }
+    }
+    public int PackedFixed32Count {
+      get { return packedFixed32_.Count; }
+    }
+    [global::System.CLSCompliant(false)]
+    public uint GetPackedFixed32(int index) {
+      return packedFixed32_[index];
+    }
+    
+    public const int PackedFixed64FieldNumber = 97;
+    private pbc::PopsicleList<ulong> packedFixed64_ = new pbc::PopsicleList<ulong>();
+    [global::System.CLSCompliant(false)]
+    public scg::IList<ulong> PackedFixed64List {
+      get { return pbc::Lists.AsReadOnly(packedFixed64_); }
+    }
+    public int PackedFixed64Count {
+      get { return packedFixed64_.Count; }
+    }
+    [global::System.CLSCompliant(false)]
+    public ulong GetPackedFixed64(int index) {
+      return packedFixed64_[index];
+    }
+    
+    public const int PackedSfixed32FieldNumber = 98;
+    private pbc::PopsicleList<int> packedSfixed32_ = new pbc::PopsicleList<int>();
+    public scg::IList<int> PackedSfixed32List {
+      get { return pbc::Lists.AsReadOnly(packedSfixed32_); }
+    }
+    public int PackedSfixed32Count {
+      get { return packedSfixed32_.Count; }
+    }
+    public int GetPackedSfixed32(int index) {
+      return packedSfixed32_[index];
+    }
+    
+    public const int PackedSfixed64FieldNumber = 99;
+    private pbc::PopsicleList<long> packedSfixed64_ = new pbc::PopsicleList<long>();
+    public scg::IList<long> PackedSfixed64List {
+      get { return pbc::Lists.AsReadOnly(packedSfixed64_); }
+    }
+    public int PackedSfixed64Count {
+      get { return packedSfixed64_.Count; }
+    }
+    public long GetPackedSfixed64(int index) {
+      return packedSfixed64_[index];
+    }
+    
+    public const int PackedFloatFieldNumber = 100;
+    private pbc::PopsicleList<float> packedFloat_ = new pbc::PopsicleList<float>();
+    public scg::IList<float> PackedFloatList {
+      get { return pbc::Lists.AsReadOnly(packedFloat_); }
+    }
+    public int PackedFloatCount {
+      get { return packedFloat_.Count; }
+    }
+    public float GetPackedFloat(int index) {
+      return packedFloat_[index];
+    }
+    
+    public const int PackedDoubleFieldNumber = 101;
+    private pbc::PopsicleList<double> packedDouble_ = new pbc::PopsicleList<double>();
+    public scg::IList<double> PackedDoubleList {
+      get { return pbc::Lists.AsReadOnly(packedDouble_); }
+    }
+    public int PackedDoubleCount {
+      get { return packedDouble_.Count; }
+    }
+    public double GetPackedDouble(int index) {
+      return packedDouble_[index];
+    }
+    
+    public const int PackedBoolFieldNumber = 102;
+    private pbc::PopsicleList<bool> packedBool_ = new pbc::PopsicleList<bool>();
+    public scg::IList<bool> PackedBoolList {
+      get { return pbc::Lists.AsReadOnly(packedBool_); }
+    }
+    public int PackedBoolCount {
+      get { return packedBool_.Count; }
+    }
+    public bool GetPackedBool(int index) {
+      return packedBool_[index];
+    }
+    
+    public const int PackedEnumFieldNumber = 103;
+    private pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite> packedEnum_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite>();
+    public scg::IList<global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite> PackedEnumList {
+      get { return pbc::Lists.AsReadOnly(packedEnum_); }
+    }
+    public int PackedEnumCount {
+      get { return packedEnum_.Count; }
+    }
+    public global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite GetPackedEnum(int index) {
+      return packedEnum_[index];
+    }
+    
+    public static TestPackedTypesLite ParseFrom(pb::ByteString data) {
+      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
+    }
+    public static TestPackedTypesLite ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
+      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
+    }
+    public static TestPackedTypesLite ParseFrom(byte[] data) {
+      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
+    }
+    public static TestPackedTypesLite ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
+      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
+    }
+    public static TestPackedTypesLite ParseFrom(global::System.IO.Stream input) {
+      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
+    }
+    public static TestPackedTypesLite ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
+      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
+    }
+    public static TestPackedTypesLite ParseDelimitedFrom(global::System.IO.Stream input) {
+      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
+    }
+    public static TestPackedTypesLite ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
+      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
+    }
+    public static TestPackedTypesLite ParseFrom(pb::CodedInputStream input) {
+      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
+    }
+    public static TestPackedTypesLite ParseFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
+      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
+    }
+    public static Builder CreateBuilder() { return new Builder(); }
+    public override Builder ToBuilder() { return CreateBuilder(this); }
+    public override Builder CreateBuilderForType() { return new Builder(); }
+    public static Builder CreateBuilder(TestPackedTypesLite prototype) {
+      return (Builder) new Builder().MergeFrom(prototype);
+    }
+    
+    public sealed partial class Builder : pb::GeneratedBuilder<TestPackedTypesLite, Builder> {
+      protected override Builder ThisBuilder {
+        get { return this; }
+      }
+      public Builder() {}
+      
+      TestPackedTypesLite result = new TestPackedTypesLite();
+      
+      protected override TestPackedTypesLite MessageBeingBuilt {
+        get { return result; }
+      }
+      
+      public override Builder Clear() {
+        result = new TestPackedTypesLite();
+        return this;
+      }
+      
+      public override Builder Clone() {
+        return new Builder().MergeFrom(result);
+      }
+      
+      public override pbd::MessageDescriptor DescriptorForType {
+        get { return global::Google.ProtocolBuffers.TestProtos.TestPackedTypesLite.Descriptor; }
+      }
+      
+      public override TestPackedTypesLite DefaultInstanceForType {
+        get { return global::Google.ProtocolBuffers.TestProtos.TestPackedTypesLite.DefaultInstance; }
+      }
+      
+      public override TestPackedTypesLite BuildPartial() {
+        if (result == null) {
+          throw new global::System.InvalidOperationException("build() has already been called on this Builder");
+        }
+        result.packedInt32_.MakeReadOnly();
+        result.packedInt64_.MakeReadOnly();
+        result.packedUint32_.MakeReadOnly();
+        result.packedUint64_.MakeReadOnly();
+        result.packedSint32_.MakeReadOnly();
+        result.packedSint64_.MakeReadOnly();
+        result.packedFixed32_.MakeReadOnly();
+        result.packedFixed64_.MakeReadOnly();
+        result.packedSfixed32_.MakeReadOnly();
+        result.packedSfixed64_.MakeReadOnly();
+        result.packedFloat_.MakeReadOnly();
+        result.packedDouble_.MakeReadOnly();
+        result.packedBool_.MakeReadOnly();
+        result.packedEnum_.MakeReadOnly();
+        TestPackedTypesLite returnMe = result;
+        result = null;
+        return returnMe;
+      }
+      
+      
+      public pbc::IPopsicleList<int> PackedInt32List {
+        get { return result.packedInt32_; }
+      }
+      public int PackedInt32Count {
+        get { return result.PackedInt32Count; }
+      }
+      public int GetPackedInt32(int index) {
+        return result.GetPackedInt32(index);
+      }
+      public Builder SetPackedInt32(int index, int value) {
+        result.packedInt32_[index] = value;
+        return this;
+      }
+      public Builder AddPackedInt32(int value) {
+        result.packedInt32_.Add(value);
+        return this;
+      }
+      public Builder AddRangePackedInt32(scg::IEnumerable<int> values) {
+        base.AddRange(values, result.packedInt32_);
+        return this;
+      }
+      public Builder ClearPackedInt32() {
+        result.packedInt32_.Clear();
+        return this;
+      }
+      
+      public pbc::IPopsicleList<long> PackedInt64List {
+        get { return result.packedInt64_; }
+      }
+      public int PackedInt64Count {
+        get { return result.PackedInt64Count; }
+      }
+      public long GetPackedInt64(int index) {
+        return result.GetPackedInt64(index);
+      }
+      public Builder SetPackedInt64(int index, long value) {
+        result.packedInt64_[index] = value;
+        return this;
+      }
+      public Builder AddPackedInt64(long value) {
+        result.packedInt64_.Add(value);
+        return this;
+      }
+      public Builder AddRangePackedInt64(scg::IEnumerable<long> values) {
+        base.AddRange(values, result.packedInt64_);
+        return this;
+      }
+      public Builder ClearPackedInt64() {
+        result.packedInt64_.Clear();
+        return this;
+      }
+      
+      [global::System.CLSCompliant(false)]
+      public pbc::IPopsicleList<uint> PackedUint32List {
+        get { return result.packedUint32_; }
+      }
+      public int PackedUint32Count {
+        get { return result.PackedUint32Count; }
+      }
+      [global::System.CLSCompliant(false)]
+      public uint GetPackedUint32(int index) {
+        return result.GetPackedUint32(index);
+      }
+      [global::System.CLSCompliant(false)]
+      public Builder SetPackedUint32(int index, uint value) {
+        result.packedUint32_[index] = value;
+        return this;
+      }
+      [global::System.CLSCompliant(false)]
+      public Builder AddPackedUint32(uint value) {
+        result.packedUint32_.Add(value);
+        return this;
+      }
+      [global::System.CLSCompliant(false)]
+      public Builder AddRangePackedUint32(scg::IEnumerable<uint> values) {
+        base.AddRange(values, result.packedUint32_);
+        return this;
+      }
+      public Builder ClearPackedUint32() {
+        result.packedUint32_.Clear();
+        return this;
+      }
+      
+      [global::System.CLSCompliant(false)]
+      public pbc::IPopsicleList<ulong> PackedUint64List {
+        get { return result.packedUint64_; }
+      }
+      public int PackedUint64Count {
+        get { return result.PackedUint64Count; }
+      }
+      [global::System.CLSCompliant(false)]
+      public ulong GetPackedUint64(int index) {
+        return result.GetPackedUint64(index);
+      }
+      [global::System.CLSCompliant(false)]
+      public Builder SetPackedUint64(int index, ulong value) {
+        result.packedUint64_[index] = value;
+        return this;
+      }
+      [global::System.CLSCompliant(false)]
+      public Builder AddPackedUint64(ulong value) {
+        result.packedUint64_.Add(value);
+        return this;
+      }
+      [global::System.CLSCompliant(false)]
+      public Builder AddRangePackedUint64(scg::IEnumerable<ulong> values) {
+        base.AddRange(values, result.packedUint64_);
+        return this;
+      }
+      public Builder ClearPackedUint64() {
+        result.packedUint64_.Clear();
+        return this;
+      }
+      
+      public pbc::IPopsicleList<int> PackedSint32List {
+        get { return result.packedSint32_; }
+      }
+      public int PackedSint32Count {
+        get { return result.PackedSint32Count; }
+      }
+      public int GetPackedSint32(int index) {
+        return result.GetPackedSint32(index);
+      }
+      public Builder SetPackedSint32(int index, int value) {
+        result.packedSint32_[index] = value;
+        return this;
+      }
+      public Builder AddPackedSint32(int value) {
+        result.packedSint32_.Add(value);
+        return this;
+      }
+      public Builder AddRangePackedSint32(scg::IEnumerable<int> values) {
+        base.AddRange(values, result.packedSint32_);
+        return this;
+      }
+      public Builder ClearPackedSint32() {
+        result.packedSint32_.Clear();
+        return this;
+      }
+      
+      public pbc::IPopsicleList<long> PackedSint64List {
+        get { return result.packedSint64_; }
+      }
+      public int PackedSint64Count {
+        get { return result.PackedSint64Count; }
+      }
+      public long GetPackedSint64(int index) {
+        return result.GetPackedSint64(index);
+      }
+      public Builder SetPackedSint64(int index, long value) {
+        result.packedSint64_[index] = value;
+        return this;
+      }
+      public Builder AddPackedSint64(long value) {
+        result.packedSint64_.Add(value);
+        return this;
+      }
+      public Builder AddRangePackedSint64(scg::IEnumerable<long> values) {
+        base.AddRange(values, result.packedSint64_);
+        return this;
+      }
+      public Builder ClearPackedSint64() {
+        result.packedSint64_.Clear();
+        return this;
+      }
+      
+      [global::System.CLSCompliant(false)]
+      public pbc::IPopsicleList<uint> PackedFixed32List {
+        get { return result.packedFixed32_; }
+      }
+      public int PackedFixed32Count {
+        get { return result.PackedFixed32Count; }
+      }
+      [global::System.CLSCompliant(false)]
+      public uint GetPackedFixed32(int index) {
+        return result.GetPackedFixed32(index);
+      }
+      [global::System.CLSCompliant(false)]
+      public Builder SetPackedFixed32(int index, uint value) {
+        result.packedFixed32_[index] = value;
+        return this;
+      }
+      [global::System.CLSCompliant(false)]
+      public Builder AddPackedFixed32(uint value) {
+        result.packedFixed32_.Add(value);
+        return this;
+      }
+      [global::System.CLSCompliant(false)]
+      public Builder AddRangePackedFixed32(scg::IEnumerable<uint> values) {
+        base.AddRange(values, result.packedFixed32_);
+        return this;
+      }
+      public Builder ClearPackedFixed32() {
+        result.packedFixed32_.Clear();
+        return this;
+      }
+      
+      [global::System.CLSCompliant(false)]
+      public pbc::IPopsicleList<ulong> PackedFixed64List {
+        get { return result.packedFixed64_; }
+      }
+      public int PackedFixed64Count {
+        get { return result.PackedFixed64Count; }
+      }
+      [global::System.CLSCompliant(false)]
+      public ulong GetPackedFixed64(int index) {
+        return result.GetPackedFixed64(index);
+      }
+      [global::System.CLSCompliant(false)]
+      public Builder SetPackedFixed64(int index, ulong value) {
+        result.packedFixed64_[index] = value;
+        return this;
+      }
+      [global::System.CLSCompliant(false)]
+      public Builder AddPackedFixed64(ulong value) {
+        result.packedFixed64_.Add(value);
+        return this;
+      }
+      [global::System.CLSCompliant(false)]
+      public Builder AddRangePackedFixed64(scg::IEnumerable<ulong> values) {
+        base.AddRange(values, result.packedFixed64_);
+        return this;
+      }
+      public Builder ClearPackedFixed64() {
+        result.packedFixed64_.Clear();
+        return this;
+      }
+      
+      public pbc::IPopsicleList<int> PackedSfixed32List {
+        get { return result.packedSfixed32_; }
+      }
+      public int PackedSfixed32Count {
+        get { return result.PackedSfixed32Count; }
+      }
+      public int GetPackedSfixed32(int index) {
+        return result.GetPackedSfixed32(index);
+      }
+      public Builder SetPackedSfixed32(int index, int value) {
+        result.packedSfixed32_[index] = value;
+        return this;
+      }
+      public Builder AddPackedSfixed32(int value) {
+        result.packedSfixed32_.Add(value);
+        return this;
+      }
+      public Builder AddRangePackedSfixed32(scg::IEnumerable<int> values) {
+        base.AddRange(values, result.packedSfixed32_);
+        return this;
+      }
+      public Builder ClearPackedSfixed32() {
+        result.packedSfixed32_.Clear();
+        return this;
+      }
+      
+      public pbc::IPopsicleList<long> PackedSfixed64List {
+        get { return result.packedSfixed64_; }
+      }
+      public int PackedSfixed64Count {
+        get { return result.PackedSfixed64Count; }
+      }
+      public long GetPackedSfixed64(int index) {
+        return result.GetPackedSfixed64(index);
+      }
+      public Builder SetPackedSfixed64(int index, long value) {
+        result.packedSfixed64_[index] = value;
+        return this;
+      }
+      public Builder AddPackedSfixed64(long value) {
+        result.packedSfixed64_.Add(value);
+        return this;
+      }
+      public Builder AddRangePackedSfixed64(scg::IEnumerable<long> values) {
+        base.AddRange(values, result.packedSfixed64_);
+        return this;
+      }
+      public Builder ClearPackedSfixed64() {
+        result.packedSfixed64_.Clear();
+        return this;
+      }
+      
+      public pbc::IPopsicleList<float> PackedFloatList {
+        get { return result.packedFloat_; }
+      }
+      public int PackedFloatCount {
+        get { return result.PackedFloatCount; }
+      }
+      public float GetPackedFloat(int index) {
+        return result.GetPackedFloat(index);
+      }
+      public Builder SetPackedFloat(int index, float value) {
+        result.packedFloat_[index] = value;
+        return this;
+      }
+      public Builder AddPackedFloat(float value) {
+        result.packedFloat_.Add(value);
+        return this;
+      }
+      public Builder AddRangePackedFloat(scg::IEnumerable<float> values) {
+        base.AddRange(values, result.packedFloat_);
+        return this;
+      }
+      public Builder ClearPackedFloat() {
+        result.packedFloat_.Clear();
+        return this;
+      }
+      
+      public pbc::IPopsicleList<double> PackedDoubleList {
+        get { return result.packedDouble_; }
+      }
+      public int PackedDoubleCount {
+        get { return result.PackedDoubleCount; }
+      }
+      public double GetPackedDouble(int index) {
+        return result.GetPackedDouble(index);
+      }
+      public Builder SetPackedDouble(int index, double value) {
+        result.packedDouble_[index] = value;
+        return this;
+      }
+      public Builder AddPackedDouble(double value) {
+        result.packedDouble_.Add(value);
+        return this;
+      }
+      public Builder AddRangePackedDouble(scg::IEnumerable<double> values) {
+        base.AddRange(values, result.packedDouble_);
+        return this;
+      }
+      public Builder ClearPackedDouble() {
+        result.packedDouble_.Clear();
+        return this;
+      }
+      
+      public pbc::IPopsicleList<bool> PackedBoolList {
+        get { return result.packedBool_; }
+      }
+      public int PackedBoolCount {
+        get { return result.PackedBoolCount; }
+      }
+      public bool GetPackedBool(int index) {
+        return result.GetPackedBool(index);
+      }
+      public Builder SetPackedBool(int index, bool value) {
+        result.packedBool_[index] = value;
+        return this;
+      }
+      public Builder AddPackedBool(bool value) {
+        result.packedBool_.Add(value);
+        return this;
+      }
+      public Builder AddRangePackedBool(scg::IEnumerable<bool> values) {
+        base.AddRange(values, result.packedBool_);
+        return this;
+      }
+      public Builder ClearPackedBool() {
+        result.packedBool_.Clear();
+        return this;
+      }
+      
+      public pbc::IPopsicleList<global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite> PackedEnumList {
+        get { return result.packedEnum_; }
+      }
+      public int PackedEnumCount {
+        get { return result.PackedEnumCount; }
+      }
+      public global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite GetPackedEnum(int index) {
+        return result.GetPackedEnum(index);
+      }
+      public Builder SetPackedEnum(int index, global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite value) {
+        result.packedEnum_[index] = value;
+        return this;
+      }
+      public Builder AddPackedEnum(global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite value) {
+        result.packedEnum_.Add(value);
+        return this;
+      }
+      public Builder AddRangePackedEnum(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite> values) {
+        base.AddRange(values, result.packedEnum_);
+        return this;
+      }
+      public Builder ClearPackedEnum() {
+        result.packedEnum_.Clear();
+        return this;
+      }
+    }
+    static TestPackedTypesLite() {
+      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor, null);
+    }
+  }
+  
+  public sealed partial class TestAllExtensionsLite : pb::ExtendableMessage<TestAllExtensionsLite, TestAllExtensionsLite.Builder> {
+    private static readonly TestAllExtensionsLite defaultInstance = new Builder().BuildPartial();
+    public static TestAllExtensionsLite DefaultInstance {
+      get { return defaultInstance; }
+    }
+    
+    public override TestAllExtensionsLite DefaultInstanceForType {
+      get { return defaultInstance; }
+    }
+    
+    protected override TestAllExtensionsLite ThisMessage {
+      get { return this; }
+    }
+    
+    public static pbd::MessageDescriptor Descriptor {
+      get { return global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.internal__static_protobuf_unittest_TestAllExtensionsLite__Descriptor; }
+    }
+    
+    protected override pb::FieldAccess.FieldAccessorTable<TestAllExtensionsLite, TestAllExtensionsLite.Builder> InternalFieldAccessors {
+      get { return global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.internal__static_protobuf_unittest_TestAllExtensionsLite__FieldAccessorTable; }
+    }
+    
+    public static TestAllExtensionsLite ParseFrom(pb::ByteString data) {
+      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
+    }
+    public static TestAllExtensionsLite ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
+      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
+    }
+    public static TestAllExtensionsLite ParseFrom(byte[] data) {
+      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
+    }
+    public static TestAllExtensionsLite ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
+      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
+    }
+    public static TestAllExtensionsLite ParseFrom(global::System.IO.Stream input) {
+      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
+    }
+    public static TestAllExtensionsLite ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
+      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
+    }
+    public static TestAllExtensionsLite ParseDelimitedFrom(global::System.IO.Stream input) {
+      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
+    }
+    public static TestAllExtensionsLite ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
+      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
+    }
+    public static TestAllExtensionsLite ParseFrom(pb::CodedInputStream input) {
+      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
+    }
+    public static TestAllExtensionsLite ParseFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
+      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
+    }
+    public static Builder CreateBuilder() { return new Builder(); }
+    public override Builder ToBuilder() { return CreateBuilder(this); }
+    public override Builder CreateBuilderForType() { return new Builder(); }
+    public static Builder CreateBuilder(TestAllExtensionsLite prototype) {
+      return (Builder) new Builder().MergeFrom(prototype);
+    }
+    
+    public sealed partial class Builder : pb::ExtendableBuilder<TestAllExtensionsLite, Builder> {
+      protected override Builder ThisBuilder {
+        get { return this; }
+      }
+      public Builder() {}
+      
+      TestAllExtensionsLite result = new TestAllExtensionsLite();
+      
+      protected override TestAllExtensionsLite MessageBeingBuilt {
+        get { return result; }
+      }
+      
+      public override Builder Clear() {
+        result = new TestAllExtensionsLite();
+        return this;
+      }
+      
+      public override Builder Clone() {
+        return new Builder().MergeFrom(result);
+      }
+      
+      public override pbd::MessageDescriptor DescriptorForType {
+        get { return global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.Descriptor; }
+      }
+      
+      public override TestAllExtensionsLite DefaultInstanceForType {
+        get { return global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.DefaultInstance; }
+      }
+      
+      public override TestAllExtensionsLite BuildPartial() {
+        if (result == null) {
+          throw new global::System.InvalidOperationException("build() has already been called on this Builder");
+        }
+        TestAllExtensionsLite returnMe = result;
+        result = null;
+        return returnMe;
+      }
+      
+    }
+    static TestAllExtensionsLite() {
+      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor, null);
+    }
+  }
+  
+  public sealed partial class OptionalGroup_extension_lite : pb::GeneratedMessage<OptionalGroup_extension_lite, OptionalGroup_extension_lite.Builder> {
+    private static readonly OptionalGroup_extension_lite defaultInstance = new Builder().BuildPartial();
+    public static OptionalGroup_extension_lite DefaultInstance {
+      get { return defaultInstance; }
+    }
+    
+    public override OptionalGroup_extension_lite DefaultInstanceForType {
+      get { return defaultInstance; }
+    }
+    
+    protected override OptionalGroup_extension_lite ThisMessage {
+      get { return this; }
+    }
+    
+    public static pbd::MessageDescriptor Descriptor {
+      get { return global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.internal__static_protobuf_unittest_OptionalGroup_extension_lite__Descriptor; }
+    }
+    
+    protected override pb::FieldAccess.FieldAccessorTable<OptionalGroup_extension_lite, OptionalGroup_extension_lite.Builder> InternalFieldAccessors {
+      get { return global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.internal__static_protobuf_unittest_OptionalGroup_extension_lite__FieldAccessorTable; }
+    }
+    
+    public const int AFieldNumber = 17;
+    private bool hasA;
+    private int a_ = 0;
+    public bool HasA {
+      get { return hasA; }
+    }
+    public int A {
+      get { return a_; }
+    }
+    
+    public static OptionalGroup_extension_lite ParseFrom(pb::ByteString data) {
+      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
+    }
+    public static OptionalGroup_extension_lite ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
+      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
+    }
+    public static OptionalGroup_extension_lite ParseFrom(byte[] data) {
+      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
+    }
+    public static OptionalGroup_extension_lite ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
+      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
+    }
+    public static OptionalGroup_extension_lite ParseFrom(global::System.IO.Stream input) {
+      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
+    }
+    public static OptionalGroup_extension_lite ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
+      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
+    }
+    public static OptionalGroup_extension_lite ParseDelimitedFrom(global::System.IO.Stream input) {
+      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
+    }
+    public static OptionalGroup_extension_lite ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
+      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
+    }
+    public static OptionalGroup_extension_lite ParseFrom(pb::CodedInputStream input) {
+      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
+    }
+    public static OptionalGroup_extension_lite ParseFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
+      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
+    }
+    public static Builder CreateBuilder() { return new Builder(); }
+    public override Builder ToBuilder() { return CreateBuilder(this); }
+    public override Builder CreateBuilderForType() { return new Builder(); }
+    public static Builder CreateBuilder(OptionalGroup_extension_lite prototype) {
+      return (Builder) new Builder().MergeFrom(prototype);
+    }
+    
+    public sealed partial class Builder : pb::GeneratedBuilder<OptionalGroup_extension_lite, Builder> {
+      protected override Builder ThisBuilder {
+        get { return this; }
+      }
+      public Builder() {}
+      
+      OptionalGroup_extension_lite result = new OptionalGroup_extension_lite();
+      
+      protected override OptionalGroup_extension_lite MessageBeingBuilt {
+        get { return result; }
+      }
+      
+      public override Builder Clear() {
+        result = new OptionalGroup_extension_lite();
+        return this;
+      }
+      
+      public override Builder Clone() {
+        return new Builder().MergeFrom(result);
+      }
+      
+      public override pbd::MessageDescriptor DescriptorForType {
+        get { return global::Google.ProtocolBuffers.TestProtos.OptionalGroup_extension_lite.Descriptor; }
+      }
+      
+      public override OptionalGroup_extension_lite DefaultInstanceForType {
+        get { return global::Google.ProtocolBuffers.TestProtos.OptionalGroup_extension_lite.DefaultInstance; }
+      }
+      
+      public override OptionalGroup_extension_lite BuildPartial() {
+        if (result == null) {
+          throw new global::System.InvalidOperationException("build() has already been called on this Builder");
+        }
+        OptionalGroup_extension_lite returnMe = result;
+        result = null;
+        return returnMe;
+      }
+      
+      
+      public bool HasA {
+        get { return result.HasA; }
+      }
+      public int A {
+        get { return result.A; }
+        set { SetA(value); }
+      }
+      public Builder SetA(int value) {
+        result.hasA = true;
+        result.a_ = value;
+        return this;
+      }
+      public Builder ClearA() {
+        result.hasA = false;
+        result.a_ = 0;
+        return this;
+      }
+    }
+    static OptionalGroup_extension_lite() {
+      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor, null);
+    }
+  }
+  
+  public sealed partial class RepeatedGroup_extension_lite : pb::GeneratedMessage<RepeatedGroup_extension_lite, RepeatedGroup_extension_lite.Builder> {
+    private static readonly RepeatedGroup_extension_lite defaultInstance = new Builder().BuildPartial();
+    public static RepeatedGroup_extension_lite DefaultInstance {
+      get { return defaultInstance; }
+    }
+    
+    public override RepeatedGroup_extension_lite DefaultInstanceForType {
+      get { return defaultInstance; }
+    }
+    
+    protected override RepeatedGroup_extension_lite ThisMessage {
+      get { return this; }
+    }
+    
+    public static pbd::MessageDescriptor Descriptor {
+      get { return global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.internal__static_protobuf_unittest_RepeatedGroup_extension_lite__Descriptor; }
+    }
+    
+    protected override pb::FieldAccess.FieldAccessorTable<RepeatedGroup_extension_lite, RepeatedGroup_extension_lite.Builder> InternalFieldAccessors {
+      get { return global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.internal__static_protobuf_unittest_RepeatedGroup_extension_lite__FieldAccessorTable; }
+    }
+    
+    public const int AFieldNumber = 47;
+    private bool hasA;
+    private int a_ = 0;
+    public bool HasA {
+      get { return hasA; }
+    }
+    public int A {
+      get { return a_; }
+    }
+    
+    public static RepeatedGroup_extension_lite ParseFrom(pb::ByteString data) {
+      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
+    }
+    public static RepeatedGroup_extension_lite ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
+      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
+    }
+    public static RepeatedGroup_extension_lite ParseFrom(byte[] data) {
+      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
+    }
+    public static RepeatedGroup_extension_lite ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
+      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
+    }
+    public static RepeatedGroup_extension_lite ParseFrom(global::System.IO.Stream input) {
+      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
+    }
+    public static RepeatedGroup_extension_lite ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
+      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
+    }
+    public static RepeatedGroup_extension_lite ParseDelimitedFrom(global::System.IO.Stream input) {
+      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
+    }
+    public static RepeatedGroup_extension_lite ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
+      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
+    }
+    public static RepeatedGroup_extension_lite ParseFrom(pb::CodedInputStream input) {
+      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
+    }
+    public static RepeatedGroup_extension_lite ParseFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
+      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
+    }
+    public static Builder CreateBuilder() { return new Builder(); }
+    public override Builder ToBuilder() { return CreateBuilder(this); }
+    public override Builder CreateBuilderForType() { return new Builder(); }
+    public static Builder CreateBuilder(RepeatedGroup_extension_lite prototype) {
+      return (Builder) new Builder().MergeFrom(prototype);
+    }
+    
+    public sealed partial class Builder : pb::GeneratedBuilder<RepeatedGroup_extension_lite, Builder> {
+      protected override Builder ThisBuilder {
+        get { return this; }
+      }
+      public Builder() {}
+      
+      RepeatedGroup_extension_lite result = new RepeatedGroup_extension_lite();
+      
+      protected override RepeatedGroup_extension_lite MessageBeingBuilt {
+        get { return result; }
+      }
+      
+      public override Builder Clear() {
+        result = new RepeatedGroup_extension_lite();
+        return this;
+      }
+      
+      public override Builder Clone() {
+        return new Builder().MergeFrom(result);
+      }
+      
+      public override pbd::MessageDescriptor DescriptorForType {
+        get { return global::Google.ProtocolBuffers.TestProtos.RepeatedGroup_extension_lite.Descriptor; }
+      }
+      
+      public override RepeatedGroup_extension_lite DefaultInstanceForType {
+        get { return global::Google.ProtocolBuffers.TestProtos.RepeatedGroup_extension_lite.DefaultInstance; }
+      }
+      
+      public override RepeatedGroup_extension_lite BuildPartial() {
+        if (result == null) {
+          throw new global::System.InvalidOperationException("build() has already been called on this Builder");
+        }
+        RepeatedGroup_extension_lite returnMe = result;
+        result = null;
+        return returnMe;
+      }
+      
+      
+      public bool HasA {
+        get { return result.HasA; }
+      }
+      public int A {
+        get { return result.A; }
+        set { SetA(value); }
+      }
+      public Builder SetA(int value) {
+        result.hasA = true;
+        result.a_ = value;
+        return this;
+      }
+      public Builder ClearA() {
+        result.hasA = false;
+        result.a_ = 0;
+        return this;
+      }
+    }
+    static RepeatedGroup_extension_lite() {
+      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor, null);
+    }
+  }
+  
+  public sealed partial class TestPackedExtensionsLite : pb::ExtendableMessage<TestPackedExtensionsLite, TestPackedExtensionsLite.Builder> {
+    private static readonly TestPackedExtensionsLite defaultInstance = new Builder().BuildPartial();
+    public static TestPackedExtensionsLite DefaultInstance {
+      get { return defaultInstance; }
+    }
+    
+    public override TestPackedExtensionsLite DefaultInstanceForType {
+      get { return defaultInstance; }
+    }
+    
+    protected override TestPackedExtensionsLite ThisMessage {
+      get { return this; }
+    }
+    
+    public static pbd::MessageDescriptor Descriptor {
+      get { return global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.internal__static_protobuf_unittest_TestPackedExtensionsLite__Descriptor; }
+    }
+    
+    protected override pb::FieldAccess.FieldAccessorTable<TestPackedExtensionsLite, TestPackedExtensionsLite.Builder> InternalFieldAccessors {
+      get { return global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.internal__static_protobuf_unittest_TestPackedExtensionsLite__FieldAccessorTable; }
+    }
+    
+    public static TestPackedExtensionsLite ParseFrom(pb::ByteString data) {
+      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
+    }
+    public static TestPackedExtensionsLite ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
+      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
+    }
+    public static TestPackedExtensionsLite ParseFrom(byte[] data) {
+      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
+    }
+    public static TestPackedExtensionsLite ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
+      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
+    }
+    public static TestPackedExtensionsLite ParseFrom(global::System.IO.Stream input) {
+      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
+    }
+    public static TestPackedExtensionsLite ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
+      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
+    }
+    public static TestPackedExtensionsLite ParseDelimitedFrom(global::System.IO.Stream input) {
+      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
+    }
+    public static TestPackedExtensionsLite ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
+      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
+    }
+    public static TestPackedExtensionsLite ParseFrom(pb::CodedInputStream input) {
+      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
+    }
+    public static TestPackedExtensionsLite ParseFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
+      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
+    }
+    public static Builder CreateBuilder() { return new Builder(); }
+    public override Builder ToBuilder() { return CreateBuilder(this); }
+    public override Builder CreateBuilderForType() { return new Builder(); }
+    public static Builder CreateBuilder(TestPackedExtensionsLite prototype) {
+      return (Builder) new Builder().MergeFrom(prototype);
+    }
+    
+    public sealed partial class Builder : pb::ExtendableBuilder<TestPackedExtensionsLite, Builder> {
+      protected override Builder ThisBuilder {
+        get { return this; }
+      }
+      public Builder() {}
+      
+      TestPackedExtensionsLite result = new TestPackedExtensionsLite();
+      
+      protected override TestPackedExtensionsLite MessageBeingBuilt {
+        get { return result; }
+      }
+      
+      public override Builder Clear() {
+        result = new TestPackedExtensionsLite();
+        return this;
+      }
+      
+      public override Builder Clone() {
+        return new Builder().MergeFrom(result);
+      }
+      
+      public override pbd::MessageDescriptor DescriptorForType {
+        get { return global::Google.ProtocolBuffers.TestProtos.TestPackedExtensionsLite.Descriptor; }
+      }
+      
+      public override TestPackedExtensionsLite DefaultInstanceForType {
+        get { return global::Google.ProtocolBuffers.TestProtos.TestPackedExtensionsLite.DefaultInstance; }
+      }
+      
+      public override TestPackedExtensionsLite BuildPartial() {
+        if (result == null) {
+          throw new global::System.InvalidOperationException("build() has already been called on this Builder");
+        }
+        TestPackedExtensionsLite returnMe = result;
+        result = null;
+        return returnMe;
+      }
+      
+    }
+    static TestPackedExtensionsLite() {
+      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor, null);
+    }
+  }
+  
+  public sealed partial class TestNestedExtensionLite : pb::GeneratedMessage<TestNestedExtensionLite, TestNestedExtensionLite.Builder> {
+    private static readonly TestNestedExtensionLite defaultInstance = new Builder().BuildPartial();
+    public static TestNestedExtensionLite DefaultInstance {
+      get { return defaultInstance; }
+    }
+    
+    public override TestNestedExtensionLite DefaultInstanceForType {
+      get { return defaultInstance; }
+    }
+    
+    protected override TestNestedExtensionLite ThisMessage {
+      get { return this; }
+    }
+    
+    public static pbd::MessageDescriptor Descriptor {
+      get { return global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.internal__static_protobuf_unittest_TestNestedExtensionLite__Descriptor; }
+    }
+    
+    protected override pb::FieldAccess.FieldAccessorTable<TestNestedExtensionLite, TestNestedExtensionLite.Builder> InternalFieldAccessors {
+      get { return global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.internal__static_protobuf_unittest_TestNestedExtensionLite__FieldAccessorTable; }
+    }
+    
+    public const int NestedExtensionFieldNumber = 12345;
+    public static pb::GeneratedExtensionBase<int> NestedExtension;
+    public static TestNestedExtensionLite ParseFrom(pb::ByteString data) {
+      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
+    }
+    public static TestNestedExtensionLite ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
+      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
+    }
+    public static TestNestedExtensionLite ParseFrom(byte[] data) {
+      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
+    }
+    public static TestNestedExtensionLite ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
+      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
+    }
+    public static TestNestedExtensionLite ParseFrom(global::System.IO.Stream input) {
+      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
+    }
+    public static TestNestedExtensionLite ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
+      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
+    }
+    public static TestNestedExtensionLite ParseDelimitedFrom(global::System.IO.Stream input) {
+      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
+    }
+    public static TestNestedExtensionLite ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
+      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
+    }
+    public static TestNestedExtensionLite ParseFrom(pb::CodedInputStream input) {
+      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
+    }
+    public static TestNestedExtensionLite ParseFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
+      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
+    }
+    public static Builder CreateBuilder() { return new Builder(); }
+    public override Builder ToBuilder() { return CreateBuilder(this); }
+    public override Builder CreateBuilderForType() { return new Builder(); }
+    public static Builder CreateBuilder(TestNestedExtensionLite prototype) {
+      return (Builder) new Builder().MergeFrom(prototype);
+    }
+    
+    public sealed partial class Builder : pb::GeneratedBuilder<TestNestedExtensionLite, Builder> {
+      protected override Builder ThisBuilder {
+        get { return this; }
+      }
+      public Builder() {}
+      
+      TestNestedExtensionLite result = new TestNestedExtensionLite();
+      
+      protected override TestNestedExtensionLite MessageBeingBuilt {
+        get { return result; }
+      }
+      
+      public override Builder Clear() {
+        result = new TestNestedExtensionLite();
+        return this;
+      }
+      
+      public override Builder Clone() {
+        return new Builder().MergeFrom(result);
+      }
+      
+      public override pbd::MessageDescriptor DescriptorForType {
+        get { return global::Google.ProtocolBuffers.TestProtos.TestNestedExtensionLite.Descriptor; }
+      }
+      
+      public override TestNestedExtensionLite DefaultInstanceForType {
+        get { return global::Google.ProtocolBuffers.TestProtos.TestNestedExtensionLite.DefaultInstance; }
+      }
+      
+      public override TestNestedExtensionLite BuildPartial() {
+        if (result == null) {
+          throw new global::System.InvalidOperationException("build() has already been called on this Builder");
+        }
+        TestNestedExtensionLite returnMe = result;
+        result = null;
+        return returnMe;
+      }
+      
+    }
+    static TestNestedExtensionLite() {
+      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor, null);
+    }
+  }
+  
+  public sealed partial class TestDeprecatedLite : pb::GeneratedMessage<TestDeprecatedLite, TestDeprecatedLite.Builder> {
+    private static readonly TestDeprecatedLite defaultInstance = new Builder().BuildPartial();
+    public static TestDeprecatedLite DefaultInstance {
+      get { return defaultInstance; }
+    }
+    
+    public override TestDeprecatedLite DefaultInstanceForType {
+      get { return defaultInstance; }
+    }
+    
+    protected override TestDeprecatedLite ThisMessage {
+      get { return this; }
+    }
+    
+    public static pbd::MessageDescriptor Descriptor {
+      get { return global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.internal__static_protobuf_unittest_TestDeprecatedLite__Descriptor; }
+    }
+    
+    protected override pb::FieldAccess.FieldAccessorTable<TestDeprecatedLite, TestDeprecatedLite.Builder> InternalFieldAccessors {
+      get { return global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.internal__static_protobuf_unittest_TestDeprecatedLite__FieldAccessorTable; }
+    }
+    
+    public const int DeprecatedFieldFieldNumber = 1;
+    private bool hasDeprecatedField;
+    private int deprecatedField_ = 0;
+    public bool HasDeprecatedField {
+      get { return hasDeprecatedField; }
+    }
+    public int DeprecatedField {
+      get { return deprecatedField_; }
+    }
+    
+    public static TestDeprecatedLite ParseFrom(pb::ByteString data) {
+      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
+    }
+    public static TestDeprecatedLite ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
+      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
+    }
+    public static TestDeprecatedLite ParseFrom(byte[] data) {
+      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
+    }
+    public static TestDeprecatedLite ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
+      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
+    }
+    public static TestDeprecatedLite ParseFrom(global::System.IO.Stream input) {
+      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
+    }
+    public static TestDeprecatedLite ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
+      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
+    }
+    public static TestDeprecatedLite ParseDelimitedFrom(global::System.IO.Stream input) {
+      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
+    }
+    public static TestDeprecatedLite ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
+      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
+    }
+    public static TestDeprecatedLite ParseFrom(pb::CodedInputStream input) {
+      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
+    }
+    public static TestDeprecatedLite ParseFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
+      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
+    }
+    public static Builder CreateBuilder() { return new Builder(); }
+    public override Builder ToBuilder() { return CreateBuilder(this); }
+    public override Builder CreateBuilderForType() { return new Builder(); }
+    public static Builder CreateBuilder(TestDeprecatedLite prototype) {
+      return (Builder) new Builder().MergeFrom(prototype);
+    }
+    
+    public sealed partial class Builder : pb::GeneratedBuilder<TestDeprecatedLite, Builder> {
+      protected override Builder ThisBuilder {
+        get { return this; }
+      }
+      public Builder() {}
+      
+      TestDeprecatedLite result = new TestDeprecatedLite();
+      
+      protected override TestDeprecatedLite MessageBeingBuilt {
+        get { return result; }
+      }
+      
+      public override Builder Clear() {
+        result = new TestDeprecatedLite();
+        return this;
+      }
+      
+      public override Builder Clone() {
+        return new Builder().MergeFrom(result);
+      }
+      
+      public override pbd::MessageDescriptor DescriptorForType {
+        get { return global::Google.ProtocolBuffers.TestProtos.TestDeprecatedLite.Descriptor; }
+      }
+      
+      public override TestDeprecatedLite DefaultInstanceForType {
+        get { return global::Google.ProtocolBuffers.TestProtos.TestDeprecatedLite.DefaultInstance; }
+      }
+      
+      public override TestDeprecatedLite BuildPartial() {
+        if (result == null) {
+          throw new global::System.InvalidOperationException("build() has already been called on this Builder");
+        }
+        TestDeprecatedLite returnMe = result;
+        result = null;
+        return returnMe;
+      }
+      
+      
+      public bool HasDeprecatedField {
+        get { return result.HasDeprecatedField; }
+      }
+      public int DeprecatedField {
+        get { return result.DeprecatedField; }
+        set { SetDeprecatedField(value); }
+      }
+      public Builder SetDeprecatedField(int value) {
+        result.hasDeprecatedField = true;
+        result.deprecatedField_ = value;
+        return this;
+      }
+      public Builder ClearDeprecatedField() {
+        result.hasDeprecatedField = false;
+        result.deprecatedField_ = 0;
+        return this;
+      }
+    }
+    static TestDeprecatedLite() {
+      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnitTestLiteProtoFile.Descriptor, null);
+    }
+  }
+  
+  #endregion
+  
+}

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

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

+ 292 - 0
src/ProtocolBuffersLite.Test/TestProtos/UnittestLiteImportsNonlite.cs

@@ -0,0 +1,292 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+
+using pb = global::Google.ProtocolBuffers;
+using pbc = global::Google.ProtocolBuffers.Collections;
+using pbd = global::Google.ProtocolBuffers.Descriptors;
+using scg = global::System.Collections.Generic;
+namespace protobuf_unittest {
+  
+  public static partial class UnittestLiteImportsNonlite {
+  
+    #region Extension registration
+    public static void RegisterAllExtensions(pb::ExtensionRegistry registry) {
+    }
+    #endregion
+    #region Static variables
+    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestLiteImportsNonlite__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable<global::protobuf_unittest.TestLiteImportsNonlite, global::protobuf_unittest.TestLiteImportsNonlite.Builder> internal__static_protobuf_unittest_TestLiteImportsNonlite__FieldAccessorTable;
+    #endregion
+    #region Descriptor
+    public static pbd::FileDescriptor Descriptor {
+      get { return descriptor; }
+    }
+    private static pbd::FileDescriptor descriptor;
+    
+    static UnittestLiteImportsNonlite() {
+      byte[] descriptorData = global::System.Convert.FromBase64String(
+          "CjNnb29nbGUvcHJvdG9idWYvdW5pdHRlc3RfbGl0ZV9pbXBvcnRzX25vbmxp" + 
+          "dGUucHJvdG8SEXByb3RvYnVmX3VuaXR0ZXN0Gh5nb29nbGUvcHJvdG9idWYv" + 
+          "dW5pdHRlc3QucHJvdG8iSgoWVGVzdExpdGVJbXBvcnRzTm9ubGl0ZRIwCgdt" + 
+          "ZXNzYWdlGAEgASgLMh8ucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbFR5cGVz" + 
+          "QgJIAw==");
+      pbd::FileDescriptor.InternalDescriptorAssigner assigner = delegate(pbd::FileDescriptor root) {
+        descriptor = root;
+        internal__static_protobuf_unittest_TestLiteImportsNonlite__Descriptor = Descriptor.MessageTypes[0];
+        internal__static_protobuf_unittest_TestLiteImportsNonlite__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable<global::protobuf_unittest.TestLiteImportsNonlite, global::protobuf_unittest.TestLiteImportsNonlite.Builder>(internal__static_protobuf_unittest_TestLiteImportsNonlite__Descriptor,
+                new string[] { "Message", });
+        pb::ExtensionRegistry registry = pb::ExtensionRegistry.CreateInstance();
+        RegisterAllExtensions(registry);
+        global::protobuf_unittest.Unittest.RegisterAllExtensions(registry);
+        return registry;
+      };
+      pbd::FileDescriptor.InternalBuildGeneratedFileFrom(descriptorData,
+          new pbd::FileDescriptor[] {
+          global::protobuf_unittest.Unittest.Descriptor, 
+          }, assigner);
+    }
+    #endregion
+    
+  }
+  #region Messages
+  public sealed partial class TestLiteImportsNonlite : pb::GeneratedMessage<TestLiteImportsNonlite, TestLiteImportsNonlite.Builder> {
+    private static readonly TestLiteImportsNonlite defaultInstance = new Builder().BuildPartial();
+    public static TestLiteImportsNonlite DefaultInstance {
+      get { return defaultInstance; }
+    }
+    
+    public override TestLiteImportsNonlite DefaultInstanceForType {
+      get { return defaultInstance; }
+    }
+    
+    protected override TestLiteImportsNonlite ThisMessage {
+      get { return this; }
+    }
+    
+    public static pbd::MessageDescriptor Descriptor {
+      get { return global::protobuf_unittest.UnittestLiteImportsNonlite.internal__static_protobuf_unittest_TestLiteImportsNonlite__Descriptor; }
+    }
+    
+    protected override pb::FieldAccess.FieldAccessorTable<TestLiteImportsNonlite, TestLiteImportsNonlite.Builder> InternalFieldAccessors {
+      get { return global::protobuf_unittest.UnittestLiteImportsNonlite.internal__static_protobuf_unittest_TestLiteImportsNonlite__FieldAccessorTable; }
+    }
+    
+    public const int MessageFieldNumber = 1;
+    private bool hasMessage;
+    private global::protobuf_unittest.TestAllTypes message_ = global::protobuf_unittest.TestAllTypes.DefaultInstance;
+    public bool HasMessage {
+      get { return hasMessage; }
+    }
+    public global::protobuf_unittest.TestAllTypes Message {
+      get { return message_; }
+    }
+    
+    public override bool IsInitialized {
+      get {
+        return true;
+      }
+    }
+    
+    public override void WriteTo(pb::CodedOutputStream output) {
+      int size = SerializedSize;
+      if (HasMessage) {
+        output.WriteMessage(1, Message);
+      }
+      UnknownFields.WriteTo(output);
+    }
+    
+    private int memoizedSerializedSize = -1;
+    public override int SerializedSize {
+      get {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+        
+        size = 0;
+        if (HasMessage) {
+          size += pb::CodedOutputStream.ComputeMessageSize(1, Message);
+        }
+        size += UnknownFields.SerializedSize;
+        memoizedSerializedSize = size;
+        return size;
+      }
+    }
+    
+    public static TestLiteImportsNonlite ParseFrom(pb::ByteString data) {
+      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
+    }
+    public static TestLiteImportsNonlite ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
+      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
+    }
+    public static TestLiteImportsNonlite ParseFrom(byte[] data) {
+      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
+    }
+    public static TestLiteImportsNonlite ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
+      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
+    }
+    public static TestLiteImportsNonlite ParseFrom(global::System.IO.Stream input) {
+      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
+    }
+    public static TestLiteImportsNonlite ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
+      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
+    }
+    public static TestLiteImportsNonlite ParseDelimitedFrom(global::System.IO.Stream input) {
+      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
+    }
+    public static TestLiteImportsNonlite ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
+      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
+    }
+    public static TestLiteImportsNonlite ParseFrom(pb::CodedInputStream input) {
+      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
+    }
+    public static TestLiteImportsNonlite ParseFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
+      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
+    }
+    public static Builder CreateBuilder() { return new Builder(); }
+    public override Builder ToBuilder() { return CreateBuilder(this); }
+    public override Builder CreateBuilderForType() { return new Builder(); }
+    public static Builder CreateBuilder(TestLiteImportsNonlite prototype) {
+      return (Builder) new Builder().MergeFrom(prototype);
+    }
+    
+    public sealed partial class Builder : pb::GeneratedBuilder<TestLiteImportsNonlite, Builder> {
+      protected override Builder ThisBuilder {
+        get { return this; }
+      }
+      public Builder() {}
+      
+      TestLiteImportsNonlite result = new TestLiteImportsNonlite();
+      
+      protected override TestLiteImportsNonlite MessageBeingBuilt {
+        get { return result; }
+      }
+      
+      public override Builder Clear() {
+        result = new TestLiteImportsNonlite();
+        return this;
+      }
+      
+      public override Builder Clone() {
+        return new Builder().MergeFrom(result);
+      }
+      
+      public override pbd::MessageDescriptor DescriptorForType {
+        get { return global::protobuf_unittest.TestLiteImportsNonlite.Descriptor; }
+      }
+      
+      public override TestLiteImportsNonlite DefaultInstanceForType {
+        get { return global::protobuf_unittest.TestLiteImportsNonlite.DefaultInstance; }
+      }
+      
+      public override TestLiteImportsNonlite BuildPartial() {
+        if (result == null) {
+          throw new global::System.InvalidOperationException("build() has already been called on this Builder");
+        }
+        TestLiteImportsNonlite returnMe = result;
+        result = null;
+        return returnMe;
+      }
+      
+      public override Builder MergeFrom(pb::IMessage other) {
+        if (other is TestLiteImportsNonlite) {
+          return MergeFrom((TestLiteImportsNonlite) other);
+        } else {
+          base.MergeFrom(other);
+          return this;
+        }
+      }
+      
+      public override Builder MergeFrom(TestLiteImportsNonlite other) {
+        if (other == global::protobuf_unittest.TestLiteImportsNonlite.DefaultInstance) return this;
+        if (other.HasMessage) {
+          MergeMessage(other.Message);
+        }
+        this.MergeUnknownFields(other.UnknownFields);
+        return this;
+      }
+      
+      public override Builder MergeFrom(pb::CodedInputStream input) {
+        return MergeFrom(input, pb::ExtensionRegistry.Empty);
+      }
+      
+      public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
+        pb::UnknownFieldSet.Builder unknownFields = null;
+        while (true) {
+          uint tag = input.ReadTag();
+          switch (tag) {
+            case 0: {
+              if (unknownFields != null) {
+                this.UnknownFields = unknownFields.Build();
+              }
+              return this;
+            }
+            default: {
+              if (pb::WireFormat.IsEndGroupTag(tag)) {
+                if (unknownFields != null) {
+                  this.UnknownFields = unknownFields.Build();
+                }
+                return this;
+              }
+              if (unknownFields == null) {
+                unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
+              }
+              ParseUnknownField(input, unknownFields, extensionRegistry, tag);
+              break;
+            }
+            case 10: {
+              global::protobuf_unittest.TestAllTypes.Builder subBuilder = global::protobuf_unittest.TestAllTypes.CreateBuilder();
+              if (HasMessage) {
+                subBuilder.MergeFrom(Message);
+              }
+              input.ReadMessage(subBuilder, extensionRegistry);
+              Message = subBuilder.BuildPartial();
+              break;
+            }
+          }
+        }
+      }
+      
+      
+      public bool HasMessage {
+       get { return result.HasMessage; }
+      }
+      public global::protobuf_unittest.TestAllTypes Message {
+        get { return result.Message; }
+        set { SetMessage(value); }
+      }
+      public Builder SetMessage(global::protobuf_unittest.TestAllTypes value) {
+        pb::ThrowHelper.ThrowIfNull(value, "value");
+        result.hasMessage = true;
+        result.message_ = value;
+        return this;
+      }
+      public Builder SetMessage(global::protobuf_unittest.TestAllTypes.Builder builderForValue) {
+        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
+        result.hasMessage = true;
+        result.message_ = builderForValue.Build();
+        return this;
+      }
+      public Builder MergeMessage(global::protobuf_unittest.TestAllTypes value) {
+        pb::ThrowHelper.ThrowIfNull(value, "value");
+        if (result.HasMessage &&
+            result.message_ != global::protobuf_unittest.TestAllTypes.DefaultInstance) {
+            result.message_ = global::protobuf_unittest.TestAllTypes.CreateBuilder(result.message_).MergeFrom(value).BuildPartial();
+        } else {
+          result.message_ = value;
+        }
+        result.hasMessage = true;
+        return this;
+      }
+      public Builder ClearMessage() {
+        result.hasMessage = false;
+        result.message_ = global::protobuf_unittest.TestAllTypes.DefaultInstance;
+        return this;
+      }
+    }
+    static TestLiteImportsNonlite() {
+      object.ReferenceEquals(global::protobuf_unittest.UnittestLiteImportsNonlite.Descriptor, null);
+    }
+  }
+  
+  #endregion
+  
+}

이 변경점에서 너무 많은 파일들이 변경되어 몇몇 파일들은 표시되지 않았습니다.