Browse Source

Merge pull request #373 from jtattermusch/csharp_generate_proto

C# generate_proto.sh and buildall.sh scripts
Jon Skeet 10 years ago
parent
commit
98de125a7c

+ 22 - 0
csharp/buildall.sh

@@ -0,0 +1,22 @@
+#!/bin/bash
+# Use mono to build solution and run all tests.
+
+# Adjust these to reflect the location of nunit-console in your system.
+NUNIT_CONSOLE=nunit-console
+
+# The rest you can leave intact
+CONFIG=Release
+KEYFILE=../keys/Google.ProtocolBuffers.snk  # TODO(jtattermusch): signing!
+SRC=$(dirname $0)/src
+
+set -ex
+
+echo Building the solution.
+xbuild /p:Configuration=$CONFIG $SRC/ProtocolBuffers.sln
+
+echo Running tests.
+$NUNIT_CONSOLE $SRC/ProtocolBuffers.Test/bin/$CONFIG/Google.ProtocolBuffers.Test.dll
+
+$NUNIT_CONSOLE $SRC/ProtocolBuffersLite.Test/bin/$CONFIG/Google.ProtocolBuffersLite.Test.dll
+
+$NUNIT_CONSOLE $SRC/ProtocolBuffersLite.Test/bin/$CONFIG/Google.ProtocolBuffersMixedLite.Test.dll

+ 52 - 0
csharp/generate_protos.sh

@@ -0,0 +1,52 @@
+#!/bin/bash
+# Generates C# source files from .proto files.
+# You first need to make sure protoc has been built (see instructions on
+# building protoc in root of this repository)
+
+set -ex
+
+# cd to repository root
+cd $(dirname $0)/..
+
+# protocol buffer compiler to use
+PROTOC=src/protoc
+
+# Descriptor proto
+#TODO(jtattermusch): generate descriptor.proto
+
+# ProtocolBuffers.Test protos
+$PROTOC -Isrc --csharp_out=csharp/src/ProtocolBuffers.Test/TestProtos \
+    src/google/protobuf/unittest.proto \
+    src/google/protobuf/unittest_custom_options.proto \
+    src/google/protobuf/unittest_drop_unknown_fields.proto \
+    src/google/protobuf/unittest_enormous_descriptor.proto \
+    src/google/protobuf/unittest_import.proto \
+    src/google/protobuf/unittest_import_public.proto \
+    src/google/protobuf/unittest_mset.proto \
+    src/google/protobuf/unittest_optimize_for.proto \
+    src/google/protobuf/unknown_enum_test.proto
+
+$PROTOC -Icsharp/protos/extest --csharp_out=csharp/src/ProtocolBuffers.Test/TestProtos \
+    csharp/protos/extest/unittest_extras_xmltest.proto \
+    csharp/protos/extest/unittest_issues.proto
+
+$PROTOC -Icsharp --csharp_out=csharp/src/ProtocolBuffers.Test/TestProtos \
+    csharp/protos/google/protobuf/field_presence_test.proto
+
+$PROTOC -Ibenchmarks --csharp_out=csharp/src/ProtocolBuffers.Test/TestProtos \
+    benchmarks/google_size.proto \
+    benchmarks/google_speed.proto
+
+# ProtocolBuffersLite.Test protos
+$PROTOC -Isrc --csharp_out=csharp/src/ProtocolBuffersLite.Test/TestProtos \
+    src/google/protobuf/unittest.proto \
+    src/google/protobuf/unittest_import.proto \
+    src/google/protobuf/unittest_import_lite.proto \
+    src/google/protobuf/unittest_import_public.proto \
+    src/google/protobuf/unittest_import_public_lite.proto \
+    src/google/protobuf/unittest_lite.proto \
+    src/google/protobuf/unittest_lite_imports_nonlite.proto
+
+$PROTOC -Icsharp/protos/extest --csharp_out=csharp/src/ProtocolBuffersLite.Test/TestProtos \
+    csharp/protos/extest/unittest_extras_full.proto \
+    csharp/protos/extest/unittest_extras_lite.proto

+ 0 - 37
csharp/mono/buildall.sh

@@ -1,37 +0,0 @@
-#!/bin/bash
-
-# Adjust these to reflect the location of NUnit in your system,
-# and how you want NUnit to run
-NUNIT=~/protobuf/NUnit-2.5.0.9122/bin/net-2.0/nunit-console.exe
-NUNIT_OPTIONS=-noshadow
-
-# The rest should be okay.
-
-SRC=../src
-LIB=../lib
-KEYFILE=../keys/Google.ProtocolBuffers.snk
-
-rm -rf bin
-mkdir bin
-
-# Running the unit tests requires the dependencies are
-# in the bin directory too
-cp -f $LIB/{Rhino.Mocks.dll,nunit.framework.dll} bin
-
-echo Building main library
-gmcs -target:library -out:bin/Google.ProtocolBuffers.dll `find $SRC/ProtocolBuffers -name '*.cs'` -keyfile:$KEYFILE
-
-echo Building main library tests
-gmcs -target:library -out:bin/Google.ProtocolBuffers.Test.dll `find $SRC/ProtocolBuffers.Test -name '*.cs'` -keyfile:$KEYFILE -r:bin/Google.ProtocolBuffers.dll -r:$LIB/nunit.framework.dll -r:$LIB/Rhino.Mocks.dll
-
-echo Running main library tests
-mono $NUNIT bin/Google.ProtocolBuffers.Test.dll $NUNIT_OPTIONS
-
-echo Building ProtoGen
-gmcs -target:exe -out:bin/ProtoGen.exe `find $SRC/ProtoGen -name '*.cs'` -keyfile:$KEYFILE -r:bin/Google.ProtocolBuffers.dll
-
-echo Building ProtoGen tests
-gmcs -target:library -out:bin/Google.ProtocolBuffers.ProtoGen.Test.dll `find $SRC/ProtoGen.Test -name '*.cs'` -keyfile:$KEYFILE -r:bin/Google.ProtocolBuffers.dll -r:$LIB/nunit.framework.dll -r:bin/ProtoGen.exe
-
-echo Running ProtoGen tests
-mono $NUNIT bin/Google.ProtocolBuffers.ProtoGen.Test.dll $NUNIT_OPTIONS

+ 0 - 29
csharp/mono/generatesource.sh

@@ -1,29 +0,0 @@
-#!/bin/bash
-
-echo Compiling protobufs
-rm -rf tmp
-mkdir tmp
-PROTOS_DIR=../protos
-
-./protoc --proto_path=$PROTOS_DIR --descriptor_set_out=tmp/compiled.pb \
-  $PROTOS_DIR/google/protobuf/descriptor.proto \
-  $PROTOS_DIR/google/protobuf/csharp_options.proto \
-  $PROTOS_DIR/google/protobuf/unittest.proto \
-  $PROTOS_DIR/google/protobuf/unittest_csharp_options.proto \
-  $PROTOS_DIR/google/protobuf/unittest_custom_options.proto \
-  $PROTOS_DIR/google/protobuf/unittest_embed_optimize_for.proto \
-  $PROTOS_DIR/google/protobuf/unittest_import.proto \
-  $PROTOS_DIR/google/protobuf/unittest_mset.proto \
-  $PROTOS_DIR/google/protobuf/unittest_optimize_for.proto \
-  $PROTOS_DIR/tutorial/addressbook.proto
-
-cd tmp
-echo Generating new source
-mono ../bin/ProtoGen.exe compiled.pb
-
-echo Copying source into place
-cp DescriptorProtoFile.cs CSharpOptions.cs ../../src/ProtocolBuffers/DescriptorProtos
-cp UnitTest*.cs ../../src/ProtocolBuffers.Test/TestProtos
-cp AddressBookProtos.cs ../../src/AddressBook
-cd ..
-rm -rf tmp

+ 0 - 91
csharp/mono/readme.txt

@@ -1,91 +0,0 @@
-Getting started with Protocol Buffers on Mono
----------------------------------------------
-
-Prerequisites:
-
-o Mono 2.4 or higher. Earlier versions of Mono had too
-  many issues with the weird and wonderful generic type
-  relationships in Protocol Buffers. (Even Mono 2.4 *did*
-  have a few compile-time problems, but I've worked round them.)
-
-o Some sort of Linux/Unix system
-  You can try running with Bash on Windows via MINGW32 or
-  something similar, but you're on your own :) It's easier
-  to build and test everything with .NET if you're on
-  Windows.
-
-o The native Protocol Buffers build for your system.
-  Get it from http://code.google.com/p/protobuf/
-  After building it, copy the executable protoc
-  file into this directory.
-  
-o The NUnit binaries from http://nunit.org
-  I generally just download the latest version, which
-  may not be the one which goes with nunit.framework.dll
-  in ../lib, but I've never found this to be a problem.
-  
-Building the code with current sources
---------------------------------------
-
-1) Edit buildall.sh to tell it where to find nunit-console.exe
-   (and possibly change other options)
-   
-2) Run buildall.sh from this directory. It should build the
-   main library code + tests and ProtoGen code + tests, running
-   each set of tests after building it.
-   
-Note that currently one test is ignored in ServiceTest.cs. This
-made the Mono VM blow up - I suspect it's some interaction with
-Rhino which doesn't quite work on Mono 2.4. If you want to see a
-truly nasty stack trace, just comment out the Ignore attribute in
-ServiceTest.cs and rerun.
-
-The binaries will be produced in a bin directory under this one. The
-build currently starts from scratch each time, cleaning out the bin
-directory first. Once I've decided on a full NAnt or xbuild
-strategy, I'll do something a little cleaner.
-
-Rebuilding sources for generated code
--------------------------------------
-
-1) Build the current code first. The bootstrapping issue is why
-   the generated source code is in the source repository :) See
-   the steps above.
-   
-2) Run generatesource.sh from this directory. This will create a
-   temporary directory, compile the .proto files into a binary
-   format, then run ProtoGen to generate .cs files from the binary
-   format. It will copy these files to the right places in the tree,
-   and finally delete the temporary directory.
-   
-3) Rebuild to test that your newly generated sources work. (Optionally
-   regenerate as well, and hash the generated files to check that
-   the new build generates the same code as the old build :)
-   
-Running the code
-----------------
-
-Once you've built the binaries, you should be able to use them just
-as if you'd built them with .NET. (And indeed, you should be able to
-use binaries built with .NET as if you'd built them with Mono :)
-
-See the getting started guide for more information:
-http://code.google.com/p/protobuf-csharp-port/wiki/GettingStarted
-
-FAQ (Frequently Anticipated Questions)
---------------------------------------
-
-Q) This build process sucks! Why aren't you doing X, Y, Z?
-A) My Mono skills are limited. My NAnt skills are limited. My
-   MSBuild/xbuild skils are limited. My shell script skills are
-   limited. Any help is *very* welcome!
-   
-Q) Why doesn't it build ProtoBench etc?
-A) This is a first initial "release" I'll add more bits to
-   the build script. I'll be interested to see the results
-   of benchmarking it on Mono :)
-
-Any further questions or suggestions? Please email skeet@pobox.com
-or leave a request at
-http://code.google.com/p/protobuf-csharp-port/issues/list
-

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

@@ -84,7 +84,7 @@
     <Compile Include="Compatibility\TestResources.cs" />
     <Compile Include="Compatibility\TestResources.cs" />
     <Compile Include="Compatibility\TextCompatibilityTests.cs" />
     <Compile Include="Compatibility\TextCompatibilityTests.cs" />
     <Compile Include="Compatibility\XmlCompatibilityTests.cs" />
     <Compile Include="Compatibility\XmlCompatibilityTests.cs" />
-    <Compile Include="TestProtos\FieldPresence.cs" />
+    <Compile Include="TestProtos\FieldPresenceTest.cs" />
     <Compile Include="TestProtos\GoogleSize.cs" />
     <Compile Include="TestProtos\GoogleSize.cs" />
     <Compile Include="TestProtos\GoogleSpeed.cs" />
     <Compile Include="TestProtos\GoogleSpeed.cs" />
     <Compile Include="TestProtos\Unittest.cs" />
     <Compile Include="TestProtos\Unittest.cs" />

+ 0 - 0
csharp/src/ProtocolBuffers.Test/TestProtos/FieldPresence.cs → csharp/src/ProtocolBuffers.Test/TestProtos/FieldPresenceTest.cs


+ 0 - 22
csharp/src/ProtocolBuffers.Test/TestProtos/GoogleSize.cs

@@ -265,14 +265,12 @@ namespace Google.ProtocolBuffers.TestProtos {
 
 
     public const int Field5FieldNumber = 5;
     public const int Field5FieldNumber = 5;
     private pbc::PopsicleList<ulong> field5_ = new pbc::PopsicleList<ulong>();
     private pbc::PopsicleList<ulong> field5_ = new pbc::PopsicleList<ulong>();
-    [global::System.CLSCompliant(false)]
     public scg::IList<ulong> Field5List {
     public scg::IList<ulong> Field5List {
       get { return pbc::Lists.AsReadOnly(field5_); }
       get { return pbc::Lists.AsReadOnly(field5_); }
     }
     }
     public int Field5Count {
     public int Field5Count {
       get { return field5_.Count; }
       get { return field5_.Count; }
     }
     }
-    [global::System.CLSCompliant(false)]
     public ulong GetField5(int index) {
     public ulong GetField5(int index) {
       return field5_[index];
       return field5_[index];
     }
     }
@@ -899,30 +897,25 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
         return this;
       }
       }
 
 
-      [global::System.CLSCompliant(false)]
       public pbc::IPopsicleList<ulong> Field5List {
       public pbc::IPopsicleList<ulong> Field5List {
         get { return PrepareBuilder().field5_; }
         get { return PrepareBuilder().field5_; }
       }
       }
       public int Field5Count {
       public int Field5Count {
         get { return result.Field5Count; }
         get { return result.Field5Count; }
       }
       }
-      [global::System.CLSCompliant(false)]
       public ulong GetField5(int index) {
       public ulong GetField5(int index) {
         return result.GetField5(index);
         return result.GetField5(index);
       }
       }
-      [global::System.CLSCompliant(false)]
       public Builder SetField5(int index, ulong value) {
       public Builder SetField5(int index, ulong value) {
         PrepareBuilder();
         PrepareBuilder();
         result.field5_[index] = value;
         result.field5_[index] = value;
         return this;
         return this;
       }
       }
-      [global::System.CLSCompliant(false)]
       public Builder AddField5(ulong value) {
       public Builder AddField5(ulong value) {
         PrepareBuilder();
         PrepareBuilder();
         result.field5_.Add(value);
         result.field5_.Add(value);
         return this;
         return this;
       }
       }
-      [global::System.CLSCompliant(false)]
       public Builder AddRangeField5(scg::IEnumerable<ulong> values) {
       public Builder AddRangeField5(scg::IEnumerable<ulong> values) {
         PrepareBuilder();
         PrepareBuilder();
         result.field5_.Add(values);
         result.field5_.Add(values);
@@ -1683,7 +1676,6 @@ namespace Google.ProtocolBuffers.TestProtos {
     public bool HasField21 {
     public bool HasField21 {
       get { return hasField21; }
       get { return hasField21; }
     }
     }
-    [global::System.CLSCompliant(false)]
     public ulong Field21 {
     public ulong Field21 {
       get { return field21_; }
       get { return field21_; }
     }
     }
@@ -1724,7 +1716,6 @@ namespace Google.ProtocolBuffers.TestProtos {
     public bool HasField203 {
     public bool HasField203 {
       get { return hasField203; }
       get { return hasField203; }
     }
     }
-    [global::System.CLSCompliant(false)]
     public uint Field203 {
     public uint Field203 {
       get { return field203_; }
       get { return field203_; }
     }
     }
@@ -1755,7 +1746,6 @@ namespace Google.ProtocolBuffers.TestProtos {
     public bool HasField207 {
     public bool HasField207 {
       get { return hasField207; }
       get { return hasField207; }
     }
     }
-    [global::System.CLSCompliant(false)]
     public ulong Field207 {
     public ulong Field207 {
       get { return field207_; }
       get { return field207_; }
     }
     }
@@ -1766,7 +1756,6 @@ namespace Google.ProtocolBuffers.TestProtos {
     public bool HasField300 {
     public bool HasField300 {
       get { return hasField300; }
       get { return hasField300; }
     }
     }
-    [global::System.CLSCompliant(false)]
     public ulong Field300 {
     public ulong Field300 {
       get { return field300_; }
       get { return field300_; }
     }
     }
@@ -2102,12 +2091,10 @@ namespace Google.ProtocolBuffers.TestProtos {
       public bool HasField21 {
       public bool HasField21 {
         get { return result.hasField21; }
         get { return result.hasField21; }
       }
       }
-      [global::System.CLSCompliant(false)]
       public ulong Field21 {
       public ulong Field21 {
         get { return result.Field21; }
         get { return result.Field21; }
         set { SetField21(value); }
         set { SetField21(value); }
       }
       }
-      [global::System.CLSCompliant(false)]
       public Builder SetField21(ulong value) {
       public Builder SetField21(ulong value) {
         PrepareBuilder();
         PrepareBuilder();
         result.hasField21 = true;
         result.hasField21 = true;
@@ -2184,12 +2171,10 @@ namespace Google.ProtocolBuffers.TestProtos {
       public bool HasField203 {
       public bool HasField203 {
         get { return result.hasField203; }
         get { return result.hasField203; }
       }
       }
-      [global::System.CLSCompliant(false)]
       public uint Field203 {
       public uint Field203 {
         get { return result.Field203; }
         get { return result.Field203; }
         set { SetField203(value); }
         set { SetField203(value); }
       }
       }
-      [global::System.CLSCompliant(false)]
       public Builder SetField203(uint value) {
       public Builder SetField203(uint value) {
         PrepareBuilder();
         PrepareBuilder();
         result.hasField203 = true;
         result.hasField203 = true;
@@ -2247,12 +2232,10 @@ namespace Google.ProtocolBuffers.TestProtos {
       public bool HasField207 {
       public bool HasField207 {
         get { return result.hasField207; }
         get { return result.hasField207; }
       }
       }
-      [global::System.CLSCompliant(false)]
       public ulong Field207 {
       public ulong Field207 {
         get { return result.Field207; }
         get { return result.Field207; }
         set { SetField207(value); }
         set { SetField207(value); }
       }
       }
-      [global::System.CLSCompliant(false)]
       public Builder SetField207(ulong value) {
       public Builder SetField207(ulong value) {
         PrepareBuilder();
         PrepareBuilder();
         result.hasField207 = true;
         result.hasField207 = true;
@@ -2269,12 +2252,10 @@ namespace Google.ProtocolBuffers.TestProtos {
       public bool HasField300 {
       public bool HasField300 {
         get { return result.hasField300; }
         get { return result.hasField300; }
       }
       }
-      [global::System.CLSCompliant(false)]
       public ulong Field300 {
       public ulong Field300 {
         get { return result.Field300; }
         get { return result.Field300; }
         set { SetField300(value); }
         set { SetField300(value); }
       }
       }
-      [global::System.CLSCompliant(false)]
       public Builder SetField300(ulong value) {
       public Builder SetField300(ulong value) {
         PrepareBuilder();
         PrepareBuilder();
         result.hasField300 = true;
         result.hasField300 = true;
@@ -2402,7 +2383,6 @@ namespace Google.ProtocolBuffers.TestProtos {
         public bool HasField15 {
         public bool HasField15 {
           get { return hasField15; }
           get { return hasField15; }
         }
         }
-        [global::System.CLSCompliant(false)]
         public ulong Field15 {
         public ulong Field15 {
           get { return field15_; }
           get { return field15_; }
         }
         }
@@ -2738,12 +2718,10 @@ namespace Google.ProtocolBuffers.TestProtos {
           public bool HasField15 {
           public bool HasField15 {
             get { return result.hasField15; }
             get { return result.hasField15; }
           }
           }
-          [global::System.CLSCompliant(false)]
           public ulong Field15 {
           public ulong Field15 {
             get { return result.Field15; }
             get { return result.Field15; }
             set { SetField15(value); }
             set { SetField15(value); }
           }
           }
-          [global::System.CLSCompliant(false)]
           public Builder SetField15(ulong value) {
           public Builder SetField15(ulong value) {
             PrepareBuilder();
             PrepareBuilder();
             result.hasField15 = true;
             result.hasField15 = true;

+ 0 - 22
csharp/src/ProtocolBuffers.Test/TestProtos/GoogleSpeed.cs

@@ -267,14 +267,12 @@ namespace Google.ProtocolBuffers.TestProtos {
 
 
     public const int Field5FieldNumber = 5;
     public const int Field5FieldNumber = 5;
     private pbc::PopsicleList<ulong> field5_ = new pbc::PopsicleList<ulong>();
     private pbc::PopsicleList<ulong> field5_ = new pbc::PopsicleList<ulong>();
-    [global::System.CLSCompliant(false)]
     public scg::IList<ulong> Field5List {
     public scg::IList<ulong> Field5List {
       get { return pbc::Lists.AsReadOnly(field5_); }
       get { return pbc::Lists.AsReadOnly(field5_); }
     }
     }
     public int Field5Count {
     public int Field5Count {
       get { return field5_.Count; }
       get { return field5_.Count; }
     }
     }
-    [global::System.CLSCompliant(false)]
     public ulong GetField5(int index) {
     public ulong GetField5(int index) {
       return field5_[index];
       return field5_[index];
     }
     }
@@ -1540,30 +1538,25 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
         return this;
       }
       }
 
 
-      [global::System.CLSCompliant(false)]
       public pbc::IPopsicleList<ulong> Field5List {
       public pbc::IPopsicleList<ulong> Field5List {
         get { return PrepareBuilder().field5_; }
         get { return PrepareBuilder().field5_; }
       }
       }
       public int Field5Count {
       public int Field5Count {
         get { return result.Field5Count; }
         get { return result.Field5Count; }
       }
       }
-      [global::System.CLSCompliant(false)]
       public ulong GetField5(int index) {
       public ulong GetField5(int index) {
         return result.GetField5(index);
         return result.GetField5(index);
       }
       }
-      [global::System.CLSCompliant(false)]
       public Builder SetField5(int index, ulong value) {
       public Builder SetField5(int index, ulong value) {
         PrepareBuilder();
         PrepareBuilder();
         result.field5_[index] = value;
         result.field5_[index] = value;
         return this;
         return this;
       }
       }
-      [global::System.CLSCompliant(false)]
       public Builder AddField5(ulong value) {
       public Builder AddField5(ulong value) {
         PrepareBuilder();
         PrepareBuilder();
         result.field5_.Add(value);
         result.field5_.Add(value);
         return this;
         return this;
       }
       }
-      [global::System.CLSCompliant(false)]
       public Builder AddRangeField5(scg::IEnumerable<ulong> values) {
       public Builder AddRangeField5(scg::IEnumerable<ulong> values) {
         PrepareBuilder();
         PrepareBuilder();
         result.field5_.Add(values);
         result.field5_.Add(values);
@@ -2326,7 +2319,6 @@ namespace Google.ProtocolBuffers.TestProtos {
     public bool HasField21 {
     public bool HasField21 {
       get { return hasField21; }
       get { return hasField21; }
     }
     }
-    [global::System.CLSCompliant(false)]
     public ulong Field21 {
     public ulong Field21 {
       get { return field21_; }
       get { return field21_; }
     }
     }
@@ -2367,7 +2359,6 @@ namespace Google.ProtocolBuffers.TestProtos {
     public bool HasField203 {
     public bool HasField203 {
       get { return hasField203; }
       get { return hasField203; }
     }
     }
-    [global::System.CLSCompliant(false)]
     public uint Field203 {
     public uint Field203 {
       get { return field203_; }
       get { return field203_; }
     }
     }
@@ -2398,7 +2389,6 @@ namespace Google.ProtocolBuffers.TestProtos {
     public bool HasField207 {
     public bool HasField207 {
       get { return hasField207; }
       get { return hasField207; }
     }
     }
-    [global::System.CLSCompliant(false)]
     public ulong Field207 {
     public ulong Field207 {
       get { return field207_; }
       get { return field207_; }
     }
     }
@@ -2409,7 +2399,6 @@ namespace Google.ProtocolBuffers.TestProtos {
     public bool HasField300 {
     public bool HasField300 {
       get { return hasField300; }
       get { return hasField300; }
     }
     }
-    [global::System.CLSCompliant(false)]
     public ulong Field300 {
     public ulong Field300 {
       get { return field300_; }
       get { return field300_; }
     }
     }
@@ -3099,12 +3088,10 @@ namespace Google.ProtocolBuffers.TestProtos {
       public bool HasField21 {
       public bool HasField21 {
         get { return result.hasField21; }
         get { return result.hasField21; }
       }
       }
-      [global::System.CLSCompliant(false)]
       public ulong Field21 {
       public ulong Field21 {
         get { return result.Field21; }
         get { return result.Field21; }
         set { SetField21(value); }
         set { SetField21(value); }
       }
       }
-      [global::System.CLSCompliant(false)]
       public Builder SetField21(ulong value) {
       public Builder SetField21(ulong value) {
         PrepareBuilder();
         PrepareBuilder();
         result.hasField21 = true;
         result.hasField21 = true;
@@ -3181,12 +3168,10 @@ namespace Google.ProtocolBuffers.TestProtos {
       public bool HasField203 {
       public bool HasField203 {
         get { return result.hasField203; }
         get { return result.hasField203; }
       }
       }
-      [global::System.CLSCompliant(false)]
       public uint Field203 {
       public uint Field203 {
         get { return result.Field203; }
         get { return result.Field203; }
         set { SetField203(value); }
         set { SetField203(value); }
       }
       }
-      [global::System.CLSCompliant(false)]
       public Builder SetField203(uint value) {
       public Builder SetField203(uint value) {
         PrepareBuilder();
         PrepareBuilder();
         result.hasField203 = true;
         result.hasField203 = true;
@@ -3244,12 +3229,10 @@ namespace Google.ProtocolBuffers.TestProtos {
       public bool HasField207 {
       public bool HasField207 {
         get { return result.hasField207; }
         get { return result.hasField207; }
       }
       }
-      [global::System.CLSCompliant(false)]
       public ulong Field207 {
       public ulong Field207 {
         get { return result.Field207; }
         get { return result.Field207; }
         set { SetField207(value); }
         set { SetField207(value); }
       }
       }
-      [global::System.CLSCompliant(false)]
       public Builder SetField207(ulong value) {
       public Builder SetField207(ulong value) {
         PrepareBuilder();
         PrepareBuilder();
         result.hasField207 = true;
         result.hasField207 = true;
@@ -3266,12 +3249,10 @@ namespace Google.ProtocolBuffers.TestProtos {
       public bool HasField300 {
       public bool HasField300 {
         get { return result.hasField300; }
         get { return result.hasField300; }
       }
       }
-      [global::System.CLSCompliant(false)]
       public ulong Field300 {
       public ulong Field300 {
         get { return result.Field300; }
         get { return result.Field300; }
         set { SetField300(value); }
         set { SetField300(value); }
       }
       }
-      [global::System.CLSCompliant(false)]
       public Builder SetField300(ulong value) {
       public Builder SetField300(ulong value) {
         PrepareBuilder();
         PrepareBuilder();
         result.hasField300 = true;
         result.hasField300 = true;
@@ -3403,7 +3384,6 @@ namespace Google.ProtocolBuffers.TestProtos {
         public bool HasField15 {
         public bool HasField15 {
           get { return hasField15; }
           get { return hasField15; }
         }
         }
-        [global::System.CLSCompliant(false)]
         public ulong Field15 {
         public ulong Field15 {
           get { return field15_; }
           get { return field15_; }
         }
         }
@@ -4064,12 +4044,10 @@ namespace Google.ProtocolBuffers.TestProtos {
           public bool HasField15 {
           public bool HasField15 {
             get { return result.hasField15; }
             get { return result.hasField15; }
           }
           }
-          [global::System.CLSCompliant(false)]
           public ulong Field15 {
           public ulong Field15 {
             get { return result.Field15; }
             get { return result.Field15; }
             set { SetField15(value); }
             set { SetField15(value); }
           }
           }
-          [global::System.CLSCompliant(false)]
           public Builder SetField15(ulong value) {
           public Builder SetField15(ulong value) {
             PrepareBuilder();
             PrepareBuilder();
             result.hasField15 = true;
             result.hasField15 = true;

+ 18 - 77
csharp/src/ProtocolBuffers.Test/TestProtos/UnittestDropUnknownFields.cs

@@ -103,38 +103,24 @@ namespace Google.ProtocolBuffers.TestProtos {
     #endregion
     #endregion
 
 
     public const int Int32ValueFieldNumber = 1;
     public const int Int32ValueFieldNumber = 1;
-    private bool hasInt32Value;
     private int int32Value_;
     private int int32Value_;
-    public bool HasInt32Value {
-      get { return hasInt32Value; }
-    }
     public int Int32Value {
     public int Int32Value {
       get { return int32Value_; }
       get { return int32Value_; }
     }
     }
 
 
     public const int EnumValueFieldNumber = 2;
     public const int EnumValueFieldNumber = 2;
-    private bool hasEnumValue;
     private global::Google.ProtocolBuffers.TestProtos.Foo.Types.NestedEnum enumValue_ = global::Google.ProtocolBuffers.TestProtos.Foo.Types.NestedEnum.FOO;
     private global::Google.ProtocolBuffers.TestProtos.Foo.Types.NestedEnum enumValue_ = global::Google.ProtocolBuffers.TestProtos.Foo.Types.NestedEnum.FOO;
-    public bool HasEnumValue {
-      get { return hasEnumValue; }
-    }
     public global::Google.ProtocolBuffers.TestProtos.Foo.Types.NestedEnum EnumValue {
     public global::Google.ProtocolBuffers.TestProtos.Foo.Types.NestedEnum EnumValue {
       get { return enumValue_; }
       get { return enumValue_; }
     }
     }
 
 
-    public override bool IsInitialized {
-      get {
-        return true;
-      }
-    }
-
     public override void WriteTo(pb::ICodedOutputStream output) {
     public override void WriteTo(pb::ICodedOutputStream output) {
       CalcSerializedSize();
       CalcSerializedSize();
       string[] field_names = _fooFieldNames;
       string[] field_names = _fooFieldNames;
-      if (hasInt32Value) {
+      if (Int32Value != 0) {
         output.WriteInt32(1, field_names[1], Int32Value);
         output.WriteInt32(1, field_names[1], Int32Value);
       }
       }
-      if (hasEnumValue) {
+      if (EnumValue != global::Google.ProtocolBuffers.TestProtos.Foo.Types.NestedEnum.FOO) {
         output.WriteEnum(2, field_names[0], (int) EnumValue, EnumValue);
         output.WriteEnum(2, field_names[0], (int) EnumValue, EnumValue);
       }
       }
       UnknownFields.WriteTo(output);
       UnknownFields.WriteTo(output);
@@ -154,10 +140,10 @@ namespace Google.ProtocolBuffers.TestProtos {
       if (size != -1) return size;
       if (size != -1) return size;
 
 
       size = 0;
       size = 0;
-      if (hasInt32Value) {
+      if (Int32Value != 0) {
         size += pb::CodedOutputStream.ComputeInt32Size(1, Int32Value);
         size += pb::CodedOutputStream.ComputeInt32Size(1, Int32Value);
       }
       }
-      if (hasEnumValue) {
+      if (EnumValue != global::Google.ProtocolBuffers.TestProtos.Foo.Types.NestedEnum.FOO) {
         size += pb::CodedOutputStream.ComputeEnumSize(2, (int) EnumValue);
         size += pb::CodedOutputStream.ComputeEnumSize(2, (int) EnumValue);
       }
       }
       size += UnknownFields.SerializedSize;
       size += UnknownFields.SerializedSize;
@@ -282,10 +268,10 @@ namespace Google.ProtocolBuffers.TestProtos {
       public override Builder MergeFrom(Foo other) {
       public override Builder MergeFrom(Foo other) {
         if (other == global::Google.ProtocolBuffers.TestProtos.Foo.DefaultInstance) return this;
         if (other == global::Google.ProtocolBuffers.TestProtos.Foo.DefaultInstance) return this;
         PrepareBuilder();
         PrepareBuilder();
-        if (other.HasInt32Value) {
+        if (other.Int32Value != 0) {
           Int32Value = other.Int32Value;
           Int32Value = other.Int32Value;
         }
         }
-        if (other.HasEnumValue) {
+        if (other.EnumValue != global::Google.ProtocolBuffers.TestProtos.Foo.Types.NestedEnum.FOO) {
           EnumValue = other.EnumValue;
           EnumValue = other.EnumValue;
         }
         }
         this.MergeUnknownFields(other.UnknownFields);
         this.MergeUnknownFields(other.UnknownFields);
@@ -332,13 +318,12 @@ namespace Google.ProtocolBuffers.TestProtos {
               break;
               break;
             }
             }
             case 8: {
             case 8: {
-              result.hasInt32Value = input.ReadInt32(ref result.int32Value_);
+              input.ReadInt32(ref result.int32Value_);
               break;
               break;
             }
             }
             case 16: {
             case 16: {
               object unknown;
               object unknown;
               if(input.ReadEnum(ref result.enumValue_, out unknown)) {
               if(input.ReadEnum(ref result.enumValue_, out unknown)) {
-                result.hasEnumValue = true;
               } else if(unknown is int) {
               } else if(unknown is int) {
                 if (unknownFields == null) {
                 if (unknownFields == null) {
                   unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
                   unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
@@ -357,42 +342,32 @@ namespace Google.ProtocolBuffers.TestProtos {
       }
       }
 
 
 
 
-      public bool HasInt32Value {
-        get { return result.hasInt32Value; }
-      }
       public int Int32Value {
       public int Int32Value {
         get { return result.Int32Value; }
         get { return result.Int32Value; }
         set { SetInt32Value(value); }
         set { SetInt32Value(value); }
       }
       }
       public Builder SetInt32Value(int value) {
       public Builder SetInt32Value(int value) {
         PrepareBuilder();
         PrepareBuilder();
-        result.hasInt32Value = true;
         result.int32Value_ = value;
         result.int32Value_ = value;
         return this;
         return this;
       }
       }
       public Builder ClearInt32Value() {
       public Builder ClearInt32Value() {
         PrepareBuilder();
         PrepareBuilder();
-        result.hasInt32Value = false;
         result.int32Value_ = 0;
         result.int32Value_ = 0;
         return this;
         return this;
       }
       }
 
 
-      public bool HasEnumValue {
-       get { return result.hasEnumValue; }
-      }
       public global::Google.ProtocolBuffers.TestProtos.Foo.Types.NestedEnum EnumValue {
       public global::Google.ProtocolBuffers.TestProtos.Foo.Types.NestedEnum EnumValue {
         get { return result.EnumValue; }
         get { return result.EnumValue; }
         set { SetEnumValue(value); }
         set { SetEnumValue(value); }
       }
       }
       public Builder SetEnumValue(global::Google.ProtocolBuffers.TestProtos.Foo.Types.NestedEnum value) {
       public Builder SetEnumValue(global::Google.ProtocolBuffers.TestProtos.Foo.Types.NestedEnum value) {
         PrepareBuilder();
         PrepareBuilder();
-        result.hasEnumValue = true;
         result.enumValue_ = value;
         result.enumValue_ = value;
         return this;
         return this;
       }
       }
       public Builder ClearEnumValue() {
       public Builder ClearEnumValue() {
         PrepareBuilder();
         PrepareBuilder();
-        result.hasEnumValue = false;
         result.enumValue_ = global::Google.ProtocolBuffers.TestProtos.Foo.Types.NestedEnum.FOO;
         result.enumValue_ = global::Google.ProtocolBuffers.TestProtos.Foo.Types.NestedEnum.FOO;
         return this;
         return this;
       }
       }
@@ -442,51 +417,33 @@ namespace Google.ProtocolBuffers.TestProtos {
     #endregion
     #endregion
 
 
     public const int Int32ValueFieldNumber = 1;
     public const int Int32ValueFieldNumber = 1;
-    private bool hasInt32Value;
     private int int32Value_;
     private int int32Value_;
-    public bool HasInt32Value {
-      get { return hasInt32Value; }
-    }
     public int Int32Value {
     public int Int32Value {
       get { return int32Value_; }
       get { return int32Value_; }
     }
     }
 
 
     public const int EnumValueFieldNumber = 2;
     public const int EnumValueFieldNumber = 2;
-    private bool hasEnumValue;
     private global::Google.ProtocolBuffers.TestProtos.FooWithExtraFields.Types.NestedEnum enumValue_ = global::Google.ProtocolBuffers.TestProtos.FooWithExtraFields.Types.NestedEnum.FOO;
     private global::Google.ProtocolBuffers.TestProtos.FooWithExtraFields.Types.NestedEnum enumValue_ = global::Google.ProtocolBuffers.TestProtos.FooWithExtraFields.Types.NestedEnum.FOO;
-    public bool HasEnumValue {
-      get { return hasEnumValue; }
-    }
     public global::Google.ProtocolBuffers.TestProtos.FooWithExtraFields.Types.NestedEnum EnumValue {
     public global::Google.ProtocolBuffers.TestProtos.FooWithExtraFields.Types.NestedEnum EnumValue {
       get { return enumValue_; }
       get { return enumValue_; }
     }
     }
 
 
     public const int ExtraInt32ValueFieldNumber = 3;
     public const int ExtraInt32ValueFieldNumber = 3;
-    private bool hasExtraInt32Value;
     private int extraInt32Value_;
     private int extraInt32Value_;
-    public bool HasExtraInt32Value {
-      get { return hasExtraInt32Value; }
-    }
     public int ExtraInt32Value {
     public int ExtraInt32Value {
       get { return extraInt32Value_; }
       get { return extraInt32Value_; }
     }
     }
 
 
-    public override bool IsInitialized {
-      get {
-        return true;
-      }
-    }
-
     public override void WriteTo(pb::ICodedOutputStream output) {
     public override void WriteTo(pb::ICodedOutputStream output) {
       CalcSerializedSize();
       CalcSerializedSize();
       string[] field_names = _fooWithExtraFieldsFieldNames;
       string[] field_names = _fooWithExtraFieldsFieldNames;
-      if (hasInt32Value) {
+      if (Int32Value != 0) {
         output.WriteInt32(1, field_names[2], Int32Value);
         output.WriteInt32(1, field_names[2], Int32Value);
       }
       }
-      if (hasEnumValue) {
+      if (EnumValue != global::Google.ProtocolBuffers.TestProtos.FooWithExtraFields.Types.NestedEnum.FOO) {
         output.WriteEnum(2, field_names[0], (int) EnumValue, EnumValue);
         output.WriteEnum(2, field_names[0], (int) EnumValue, EnumValue);
       }
       }
-      if (hasExtraInt32Value) {
+      if (ExtraInt32Value != 0) {
         output.WriteInt32(3, field_names[1], ExtraInt32Value);
         output.WriteInt32(3, field_names[1], ExtraInt32Value);
       }
       }
       UnknownFields.WriteTo(output);
       UnknownFields.WriteTo(output);
@@ -506,13 +463,13 @@ namespace Google.ProtocolBuffers.TestProtos {
       if (size != -1) return size;
       if (size != -1) return size;
 
 
       size = 0;
       size = 0;
-      if (hasInt32Value) {
+      if (Int32Value != 0) {
         size += pb::CodedOutputStream.ComputeInt32Size(1, Int32Value);
         size += pb::CodedOutputStream.ComputeInt32Size(1, Int32Value);
       }
       }
-      if (hasEnumValue) {
+      if (EnumValue != global::Google.ProtocolBuffers.TestProtos.FooWithExtraFields.Types.NestedEnum.FOO) {
         size += pb::CodedOutputStream.ComputeEnumSize(2, (int) EnumValue);
         size += pb::CodedOutputStream.ComputeEnumSize(2, (int) EnumValue);
       }
       }
-      if (hasExtraInt32Value) {
+      if (ExtraInt32Value != 0) {
         size += pb::CodedOutputStream.ComputeInt32Size(3, ExtraInt32Value);
         size += pb::CodedOutputStream.ComputeInt32Size(3, ExtraInt32Value);
       }
       }
       size += UnknownFields.SerializedSize;
       size += UnknownFields.SerializedSize;
@@ -637,13 +594,13 @@ namespace Google.ProtocolBuffers.TestProtos {
       public override Builder MergeFrom(FooWithExtraFields other) {
       public override Builder MergeFrom(FooWithExtraFields other) {
         if (other == global::Google.ProtocolBuffers.TestProtos.FooWithExtraFields.DefaultInstance) return this;
         if (other == global::Google.ProtocolBuffers.TestProtos.FooWithExtraFields.DefaultInstance) return this;
         PrepareBuilder();
         PrepareBuilder();
-        if (other.HasInt32Value) {
+        if (other.Int32Value != 0) {
           Int32Value = other.Int32Value;
           Int32Value = other.Int32Value;
         }
         }
-        if (other.HasEnumValue) {
+        if (other.EnumValue != global::Google.ProtocolBuffers.TestProtos.FooWithExtraFields.Types.NestedEnum.FOO) {
           EnumValue = other.EnumValue;
           EnumValue = other.EnumValue;
         }
         }
-        if (other.HasExtraInt32Value) {
+        if (other.ExtraInt32Value != 0) {
           ExtraInt32Value = other.ExtraInt32Value;
           ExtraInt32Value = other.ExtraInt32Value;
         }
         }
         this.MergeUnknownFields(other.UnknownFields);
         this.MergeUnknownFields(other.UnknownFields);
@@ -690,13 +647,12 @@ namespace Google.ProtocolBuffers.TestProtos {
               break;
               break;
             }
             }
             case 8: {
             case 8: {
-              result.hasInt32Value = input.ReadInt32(ref result.int32Value_);
+              input.ReadInt32(ref result.int32Value_);
               break;
               break;
             }
             }
             case 16: {
             case 16: {
               object unknown;
               object unknown;
               if(input.ReadEnum(ref result.enumValue_, out unknown)) {
               if(input.ReadEnum(ref result.enumValue_, out unknown)) {
-                result.hasEnumValue = true;
               } else if(unknown is int) {
               } else if(unknown is int) {
                 if (unknownFields == null) {
                 if (unknownFields == null) {
                   unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
                   unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
@@ -706,7 +662,7 @@ namespace Google.ProtocolBuffers.TestProtos {
               break;
               break;
             }
             }
             case 24: {
             case 24: {
-              result.hasExtraInt32Value = input.ReadInt32(ref result.extraInt32Value_);
+              input.ReadInt32(ref result.extraInt32Value_);
               break;
               break;
             }
             }
           }
           }
@@ -719,62 +675,47 @@ namespace Google.ProtocolBuffers.TestProtos {
       }
       }
 
 
 
 
-      public bool HasInt32Value {
-        get { return result.hasInt32Value; }
-      }
       public int Int32Value {
       public int Int32Value {
         get { return result.Int32Value; }
         get { return result.Int32Value; }
         set { SetInt32Value(value); }
         set { SetInt32Value(value); }
       }
       }
       public Builder SetInt32Value(int value) {
       public Builder SetInt32Value(int value) {
         PrepareBuilder();
         PrepareBuilder();
-        result.hasInt32Value = true;
         result.int32Value_ = value;
         result.int32Value_ = value;
         return this;
         return this;
       }
       }
       public Builder ClearInt32Value() {
       public Builder ClearInt32Value() {
         PrepareBuilder();
         PrepareBuilder();
-        result.hasInt32Value = false;
         result.int32Value_ = 0;
         result.int32Value_ = 0;
         return this;
         return this;
       }
       }
 
 
-      public bool HasEnumValue {
-       get { return result.hasEnumValue; }
-      }
       public global::Google.ProtocolBuffers.TestProtos.FooWithExtraFields.Types.NestedEnum EnumValue {
       public global::Google.ProtocolBuffers.TestProtos.FooWithExtraFields.Types.NestedEnum EnumValue {
         get { return result.EnumValue; }
         get { return result.EnumValue; }
         set { SetEnumValue(value); }
         set { SetEnumValue(value); }
       }
       }
       public Builder SetEnumValue(global::Google.ProtocolBuffers.TestProtos.FooWithExtraFields.Types.NestedEnum value) {
       public Builder SetEnumValue(global::Google.ProtocolBuffers.TestProtos.FooWithExtraFields.Types.NestedEnum value) {
         PrepareBuilder();
         PrepareBuilder();
-        result.hasEnumValue = true;
         result.enumValue_ = value;
         result.enumValue_ = value;
         return this;
         return this;
       }
       }
       public Builder ClearEnumValue() {
       public Builder ClearEnumValue() {
         PrepareBuilder();
         PrepareBuilder();
-        result.hasEnumValue = false;
         result.enumValue_ = global::Google.ProtocolBuffers.TestProtos.FooWithExtraFields.Types.NestedEnum.FOO;
         result.enumValue_ = global::Google.ProtocolBuffers.TestProtos.FooWithExtraFields.Types.NestedEnum.FOO;
         return this;
         return this;
       }
       }
 
 
-      public bool HasExtraInt32Value {
-        get { return result.hasExtraInt32Value; }
-      }
       public int ExtraInt32Value {
       public int ExtraInt32Value {
         get { return result.ExtraInt32Value; }
         get { return result.ExtraInt32Value; }
         set { SetExtraInt32Value(value); }
         set { SetExtraInt32Value(value); }
       }
       }
       public Builder SetExtraInt32Value(int value) {
       public Builder SetExtraInt32Value(int value) {
         PrepareBuilder();
         PrepareBuilder();
-        result.hasExtraInt32Value = true;
         result.extraInt32Value_ = value;
         result.extraInt32Value_ = value;
         return this;
         return this;
       }
       }
       public Builder ClearExtraInt32Value() {
       public Builder ClearExtraInt32Value() {
         PrepareBuilder();
         PrepareBuilder();
-        result.hasExtraInt32Value = false;
         result.extraInt32Value_ = 0;
         result.extraInt32Value_ = 0;
         return this;
         return this;
       }
       }

+ 0 - 4065
csharp/src/ProtocolBuffers.Test/TestProtos/UnittestNoFieldPresence.cs

@@ -1,4065 +0,0 @@
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
-// source: google/protobuf/unittest_no_field_presence.proto
-#pragma warning disable 1591, 0612, 3021
-#region Designer generated code
-
-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 {
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public static partial class UnittestNoFieldPresence {
-
-    #region Extension registration
-    public static void RegisterAllExtensions(pb::ExtensionRegistry registry) {
-    }
-    #endregion
-    #region Static variables
-    internal static pbd::MessageDescriptor internal__static_proto2_nofieldpresence_unittest_TestAllTypes__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestAllTypes, global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Builder> internal__static_proto2_nofieldpresence_unittest_TestAllTypes__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_proto2_nofieldpresence_unittest_TestAllTypes_NestedMessage__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage, global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage.Builder> internal__static_proto2_nofieldpresence_unittest_TestAllTypes_NestedMessage__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_proto2_nofieldpresence_unittest_TestProto2Required__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestProto2Required, global::Google.ProtocolBuffers.TestProtos.TestProto2Required.Builder> internal__static_proto2_nofieldpresence_unittest_TestProto2Required__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_proto2_nofieldpresence_unittest_ForeignMessage__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.ForeignMessage, global::Google.ProtocolBuffers.TestProtos.ForeignMessage.Builder> internal__static_proto2_nofieldpresence_unittest_ForeignMessage__FieldAccessorTable;
-    #endregion
-    #region Descriptor
-    public static pbd::FileDescriptor Descriptor {
-      get { return descriptor; }
-    }
-    private static pbd::FileDescriptor descriptor;
-
-    static UnittestNoFieldPresence() {
-      byte[] descriptorData = global::System.Convert.FromBase64String(
-          string.Concat(
-            "CjBnb29nbGUvcHJvdG9idWYvdW5pdHRlc3Rfbm9fZmllbGRfcHJlc2VuY2Uu", 
-            "cHJvdG8SH3Byb3RvMl9ub2ZpZWxkcHJlc2VuY2VfdW5pdHRlc3QaHmdvb2ds", 
-            "ZS9wcm90b2J1Zi91bml0dGVzdC5wcm90byKaEQoMVGVzdEFsbFR5cGVzEhYK", 
-            "Dm9wdGlvbmFsX2ludDMyGAEgASgFEhYKDm9wdGlvbmFsX2ludDY0GAIgASgD", 
-            "EhcKD29wdGlvbmFsX3VpbnQzMhgDIAEoDRIXCg9vcHRpb25hbF91aW50NjQY", 
-            "BCABKAQSFwoPb3B0aW9uYWxfc2ludDMyGAUgASgREhcKD29wdGlvbmFsX3Np", 
-            "bnQ2NBgGIAEoEhIYChBvcHRpb25hbF9maXhlZDMyGAcgASgHEhgKEG9wdGlv", 
-            "bmFsX2ZpeGVkNjQYCCABKAYSGQoRb3B0aW9uYWxfc2ZpeGVkMzIYCSABKA8S", 
-            "GQoRb3B0aW9uYWxfc2ZpeGVkNjQYCiABKBASFgoOb3B0aW9uYWxfZmxvYXQY", 
-            "CyABKAISFwoPb3B0aW9uYWxfZG91YmxlGAwgASgBEhUKDW9wdGlvbmFsX2Jv", 
-            "b2wYDSABKAgSFwoPb3B0aW9uYWxfc3RyaW5nGA4gASgJEhYKDm9wdGlvbmFs", 
-            "X2J5dGVzGA8gASgMElwKF29wdGlvbmFsX25lc3RlZF9tZXNzYWdlGBIgASgL", 
-            "MjsucHJvdG8yX25vZmllbGRwcmVzZW5jZV91bml0dGVzdC5UZXN0QWxsVHlw", 
-            "ZXMuTmVzdGVkTWVzc2FnZRJRChhvcHRpb25hbF9mb3JlaWduX21lc3NhZ2UY", 
-            "EyABKAsyLy5wcm90bzJfbm9maWVsZHByZXNlbmNlX3VuaXR0ZXN0LkZvcmVp", 
-            "Z25NZXNzYWdlEkAKF29wdGlvbmFsX3Byb3RvMl9tZXNzYWdlGBQgASgLMh8u", 
-            "cHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbFR5cGVzElYKFG9wdGlvbmFsX25l", 
-            "c3RlZF9lbnVtGBUgASgOMjgucHJvdG8yX25vZmllbGRwcmVzZW5jZV91bml0", 
-            "dGVzdC5UZXN0QWxsVHlwZXMuTmVzdGVkRW51bRJLChVvcHRpb25hbF9mb3Jl", 
-            "aWduX2VudW0YFiABKA4yLC5wcm90bzJfbm9maWVsZHByZXNlbmNlX3VuaXR0", 
-            "ZXN0LkZvcmVpZ25FbnVtEiEKFW9wdGlvbmFsX3N0cmluZ19waWVjZRgYIAEo", 
-            "CUICCAISGQoNb3B0aW9uYWxfY29yZBgZIAEoCUICCAESXgoVb3B0aW9uYWxf", 
-            "bGF6eV9tZXNzYWdlGB4gASgLMjsucHJvdG8yX25vZmllbGRwcmVzZW5jZV91", 
-            "bml0dGVzdC5UZXN0QWxsVHlwZXMuTmVzdGVkTWVzc2FnZUICKAESFgoOcmVw", 
-            "ZWF0ZWRfaW50MzIYHyADKAUSFgoOcmVwZWF0ZWRfaW50NjQYICADKAMSFwoP", 
-            "cmVwZWF0ZWRfdWludDMyGCEgAygNEhcKD3JlcGVhdGVkX3VpbnQ2NBgiIAMo", 
-            "BBIXCg9yZXBlYXRlZF9zaW50MzIYIyADKBESFwoPcmVwZWF0ZWRfc2ludDY0", 
-            "GCQgAygSEhgKEHJlcGVhdGVkX2ZpeGVkMzIYJSADKAcSGAoQcmVwZWF0ZWRf", 
-            "Zml4ZWQ2NBgmIAMoBhIZChFyZXBlYXRlZF9zZml4ZWQzMhgnIAMoDxIZChFy", 
-            "ZXBlYXRlZF9zZml4ZWQ2NBgoIAMoEBIWCg5yZXBlYXRlZF9mbG9hdBgpIAMo", 
-            "AhIXCg9yZXBlYXRlZF9kb3VibGUYKiADKAESFQoNcmVwZWF0ZWRfYm9vbBgr", 
-            "IAMoCBIXCg9yZXBlYXRlZF9zdHJpbmcYLCADKAkSFgoOcmVwZWF0ZWRfYnl0", 
-            "ZXMYLSADKAwSXAoXcmVwZWF0ZWRfbmVzdGVkX21lc3NhZ2UYMCADKAsyOy5w", 
-            "cm90bzJfbm9maWVsZHByZXNlbmNlX3VuaXR0ZXN0LlRlc3RBbGxUeXBlcy5O", 
-            "ZXN0ZWRNZXNzYWdlElEKGHJlcGVhdGVkX2ZvcmVpZ25fbWVzc2FnZRgxIAMo", 
-            "CzIvLnByb3RvMl9ub2ZpZWxkcHJlc2VuY2VfdW5pdHRlc3QuRm9yZWlnbk1l", 
-            "c3NhZ2USQAoXcmVwZWF0ZWRfcHJvdG8yX21lc3NhZ2UYMiADKAsyHy5wcm90", 
-            "b2J1Zl91bml0dGVzdC5UZXN0QWxsVHlwZXMSVgoUcmVwZWF0ZWRfbmVzdGVk", 
-            "X2VudW0YMyADKA4yOC5wcm90bzJfbm9maWVsZHByZXNlbmNlX3VuaXR0ZXN0", 
-            "LlRlc3RBbGxUeXBlcy5OZXN0ZWRFbnVtEksKFXJlcGVhdGVkX2ZvcmVpZ25f", 
-            "ZW51bRg0IAMoDjIsLnByb3RvMl9ub2ZpZWxkcHJlc2VuY2VfdW5pdHRlc3Qu", 
-            "Rm9yZWlnbkVudW0SIQoVcmVwZWF0ZWRfc3RyaW5nX3BpZWNlGDYgAygJQgII", 
-            "AhIZCg1yZXBlYXRlZF9jb3JkGDcgAygJQgIIARJeChVyZXBlYXRlZF9sYXp5", 
-            "X21lc3NhZ2UYOSADKAsyOy5wcm90bzJfbm9maWVsZHByZXNlbmNlX3VuaXR0", 
-            "ZXN0LlRlc3RBbGxUeXBlcy5OZXN0ZWRNZXNzYWdlQgIoARIWCgxvbmVvZl91", 
-            "aW50MzIYbyABKA1IABJbChRvbmVvZl9uZXN0ZWRfbWVzc2FnZRhwIAEoCzI7", 
-            "LnByb3RvMl9ub2ZpZWxkcHJlc2VuY2VfdW5pdHRlc3QuVGVzdEFsbFR5cGVz", 
-            "Lk5lc3RlZE1lc3NhZ2VIABIWCgxvbmVvZl9zdHJpbmcYcSABKAlIABJOCgpv", 
-            "bmVvZl9lbnVtGHIgASgOMjgucHJvdG8yX25vZmllbGRwcmVzZW5jZV91bml0", 
-            "dGVzdC5UZXN0QWxsVHlwZXMuTmVzdGVkRW51bUgAGhsKDU5lc3RlZE1lc3Nh", 
-            "Z2USCgoCYmIYASABKAUiJwoKTmVzdGVkRW51bRIHCgNGT08QABIHCgNCQVIQ", 
-            "ARIHCgNCQVoQAkINCgtvbmVvZl9maWVsZCJFChJUZXN0UHJvdG8yUmVxdWly", 
-            "ZWQSLwoGcHJvdG8yGAEgASgLMh8ucHJvdG9idWZfdW5pdHRlc3QuVGVzdFJl", 
-            "cXVpcmVkIhsKDkZvcmVpZ25NZXNzYWdlEgkKAWMYASABKAUqQAoLRm9yZWln", 
-            "bkVudW0SDwoLRk9SRUlHTl9GT08QABIPCgtGT1JFSUdOX0JBUhABEg8KC0ZP", 
-            "UkVJR05fQkFaEAJCJKoCIUdvb2dsZS5Qcm90b2NvbEJ1ZmZlcnMuVGVzdFBy", 
-          "b3Rvc2IGcHJvdG8z"));
-      pbd::FileDescriptor.InternalDescriptorAssigner assigner = delegate(pbd::FileDescriptor root) {
-        descriptor = root;
-        internal__static_proto2_nofieldpresence_unittest_TestAllTypes__Descriptor = Descriptor.MessageTypes[0];
-        internal__static_proto2_nofieldpresence_unittest_TestAllTypes__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestAllTypes, global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Builder>(internal__static_proto2_nofieldpresence_unittest_TestAllTypes__Descriptor,
-                new string[] { "OptionalInt32", "OptionalInt64", "OptionalUint32", "OptionalUint64", "OptionalSint32", "OptionalSint64", "OptionalFixed32", "OptionalFixed64", "OptionalSfixed32", "OptionalSfixed64", "OptionalFloat", "OptionalDouble", "OptionalBool", "OptionalString", "OptionalBytes", "OptionalNestedMessage", "OptionalForeignMessage", "OptionalProto2Message", "OptionalNestedEnum", "OptionalForeignEnum", "OptionalStringPiece", "OptionalCord", "OptionalLazyMessage", "RepeatedInt32", "RepeatedInt64", "RepeatedUint32", "RepeatedUint64", "RepeatedSint32", "RepeatedSint64", "RepeatedFixed32", "RepeatedFixed64", "RepeatedSfixed32", "RepeatedSfixed64", "RepeatedFloat", "RepeatedDouble", "RepeatedBool", "RepeatedString", "RepeatedBytes", "RepeatedNestedMessage", "RepeatedForeignMessage", "RepeatedProto2Message", "RepeatedNestedEnum", "RepeatedForeignEnum", "RepeatedStringPiece", "RepeatedCord", "RepeatedLazyMessage", "OneofUint32", "OneofNestedMessage", "OneofString", "OneofEnum", });
-        internal__static_proto2_nofieldpresence_unittest_TestAllTypes_NestedMessage__Descriptor = internal__static_proto2_nofieldpresence_unittest_TestAllTypes__Descriptor.NestedTypes[0];
-        internal__static_proto2_nofieldpresence_unittest_TestAllTypes_NestedMessage__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage, global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage.Builder>(internal__static_proto2_nofieldpresence_unittest_TestAllTypes_NestedMessage__Descriptor,
-                new string[] { "Bb", });
-        internal__static_proto2_nofieldpresence_unittest_TestProto2Required__Descriptor = Descriptor.MessageTypes[1];
-        internal__static_proto2_nofieldpresence_unittest_TestProto2Required__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestProto2Required, global::Google.ProtocolBuffers.TestProtos.TestProto2Required.Builder>(internal__static_proto2_nofieldpresence_unittest_TestProto2Required__Descriptor,
-                new string[] { "Proto2", });
-        internal__static_proto2_nofieldpresence_unittest_ForeignMessage__Descriptor = Descriptor.MessageTypes[2];
-        internal__static_proto2_nofieldpresence_unittest_ForeignMessage__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.ForeignMessage, global::Google.ProtocolBuffers.TestProtos.ForeignMessage.Builder>(internal__static_proto2_nofieldpresence_unittest_ForeignMessage__Descriptor,
-                new string[] { "C", });
-        pb::ExtensionRegistry registry = pb::ExtensionRegistry.CreateInstance();
-        RegisterAllExtensions(registry);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.RegisterAllExtensions(registry);
-        return registry;
-      };
-      pbd::FileDescriptor.InternalBuildGeneratedFileFrom(descriptorData,
-          new pbd::FileDescriptor[] {
-          global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor, 
-          }, assigner);
-    }
-    #endregion
-
-  }
-  #region Enums
-  public enum ForeignEnum {
-    FOREIGN_FOO = 0,
-    FOREIGN_BAR = 1,
-    FOREIGN_BAZ = 2,
-  }
-
-  #endregion
-
-  #region Messages
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class TestAllTypes : pb::GeneratedMessage<TestAllTypes, TestAllTypes.Builder> {
-    private TestAllTypes() { }
-    private static readonly TestAllTypes defaultInstance = new TestAllTypes().MakeReadOnly();
-    private static readonly string[] _testAllTypesFieldNames = new string[] { "oneof_enum", "oneof_nested_message", "oneof_string", "oneof_uint32", "optional_bool", "optional_bytes", "optional_cord", "optional_double", "optional_fixed32", "optional_fixed64", "optional_float", "optional_foreign_enum", "optional_foreign_message", "optional_int32", "optional_int64", "optional_lazy_message", "optional_nested_enum", "optional_nested_message", "optional_proto2_message", "optional_sfixed32", "optional_sfixed64", "optional_sint32", "optional_sint64", "optional_string", "optional_string_piece", "optional_uint32", "optional_uint64", "repeated_bool", "repeated_bytes", "repeated_cord", "repeated_double", "repeated_fixed32", "repeated_fixed64", "repeated_float", "repeated_foreign_enum", "repeated_foreign_message", "repeated_int32", "repeated_int64", "repeated_lazy_message", "repeated_nested_enum", "repeated_nested_message", "repeated_proto2_message", "repeated_sfixed32", "repeated_sfixed64", "repeated_sint32", "repeated_sint64", "repeated_string", "repeated_string_piece", "repeated_uint32", "repeated_uint64" };
-    private static readonly uint[] _testAllTypesFieldTags = new uint[] { 912, 898, 906, 888, 104, 122, 202, 97, 61, 65, 93, 176, 154, 8, 16, 242, 168, 146, 162, 77, 81, 40, 48, 114, 194, 24, 32, 344, 362, 442, 337, 301, 305, 333, 416, 394, 248, 256, 458, 408, 386, 402, 317, 321, 280, 288, 354, 434, 264, 272 };
-    public static TestAllTypes DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override TestAllTypes DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override TestAllTypes ThisMessage {
-      get { return this; }
-    }
-
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::Google.ProtocolBuffers.TestProtos.UnittestNoFieldPresence.internal__static_proto2_nofieldpresence_unittest_TestAllTypes__Descriptor; }
-    }
-
-    protected override pb::FieldAccess.FieldAccessorTable<TestAllTypes, TestAllTypes.Builder> InternalFieldAccessors {
-      get { return global::Google.ProtocolBuffers.TestProtos.UnittestNoFieldPresence.internal__static_proto2_nofieldpresence_unittest_TestAllTypes__FieldAccessorTable; }
-    }
-
-    #region Nested types
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public static partial class Types {
-      public enum NestedEnum {
-        FOO = 0,
-        BAR = 1,
-        BAZ = 2,
-      }
-
-      [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-      public sealed partial class NestedMessage : pb::GeneratedMessage<NestedMessage, NestedMessage.Builder> {
-        private NestedMessage() { }
-        private static readonly NestedMessage defaultInstance = new NestedMessage().MakeReadOnly();
-        private static readonly string[] _nestedMessageFieldNames = new string[] { "bb" };
-        private static readonly uint[] _nestedMessageFieldTags = new uint[] { 8 };
-        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.UnittestNoFieldPresence.internal__static_proto2_nofieldpresence_unittest_TestAllTypes_NestedMessage__Descriptor; }
-        }
-
-        protected override pb::FieldAccess.FieldAccessorTable<NestedMessage, NestedMessage.Builder> InternalFieldAccessors {
-          get { return global::Google.ProtocolBuffers.TestProtos.UnittestNoFieldPresence.internal__static_proto2_nofieldpresence_unittest_TestAllTypes_NestedMessage__FieldAccessorTable; }
-        }
-
-        public const int BbFieldNumber = 1;
-        private bool hasBb;
-        private int bb_;
-        public bool HasBb {
-          get { return hasBb; }
-        }
-        public int Bb {
-          get { return bb_; }
-        }
-
-        public override bool IsInitialized {
-          get {
-            return true;
-          }
-        }
-
-        public override void WriteTo(pb::ICodedOutputStream output) {
-          CalcSerializedSize();
-          string[] field_names = _nestedMessageFieldNames;
-          if (hasBb) {
-            output.WriteInt32(1, field_names[0], Bb);
-          }
-          UnknownFields.WriteTo(output);
-        }
-
-        private int memoizedSerializedSize = -1;
-        public override int SerializedSize {
-          get {
-            int size = memoizedSerializedSize;
-            if (size != -1) return size;
-            return CalcSerializedSize();
-          }
-        }
-
-        private int CalcSerializedSize() {
-          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::ICodedInputStream input) {
-          return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-        }
-        public static NestedMessage ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-        }
-        private NestedMessage MakeReadOnly() {
-          return this;
-        }
-
-        public static Builder CreateBuilder() { return new Builder(); }
-        public override Builder ToBuilder() { return CreateBuilder(this); }
-        public override Builder CreateBuilderForType() { return new Builder(); }
-        public static Builder CreateBuilder(NestedMessage prototype) {
-          return new Builder(prototype);
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-        public sealed partial class Builder : pb::GeneratedBuilder<NestedMessage, Builder> {
-          protected override Builder ThisBuilder {
-            get { return this; }
-          }
-          public Builder() {
-            result = DefaultInstance;
-            resultIsReadOnly = true;
-          }
-          internal Builder(NestedMessage cloneFrom) {
-            result = cloneFrom;
-            resultIsReadOnly = true;
-          }
-
-          private bool resultIsReadOnly;
-          private NestedMessage result;
-
-          private NestedMessage PrepareBuilder() {
-            if (resultIsReadOnly) {
-              NestedMessage original = result;
-              result = new NestedMessage();
-              resultIsReadOnly = false;
-              MergeFrom(original);
-            }
-            return result;
-          }
-
-          public override bool IsInitialized {
-            get { return result.IsInitialized; }
-          }
-
-          protected override NestedMessage MessageBeingBuilt {
-            get { return PrepareBuilder(); }
-          }
-
-          public override Builder Clear() {
-            result = DefaultInstance;
-            resultIsReadOnly = true;
-            return this;
-          }
-
-          public override Builder Clone() {
-            if (resultIsReadOnly) {
-              return new Builder(result);
-            } else {
-              return new Builder().MergeFrom(result);
-            }
-          }
-
-          public override pbd::MessageDescriptor DescriptorForType {
-            get { return global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage.Descriptor; }
-          }
-
-          public override NestedMessage DefaultInstanceForType {
-            get { return global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage.DefaultInstance; }
-          }
-
-          public override NestedMessage BuildPartial() {
-            if (resultIsReadOnly) {
-              return result;
-            }
-            resultIsReadOnly = true;
-            return result.MakeReadOnly();
-          }
-
-          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::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage.DefaultInstance) return this;
-            PrepareBuilder();
-            if (other.HasBb) {
-              Bb = other.Bb;
-            }
-            this.MergeUnknownFields(other.UnknownFields);
-            return this;
-          }
-
-          public override Builder MergeFrom(pb::ICodedInputStream input) {
-            return MergeFrom(input, pb::ExtensionRegistry.Empty);
-          }
-
-          public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-            PrepareBuilder();
-            pb::UnknownFieldSet.Builder unknownFields = null;
-            uint tag;
-            string field_name;
-            while (input.ReadTag(out tag, out field_name)) {
-              if(tag == 0 && field_name != null) {
-                int field_ordinal = global::System.Array.BinarySearch(_nestedMessageFieldNames, field_name, global::System.StringComparer.Ordinal);
-                if(field_ordinal >= 0)
-                  tag = _nestedMessageFieldTags[field_ordinal];
-                else {
-                  if (unknownFields == null) {
-                    unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-                  }
-                  ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name);
-                  continue;
-                }
-              }
-              switch (tag) {
-                case 0: {
-                  throw pb::InvalidProtocolBufferException.InvalidTag();
-                }
-                default: {
-                  if (pb::WireFormat.IsEndGroupTag(tag)) {
-                    if (unknownFields != null) {
-                      this.UnknownFields = unknownFields.Build();
-                    }
-                    return this;
-                  }
-                  if (unknownFields == null) {
-                    unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-                  }
-                  ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name);
-                  break;
-                }
-                case 8: {
-                  result.hasBb = input.ReadInt32(ref result.bb_);
-                  break;
-                }
-              }
-            }
-
-            if (unknownFields != null) {
-              this.UnknownFields = unknownFields.Build();
-            }
-            return this;
-          }
-
-
-          public bool HasBb {
-            get { return result.hasBb; }
-          }
-          public int Bb {
-            get { return result.Bb; }
-            set { SetBb(value); }
-          }
-          public Builder SetBb(int value) {
-            PrepareBuilder();
-            result.hasBb = true;
-            result.bb_ = value;
-            return this;
-          }
-          public Builder ClearBb() {
-            PrepareBuilder();
-            result.hasBb = false;
-            result.bb_ = 0;
-            return this;
-          }
-        }
-        static NestedMessage() {
-          object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnittestNoFieldPresence.Descriptor, null);
-        }
-      }
-
-    }
-    #endregion
-
-    public const int OptionalInt32FieldNumber = 1;
-    private bool hasOptionalInt32;
-    private int optionalInt32_;
-    public bool HasOptionalInt32 {
-      get { return hasOptionalInt32; }
-    }
-    public int OptionalInt32 {
-      get { return optionalInt32_; }
-    }
-
-    public const int OptionalInt64FieldNumber = 2;
-    private bool hasOptionalInt64;
-    private long optionalInt64_;
-    public bool HasOptionalInt64 {
-      get { return hasOptionalInt64; }
-    }
-    public long OptionalInt64 {
-      get { return optionalInt64_; }
-    }
-
-    public const int OptionalUint32FieldNumber = 3;
-    private bool hasOptionalUint32;
-    private uint optionalUint32_;
-    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_;
-    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_;
-    public bool HasOptionalSint32 {
-      get { return hasOptionalSint32; }
-    }
-    public int OptionalSint32 {
-      get { return optionalSint32_; }
-    }
-
-    public const int OptionalSint64FieldNumber = 6;
-    private bool hasOptionalSint64;
-    private long optionalSint64_;
-    public bool HasOptionalSint64 {
-      get { return hasOptionalSint64; }
-    }
-    public long OptionalSint64 {
-      get { return optionalSint64_; }
-    }
-
-    public const int OptionalFixed32FieldNumber = 7;
-    private bool hasOptionalFixed32;
-    private uint optionalFixed32_;
-    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_;
-    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_;
-    public bool HasOptionalSfixed32 {
-      get { return hasOptionalSfixed32; }
-    }
-    public int OptionalSfixed32 {
-      get { return optionalSfixed32_; }
-    }
-
-    public const int OptionalSfixed64FieldNumber = 10;
-    private bool hasOptionalSfixed64;
-    private long optionalSfixed64_;
-    public bool HasOptionalSfixed64 {
-      get { return hasOptionalSfixed64; }
-    }
-    public long OptionalSfixed64 {
-      get { return optionalSfixed64_; }
-    }
-
-    public const int OptionalFloatFieldNumber = 11;
-    private bool hasOptionalFloat;
-    private float optionalFloat_;
-    public bool HasOptionalFloat {
-      get { return hasOptionalFloat; }
-    }
-    public float OptionalFloat {
-      get { return optionalFloat_; }
-    }
-
-    public const int OptionalDoubleFieldNumber = 12;
-    private bool hasOptionalDouble;
-    private double optionalDouble_;
-    public bool HasOptionalDouble {
-      get { return hasOptionalDouble; }
-    }
-    public double OptionalDouble {
-      get { return optionalDouble_; }
-    }
-
-    public const int OptionalBoolFieldNumber = 13;
-    private bool hasOptionalBool;
-    private bool optionalBool_;
-    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 OptionalNestedMessageFieldNumber = 18;
-    private bool hasOptionalNestedMessage;
-    private global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage optionalNestedMessage_;
-    public bool HasOptionalNestedMessage {
-      get { return hasOptionalNestedMessage; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage OptionalNestedMessage {
-      get { return optionalNestedMessage_ ?? global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage.DefaultInstance; }
-    }
-
-    public const int OptionalForeignMessageFieldNumber = 19;
-    private bool hasOptionalForeignMessage;
-    private global::Google.ProtocolBuffers.TestProtos.ForeignMessage optionalForeignMessage_;
-    public bool HasOptionalForeignMessage {
-      get { return hasOptionalForeignMessage; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.ForeignMessage OptionalForeignMessage {
-      get { return optionalForeignMessage_ ?? global::Google.ProtocolBuffers.TestProtos.ForeignMessage.DefaultInstance; }
-    }
-
-    public const int OptionalProto2MessageFieldNumber = 20;
-    private bool hasOptionalProto2Message;
-    private global::Google.ProtocolBuffers.TestProtos.TestAllTypes optionalProto2Message_;
-    public bool HasOptionalProto2Message {
-      get { return hasOptionalProto2Message; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.TestAllTypes OptionalProto2Message {
-      get { return optionalProto2Message_ ?? global::Google.ProtocolBuffers.TestProtos.TestAllTypes.DefaultInstance; }
-    }
-
-    public const int OptionalNestedEnumFieldNumber = 21;
-    private bool hasOptionalNestedEnum;
-    private global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedEnum optionalNestedEnum_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedEnum.FOO;
-    public bool HasOptionalNestedEnum {
-      get { return hasOptionalNestedEnum; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedEnum OptionalNestedEnum {
-      get { return optionalNestedEnum_; }
-    }
-
-    public const int OptionalForeignEnumFieldNumber = 22;
-    private bool hasOptionalForeignEnum;
-    private global::Google.ProtocolBuffers.TestProtos.ForeignEnum optionalForeignEnum_ = global::Google.ProtocolBuffers.TestProtos.ForeignEnum.FOREIGN_FOO;
-    public bool HasOptionalForeignEnum {
-      get { return hasOptionalForeignEnum; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.ForeignEnum OptionalForeignEnum {
-      get { return optionalForeignEnum_; }
-    }
-
-    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 OptionalLazyMessageFieldNumber = 30;
-    private bool hasOptionalLazyMessage;
-    private global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage optionalLazyMessage_;
-    public bool HasOptionalLazyMessage {
-      get { return hasOptionalLazyMessage; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage OptionalLazyMessage {
-      get { return optionalLazyMessage_ ?? global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage.DefaultInstance; }
-    }
-
-    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 RepeatedNestedMessageFieldNumber = 48;
-    private pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage> repeatedNestedMessage_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage>();
-    public scg::IList<global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage> RepeatedNestedMessageList {
-      get { return repeatedNestedMessage_; }
-    }
-    public int RepeatedNestedMessageCount {
-      get { return repeatedNestedMessage_.Count; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage GetRepeatedNestedMessage(int index) {
-      return repeatedNestedMessage_[index];
-    }
-
-    public const int RepeatedForeignMessageFieldNumber = 49;
-    private pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.ForeignMessage> repeatedForeignMessage_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.ForeignMessage>();
-    public scg::IList<global::Google.ProtocolBuffers.TestProtos.ForeignMessage> RepeatedForeignMessageList {
-      get { return repeatedForeignMessage_; }
-    }
-    public int RepeatedForeignMessageCount {
-      get { return repeatedForeignMessage_.Count; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.ForeignMessage GetRepeatedForeignMessage(int index) {
-      return repeatedForeignMessage_[index];
-    }
-
-    public const int RepeatedProto2MessageFieldNumber = 50;
-    private pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.TestAllTypes> repeatedProto2Message_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.TestAllTypes>();
-    public scg::IList<global::Google.ProtocolBuffers.TestProtos.TestAllTypes> RepeatedProto2MessageList {
-      get { return repeatedProto2Message_; }
-    }
-    public int RepeatedProto2MessageCount {
-      get { return repeatedProto2Message_.Count; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.TestAllTypes GetRepeatedProto2Message(int index) {
-      return repeatedProto2Message_[index];
-    }
-
-    public const int RepeatedNestedEnumFieldNumber = 51;
-    private pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedEnum> repeatedNestedEnum_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedEnum>();
-    public scg::IList<global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedEnum> RepeatedNestedEnumList {
-      get { return pbc::Lists.AsReadOnly(repeatedNestedEnum_); }
-    }
-    public int RepeatedNestedEnumCount {
-      get { return repeatedNestedEnum_.Count; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedEnum GetRepeatedNestedEnum(int index) {
-      return repeatedNestedEnum_[index];
-    }
-
-    public const int RepeatedForeignEnumFieldNumber = 52;
-    private pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.ForeignEnum> repeatedForeignEnum_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.ForeignEnum>();
-    public scg::IList<global::Google.ProtocolBuffers.TestProtos.ForeignEnum> RepeatedForeignEnumList {
-      get { return pbc::Lists.AsReadOnly(repeatedForeignEnum_); }
-    }
-    public int RepeatedForeignEnumCount {
-      get { return repeatedForeignEnum_.Count; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.ForeignEnum GetRepeatedForeignEnum(int index) {
-      return repeatedForeignEnum_[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 RepeatedLazyMessageFieldNumber = 57;
-    private pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage> repeatedLazyMessage_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage>();
-    public scg::IList<global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage> RepeatedLazyMessageList {
-      get { return repeatedLazyMessage_; }
-    }
-    public int RepeatedLazyMessageCount {
-      get { return repeatedLazyMessage_.Count; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage GetRepeatedLazyMessage(int index) {
-      return repeatedLazyMessage_[index];
-    }
-
-    public const int OneofUint32FieldNumber = 111;
-    private bool hasOneofUint32;
-    private uint oneofUint32_;
-    public bool HasOneofUint32 {
-      get { return hasOneofUint32; }
-    }
-    [global::System.CLSCompliant(false)]
-    public uint OneofUint32 {
-      get { return oneofUint32_; }
-    }
-
-    public const int OneofNestedMessageFieldNumber = 112;
-    private bool hasOneofNestedMessage;
-    private global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage oneofNestedMessage_;
-    public bool HasOneofNestedMessage {
-      get { return hasOneofNestedMessage; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage OneofNestedMessage {
-      get { return oneofNestedMessage_ ?? global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage.DefaultInstance; }
-    }
-
-    public const int OneofStringFieldNumber = 113;
-    private bool hasOneofString;
-    private string oneofString_ = "";
-    public bool HasOneofString {
-      get { return hasOneofString; }
-    }
-    public string OneofString {
-      get { return oneofString_; }
-    }
-
-    public const int OneofEnumFieldNumber = 114;
-    private bool hasOneofEnum;
-    private global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedEnum oneofEnum_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedEnum.FOO;
-    public bool HasOneofEnum {
-      get { return hasOneofEnum; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedEnum OneofEnum {
-      get { return oneofEnum_; }
-    }
-
-    public override bool IsInitialized {
-      get {
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _testAllTypesFieldNames;
-      if (hasOptionalInt32) {
-        output.WriteInt32(1, field_names[13], OptionalInt32);
-      }
-      if (hasOptionalInt64) {
-        output.WriteInt64(2, field_names[14], OptionalInt64);
-      }
-      if (hasOptionalUint32) {
-        output.WriteUInt32(3, field_names[25], OptionalUint32);
-      }
-      if (hasOptionalUint64) {
-        output.WriteUInt64(4, field_names[26], OptionalUint64);
-      }
-      if (hasOptionalSint32) {
-        output.WriteSInt32(5, field_names[21], OptionalSint32);
-      }
-      if (hasOptionalSint64) {
-        output.WriteSInt64(6, field_names[22], OptionalSint64);
-      }
-      if (hasOptionalFixed32) {
-        output.WriteFixed32(7, field_names[8], OptionalFixed32);
-      }
-      if (hasOptionalFixed64) {
-        output.WriteFixed64(8, field_names[9], OptionalFixed64);
-      }
-      if (hasOptionalSfixed32) {
-        output.WriteSFixed32(9, field_names[19], OptionalSfixed32);
-      }
-      if (hasOptionalSfixed64) {
-        output.WriteSFixed64(10, field_names[20], OptionalSfixed64);
-      }
-      if (hasOptionalFloat) {
-        output.WriteFloat(11, field_names[10], OptionalFloat);
-      }
-      if (hasOptionalDouble) {
-        output.WriteDouble(12, field_names[7], OptionalDouble);
-      }
-      if (hasOptionalBool) {
-        output.WriteBool(13, field_names[4], OptionalBool);
-      }
-      if (hasOptionalString) {
-        output.WriteString(14, field_names[23], OptionalString);
-      }
-      if (hasOptionalBytes) {
-        output.WriteBytes(15, field_names[5], OptionalBytes);
-      }
-      if (hasOptionalNestedMessage) {
-        output.WriteMessage(18, field_names[17], OptionalNestedMessage);
-      }
-      if (hasOptionalForeignMessage) {
-        output.WriteMessage(19, field_names[12], OptionalForeignMessage);
-      }
-      if (hasOptionalProto2Message) {
-        output.WriteMessage(20, field_names[18], OptionalProto2Message);
-      }
-      if (hasOptionalNestedEnum) {
-        output.WriteEnum(21, field_names[16], (int) OptionalNestedEnum, OptionalNestedEnum);
-      }
-      if (hasOptionalForeignEnum) {
-        output.WriteEnum(22, field_names[11], (int) OptionalForeignEnum, OptionalForeignEnum);
-      }
-      if (hasOptionalStringPiece) {
-        output.WriteString(24, field_names[24], OptionalStringPiece);
-      }
-      if (hasOptionalCord) {
-        output.WriteString(25, field_names[6], OptionalCord);
-      }
-      if (hasOptionalLazyMessage) {
-        output.WriteMessage(30, field_names[15], OptionalLazyMessage);
-      }
-      if (repeatedInt32_.Count > 0) {
-        output.WriteInt32Array(31, field_names[36], repeatedInt32_);
-      }
-      if (repeatedInt64_.Count > 0) {
-        output.WriteInt64Array(32, field_names[37], repeatedInt64_);
-      }
-      if (repeatedUint32_.Count > 0) {
-        output.WriteUInt32Array(33, field_names[48], repeatedUint32_);
-      }
-      if (repeatedUint64_.Count > 0) {
-        output.WriteUInt64Array(34, field_names[49], repeatedUint64_);
-      }
-      if (repeatedSint32_.Count > 0) {
-        output.WriteSInt32Array(35, field_names[44], repeatedSint32_);
-      }
-      if (repeatedSint64_.Count > 0) {
-        output.WriteSInt64Array(36, field_names[45], repeatedSint64_);
-      }
-      if (repeatedFixed32_.Count > 0) {
-        output.WriteFixed32Array(37, field_names[31], repeatedFixed32_);
-      }
-      if (repeatedFixed64_.Count > 0) {
-        output.WriteFixed64Array(38, field_names[32], repeatedFixed64_);
-      }
-      if (repeatedSfixed32_.Count > 0) {
-        output.WriteSFixed32Array(39, field_names[42], repeatedSfixed32_);
-      }
-      if (repeatedSfixed64_.Count > 0) {
-        output.WriteSFixed64Array(40, field_names[43], repeatedSfixed64_);
-      }
-      if (repeatedFloat_.Count > 0) {
-        output.WriteFloatArray(41, field_names[33], repeatedFloat_);
-      }
-      if (repeatedDouble_.Count > 0) {
-        output.WriteDoubleArray(42, field_names[30], repeatedDouble_);
-      }
-      if (repeatedBool_.Count > 0) {
-        output.WriteBoolArray(43, field_names[27], repeatedBool_);
-      }
-      if (repeatedString_.Count > 0) {
-        output.WriteStringArray(44, field_names[46], repeatedString_);
-      }
-      if (repeatedBytes_.Count > 0) {
-        output.WriteBytesArray(45, field_names[28], repeatedBytes_);
-      }
-      if (repeatedNestedMessage_.Count > 0) {
-        output.WriteMessageArray(48, field_names[40], repeatedNestedMessage_);
-      }
-      if (repeatedForeignMessage_.Count > 0) {
-        output.WriteMessageArray(49, field_names[35], repeatedForeignMessage_);
-      }
-      if (repeatedProto2Message_.Count > 0) {
-        output.WriteMessageArray(50, field_names[41], repeatedProto2Message_);
-      }
-      if (repeatedNestedEnum_.Count > 0) {
-        output.WriteEnumArray(51, field_names[39], repeatedNestedEnum_);
-      }
-      if (repeatedForeignEnum_.Count > 0) {
-        output.WriteEnumArray(52, field_names[34], repeatedForeignEnum_);
-      }
-      if (repeatedStringPiece_.Count > 0) {
-        output.WriteStringArray(54, field_names[47], repeatedStringPiece_);
-      }
-      if (repeatedCord_.Count > 0) {
-        output.WriteStringArray(55, field_names[29], repeatedCord_);
-      }
-      if (repeatedLazyMessage_.Count > 0) {
-        output.WriteMessageArray(57, field_names[38], repeatedLazyMessage_);
-      }
-      if (hasOneofUint32) {
-        output.WriteUInt32(111, field_names[3], OneofUint32);
-      }
-      if (hasOneofNestedMessage) {
-        output.WriteMessage(112, field_names[1], OneofNestedMessage);
-      }
-      if (hasOneofString) {
-        output.WriteString(113, field_names[2], OneofString);
-      }
-      if (hasOneofEnum) {
-        output.WriteEnum(114, field_names[0], (int) OneofEnum, OneofEnum);
-      }
-      UnknownFields.WriteTo(output);
-    }
-
-    private int memoizedSerializedSize = -1;
-    public override int SerializedSize {
-      get {
-        int size = memoizedSerializedSize;
-        if (size != -1) return size;
-        return CalcSerializedSize();
-      }
-    }
-
-    private int CalcSerializedSize() {
-      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 (hasOptionalNestedMessage) {
-        size += pb::CodedOutputStream.ComputeMessageSize(18, OptionalNestedMessage);
-      }
-      if (hasOptionalForeignMessage) {
-        size += pb::CodedOutputStream.ComputeMessageSize(19, OptionalForeignMessage);
-      }
-      if (hasOptionalProto2Message) {
-        size += pb::CodedOutputStream.ComputeMessageSize(20, OptionalProto2Message);
-      }
-      if (hasOptionalNestedEnum) {
-        size += pb::CodedOutputStream.ComputeEnumSize(21, (int) OptionalNestedEnum);
-      }
-      if (hasOptionalForeignEnum) {
-        size += pb::CodedOutputStream.ComputeEnumSize(22, (int) OptionalForeignEnum);
-      }
-      if (hasOptionalStringPiece) {
-        size += pb::CodedOutputStream.ComputeStringSize(24, OptionalStringPiece);
-      }
-      if (hasOptionalCord) {
-        size += pb::CodedOutputStream.ComputeStringSize(25, OptionalCord);
-      }
-      if (hasOptionalLazyMessage) {
-        size += pb::CodedOutputStream.ComputeMessageSize(30, OptionalLazyMessage);
-      }
-      {
-        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::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage element in RepeatedNestedMessageList) {
-        size += pb::CodedOutputStream.ComputeMessageSize(48, element);
-      }
-      foreach (global::Google.ProtocolBuffers.TestProtos.ForeignMessage element in RepeatedForeignMessageList) {
-        size += pb::CodedOutputStream.ComputeMessageSize(49, element);
-      }
-      foreach (global::Google.ProtocolBuffers.TestProtos.TestAllTypes element in RepeatedProto2MessageList) {
-        size += pb::CodedOutputStream.ComputeMessageSize(50, element);
-      }
-      {
-        int dataSize = 0;
-        if (repeatedNestedEnum_.Count > 0) {
-          foreach (global::Google.ProtocolBuffers.TestProtos.TestAllTypes.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::Google.ProtocolBuffers.TestProtos.ForeignEnum element in repeatedForeignEnum_) {
-            dataSize += pb::CodedOutputStream.ComputeEnumSizeNoTag((int) element);
-          }
-          size += dataSize;
-          size += 2 * repeatedForeignEnum_.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;
-      }
-      foreach (global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage element in RepeatedLazyMessageList) {
-        size += pb::CodedOutputStream.ComputeMessageSize(57, element);
-      }
-      if (hasOneofUint32) {
-        size += pb::CodedOutputStream.ComputeUInt32Size(111, OneofUint32);
-      }
-      if (hasOneofNestedMessage) {
-        size += pb::CodedOutputStream.ComputeMessageSize(112, OneofNestedMessage);
-      }
-      if (hasOneofString) {
-        size += pb::CodedOutputStream.ComputeStringSize(113, OneofString);
-      }
-      if (hasOneofEnum) {
-        size += pb::CodedOutputStream.ComputeEnumSize(114, (int) OneofEnum);
-      }
-      size += UnknownFields.SerializedSize;
-      memoizedSerializedSize = size;
-      return size;
-    }
-    public static TestAllTypes ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestAllTypes ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestAllTypes ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestAllTypes ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestAllTypes ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestAllTypes ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static TestAllTypes ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static TestAllTypes ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static TestAllTypes ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestAllTypes ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private TestAllTypes MakeReadOnly() {
-      repeatedInt32_.MakeReadOnly();
-      repeatedInt64_.MakeReadOnly();
-      repeatedUint32_.MakeReadOnly();
-      repeatedUint64_.MakeReadOnly();
-      repeatedSint32_.MakeReadOnly();
-      repeatedSint64_.MakeReadOnly();
-      repeatedFixed32_.MakeReadOnly();
-      repeatedFixed64_.MakeReadOnly();
-      repeatedSfixed32_.MakeReadOnly();
-      repeatedSfixed64_.MakeReadOnly();
-      repeatedFloat_.MakeReadOnly();
-      repeatedDouble_.MakeReadOnly();
-      repeatedBool_.MakeReadOnly();
-      repeatedString_.MakeReadOnly();
-      repeatedBytes_.MakeReadOnly();
-      repeatedNestedMessage_.MakeReadOnly();
-      repeatedForeignMessage_.MakeReadOnly();
-      repeatedProto2Message_.MakeReadOnly();
-      repeatedNestedEnum_.MakeReadOnly();
-      repeatedForeignEnum_.MakeReadOnly();
-      repeatedStringPiece_.MakeReadOnly();
-      repeatedCord_.MakeReadOnly();
-      repeatedLazyMessage_.MakeReadOnly();
-      return this;
-    }
-
-    public static Builder CreateBuilder() { return new Builder(); }
-    public override Builder ToBuilder() { return CreateBuilder(this); }
-    public override Builder CreateBuilderForType() { return new Builder(); }
-    public static Builder CreateBuilder(TestAllTypes prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilder<TestAllTypes, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(TestAllTypes cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private TestAllTypes result;
-
-      private TestAllTypes PrepareBuilder() {
-        if (resultIsReadOnly) {
-          TestAllTypes original = result;
-          result = new TestAllTypes();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override TestAllTypes MessageBeingBuilt {
-        get { return PrepareBuilder(); }
-      }
-
-      public override Builder Clear() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-        return this;
-      }
-
-      public override Builder Clone() {
-        if (resultIsReadOnly) {
-          return new Builder(result);
-        } else {
-          return new Builder().MergeFrom(result);
-        }
-      }
-
-      public override pbd::MessageDescriptor DescriptorForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Descriptor; }
-      }
-
-      public override TestAllTypes DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.TestAllTypes.DefaultInstance; }
-      }
-
-      public override TestAllTypes BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is TestAllTypes) {
-          return MergeFrom((TestAllTypes) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(TestAllTypes other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.TestAllTypes.DefaultInstance) return this;
-        PrepareBuilder();
-        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.HasOptionalNestedMessage) {
-          MergeOptionalNestedMessage(other.OptionalNestedMessage);
-        }
-        if (other.HasOptionalForeignMessage) {
-          MergeOptionalForeignMessage(other.OptionalForeignMessage);
-        }
-        if (other.HasOptionalProto2Message) {
-          MergeOptionalProto2Message(other.OptionalProto2Message);
-        }
-        if (other.HasOptionalNestedEnum) {
-          OptionalNestedEnum = other.OptionalNestedEnum;
-        }
-        if (other.HasOptionalForeignEnum) {
-          OptionalForeignEnum = other.OptionalForeignEnum;
-        }
-        if (other.HasOptionalStringPiece) {
-          OptionalStringPiece = other.OptionalStringPiece;
-        }
-        if (other.HasOptionalCord) {
-          OptionalCord = other.OptionalCord;
-        }
-        if (other.HasOptionalLazyMessage) {
-          MergeOptionalLazyMessage(other.OptionalLazyMessage);
-        }
-        if (other.repeatedInt32_.Count != 0) {
-          result.repeatedInt32_.Add(other.repeatedInt32_);
-        }
-        if (other.repeatedInt64_.Count != 0) {
-          result.repeatedInt64_.Add(other.repeatedInt64_);
-        }
-        if (other.repeatedUint32_.Count != 0) {
-          result.repeatedUint32_.Add(other.repeatedUint32_);
-        }
-        if (other.repeatedUint64_.Count != 0) {
-          result.repeatedUint64_.Add(other.repeatedUint64_);
-        }
-        if (other.repeatedSint32_.Count != 0) {
-          result.repeatedSint32_.Add(other.repeatedSint32_);
-        }
-        if (other.repeatedSint64_.Count != 0) {
-          result.repeatedSint64_.Add(other.repeatedSint64_);
-        }
-        if (other.repeatedFixed32_.Count != 0) {
-          result.repeatedFixed32_.Add(other.repeatedFixed32_);
-        }
-        if (other.repeatedFixed64_.Count != 0) {
-          result.repeatedFixed64_.Add(other.repeatedFixed64_);
-        }
-        if (other.repeatedSfixed32_.Count != 0) {
-          result.repeatedSfixed32_.Add(other.repeatedSfixed32_);
-        }
-        if (other.repeatedSfixed64_.Count != 0) {
-          result.repeatedSfixed64_.Add(other.repeatedSfixed64_);
-        }
-        if (other.repeatedFloat_.Count != 0) {
-          result.repeatedFloat_.Add(other.repeatedFloat_);
-        }
-        if (other.repeatedDouble_.Count != 0) {
-          result.repeatedDouble_.Add(other.repeatedDouble_);
-        }
-        if (other.repeatedBool_.Count != 0) {
-          result.repeatedBool_.Add(other.repeatedBool_);
-        }
-        if (other.repeatedString_.Count != 0) {
-          result.repeatedString_.Add(other.repeatedString_);
-        }
-        if (other.repeatedBytes_.Count != 0) {
-          result.repeatedBytes_.Add(other.repeatedBytes_);
-        }
-        if (other.repeatedNestedMessage_.Count != 0) {
-          result.repeatedNestedMessage_.Add(other.repeatedNestedMessage_);
-        }
-        if (other.repeatedForeignMessage_.Count != 0) {
-          result.repeatedForeignMessage_.Add(other.repeatedForeignMessage_);
-        }
-        if (other.repeatedProto2Message_.Count != 0) {
-          result.repeatedProto2Message_.Add(other.repeatedProto2Message_);
-        }
-        if (other.repeatedNestedEnum_.Count != 0) {
-          result.repeatedNestedEnum_.Add(other.repeatedNestedEnum_);
-        }
-        if (other.repeatedForeignEnum_.Count != 0) {
-          result.repeatedForeignEnum_.Add(other.repeatedForeignEnum_);
-        }
-        if (other.repeatedStringPiece_.Count != 0) {
-          result.repeatedStringPiece_.Add(other.repeatedStringPiece_);
-        }
-        if (other.repeatedCord_.Count != 0) {
-          result.repeatedCord_.Add(other.repeatedCord_);
-        }
-        if (other.repeatedLazyMessage_.Count != 0) {
-          result.repeatedLazyMessage_.Add(other.repeatedLazyMessage_);
-        }
-        if (other.HasOneofUint32) {
-          OneofUint32 = other.OneofUint32;
-        }
-        if (other.HasOneofNestedMessage) {
-          MergeOneofNestedMessage(other.OneofNestedMessage);
-        }
-        if (other.HasOneofString) {
-          OneofString = other.OneofString;
-        }
-        if (other.HasOneofEnum) {
-          OneofEnum = other.OneofEnum;
-        }
-        this.MergeUnknownFields(other.UnknownFields);
-        return this;
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input) {
-        return MergeFrom(input, pb::ExtensionRegistry.Empty);
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-        PrepareBuilder();
-        pb::UnknownFieldSet.Builder unknownFields = null;
-        uint tag;
-        string field_name;
-        while (input.ReadTag(out tag, out field_name)) {
-          if(tag == 0 && field_name != null) {
-            int field_ordinal = global::System.Array.BinarySearch(_testAllTypesFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _testAllTypesFieldTags[field_ordinal];
-            else {
-              if (unknownFields == null) {
-                unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-              }
-              ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name);
-              continue;
-            }
-          }
-          switch (tag) {
-            case 0: {
-              throw pb::InvalidProtocolBufferException.InvalidTag();
-            }
-            default: {
-              if (pb::WireFormat.IsEndGroupTag(tag)) {
-                if (unknownFields != null) {
-                  this.UnknownFields = unknownFields.Build();
-                }
-                return this;
-              }
-              if (unknownFields == null) {
-                unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-              }
-              ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name);
-              break;
-            }
-            case 8: {
-              result.hasOptionalInt32 = input.ReadInt32(ref result.optionalInt32_);
-              break;
-            }
-            case 16: {
-              result.hasOptionalInt64 = input.ReadInt64(ref result.optionalInt64_);
-              break;
-            }
-            case 24: {
-              result.hasOptionalUint32 = input.ReadUInt32(ref result.optionalUint32_);
-              break;
-            }
-            case 32: {
-              result.hasOptionalUint64 = input.ReadUInt64(ref result.optionalUint64_);
-              break;
-            }
-            case 40: {
-              result.hasOptionalSint32 = input.ReadSInt32(ref result.optionalSint32_);
-              break;
-            }
-            case 48: {
-              result.hasOptionalSint64 = input.ReadSInt64(ref result.optionalSint64_);
-              break;
-            }
-            case 61: {
-              result.hasOptionalFixed32 = input.ReadFixed32(ref result.optionalFixed32_);
-              break;
-            }
-            case 65: {
-              result.hasOptionalFixed64 = input.ReadFixed64(ref result.optionalFixed64_);
-              break;
-            }
-            case 77: {
-              result.hasOptionalSfixed32 = input.ReadSFixed32(ref result.optionalSfixed32_);
-              break;
-            }
-            case 81: {
-              result.hasOptionalSfixed64 = input.ReadSFixed64(ref result.optionalSfixed64_);
-              break;
-            }
-            case 93: {
-              result.hasOptionalFloat = input.ReadFloat(ref result.optionalFloat_);
-              break;
-            }
-            case 97: {
-              result.hasOptionalDouble = input.ReadDouble(ref result.optionalDouble_);
-              break;
-            }
-            case 104: {
-              result.hasOptionalBool = input.ReadBool(ref result.optionalBool_);
-              break;
-            }
-            case 114: {
-              result.hasOptionalString = input.ReadString(ref result.optionalString_);
-              break;
-            }
-            case 122: {
-              result.hasOptionalBytes = input.ReadBytes(ref result.optionalBytes_);
-              break;
-            }
-            case 146: {
-              global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage.Builder subBuilder = global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage.CreateBuilder();
-              if (result.hasOptionalNestedMessage) {
-                subBuilder.MergeFrom(OptionalNestedMessage);
-              }
-              input.ReadMessage(subBuilder, extensionRegistry);
-              OptionalNestedMessage = subBuilder.BuildPartial();
-              break;
-            }
-            case 154: {
-              global::Google.ProtocolBuffers.TestProtos.ForeignMessage.Builder subBuilder = global::Google.ProtocolBuffers.TestProtos.ForeignMessage.CreateBuilder();
-              if (result.hasOptionalForeignMessage) {
-                subBuilder.MergeFrom(OptionalForeignMessage);
-              }
-              input.ReadMessage(subBuilder, extensionRegistry);
-              OptionalForeignMessage = subBuilder.BuildPartial();
-              break;
-            }
-            case 162: {
-              global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Builder subBuilder = global::Google.ProtocolBuffers.TestProtos.TestAllTypes.CreateBuilder();
-              if (result.hasOptionalProto2Message) {
-                subBuilder.MergeFrom(OptionalProto2Message);
-              }
-              input.ReadMessage(subBuilder, extensionRegistry);
-              OptionalProto2Message = subBuilder.BuildPartial();
-              break;
-            }
-            case 168: {
-              object unknown;
-              if(input.ReadEnum(ref result.optionalNestedEnum_, out unknown)) {
-                result.hasOptionalNestedEnum = true;
-              } else if(unknown is int) {
-                if (unknownFields == null) {
-                  unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-                }
-                unknownFields.MergeVarintField(21, (ulong)(int)unknown);
-              }
-              break;
-            }
-            case 176: {
-              object unknown;
-              if(input.ReadEnum(ref result.optionalForeignEnum_, out unknown)) {
-                result.hasOptionalForeignEnum = true;
-              } else if(unknown is int) {
-                if (unknownFields == null) {
-                  unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-                }
-                unknownFields.MergeVarintField(22, (ulong)(int)unknown);
-              }
-              break;
-            }
-            case 194: {
-              result.hasOptionalStringPiece = input.ReadString(ref result.optionalStringPiece_);
-              break;
-            }
-            case 202: {
-              result.hasOptionalCord = input.ReadString(ref result.optionalCord_);
-              break;
-            }
-            case 242: {
-              global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage.Builder subBuilder = global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage.CreateBuilder();
-              if (result.hasOptionalLazyMessage) {
-                subBuilder.MergeFrom(OptionalLazyMessage);
-              }
-              input.ReadMessage(subBuilder, extensionRegistry);
-              OptionalLazyMessage = subBuilder.BuildPartial();
-              break;
-            }
-            case 250:
-            case 248: {
-              input.ReadInt32Array(tag, field_name, result.repeatedInt32_);
-              break;
-            }
-            case 258:
-            case 256: {
-              input.ReadInt64Array(tag, field_name, result.repeatedInt64_);
-              break;
-            }
-            case 266:
-            case 264: {
-              input.ReadUInt32Array(tag, field_name, result.repeatedUint32_);
-              break;
-            }
-            case 274:
-            case 272: {
-              input.ReadUInt64Array(tag, field_name, result.repeatedUint64_);
-              break;
-            }
-            case 282:
-            case 280: {
-              input.ReadSInt32Array(tag, field_name, result.repeatedSint32_);
-              break;
-            }
-            case 290:
-            case 288: {
-              input.ReadSInt64Array(tag, field_name, result.repeatedSint64_);
-              break;
-            }
-            case 298:
-            case 301: {
-              input.ReadFixed32Array(tag, field_name, result.repeatedFixed32_);
-              break;
-            }
-            case 306:
-            case 305: {
-              input.ReadFixed64Array(tag, field_name, result.repeatedFixed64_);
-              break;
-            }
-            case 314:
-            case 317: {
-              input.ReadSFixed32Array(tag, field_name, result.repeatedSfixed32_);
-              break;
-            }
-            case 322:
-            case 321: {
-              input.ReadSFixed64Array(tag, field_name, result.repeatedSfixed64_);
-              break;
-            }
-            case 330:
-            case 333: {
-              input.ReadFloatArray(tag, field_name, result.repeatedFloat_);
-              break;
-            }
-            case 338:
-            case 337: {
-              input.ReadDoubleArray(tag, field_name, result.repeatedDouble_);
-              break;
-            }
-            case 346:
-            case 344: {
-              input.ReadBoolArray(tag, field_name, result.repeatedBool_);
-              break;
-            }
-            case 354: {
-              input.ReadStringArray(tag, field_name, result.repeatedString_);
-              break;
-            }
-            case 362: {
-              input.ReadBytesArray(tag, field_name, result.repeatedBytes_);
-              break;
-            }
-            case 386: {
-              input.ReadMessageArray(tag, field_name, result.repeatedNestedMessage_, global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage.DefaultInstance, extensionRegistry);
-              break;
-            }
-            case 394: {
-              input.ReadMessageArray(tag, field_name, result.repeatedForeignMessage_, global::Google.ProtocolBuffers.TestProtos.ForeignMessage.DefaultInstance, extensionRegistry);
-              break;
-            }
-            case 402: {
-              input.ReadMessageArray(tag, field_name, result.repeatedProto2Message_, global::Google.ProtocolBuffers.TestProtos.TestAllTypes.DefaultInstance, extensionRegistry);
-              break;
-            }
-            case 410:
-            case 408: {
-              scg::ICollection<object> unknownItems;
-              input.ReadEnumArray<global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedEnum>(tag, field_name, result.repeatedNestedEnum_, out unknownItems);
-              if (unknownItems != null) {
-                if (unknownFields == null) {
-                  unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-                }
-                foreach (object rawValue in unknownItems)
-                  if (rawValue is int)
-                    unknownFields.MergeVarintField(51, (ulong)(int)rawValue);
-              }
-              break;
-            }
-            case 418:
-            case 416: {
-              scg::ICollection<object> unknownItems;
-              input.ReadEnumArray<global::Google.ProtocolBuffers.TestProtos.ForeignEnum>(tag, field_name, result.repeatedForeignEnum_, out unknownItems);
-              if (unknownItems != null) {
-                if (unknownFields == null) {
-                  unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-                }
-                foreach (object rawValue in unknownItems)
-                  if (rawValue is int)
-                    unknownFields.MergeVarintField(52, (ulong)(int)rawValue);
-              }
-              break;
-            }
-            case 434: {
-              input.ReadStringArray(tag, field_name, result.repeatedStringPiece_);
-              break;
-            }
-            case 442: {
-              input.ReadStringArray(tag, field_name, result.repeatedCord_);
-              break;
-            }
-            case 458: {
-              input.ReadMessageArray(tag, field_name, result.repeatedLazyMessage_, global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage.DefaultInstance, extensionRegistry);
-              break;
-            }
-            case 888: {
-              result.hasOneofUint32 = input.ReadUInt32(ref result.oneofUint32_);
-              break;
-            }
-            case 898: {
-              global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage.Builder subBuilder = global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage.CreateBuilder();
-              if (result.hasOneofNestedMessage) {
-                subBuilder.MergeFrom(OneofNestedMessage);
-              }
-              input.ReadMessage(subBuilder, extensionRegistry);
-              OneofNestedMessage = subBuilder.BuildPartial();
-              break;
-            }
-            case 906: {
-              result.hasOneofString = input.ReadString(ref result.oneofString_);
-              break;
-            }
-            case 912: {
-              object unknown;
-              if(input.ReadEnum(ref result.oneofEnum_, out unknown)) {
-                result.hasOneofEnum = true;
-              } else if(unknown is int) {
-                if (unknownFields == null) {
-                  unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-                }
-                unknownFields.MergeVarintField(114, (ulong)(int)unknown);
-              }
-              break;
-            }
-          }
-        }
-
-        if (unknownFields != null) {
-          this.UnknownFields = unknownFields.Build();
-        }
-        return this;
-      }
-
-
-      public bool HasOptionalInt32 {
-        get { return result.hasOptionalInt32; }
-      }
-      public int OptionalInt32 {
-        get { return result.OptionalInt32; }
-        set { SetOptionalInt32(value); }
-      }
-      public Builder SetOptionalInt32(int value) {
-        PrepareBuilder();
-        result.hasOptionalInt32 = true;
-        result.optionalInt32_ = value;
-        return this;
-      }
-      public Builder ClearOptionalInt32() {
-        PrepareBuilder();
-        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) {
-        PrepareBuilder();
-        result.hasOptionalInt64 = true;
-        result.optionalInt64_ = value;
-        return this;
-      }
-      public Builder ClearOptionalInt64() {
-        PrepareBuilder();
-        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) {
-        PrepareBuilder();
-        result.hasOptionalUint32 = true;
-        result.optionalUint32_ = value;
-        return this;
-      }
-      public Builder ClearOptionalUint32() {
-        PrepareBuilder();
-        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) {
-        PrepareBuilder();
-        result.hasOptionalUint64 = true;
-        result.optionalUint64_ = value;
-        return this;
-      }
-      public Builder ClearOptionalUint64() {
-        PrepareBuilder();
-        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) {
-        PrepareBuilder();
-        result.hasOptionalSint32 = true;
-        result.optionalSint32_ = value;
-        return this;
-      }
-      public Builder ClearOptionalSint32() {
-        PrepareBuilder();
-        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) {
-        PrepareBuilder();
-        result.hasOptionalSint64 = true;
-        result.optionalSint64_ = value;
-        return this;
-      }
-      public Builder ClearOptionalSint64() {
-        PrepareBuilder();
-        result.hasOptionalSint64 = false;
-        result.optionalSint64_ = 0L;
-        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) {
-        PrepareBuilder();
-        result.hasOptionalFixed32 = true;
-        result.optionalFixed32_ = value;
-        return this;
-      }
-      public Builder ClearOptionalFixed32() {
-        PrepareBuilder();
-        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) {
-        PrepareBuilder();
-        result.hasOptionalFixed64 = true;
-        result.optionalFixed64_ = value;
-        return this;
-      }
-      public Builder ClearOptionalFixed64() {
-        PrepareBuilder();
-        result.hasOptionalFixed64 = false;
-        result.optionalFixed64_ = 0UL;
-        return this;
-      }
-
-      public bool HasOptionalSfixed32 {
-        get { return result.hasOptionalSfixed32; }
-      }
-      public int OptionalSfixed32 {
-        get { return result.OptionalSfixed32; }
-        set { SetOptionalSfixed32(value); }
-      }
-      public Builder SetOptionalSfixed32(int value) {
-        PrepareBuilder();
-        result.hasOptionalSfixed32 = true;
-        result.optionalSfixed32_ = value;
-        return this;
-      }
-      public Builder ClearOptionalSfixed32() {
-        PrepareBuilder();
-        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) {
-        PrepareBuilder();
-        result.hasOptionalSfixed64 = true;
-        result.optionalSfixed64_ = value;
-        return this;
-      }
-      public Builder ClearOptionalSfixed64() {
-        PrepareBuilder();
-        result.hasOptionalSfixed64 = false;
-        result.optionalSfixed64_ = 0L;
-        return this;
-      }
-
-      public bool HasOptionalFloat {
-        get { return result.hasOptionalFloat; }
-      }
-      public float OptionalFloat {
-        get { return result.OptionalFloat; }
-        set { SetOptionalFloat(value); }
-      }
-      public Builder SetOptionalFloat(float value) {
-        PrepareBuilder();
-        result.hasOptionalFloat = true;
-        result.optionalFloat_ = value;
-        return this;
-      }
-      public Builder ClearOptionalFloat() {
-        PrepareBuilder();
-        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) {
-        PrepareBuilder();
-        result.hasOptionalDouble = true;
-        result.optionalDouble_ = value;
-        return this;
-      }
-      public Builder ClearOptionalDouble() {
-        PrepareBuilder();
-        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) {
-        PrepareBuilder();
-        result.hasOptionalBool = true;
-        result.optionalBool_ = value;
-        return this;
-      }
-      public Builder ClearOptionalBool() {
-        PrepareBuilder();
-        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");
-        PrepareBuilder();
-        result.hasOptionalString = true;
-        result.optionalString_ = value;
-        return this;
-      }
-      public Builder ClearOptionalString() {
-        PrepareBuilder();
-        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");
-        PrepareBuilder();
-        result.hasOptionalBytes = true;
-        result.optionalBytes_ = value;
-        return this;
-      }
-      public Builder ClearOptionalBytes() {
-        PrepareBuilder();
-        result.hasOptionalBytes = false;
-        result.optionalBytes_ = pb::ByteString.Empty;
-        return this;
-      }
-
-      public bool HasOptionalNestedMessage {
-       get { return result.hasOptionalNestedMessage; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage OptionalNestedMessage {
-        get { return result.OptionalNestedMessage; }
-        set { SetOptionalNestedMessage(value); }
-      }
-      public Builder SetOptionalNestedMessage(global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasOptionalNestedMessage = true;
-        result.optionalNestedMessage_ = value;
-        return this;
-      }
-      public Builder SetOptionalNestedMessage(global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.hasOptionalNestedMessage = true;
-        result.optionalNestedMessage_ = builderForValue.Build();
-        return this;
-      }
-      public Builder MergeOptionalNestedMessage(global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        if (result.hasOptionalNestedMessage &&
-            result.optionalNestedMessage_ != global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage.DefaultInstance) {
-            result.optionalNestedMessage_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage.CreateBuilder(result.optionalNestedMessage_).MergeFrom(value).BuildPartial();
-        } else {
-          result.optionalNestedMessage_ = value;
-        }
-        result.hasOptionalNestedMessage = true;
-        return this;
-      }
-      public Builder ClearOptionalNestedMessage() {
-        PrepareBuilder();
-        result.hasOptionalNestedMessage = false;
-        result.optionalNestedMessage_ = null;
-        return this;
-      }
-
-      public bool HasOptionalForeignMessage {
-       get { return result.hasOptionalForeignMessage; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.ForeignMessage OptionalForeignMessage {
-        get { return result.OptionalForeignMessage; }
-        set { SetOptionalForeignMessage(value); }
-      }
-      public Builder SetOptionalForeignMessage(global::Google.ProtocolBuffers.TestProtos.ForeignMessage value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasOptionalForeignMessage = true;
-        result.optionalForeignMessage_ = value;
-        return this;
-      }
-      public Builder SetOptionalForeignMessage(global::Google.ProtocolBuffers.TestProtos.ForeignMessage.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.hasOptionalForeignMessage = true;
-        result.optionalForeignMessage_ = builderForValue.Build();
-        return this;
-      }
-      public Builder MergeOptionalForeignMessage(global::Google.ProtocolBuffers.TestProtos.ForeignMessage value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        if (result.hasOptionalForeignMessage &&
-            result.optionalForeignMessage_ != global::Google.ProtocolBuffers.TestProtos.ForeignMessage.DefaultInstance) {
-            result.optionalForeignMessage_ = global::Google.ProtocolBuffers.TestProtos.ForeignMessage.CreateBuilder(result.optionalForeignMessage_).MergeFrom(value).BuildPartial();
-        } else {
-          result.optionalForeignMessage_ = value;
-        }
-        result.hasOptionalForeignMessage = true;
-        return this;
-      }
-      public Builder ClearOptionalForeignMessage() {
-        PrepareBuilder();
-        result.hasOptionalForeignMessage = false;
-        result.optionalForeignMessage_ = null;
-        return this;
-      }
-
-      public bool HasOptionalProto2Message {
-       get { return result.hasOptionalProto2Message; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.TestAllTypes OptionalProto2Message {
-        get { return result.OptionalProto2Message; }
-        set { SetOptionalProto2Message(value); }
-      }
-      public Builder SetOptionalProto2Message(global::Google.ProtocolBuffers.TestProtos.TestAllTypes value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasOptionalProto2Message = true;
-        result.optionalProto2Message_ = value;
-        return this;
-      }
-      public Builder SetOptionalProto2Message(global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.hasOptionalProto2Message = true;
-        result.optionalProto2Message_ = builderForValue.Build();
-        return this;
-      }
-      public Builder MergeOptionalProto2Message(global::Google.ProtocolBuffers.TestProtos.TestAllTypes value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        if (result.hasOptionalProto2Message &&
-            result.optionalProto2Message_ != global::Google.ProtocolBuffers.TestProtos.TestAllTypes.DefaultInstance) {
-            result.optionalProto2Message_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypes.CreateBuilder(result.optionalProto2Message_).MergeFrom(value).BuildPartial();
-        } else {
-          result.optionalProto2Message_ = value;
-        }
-        result.hasOptionalProto2Message = true;
-        return this;
-      }
-      public Builder ClearOptionalProto2Message() {
-        PrepareBuilder();
-        result.hasOptionalProto2Message = false;
-        result.optionalProto2Message_ = null;
-        return this;
-      }
-
-      public bool HasOptionalNestedEnum {
-       get { return result.hasOptionalNestedEnum; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedEnum OptionalNestedEnum {
-        get { return result.OptionalNestedEnum; }
-        set { SetOptionalNestedEnum(value); }
-      }
-      public Builder SetOptionalNestedEnum(global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedEnum value) {
-        PrepareBuilder();
-        result.hasOptionalNestedEnum = true;
-        result.optionalNestedEnum_ = value;
-        return this;
-      }
-      public Builder ClearOptionalNestedEnum() {
-        PrepareBuilder();
-        result.hasOptionalNestedEnum = false;
-        result.optionalNestedEnum_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedEnum.FOO;
-        return this;
-      }
-
-      public bool HasOptionalForeignEnum {
-       get { return result.hasOptionalForeignEnum; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.ForeignEnum OptionalForeignEnum {
-        get { return result.OptionalForeignEnum; }
-        set { SetOptionalForeignEnum(value); }
-      }
-      public Builder SetOptionalForeignEnum(global::Google.ProtocolBuffers.TestProtos.ForeignEnum value) {
-        PrepareBuilder();
-        result.hasOptionalForeignEnum = true;
-        result.optionalForeignEnum_ = value;
-        return this;
-      }
-      public Builder ClearOptionalForeignEnum() {
-        PrepareBuilder();
-        result.hasOptionalForeignEnum = false;
-        result.optionalForeignEnum_ = global::Google.ProtocolBuffers.TestProtos.ForeignEnum.FOREIGN_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");
-        PrepareBuilder();
-        result.hasOptionalStringPiece = true;
-        result.optionalStringPiece_ = value;
-        return this;
-      }
-      public Builder ClearOptionalStringPiece() {
-        PrepareBuilder();
-        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");
-        PrepareBuilder();
-        result.hasOptionalCord = true;
-        result.optionalCord_ = value;
-        return this;
-      }
-      public Builder ClearOptionalCord() {
-        PrepareBuilder();
-        result.hasOptionalCord = false;
-        result.optionalCord_ = "";
-        return this;
-      }
-
-      public bool HasOptionalLazyMessage {
-       get { return result.hasOptionalLazyMessage; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage OptionalLazyMessage {
-        get { return result.OptionalLazyMessage; }
-        set { SetOptionalLazyMessage(value); }
-      }
-      public Builder SetOptionalLazyMessage(global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasOptionalLazyMessage = true;
-        result.optionalLazyMessage_ = value;
-        return this;
-      }
-      public Builder SetOptionalLazyMessage(global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.hasOptionalLazyMessage = true;
-        result.optionalLazyMessage_ = builderForValue.Build();
-        return this;
-      }
-      public Builder MergeOptionalLazyMessage(global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        if (result.hasOptionalLazyMessage &&
-            result.optionalLazyMessage_ != global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage.DefaultInstance) {
-            result.optionalLazyMessage_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage.CreateBuilder(result.optionalLazyMessage_).MergeFrom(value).BuildPartial();
-        } else {
-          result.optionalLazyMessage_ = value;
-        }
-        result.hasOptionalLazyMessage = true;
-        return this;
-      }
-      public Builder ClearOptionalLazyMessage() {
-        PrepareBuilder();
-        result.hasOptionalLazyMessage = false;
-        result.optionalLazyMessage_ = null;
-        return this;
-      }
-
-      public pbc::IPopsicleList<int> RepeatedInt32List {
-        get { return PrepareBuilder().repeatedInt32_; }
-      }
-      public int RepeatedInt32Count {
-        get { return result.RepeatedInt32Count; }
-      }
-      public int GetRepeatedInt32(int index) {
-        return result.GetRepeatedInt32(index);
-      }
-      public Builder SetRepeatedInt32(int index, int value) {
-        PrepareBuilder();
-        result.repeatedInt32_[index] = value;
-        return this;
-      }
-      public Builder AddRepeatedInt32(int value) {
-        PrepareBuilder();
-        result.repeatedInt32_.Add(value);
-        return this;
-      }
-      public Builder AddRangeRepeatedInt32(scg::IEnumerable<int> values) {
-        PrepareBuilder();
-        result.repeatedInt32_.Add(values);
-        return this;
-      }
-      public Builder ClearRepeatedInt32() {
-        PrepareBuilder();
-        result.repeatedInt32_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<long> RepeatedInt64List {
-        get { return PrepareBuilder().repeatedInt64_; }
-      }
-      public int RepeatedInt64Count {
-        get { return result.RepeatedInt64Count; }
-      }
-      public long GetRepeatedInt64(int index) {
-        return result.GetRepeatedInt64(index);
-      }
-      public Builder SetRepeatedInt64(int index, long value) {
-        PrepareBuilder();
-        result.repeatedInt64_[index] = value;
-        return this;
-      }
-      public Builder AddRepeatedInt64(long value) {
-        PrepareBuilder();
-        result.repeatedInt64_.Add(value);
-        return this;
-      }
-      public Builder AddRangeRepeatedInt64(scg::IEnumerable<long> values) {
-        PrepareBuilder();
-        result.repeatedInt64_.Add(values);
-        return this;
-      }
-      public Builder ClearRepeatedInt64() {
-        PrepareBuilder();
-        result.repeatedInt64_.Clear();
-        return this;
-      }
-
-      [global::System.CLSCompliant(false)]
-      public pbc::IPopsicleList<uint> RepeatedUint32List {
-        get { return PrepareBuilder().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) {
-        PrepareBuilder();
-        result.repeatedUint32_[index] = value;
-        return this;
-      }
-      [global::System.CLSCompliant(false)]
-      public Builder AddRepeatedUint32(uint value) {
-        PrepareBuilder();
-        result.repeatedUint32_.Add(value);
-        return this;
-      }
-      [global::System.CLSCompliant(false)]
-      public Builder AddRangeRepeatedUint32(scg::IEnumerable<uint> values) {
-        PrepareBuilder();
-        result.repeatedUint32_.Add(values);
-        return this;
-      }
-      public Builder ClearRepeatedUint32() {
-        PrepareBuilder();
-        result.repeatedUint32_.Clear();
-        return this;
-      }
-
-      [global::System.CLSCompliant(false)]
-      public pbc::IPopsicleList<ulong> RepeatedUint64List {
-        get { return PrepareBuilder().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) {
-        PrepareBuilder();
-        result.repeatedUint64_[index] = value;
-        return this;
-      }
-      [global::System.CLSCompliant(false)]
-      public Builder AddRepeatedUint64(ulong value) {
-        PrepareBuilder();
-        result.repeatedUint64_.Add(value);
-        return this;
-      }
-      [global::System.CLSCompliant(false)]
-      public Builder AddRangeRepeatedUint64(scg::IEnumerable<ulong> values) {
-        PrepareBuilder();
-        result.repeatedUint64_.Add(values);
-        return this;
-      }
-      public Builder ClearRepeatedUint64() {
-        PrepareBuilder();
-        result.repeatedUint64_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<int> RepeatedSint32List {
-        get { return PrepareBuilder().repeatedSint32_; }
-      }
-      public int RepeatedSint32Count {
-        get { return result.RepeatedSint32Count; }
-      }
-      public int GetRepeatedSint32(int index) {
-        return result.GetRepeatedSint32(index);
-      }
-      public Builder SetRepeatedSint32(int index, int value) {
-        PrepareBuilder();
-        result.repeatedSint32_[index] = value;
-        return this;
-      }
-      public Builder AddRepeatedSint32(int value) {
-        PrepareBuilder();
-        result.repeatedSint32_.Add(value);
-        return this;
-      }
-      public Builder AddRangeRepeatedSint32(scg::IEnumerable<int> values) {
-        PrepareBuilder();
-        result.repeatedSint32_.Add(values);
-        return this;
-      }
-      public Builder ClearRepeatedSint32() {
-        PrepareBuilder();
-        result.repeatedSint32_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<long> RepeatedSint64List {
-        get { return PrepareBuilder().repeatedSint64_; }
-      }
-      public int RepeatedSint64Count {
-        get { return result.RepeatedSint64Count; }
-      }
-      public long GetRepeatedSint64(int index) {
-        return result.GetRepeatedSint64(index);
-      }
-      public Builder SetRepeatedSint64(int index, long value) {
-        PrepareBuilder();
-        result.repeatedSint64_[index] = value;
-        return this;
-      }
-      public Builder AddRepeatedSint64(long value) {
-        PrepareBuilder();
-        result.repeatedSint64_.Add(value);
-        return this;
-      }
-      public Builder AddRangeRepeatedSint64(scg::IEnumerable<long> values) {
-        PrepareBuilder();
-        result.repeatedSint64_.Add(values);
-        return this;
-      }
-      public Builder ClearRepeatedSint64() {
-        PrepareBuilder();
-        result.repeatedSint64_.Clear();
-        return this;
-      }
-
-      [global::System.CLSCompliant(false)]
-      public pbc::IPopsicleList<uint> RepeatedFixed32List {
-        get { return PrepareBuilder().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) {
-        PrepareBuilder();
-        result.repeatedFixed32_[index] = value;
-        return this;
-      }
-      [global::System.CLSCompliant(false)]
-      public Builder AddRepeatedFixed32(uint value) {
-        PrepareBuilder();
-        result.repeatedFixed32_.Add(value);
-        return this;
-      }
-      [global::System.CLSCompliant(false)]
-      public Builder AddRangeRepeatedFixed32(scg::IEnumerable<uint> values) {
-        PrepareBuilder();
-        result.repeatedFixed32_.Add(values);
-        return this;
-      }
-      public Builder ClearRepeatedFixed32() {
-        PrepareBuilder();
-        result.repeatedFixed32_.Clear();
-        return this;
-      }
-
-      [global::System.CLSCompliant(false)]
-      public pbc::IPopsicleList<ulong> RepeatedFixed64List {
-        get { return PrepareBuilder().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) {
-        PrepareBuilder();
-        result.repeatedFixed64_[index] = value;
-        return this;
-      }
-      [global::System.CLSCompliant(false)]
-      public Builder AddRepeatedFixed64(ulong value) {
-        PrepareBuilder();
-        result.repeatedFixed64_.Add(value);
-        return this;
-      }
-      [global::System.CLSCompliant(false)]
-      public Builder AddRangeRepeatedFixed64(scg::IEnumerable<ulong> values) {
-        PrepareBuilder();
-        result.repeatedFixed64_.Add(values);
-        return this;
-      }
-      public Builder ClearRepeatedFixed64() {
-        PrepareBuilder();
-        result.repeatedFixed64_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<int> RepeatedSfixed32List {
-        get { return PrepareBuilder().repeatedSfixed32_; }
-      }
-      public int RepeatedSfixed32Count {
-        get { return result.RepeatedSfixed32Count; }
-      }
-      public int GetRepeatedSfixed32(int index) {
-        return result.GetRepeatedSfixed32(index);
-      }
-      public Builder SetRepeatedSfixed32(int index, int value) {
-        PrepareBuilder();
-        result.repeatedSfixed32_[index] = value;
-        return this;
-      }
-      public Builder AddRepeatedSfixed32(int value) {
-        PrepareBuilder();
-        result.repeatedSfixed32_.Add(value);
-        return this;
-      }
-      public Builder AddRangeRepeatedSfixed32(scg::IEnumerable<int> values) {
-        PrepareBuilder();
-        result.repeatedSfixed32_.Add(values);
-        return this;
-      }
-      public Builder ClearRepeatedSfixed32() {
-        PrepareBuilder();
-        result.repeatedSfixed32_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<long> RepeatedSfixed64List {
-        get { return PrepareBuilder().repeatedSfixed64_; }
-      }
-      public int RepeatedSfixed64Count {
-        get { return result.RepeatedSfixed64Count; }
-      }
-      public long GetRepeatedSfixed64(int index) {
-        return result.GetRepeatedSfixed64(index);
-      }
-      public Builder SetRepeatedSfixed64(int index, long value) {
-        PrepareBuilder();
-        result.repeatedSfixed64_[index] = value;
-        return this;
-      }
-      public Builder AddRepeatedSfixed64(long value) {
-        PrepareBuilder();
-        result.repeatedSfixed64_.Add(value);
-        return this;
-      }
-      public Builder AddRangeRepeatedSfixed64(scg::IEnumerable<long> values) {
-        PrepareBuilder();
-        result.repeatedSfixed64_.Add(values);
-        return this;
-      }
-      public Builder ClearRepeatedSfixed64() {
-        PrepareBuilder();
-        result.repeatedSfixed64_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<float> RepeatedFloatList {
-        get { return PrepareBuilder().repeatedFloat_; }
-      }
-      public int RepeatedFloatCount {
-        get { return result.RepeatedFloatCount; }
-      }
-      public float GetRepeatedFloat(int index) {
-        return result.GetRepeatedFloat(index);
-      }
-      public Builder SetRepeatedFloat(int index, float value) {
-        PrepareBuilder();
-        result.repeatedFloat_[index] = value;
-        return this;
-      }
-      public Builder AddRepeatedFloat(float value) {
-        PrepareBuilder();
-        result.repeatedFloat_.Add(value);
-        return this;
-      }
-      public Builder AddRangeRepeatedFloat(scg::IEnumerable<float> values) {
-        PrepareBuilder();
-        result.repeatedFloat_.Add(values);
-        return this;
-      }
-      public Builder ClearRepeatedFloat() {
-        PrepareBuilder();
-        result.repeatedFloat_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<double> RepeatedDoubleList {
-        get { return PrepareBuilder().repeatedDouble_; }
-      }
-      public int RepeatedDoubleCount {
-        get { return result.RepeatedDoubleCount; }
-      }
-      public double GetRepeatedDouble(int index) {
-        return result.GetRepeatedDouble(index);
-      }
-      public Builder SetRepeatedDouble(int index, double value) {
-        PrepareBuilder();
-        result.repeatedDouble_[index] = value;
-        return this;
-      }
-      public Builder AddRepeatedDouble(double value) {
-        PrepareBuilder();
-        result.repeatedDouble_.Add(value);
-        return this;
-      }
-      public Builder AddRangeRepeatedDouble(scg::IEnumerable<double> values) {
-        PrepareBuilder();
-        result.repeatedDouble_.Add(values);
-        return this;
-      }
-      public Builder ClearRepeatedDouble() {
-        PrepareBuilder();
-        result.repeatedDouble_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<bool> RepeatedBoolList {
-        get { return PrepareBuilder().repeatedBool_; }
-      }
-      public int RepeatedBoolCount {
-        get { return result.RepeatedBoolCount; }
-      }
-      public bool GetRepeatedBool(int index) {
-        return result.GetRepeatedBool(index);
-      }
-      public Builder SetRepeatedBool(int index, bool value) {
-        PrepareBuilder();
-        result.repeatedBool_[index] = value;
-        return this;
-      }
-      public Builder AddRepeatedBool(bool value) {
-        PrepareBuilder();
-        result.repeatedBool_.Add(value);
-        return this;
-      }
-      public Builder AddRangeRepeatedBool(scg::IEnumerable<bool> values) {
-        PrepareBuilder();
-        result.repeatedBool_.Add(values);
-        return this;
-      }
-      public Builder ClearRepeatedBool() {
-        PrepareBuilder();
-        result.repeatedBool_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<string> RepeatedStringList {
-        get { return PrepareBuilder().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");
-        PrepareBuilder();
-        result.repeatedString_[index] = value;
-        return this;
-      }
-      public Builder AddRepeatedString(string value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.repeatedString_.Add(value);
-        return this;
-      }
-      public Builder AddRangeRepeatedString(scg::IEnumerable<string> values) {
-        PrepareBuilder();
-        result.repeatedString_.Add(values);
-        return this;
-      }
-      public Builder ClearRepeatedString() {
-        PrepareBuilder();
-        result.repeatedString_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<pb::ByteString> RepeatedBytesList {
-        get { return PrepareBuilder().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");
-        PrepareBuilder();
-        result.repeatedBytes_[index] = value;
-        return this;
-      }
-      public Builder AddRepeatedBytes(pb::ByteString value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.repeatedBytes_.Add(value);
-        return this;
-      }
-      public Builder AddRangeRepeatedBytes(scg::IEnumerable<pb::ByteString> values) {
-        PrepareBuilder();
-        result.repeatedBytes_.Add(values);
-        return this;
-      }
-      public Builder ClearRepeatedBytes() {
-        PrepareBuilder();
-        result.repeatedBytes_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage> RepeatedNestedMessageList {
-        get { return PrepareBuilder().repeatedNestedMessage_; }
-      }
-      public int RepeatedNestedMessageCount {
-        get { return result.RepeatedNestedMessageCount; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage GetRepeatedNestedMessage(int index) {
-        return result.GetRepeatedNestedMessage(index);
-      }
-      public Builder SetRepeatedNestedMessage(int index, global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.repeatedNestedMessage_[index] = value;
-        return this;
-      }
-      public Builder SetRepeatedNestedMessage(int index, global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.repeatedNestedMessage_[index] = builderForValue.Build();
-        return this;
-      }
-      public Builder AddRepeatedNestedMessage(global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.repeatedNestedMessage_.Add(value);
-        return this;
-      }
-      public Builder AddRepeatedNestedMessage(global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.repeatedNestedMessage_.Add(builderForValue.Build());
-        return this;
-      }
-      public Builder AddRangeRepeatedNestedMessage(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage> values) {
-        PrepareBuilder();
-        result.repeatedNestedMessage_.Add(values);
-        return this;
-      }
-      public Builder ClearRepeatedNestedMessage() {
-        PrepareBuilder();
-        result.repeatedNestedMessage_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<global::Google.ProtocolBuffers.TestProtos.ForeignMessage> RepeatedForeignMessageList {
-        get { return PrepareBuilder().repeatedForeignMessage_; }
-      }
-      public int RepeatedForeignMessageCount {
-        get { return result.RepeatedForeignMessageCount; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.ForeignMessage GetRepeatedForeignMessage(int index) {
-        return result.GetRepeatedForeignMessage(index);
-      }
-      public Builder SetRepeatedForeignMessage(int index, global::Google.ProtocolBuffers.TestProtos.ForeignMessage value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.repeatedForeignMessage_[index] = value;
-        return this;
-      }
-      public Builder SetRepeatedForeignMessage(int index, global::Google.ProtocolBuffers.TestProtos.ForeignMessage.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.repeatedForeignMessage_[index] = builderForValue.Build();
-        return this;
-      }
-      public Builder AddRepeatedForeignMessage(global::Google.ProtocolBuffers.TestProtos.ForeignMessage value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.repeatedForeignMessage_.Add(value);
-        return this;
-      }
-      public Builder AddRepeatedForeignMessage(global::Google.ProtocolBuffers.TestProtos.ForeignMessage.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.repeatedForeignMessage_.Add(builderForValue.Build());
-        return this;
-      }
-      public Builder AddRangeRepeatedForeignMessage(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.ForeignMessage> values) {
-        PrepareBuilder();
-        result.repeatedForeignMessage_.Add(values);
-        return this;
-      }
-      public Builder ClearRepeatedForeignMessage() {
-        PrepareBuilder();
-        result.repeatedForeignMessage_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<global::Google.ProtocolBuffers.TestProtos.TestAllTypes> RepeatedProto2MessageList {
-        get { return PrepareBuilder().repeatedProto2Message_; }
-      }
-      public int RepeatedProto2MessageCount {
-        get { return result.RepeatedProto2MessageCount; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.TestAllTypes GetRepeatedProto2Message(int index) {
-        return result.GetRepeatedProto2Message(index);
-      }
-      public Builder SetRepeatedProto2Message(int index, global::Google.ProtocolBuffers.TestProtos.TestAllTypes value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.repeatedProto2Message_[index] = value;
-        return this;
-      }
-      public Builder SetRepeatedProto2Message(int index, global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.repeatedProto2Message_[index] = builderForValue.Build();
-        return this;
-      }
-      public Builder AddRepeatedProto2Message(global::Google.ProtocolBuffers.TestProtos.TestAllTypes value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.repeatedProto2Message_.Add(value);
-        return this;
-      }
-      public Builder AddRepeatedProto2Message(global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.repeatedProto2Message_.Add(builderForValue.Build());
-        return this;
-      }
-      public Builder AddRangeRepeatedProto2Message(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.TestAllTypes> values) {
-        PrepareBuilder();
-        result.repeatedProto2Message_.Add(values);
-        return this;
-      }
-      public Builder ClearRepeatedProto2Message() {
-        PrepareBuilder();
-        result.repeatedProto2Message_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedEnum> RepeatedNestedEnumList {
-        get { return PrepareBuilder().repeatedNestedEnum_; }
-      }
-      public int RepeatedNestedEnumCount {
-        get { return result.RepeatedNestedEnumCount; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedEnum GetRepeatedNestedEnum(int index) {
-        return result.GetRepeatedNestedEnum(index);
-      }
-      public Builder SetRepeatedNestedEnum(int index, global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedEnum value) {
-        PrepareBuilder();
-        result.repeatedNestedEnum_[index] = value;
-        return this;
-      }
-      public Builder AddRepeatedNestedEnum(global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedEnum value) {
-        PrepareBuilder();
-        result.repeatedNestedEnum_.Add(value);
-        return this;
-      }
-      public Builder AddRangeRepeatedNestedEnum(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedEnum> values) {
-        PrepareBuilder();
-        result.repeatedNestedEnum_.Add(values);
-        return this;
-      }
-      public Builder ClearRepeatedNestedEnum() {
-        PrepareBuilder();
-        result.repeatedNestedEnum_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<global::Google.ProtocolBuffers.TestProtos.ForeignEnum> RepeatedForeignEnumList {
-        get { return PrepareBuilder().repeatedForeignEnum_; }
-      }
-      public int RepeatedForeignEnumCount {
-        get { return result.RepeatedForeignEnumCount; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.ForeignEnum GetRepeatedForeignEnum(int index) {
-        return result.GetRepeatedForeignEnum(index);
-      }
-      public Builder SetRepeatedForeignEnum(int index, global::Google.ProtocolBuffers.TestProtos.ForeignEnum value) {
-        PrepareBuilder();
-        result.repeatedForeignEnum_[index] = value;
-        return this;
-      }
-      public Builder AddRepeatedForeignEnum(global::Google.ProtocolBuffers.TestProtos.ForeignEnum value) {
-        PrepareBuilder();
-        result.repeatedForeignEnum_.Add(value);
-        return this;
-      }
-      public Builder AddRangeRepeatedForeignEnum(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.ForeignEnum> values) {
-        PrepareBuilder();
-        result.repeatedForeignEnum_.Add(values);
-        return this;
-      }
-      public Builder ClearRepeatedForeignEnum() {
-        PrepareBuilder();
-        result.repeatedForeignEnum_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<string> RepeatedStringPieceList {
-        get { return PrepareBuilder().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");
-        PrepareBuilder();
-        result.repeatedStringPiece_[index] = value;
-        return this;
-      }
-      public Builder AddRepeatedStringPiece(string value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.repeatedStringPiece_.Add(value);
-        return this;
-      }
-      public Builder AddRangeRepeatedStringPiece(scg::IEnumerable<string> values) {
-        PrepareBuilder();
-        result.repeatedStringPiece_.Add(values);
-        return this;
-      }
-      public Builder ClearRepeatedStringPiece() {
-        PrepareBuilder();
-        result.repeatedStringPiece_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<string> RepeatedCordList {
-        get { return PrepareBuilder().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");
-        PrepareBuilder();
-        result.repeatedCord_[index] = value;
-        return this;
-      }
-      public Builder AddRepeatedCord(string value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.repeatedCord_.Add(value);
-        return this;
-      }
-      public Builder AddRangeRepeatedCord(scg::IEnumerable<string> values) {
-        PrepareBuilder();
-        result.repeatedCord_.Add(values);
-        return this;
-      }
-      public Builder ClearRepeatedCord() {
-        PrepareBuilder();
-        result.repeatedCord_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage> RepeatedLazyMessageList {
-        get { return PrepareBuilder().repeatedLazyMessage_; }
-      }
-      public int RepeatedLazyMessageCount {
-        get { return result.RepeatedLazyMessageCount; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage GetRepeatedLazyMessage(int index) {
-        return result.GetRepeatedLazyMessage(index);
-      }
-      public Builder SetRepeatedLazyMessage(int index, global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.repeatedLazyMessage_[index] = value;
-        return this;
-      }
-      public Builder SetRepeatedLazyMessage(int index, global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.repeatedLazyMessage_[index] = builderForValue.Build();
-        return this;
-      }
-      public Builder AddRepeatedLazyMessage(global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.repeatedLazyMessage_.Add(value);
-        return this;
-      }
-      public Builder AddRepeatedLazyMessage(global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.repeatedLazyMessage_.Add(builderForValue.Build());
-        return this;
-      }
-      public Builder AddRangeRepeatedLazyMessage(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage> values) {
-        PrepareBuilder();
-        result.repeatedLazyMessage_.Add(values);
-        return this;
-      }
-      public Builder ClearRepeatedLazyMessage() {
-        PrepareBuilder();
-        result.repeatedLazyMessage_.Clear();
-        return this;
-      }
-
-      public bool HasOneofUint32 {
-        get { return result.hasOneofUint32; }
-      }
-      [global::System.CLSCompliant(false)]
-      public uint OneofUint32 {
-        get { return result.OneofUint32; }
-        set { SetOneofUint32(value); }
-      }
-      [global::System.CLSCompliant(false)]
-      public Builder SetOneofUint32(uint value) {
-        PrepareBuilder();
-        result.hasOneofUint32 = true;
-        result.oneofUint32_ = value;
-        return this;
-      }
-      public Builder ClearOneofUint32() {
-        PrepareBuilder();
-        result.hasOneofUint32 = false;
-        result.oneofUint32_ = 0;
-        return this;
-      }
-
-      public bool HasOneofNestedMessage {
-       get { return result.hasOneofNestedMessage; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage OneofNestedMessage {
-        get { return result.OneofNestedMessage; }
-        set { SetOneofNestedMessage(value); }
-      }
-      public Builder SetOneofNestedMessage(global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasOneofNestedMessage = true;
-        result.oneofNestedMessage_ = value;
-        return this;
-      }
-      public Builder SetOneofNestedMessage(global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.hasOneofNestedMessage = true;
-        result.oneofNestedMessage_ = builderForValue.Build();
-        return this;
-      }
-      public Builder MergeOneofNestedMessage(global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        if (result.hasOneofNestedMessage &&
-            result.oneofNestedMessage_ != global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage.DefaultInstance) {
-            result.oneofNestedMessage_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage.CreateBuilder(result.oneofNestedMessage_).MergeFrom(value).BuildPartial();
-        } else {
-          result.oneofNestedMessage_ = value;
-        }
-        result.hasOneofNestedMessage = true;
-        return this;
-      }
-      public Builder ClearOneofNestedMessage() {
-        PrepareBuilder();
-        result.hasOneofNestedMessage = false;
-        result.oneofNestedMessage_ = null;
-        return this;
-      }
-
-      public bool HasOneofString {
-        get { return result.hasOneofString; }
-      }
-      public string OneofString {
-        get { return result.OneofString; }
-        set { SetOneofString(value); }
-      }
-      public Builder SetOneofString(string value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasOneofString = true;
-        result.oneofString_ = value;
-        return this;
-      }
-      public Builder ClearOneofString() {
-        PrepareBuilder();
-        result.hasOneofString = false;
-        result.oneofString_ = "";
-        return this;
-      }
-
-      public bool HasOneofEnum {
-       get { return result.hasOneofEnum; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedEnum OneofEnum {
-        get { return result.OneofEnum; }
-        set { SetOneofEnum(value); }
-      }
-      public Builder SetOneofEnum(global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedEnum value) {
-        PrepareBuilder();
-        result.hasOneofEnum = true;
-        result.oneofEnum_ = value;
-        return this;
-      }
-      public Builder ClearOneofEnum() {
-        PrepareBuilder();
-        result.hasOneofEnum = false;
-        result.oneofEnum_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedEnum.FOO;
-        return this;
-      }
-    }
-    static TestAllTypes() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnittestNoFieldPresence.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class TestProto2Required : pb::GeneratedMessage<TestProto2Required, TestProto2Required.Builder> {
-    private TestProto2Required() { }
-    private static readonly TestProto2Required defaultInstance = new TestProto2Required().MakeReadOnly();
-    private static readonly string[] _testProto2RequiredFieldNames = new string[] { "proto2" };
-    private static readonly uint[] _testProto2RequiredFieldTags = new uint[] { 10 };
-    public static TestProto2Required DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override TestProto2Required DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override TestProto2Required ThisMessage {
-      get { return this; }
-    }
-
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::Google.ProtocolBuffers.TestProtos.UnittestNoFieldPresence.internal__static_proto2_nofieldpresence_unittest_TestProto2Required__Descriptor; }
-    }
-
-    protected override pb::FieldAccess.FieldAccessorTable<TestProto2Required, TestProto2Required.Builder> InternalFieldAccessors {
-      get { return global::Google.ProtocolBuffers.TestProtos.UnittestNoFieldPresence.internal__static_proto2_nofieldpresence_unittest_TestProto2Required__FieldAccessorTable; }
-    }
-
-    public const int Proto2FieldNumber = 1;
-    private bool hasProto2;
-    private global::Google.ProtocolBuffers.TestProtos.TestRequired proto2_;
-    public bool HasProto2 {
-      get { return hasProto2; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.TestRequired Proto2 {
-      get { return proto2_ ?? global::Google.ProtocolBuffers.TestProtos.TestRequired.DefaultInstance; }
-    }
-
-    public override bool IsInitialized {
-      get {
-        if (HasProto2) {
-          if (!Proto2.IsInitialized) return false;
-        }
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _testProto2RequiredFieldNames;
-      if (hasProto2) {
-        output.WriteMessage(1, field_names[0], Proto2);
-      }
-      UnknownFields.WriteTo(output);
-    }
-
-    private int memoizedSerializedSize = -1;
-    public override int SerializedSize {
-      get {
-        int size = memoizedSerializedSize;
-        if (size != -1) return size;
-        return CalcSerializedSize();
-      }
-    }
-
-    private int CalcSerializedSize() {
-      int size = memoizedSerializedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (hasProto2) {
-        size += pb::CodedOutputStream.ComputeMessageSize(1, Proto2);
-      }
-      size += UnknownFields.SerializedSize;
-      memoizedSerializedSize = size;
-      return size;
-    }
-    public static TestProto2Required ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestProto2Required ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestProto2Required ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestProto2Required ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestProto2Required ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestProto2Required ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static TestProto2Required ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static TestProto2Required ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static TestProto2Required ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestProto2Required ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private TestProto2Required MakeReadOnly() {
-      return this;
-    }
-
-    public static Builder CreateBuilder() { return new Builder(); }
-    public override Builder ToBuilder() { return CreateBuilder(this); }
-    public override Builder CreateBuilderForType() { return new Builder(); }
-    public static Builder CreateBuilder(TestProto2Required prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilder<TestProto2Required, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(TestProto2Required cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private TestProto2Required result;
-
-      private TestProto2Required PrepareBuilder() {
-        if (resultIsReadOnly) {
-          TestProto2Required original = result;
-          result = new TestProto2Required();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override TestProto2Required MessageBeingBuilt {
-        get { return PrepareBuilder(); }
-      }
-
-      public override Builder Clear() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-        return this;
-      }
-
-      public override Builder Clone() {
-        if (resultIsReadOnly) {
-          return new Builder(result);
-        } else {
-          return new Builder().MergeFrom(result);
-        }
-      }
-
-      public override pbd::MessageDescriptor DescriptorForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.TestProto2Required.Descriptor; }
-      }
-
-      public override TestProto2Required DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.TestProto2Required.DefaultInstance; }
-      }
-
-      public override TestProto2Required BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is TestProto2Required) {
-          return MergeFrom((TestProto2Required) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(TestProto2Required other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.TestProto2Required.DefaultInstance) return this;
-        PrepareBuilder();
-        if (other.HasProto2) {
-          MergeProto2(other.Proto2);
-        }
-        this.MergeUnknownFields(other.UnknownFields);
-        return this;
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input) {
-        return MergeFrom(input, pb::ExtensionRegistry.Empty);
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-        PrepareBuilder();
-        pb::UnknownFieldSet.Builder unknownFields = null;
-        uint tag;
-        string field_name;
-        while (input.ReadTag(out tag, out field_name)) {
-          if(tag == 0 && field_name != null) {
-            int field_ordinal = global::System.Array.BinarySearch(_testProto2RequiredFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _testProto2RequiredFieldTags[field_ordinal];
-            else {
-              if (unknownFields == null) {
-                unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-              }
-              ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name);
-              continue;
-            }
-          }
-          switch (tag) {
-            case 0: {
-              throw pb::InvalidProtocolBufferException.InvalidTag();
-            }
-            default: {
-              if (pb::WireFormat.IsEndGroupTag(tag)) {
-                if (unknownFields != null) {
-                  this.UnknownFields = unknownFields.Build();
-                }
-                return this;
-              }
-              if (unknownFields == null) {
-                unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-              }
-              ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name);
-              break;
-            }
-            case 10: {
-              global::Google.ProtocolBuffers.TestProtos.TestRequired.Builder subBuilder = global::Google.ProtocolBuffers.TestProtos.TestRequired.CreateBuilder();
-              if (result.hasProto2) {
-                subBuilder.MergeFrom(Proto2);
-              }
-              input.ReadMessage(subBuilder, extensionRegistry);
-              Proto2 = subBuilder.BuildPartial();
-              break;
-            }
-          }
-        }
-
-        if (unknownFields != null) {
-          this.UnknownFields = unknownFields.Build();
-        }
-        return this;
-      }
-
-
-      public bool HasProto2 {
-       get { return result.hasProto2; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.TestRequired Proto2 {
-        get { return result.Proto2; }
-        set { SetProto2(value); }
-      }
-      public Builder SetProto2(global::Google.ProtocolBuffers.TestProtos.TestRequired value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasProto2 = true;
-        result.proto2_ = value;
-        return this;
-      }
-      public Builder SetProto2(global::Google.ProtocolBuffers.TestProtos.TestRequired.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.hasProto2 = true;
-        result.proto2_ = builderForValue.Build();
-        return this;
-      }
-      public Builder MergeProto2(global::Google.ProtocolBuffers.TestProtos.TestRequired value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        if (result.hasProto2 &&
-            result.proto2_ != global::Google.ProtocolBuffers.TestProtos.TestRequired.DefaultInstance) {
-            result.proto2_ = global::Google.ProtocolBuffers.TestProtos.TestRequired.CreateBuilder(result.proto2_).MergeFrom(value).BuildPartial();
-        } else {
-          result.proto2_ = value;
-        }
-        result.hasProto2 = true;
-        return this;
-      }
-      public Builder ClearProto2() {
-        PrepareBuilder();
-        result.hasProto2 = false;
-        result.proto2_ = null;
-        return this;
-      }
-    }
-    static TestProto2Required() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnittestNoFieldPresence.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class ForeignMessage : pb::GeneratedMessage<ForeignMessage, ForeignMessage.Builder> {
-    private ForeignMessage() { }
-    private static readonly ForeignMessage defaultInstance = new ForeignMessage().MakeReadOnly();
-    private static readonly string[] _foreignMessageFieldNames = new string[] { "c" };
-    private static readonly uint[] _foreignMessageFieldTags = new uint[] { 8 };
-    public static ForeignMessage DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override ForeignMessage DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override ForeignMessage ThisMessage {
-      get { return this; }
-    }
-
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::Google.ProtocolBuffers.TestProtos.UnittestNoFieldPresence.internal__static_proto2_nofieldpresence_unittest_ForeignMessage__Descriptor; }
-    }
-
-    protected override pb::FieldAccess.FieldAccessorTable<ForeignMessage, ForeignMessage.Builder> InternalFieldAccessors {
-      get { return global::Google.ProtocolBuffers.TestProtos.UnittestNoFieldPresence.internal__static_proto2_nofieldpresence_unittest_ForeignMessage__FieldAccessorTable; }
-    }
-
-    public const int CFieldNumber = 1;
-    private bool hasC;
-    private int c_;
-    public bool HasC {
-      get { return hasC; }
-    }
-    public int C {
-      get { return c_; }
-    }
-
-    public override bool IsInitialized {
-      get {
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _foreignMessageFieldNames;
-      if (hasC) {
-        output.WriteInt32(1, field_names[0], C);
-      }
-      UnknownFields.WriteTo(output);
-    }
-
-    private int memoizedSerializedSize = -1;
-    public override int SerializedSize {
-      get {
-        int size = memoizedSerializedSize;
-        if (size != -1) return size;
-        return CalcSerializedSize();
-      }
-    }
-
-    private int CalcSerializedSize() {
-      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 ForeignMessage ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static ForeignMessage ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static ForeignMessage ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static ForeignMessage ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static ForeignMessage ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static ForeignMessage ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static ForeignMessage ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static ForeignMessage ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static ForeignMessage ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static ForeignMessage ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private ForeignMessage MakeReadOnly() {
-      return this;
-    }
-
-    public static Builder CreateBuilder() { return new Builder(); }
-    public override Builder ToBuilder() { return CreateBuilder(this); }
-    public override Builder CreateBuilderForType() { return new Builder(); }
-    public static Builder CreateBuilder(ForeignMessage prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilder<ForeignMessage, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(ForeignMessage cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private ForeignMessage result;
-
-      private ForeignMessage PrepareBuilder() {
-        if (resultIsReadOnly) {
-          ForeignMessage original = result;
-          result = new ForeignMessage();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override ForeignMessage MessageBeingBuilt {
-        get { return PrepareBuilder(); }
-      }
-
-      public override Builder Clear() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-        return this;
-      }
-
-      public override Builder Clone() {
-        if (resultIsReadOnly) {
-          return new Builder(result);
-        } else {
-          return new Builder().MergeFrom(result);
-        }
-      }
-
-      public override pbd::MessageDescriptor DescriptorForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.ForeignMessage.Descriptor; }
-      }
-
-      public override ForeignMessage DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.ForeignMessage.DefaultInstance; }
-      }
-
-      public override ForeignMessage BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is ForeignMessage) {
-          return MergeFrom((ForeignMessage) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(ForeignMessage other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.ForeignMessage.DefaultInstance) return this;
-        PrepareBuilder();
-        if (other.HasC) {
-          C = other.C;
-        }
-        this.MergeUnknownFields(other.UnknownFields);
-        return this;
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input) {
-        return MergeFrom(input, pb::ExtensionRegistry.Empty);
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-        PrepareBuilder();
-        pb::UnknownFieldSet.Builder unknownFields = null;
-        uint tag;
-        string field_name;
-        while (input.ReadTag(out tag, out field_name)) {
-          if(tag == 0 && field_name != null) {
-            int field_ordinal = global::System.Array.BinarySearch(_foreignMessageFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _foreignMessageFieldTags[field_ordinal];
-            else {
-              if (unknownFields == null) {
-                unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-              }
-              ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name);
-              continue;
-            }
-          }
-          switch (tag) {
-            case 0: {
-              throw pb::InvalidProtocolBufferException.InvalidTag();
-            }
-            default: {
-              if (pb::WireFormat.IsEndGroupTag(tag)) {
-                if (unknownFields != null) {
-                  this.UnknownFields = unknownFields.Build();
-                }
-                return this;
-              }
-              if (unknownFields == null) {
-                unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-              }
-              ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name);
-              break;
-            }
-            case 8: {
-              result.hasC = input.ReadInt32(ref result.c_);
-              break;
-            }
-          }
-        }
-
-        if (unknownFields != null) {
-          this.UnknownFields = unknownFields.Build();
-        }
-        return this;
-      }
-
-
-      public bool HasC {
-        get { return result.hasC; }
-      }
-      public int C {
-        get { return result.C; }
-        set { SetC(value); }
-      }
-      public Builder SetC(int value) {
-        PrepareBuilder();
-        result.hasC = true;
-        result.c_ = value;
-        return this;
-      }
-      public Builder ClearC() {
-        PrepareBuilder();
-        result.hasC = false;
-        result.c_ = 0;
-        return this;
-      }
-    }
-    static ForeignMessage() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnittestNoFieldPresence.Descriptor, null);
-    }
-  }
-
-  #endregion
-
-}
-
-#endregion Designer generated code

+ 0 - 1320
csharp/src/ProtocolBuffers.Test/TestProtos/UnittestPreserveUnknownEnum.cs

@@ -1,1320 +0,0 @@
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
-// source: google/protobuf/unittest_preserve_unknown_enum.proto
-#pragma warning disable 1591, 0612, 3021
-#region Designer generated code
-
-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 {
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public static partial class UnittestPreserveUnknownEnum {
-
-    #region Extension registration
-    public static void RegisterAllExtensions(pb::ExtensionRegistry registry) {
-    }
-    #endregion
-    #region Static variables
-    internal static pbd::MessageDescriptor internal__static_proto3_preserve_unknown_enum_unittest_MyMessage__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.MyMessage, global::Google.ProtocolBuffers.TestProtos.MyMessage.Builder> internal__static_proto3_preserve_unknown_enum_unittest_MyMessage__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_proto3_preserve_unknown_enum_unittest_MyMessagePlusExtra__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.MyMessagePlusExtra, global::Google.ProtocolBuffers.TestProtos.MyMessagePlusExtra.Builder> internal__static_proto3_preserve_unknown_enum_unittest_MyMessagePlusExtra__FieldAccessorTable;
-    #endregion
-    #region Descriptor
-    public static pbd::FileDescriptor Descriptor {
-      get { return descriptor; }
-    }
-    private static pbd::FileDescriptor descriptor;
-
-    static UnittestPreserveUnknownEnum() {
-      byte[] descriptorData = global::System.Convert.FromBase64String(
-          string.Concat(
-            "CjRnb29nbGUvcHJvdG9idWYvdW5pdHRlc3RfcHJlc2VydmVfdW5rbm93bl9l", 
-            "bnVtLnByb3RvEiVwcm90bzNfcHJlc2VydmVfdW5rbm93bl9lbnVtX3VuaXR0", 
-            "ZXN0IsEDCglNeU1lc3NhZ2USOAoBZRgBIAEoDjItLnByb3RvM19wcmVzZXJ2", 
-            "ZV91bmtub3duX2VudW1fdW5pdHRlc3QuTXlFbnVtEkEKCnJlcGVhdGVkX2UY", 
-            "AiADKA4yLS5wcm90bzNfcHJlc2VydmVfdW5rbm93bl9lbnVtX3VuaXR0ZXN0", 
-            "Lk15RW51bRJMChFyZXBlYXRlZF9wYWNrZWRfZRgDIAMoDjItLnByb3RvM19w", 
-            "cmVzZXJ2ZV91bmtub3duX2VudW1fdW5pdHRlc3QuTXlFbnVtQgIQARJcChxy", 
-            "ZXBlYXRlZF9wYWNrZWRfdW5leHBlY3RlZF9lGAQgAygOMjYucHJvdG8zX3By", 
-            "ZXNlcnZlX3Vua25vd25fZW51bV91bml0dGVzdC5NeUVudW1QbHVzRXh0cmES", 
-            "QgoJb25lb2ZfZV8xGAUgASgOMi0ucHJvdG8zX3ByZXNlcnZlX3Vua25vd25f", 
-            "ZW51bV91bml0dGVzdC5NeUVudW1IABJCCglvbmVvZl9lXzIYBiABKA4yLS5w", 
-            "cm90bzNfcHJlc2VydmVfdW5rbm93bl9lbnVtX3VuaXR0ZXN0Lk15RW51bUgA", 
-            "QgMKAW8i+wMKEk15TWVzc2FnZVBsdXNFeHRyYRJBCgFlGAEgASgOMjYucHJv", 
-            "dG8zX3ByZXNlcnZlX3Vua25vd25fZW51bV91bml0dGVzdC5NeUVudW1QbHVz", 
-            "RXh0cmESSgoKcmVwZWF0ZWRfZRgCIAMoDjI2LnByb3RvM19wcmVzZXJ2ZV91", 
-            "bmtub3duX2VudW1fdW5pdHRlc3QuTXlFbnVtUGx1c0V4dHJhElUKEXJlcGVh", 
-            "dGVkX3BhY2tlZF9lGAMgAygOMjYucHJvdG8zX3ByZXNlcnZlX3Vua25vd25f", 
-            "ZW51bV91bml0dGVzdC5NeUVudW1QbHVzRXh0cmFCAhABEmAKHHJlcGVhdGVk", 
-            "X3BhY2tlZF91bmV4cGVjdGVkX2UYBCADKA4yNi5wcm90bzNfcHJlc2VydmVf", 
-            "dW5rbm93bl9lbnVtX3VuaXR0ZXN0Lk15RW51bVBsdXNFeHRyYUICEAESSwoJ", 
-            "b25lb2ZfZV8xGAUgASgOMjYucHJvdG8zX3ByZXNlcnZlX3Vua25vd25fZW51", 
-            "bV91bml0dGVzdC5NeUVudW1QbHVzRXh0cmFIABJLCglvbmVvZl9lXzIYBiAB", 
-            "KA4yNi5wcm90bzNfcHJlc2VydmVfdW5rbm93bl9lbnVtX3VuaXR0ZXN0Lk15", 
-            "RW51bVBsdXNFeHRyYUgAQgMKAW8qIwoGTXlFbnVtEgcKA0ZPTxAAEgcKA0JB", 
-            "UhABEgcKA0JBWhACKj8KD015RW51bVBsdXNFeHRyYRIJCgVFX0ZPTxAAEgkK", 
-            "BUVfQkFSEAESCQoFRV9CQVoQAhILCgdFX0VYVFJBEANCJKoCIUdvb2dsZS5Q", 
-          "cm90b2NvbEJ1ZmZlcnMuVGVzdFByb3Rvc2IGcHJvdG8z"));
-      pbd::FileDescriptor.InternalDescriptorAssigner assigner = delegate(pbd::FileDescriptor root) {
-        descriptor = root;
-        internal__static_proto3_preserve_unknown_enum_unittest_MyMessage__Descriptor = Descriptor.MessageTypes[0];
-        internal__static_proto3_preserve_unknown_enum_unittest_MyMessage__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.MyMessage, global::Google.ProtocolBuffers.TestProtos.MyMessage.Builder>(internal__static_proto3_preserve_unknown_enum_unittest_MyMessage__Descriptor,
-                new string[] { "E", "RepeatedE", "RepeatedPackedE", "RepeatedPackedUnexpectedE", "OneofE1", "OneofE2", });
-        internal__static_proto3_preserve_unknown_enum_unittest_MyMessagePlusExtra__Descriptor = Descriptor.MessageTypes[1];
-        internal__static_proto3_preserve_unknown_enum_unittest_MyMessagePlusExtra__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.MyMessagePlusExtra, global::Google.ProtocolBuffers.TestProtos.MyMessagePlusExtra.Builder>(internal__static_proto3_preserve_unknown_enum_unittest_MyMessagePlusExtra__Descriptor,
-                new string[] { "E", "RepeatedE", "RepeatedPackedE", "RepeatedPackedUnexpectedE", "OneofE1", "OneofE2", });
-        pb::ExtensionRegistry registry = pb::ExtensionRegistry.CreateInstance();
-        RegisterAllExtensions(registry);
-        return registry;
-      };
-      pbd::FileDescriptor.InternalBuildGeneratedFileFrom(descriptorData,
-          new pbd::FileDescriptor[] {
-          }, assigner);
-    }
-    #endregion
-
-  }
-  #region Enums
-  public enum MyEnum {
-    FOO = 0,
-    BAR = 1,
-    BAZ = 2,
-  }
-
-  public enum MyEnumPlusExtra {
-    E_FOO = 0,
-    E_BAR = 1,
-    E_BAZ = 2,
-    E_EXTRA = 3,
-  }
-
-  #endregion
-
-  #region Messages
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class MyMessage : pb::GeneratedMessage<MyMessage, MyMessage.Builder> {
-    private MyMessage() { }
-    private static readonly MyMessage defaultInstance = new MyMessage().MakeReadOnly();
-    private static readonly string[] _myMessageFieldNames = new string[] { "e", "oneof_e_1", "oneof_e_2", "repeated_e", "repeated_packed_e", "repeated_packed_unexpected_e" };
-    private static readonly uint[] _myMessageFieldTags = new uint[] { 8, 40, 48, 16, 26, 32 };
-    public static MyMessage DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override MyMessage DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override MyMessage ThisMessage {
-      get { return this; }
-    }
-
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::Google.ProtocolBuffers.TestProtos.UnittestPreserveUnknownEnum.internal__static_proto3_preserve_unknown_enum_unittest_MyMessage__Descriptor; }
-    }
-
-    protected override pb::FieldAccess.FieldAccessorTable<MyMessage, MyMessage.Builder> InternalFieldAccessors {
-      get { return global::Google.ProtocolBuffers.TestProtos.UnittestPreserveUnknownEnum.internal__static_proto3_preserve_unknown_enum_unittest_MyMessage__FieldAccessorTable; }
-    }
-
-    public const int EFieldNumber = 1;
-    private bool hasE;
-    private global::Google.ProtocolBuffers.TestProtos.MyEnum e_ = global::Google.ProtocolBuffers.TestProtos.MyEnum.FOO;
-    public bool HasE {
-      get { return hasE; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.MyEnum E {
-      get { return e_; }
-    }
-
-    public const int RepeatedEFieldNumber = 2;
-    private pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.MyEnum> repeatedE_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.MyEnum>();
-    public scg::IList<global::Google.ProtocolBuffers.TestProtos.MyEnum> RepeatedEList {
-      get { return pbc::Lists.AsReadOnly(repeatedE_); }
-    }
-    public int RepeatedECount {
-      get { return repeatedE_.Count; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.MyEnum GetRepeatedE(int index) {
-      return repeatedE_[index];
-    }
-
-    public const int RepeatedPackedEFieldNumber = 3;
-    private int repeatedPackedEMemoizedSerializedSize;
-    private pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.MyEnum> repeatedPackedE_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.MyEnum>();
-    public scg::IList<global::Google.ProtocolBuffers.TestProtos.MyEnum> RepeatedPackedEList {
-      get { return pbc::Lists.AsReadOnly(repeatedPackedE_); }
-    }
-    public int RepeatedPackedECount {
-      get { return repeatedPackedE_.Count; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.MyEnum GetRepeatedPackedE(int index) {
-      return repeatedPackedE_[index];
-    }
-
-    public const int RepeatedPackedUnexpectedEFieldNumber = 4;
-    private pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.MyEnumPlusExtra> repeatedPackedUnexpectedE_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.MyEnumPlusExtra>();
-    public scg::IList<global::Google.ProtocolBuffers.TestProtos.MyEnumPlusExtra> RepeatedPackedUnexpectedEList {
-      get { return pbc::Lists.AsReadOnly(repeatedPackedUnexpectedE_); }
-    }
-    public int RepeatedPackedUnexpectedECount {
-      get { return repeatedPackedUnexpectedE_.Count; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.MyEnumPlusExtra GetRepeatedPackedUnexpectedE(int index) {
-      return repeatedPackedUnexpectedE_[index];
-    }
-
-    public const int OneofE1FieldNumber = 5;
-    private bool hasOneofE1;
-    private global::Google.ProtocolBuffers.TestProtos.MyEnum oneofE1_ = global::Google.ProtocolBuffers.TestProtos.MyEnum.FOO;
-    public bool HasOneofE1 {
-      get { return hasOneofE1; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.MyEnum OneofE1 {
-      get { return oneofE1_; }
-    }
-
-    public const int OneofE2FieldNumber = 6;
-    private bool hasOneofE2;
-    private global::Google.ProtocolBuffers.TestProtos.MyEnum oneofE2_ = global::Google.ProtocolBuffers.TestProtos.MyEnum.FOO;
-    public bool HasOneofE2 {
-      get { return hasOneofE2; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.MyEnum OneofE2 {
-      get { return oneofE2_; }
-    }
-
-    public override bool IsInitialized {
-      get {
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _myMessageFieldNames;
-      if (hasE) {
-        output.WriteEnum(1, field_names[0], (int) E, E);
-      }
-      if (repeatedE_.Count > 0) {
-        output.WriteEnumArray(2, field_names[3], repeatedE_);
-      }
-      if (repeatedPackedE_.Count > 0) {
-        output.WritePackedEnumArray(3, field_names[4], repeatedPackedEMemoizedSerializedSize, repeatedPackedE_);
-      }
-      if (repeatedPackedUnexpectedE_.Count > 0) {
-        output.WriteEnumArray(4, field_names[5], repeatedPackedUnexpectedE_);
-      }
-      if (hasOneofE1) {
-        output.WriteEnum(5, field_names[1], (int) OneofE1, OneofE1);
-      }
-      if (hasOneofE2) {
-        output.WriteEnum(6, field_names[2], (int) OneofE2, OneofE2);
-      }
-      UnknownFields.WriteTo(output);
-    }
-
-    private int memoizedSerializedSize = -1;
-    public override int SerializedSize {
-      get {
-        int size = memoizedSerializedSize;
-        if (size != -1) return size;
-        return CalcSerializedSize();
-      }
-    }
-
-    private int CalcSerializedSize() {
-      int size = memoizedSerializedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (hasE) {
-        size += pb::CodedOutputStream.ComputeEnumSize(1, (int) E);
-      }
-      {
-        int dataSize = 0;
-        if (repeatedE_.Count > 0) {
-          foreach (global::Google.ProtocolBuffers.TestProtos.MyEnum element in repeatedE_) {
-            dataSize += pb::CodedOutputStream.ComputeEnumSizeNoTag((int) element);
-          }
-          size += dataSize;
-          size += 1 * repeatedE_.Count;
-        }
-      }
-      {
-        int dataSize = 0;
-        if (repeatedPackedE_.Count > 0) {
-          foreach (global::Google.ProtocolBuffers.TestProtos.MyEnum element in repeatedPackedE_) {
-            dataSize += pb::CodedOutputStream.ComputeEnumSizeNoTag((int) element);
-          }
-          size += dataSize;
-          size += 1;
-          size += pb::CodedOutputStream.ComputeRawVarint32Size((uint) dataSize);
-        }
-        repeatedPackedEMemoizedSerializedSize = dataSize;
-      }
-      {
-        int dataSize = 0;
-        if (repeatedPackedUnexpectedE_.Count > 0) {
-          foreach (global::Google.ProtocolBuffers.TestProtos.MyEnumPlusExtra element in repeatedPackedUnexpectedE_) {
-            dataSize += pb::CodedOutputStream.ComputeEnumSizeNoTag((int) element);
-          }
-          size += dataSize;
-          size += 1 * repeatedPackedUnexpectedE_.Count;
-        }
-      }
-      if (hasOneofE1) {
-        size += pb::CodedOutputStream.ComputeEnumSize(5, (int) OneofE1);
-      }
-      if (hasOneofE2) {
-        size += pb::CodedOutputStream.ComputeEnumSize(6, (int) OneofE2);
-      }
-      size += UnknownFields.SerializedSize;
-      memoizedSerializedSize = size;
-      return size;
-    }
-    public static MyMessage ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static MyMessage ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static MyMessage ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static MyMessage ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static MyMessage ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static MyMessage ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static MyMessage ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static MyMessage ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static MyMessage ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static MyMessage ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private MyMessage MakeReadOnly() {
-      repeatedE_.MakeReadOnly();
-      repeatedPackedE_.MakeReadOnly();
-      repeatedPackedUnexpectedE_.MakeReadOnly();
-      return this;
-    }
-
-    public static Builder CreateBuilder() { return new Builder(); }
-    public override Builder ToBuilder() { return CreateBuilder(this); }
-    public override Builder CreateBuilderForType() { return new Builder(); }
-    public static Builder CreateBuilder(MyMessage prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilder<MyMessage, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(MyMessage cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private MyMessage result;
-
-      private MyMessage PrepareBuilder() {
-        if (resultIsReadOnly) {
-          MyMessage original = result;
-          result = new MyMessage();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override MyMessage MessageBeingBuilt {
-        get { return PrepareBuilder(); }
-      }
-
-      public override Builder Clear() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-        return this;
-      }
-
-      public override Builder Clone() {
-        if (resultIsReadOnly) {
-          return new Builder(result);
-        } else {
-          return new Builder().MergeFrom(result);
-        }
-      }
-
-      public override pbd::MessageDescriptor DescriptorForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.MyMessage.Descriptor; }
-      }
-
-      public override MyMessage DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.MyMessage.DefaultInstance; }
-      }
-
-      public override MyMessage BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is MyMessage) {
-          return MergeFrom((MyMessage) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(MyMessage other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.MyMessage.DefaultInstance) return this;
-        PrepareBuilder();
-        if (other.HasE) {
-          E = other.E;
-        }
-        if (other.repeatedE_.Count != 0) {
-          result.repeatedE_.Add(other.repeatedE_);
-        }
-        if (other.repeatedPackedE_.Count != 0) {
-          result.repeatedPackedE_.Add(other.repeatedPackedE_);
-        }
-        if (other.repeatedPackedUnexpectedE_.Count != 0) {
-          result.repeatedPackedUnexpectedE_.Add(other.repeatedPackedUnexpectedE_);
-        }
-        if (other.HasOneofE1) {
-          OneofE1 = other.OneofE1;
-        }
-        if (other.HasOneofE2) {
-          OneofE2 = other.OneofE2;
-        }
-        this.MergeUnknownFields(other.UnknownFields);
-        return this;
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input) {
-        return MergeFrom(input, pb::ExtensionRegistry.Empty);
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-        PrepareBuilder();
-        pb::UnknownFieldSet.Builder unknownFields = null;
-        uint tag;
-        string field_name;
-        while (input.ReadTag(out tag, out field_name)) {
-          if(tag == 0 && field_name != null) {
-            int field_ordinal = global::System.Array.BinarySearch(_myMessageFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _myMessageFieldTags[field_ordinal];
-            else {
-              if (unknownFields == null) {
-                unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-              }
-              ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name);
-              continue;
-            }
-          }
-          switch (tag) {
-            case 0: {
-              throw pb::InvalidProtocolBufferException.InvalidTag();
-            }
-            default: {
-              if (pb::WireFormat.IsEndGroupTag(tag)) {
-                if (unknownFields != null) {
-                  this.UnknownFields = unknownFields.Build();
-                }
-                return this;
-              }
-              if (unknownFields == null) {
-                unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-              }
-              ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name);
-              break;
-            }
-            case 8: {
-              object unknown;
-              if(input.ReadEnum(ref result.e_, out unknown)) {
-                result.hasE = true;
-              } else if(unknown is int) {
-                if (unknownFields == null) {
-                  unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-                }
-                unknownFields.MergeVarintField(1, (ulong)(int)unknown);
-              }
-              break;
-            }
-            case 18:
-            case 16: {
-              scg::ICollection<object> unknownItems;
-              input.ReadEnumArray<global::Google.ProtocolBuffers.TestProtos.MyEnum>(tag, field_name, result.repeatedE_, out unknownItems);
-              if (unknownItems != null) {
-                if (unknownFields == null) {
-                  unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-                }
-                foreach (object rawValue in unknownItems)
-                  if (rawValue is int)
-                    unknownFields.MergeVarintField(2, (ulong)(int)rawValue);
-              }
-              break;
-            }
-            case 26:
-            case 24: {
-              scg::ICollection<object> unknownItems;
-              input.ReadEnumArray<global::Google.ProtocolBuffers.TestProtos.MyEnum>(tag, field_name, result.repeatedPackedE_, out unknownItems);
-              if (unknownItems != null) {
-                if (unknownFields == null) {
-                  unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-                }
-                foreach (object rawValue in unknownItems)
-                  if (rawValue is int)
-                    unknownFields.MergeVarintField(3, (ulong)(int)rawValue);
-              }
-              break;
-            }
-            case 34:
-            case 32: {
-              scg::ICollection<object> unknownItems;
-              input.ReadEnumArray<global::Google.ProtocolBuffers.TestProtos.MyEnumPlusExtra>(tag, field_name, result.repeatedPackedUnexpectedE_, out unknownItems);
-              if (unknownItems != null) {
-                if (unknownFields == null) {
-                  unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-                }
-                foreach (object rawValue in unknownItems)
-                  if (rawValue is int)
-                    unknownFields.MergeVarintField(4, (ulong)(int)rawValue);
-              }
-              break;
-            }
-            case 40: {
-              object unknown;
-              if(input.ReadEnum(ref result.oneofE1_, out unknown)) {
-                result.hasOneofE1 = true;
-              } else if(unknown is int) {
-                if (unknownFields == null) {
-                  unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-                }
-                unknownFields.MergeVarintField(5, (ulong)(int)unknown);
-              }
-              break;
-            }
-            case 48: {
-              object unknown;
-              if(input.ReadEnum(ref result.oneofE2_, out unknown)) {
-                result.hasOneofE2 = true;
-              } else if(unknown is int) {
-                if (unknownFields == null) {
-                  unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-                }
-                unknownFields.MergeVarintField(6, (ulong)(int)unknown);
-              }
-              break;
-            }
-          }
-        }
-
-        if (unknownFields != null) {
-          this.UnknownFields = unknownFields.Build();
-        }
-        return this;
-      }
-
-
-      public bool HasE {
-       get { return result.hasE; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.MyEnum E {
-        get { return result.E; }
-        set { SetE(value); }
-      }
-      public Builder SetE(global::Google.ProtocolBuffers.TestProtos.MyEnum value) {
-        PrepareBuilder();
-        result.hasE = true;
-        result.e_ = value;
-        return this;
-      }
-      public Builder ClearE() {
-        PrepareBuilder();
-        result.hasE = false;
-        result.e_ = global::Google.ProtocolBuffers.TestProtos.MyEnum.FOO;
-        return this;
-      }
-
-      public pbc::IPopsicleList<global::Google.ProtocolBuffers.TestProtos.MyEnum> RepeatedEList {
-        get { return PrepareBuilder().repeatedE_; }
-      }
-      public int RepeatedECount {
-        get { return result.RepeatedECount; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.MyEnum GetRepeatedE(int index) {
-        return result.GetRepeatedE(index);
-      }
-      public Builder SetRepeatedE(int index, global::Google.ProtocolBuffers.TestProtos.MyEnum value) {
-        PrepareBuilder();
-        result.repeatedE_[index] = value;
-        return this;
-      }
-      public Builder AddRepeatedE(global::Google.ProtocolBuffers.TestProtos.MyEnum value) {
-        PrepareBuilder();
-        result.repeatedE_.Add(value);
-        return this;
-      }
-      public Builder AddRangeRepeatedE(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.MyEnum> values) {
-        PrepareBuilder();
-        result.repeatedE_.Add(values);
-        return this;
-      }
-      public Builder ClearRepeatedE() {
-        PrepareBuilder();
-        result.repeatedE_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<global::Google.ProtocolBuffers.TestProtos.MyEnum> RepeatedPackedEList {
-        get { return PrepareBuilder().repeatedPackedE_; }
-      }
-      public int RepeatedPackedECount {
-        get { return result.RepeatedPackedECount; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.MyEnum GetRepeatedPackedE(int index) {
-        return result.GetRepeatedPackedE(index);
-      }
-      public Builder SetRepeatedPackedE(int index, global::Google.ProtocolBuffers.TestProtos.MyEnum value) {
-        PrepareBuilder();
-        result.repeatedPackedE_[index] = value;
-        return this;
-      }
-      public Builder AddRepeatedPackedE(global::Google.ProtocolBuffers.TestProtos.MyEnum value) {
-        PrepareBuilder();
-        result.repeatedPackedE_.Add(value);
-        return this;
-      }
-      public Builder AddRangeRepeatedPackedE(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.MyEnum> values) {
-        PrepareBuilder();
-        result.repeatedPackedE_.Add(values);
-        return this;
-      }
-      public Builder ClearRepeatedPackedE() {
-        PrepareBuilder();
-        result.repeatedPackedE_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<global::Google.ProtocolBuffers.TestProtos.MyEnumPlusExtra> RepeatedPackedUnexpectedEList {
-        get { return PrepareBuilder().repeatedPackedUnexpectedE_; }
-      }
-      public int RepeatedPackedUnexpectedECount {
-        get { return result.RepeatedPackedUnexpectedECount; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.MyEnumPlusExtra GetRepeatedPackedUnexpectedE(int index) {
-        return result.GetRepeatedPackedUnexpectedE(index);
-      }
-      public Builder SetRepeatedPackedUnexpectedE(int index, global::Google.ProtocolBuffers.TestProtos.MyEnumPlusExtra value) {
-        PrepareBuilder();
-        result.repeatedPackedUnexpectedE_[index] = value;
-        return this;
-      }
-      public Builder AddRepeatedPackedUnexpectedE(global::Google.ProtocolBuffers.TestProtos.MyEnumPlusExtra value) {
-        PrepareBuilder();
-        result.repeatedPackedUnexpectedE_.Add(value);
-        return this;
-      }
-      public Builder AddRangeRepeatedPackedUnexpectedE(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.MyEnumPlusExtra> values) {
-        PrepareBuilder();
-        result.repeatedPackedUnexpectedE_.Add(values);
-        return this;
-      }
-      public Builder ClearRepeatedPackedUnexpectedE() {
-        PrepareBuilder();
-        result.repeatedPackedUnexpectedE_.Clear();
-        return this;
-      }
-
-      public bool HasOneofE1 {
-       get { return result.hasOneofE1; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.MyEnum OneofE1 {
-        get { return result.OneofE1; }
-        set { SetOneofE1(value); }
-      }
-      public Builder SetOneofE1(global::Google.ProtocolBuffers.TestProtos.MyEnum value) {
-        PrepareBuilder();
-        result.hasOneofE1 = true;
-        result.oneofE1_ = value;
-        return this;
-      }
-      public Builder ClearOneofE1() {
-        PrepareBuilder();
-        result.hasOneofE1 = false;
-        result.oneofE1_ = global::Google.ProtocolBuffers.TestProtos.MyEnum.FOO;
-        return this;
-      }
-
-      public bool HasOneofE2 {
-       get { return result.hasOneofE2; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.MyEnum OneofE2 {
-        get { return result.OneofE2; }
-        set { SetOneofE2(value); }
-      }
-      public Builder SetOneofE2(global::Google.ProtocolBuffers.TestProtos.MyEnum value) {
-        PrepareBuilder();
-        result.hasOneofE2 = true;
-        result.oneofE2_ = value;
-        return this;
-      }
-      public Builder ClearOneofE2() {
-        PrepareBuilder();
-        result.hasOneofE2 = false;
-        result.oneofE2_ = global::Google.ProtocolBuffers.TestProtos.MyEnum.FOO;
-        return this;
-      }
-    }
-    static MyMessage() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnittestPreserveUnknownEnum.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class MyMessagePlusExtra : pb::GeneratedMessage<MyMessagePlusExtra, MyMessagePlusExtra.Builder> {
-    private MyMessagePlusExtra() { }
-    private static readonly MyMessagePlusExtra defaultInstance = new MyMessagePlusExtra().MakeReadOnly();
-    private static readonly string[] _myMessagePlusExtraFieldNames = new string[] { "e", "oneof_e_1", "oneof_e_2", "repeated_e", "repeated_packed_e", "repeated_packed_unexpected_e" };
-    private static readonly uint[] _myMessagePlusExtraFieldTags = new uint[] { 8, 40, 48, 16, 26, 34 };
-    public static MyMessagePlusExtra DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override MyMessagePlusExtra DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override MyMessagePlusExtra ThisMessage {
-      get { return this; }
-    }
-
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::Google.ProtocolBuffers.TestProtos.UnittestPreserveUnknownEnum.internal__static_proto3_preserve_unknown_enum_unittest_MyMessagePlusExtra__Descriptor; }
-    }
-
-    protected override pb::FieldAccess.FieldAccessorTable<MyMessagePlusExtra, MyMessagePlusExtra.Builder> InternalFieldAccessors {
-      get { return global::Google.ProtocolBuffers.TestProtos.UnittestPreserveUnknownEnum.internal__static_proto3_preserve_unknown_enum_unittest_MyMessagePlusExtra__FieldAccessorTable; }
-    }
-
-    public const int EFieldNumber = 1;
-    private bool hasE;
-    private global::Google.ProtocolBuffers.TestProtos.MyEnumPlusExtra e_ = global::Google.ProtocolBuffers.TestProtos.MyEnumPlusExtra.E_FOO;
-    public bool HasE {
-      get { return hasE; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.MyEnumPlusExtra E {
-      get { return e_; }
-    }
-
-    public const int RepeatedEFieldNumber = 2;
-    private pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.MyEnumPlusExtra> repeatedE_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.MyEnumPlusExtra>();
-    public scg::IList<global::Google.ProtocolBuffers.TestProtos.MyEnumPlusExtra> RepeatedEList {
-      get { return pbc::Lists.AsReadOnly(repeatedE_); }
-    }
-    public int RepeatedECount {
-      get { return repeatedE_.Count; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.MyEnumPlusExtra GetRepeatedE(int index) {
-      return repeatedE_[index];
-    }
-
-    public const int RepeatedPackedEFieldNumber = 3;
-    private int repeatedPackedEMemoizedSerializedSize;
-    private pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.MyEnumPlusExtra> repeatedPackedE_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.MyEnumPlusExtra>();
-    public scg::IList<global::Google.ProtocolBuffers.TestProtos.MyEnumPlusExtra> RepeatedPackedEList {
-      get { return pbc::Lists.AsReadOnly(repeatedPackedE_); }
-    }
-    public int RepeatedPackedECount {
-      get { return repeatedPackedE_.Count; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.MyEnumPlusExtra GetRepeatedPackedE(int index) {
-      return repeatedPackedE_[index];
-    }
-
-    public const int RepeatedPackedUnexpectedEFieldNumber = 4;
-    private int repeatedPackedUnexpectedEMemoizedSerializedSize;
-    private pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.MyEnumPlusExtra> repeatedPackedUnexpectedE_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.MyEnumPlusExtra>();
-    public scg::IList<global::Google.ProtocolBuffers.TestProtos.MyEnumPlusExtra> RepeatedPackedUnexpectedEList {
-      get { return pbc::Lists.AsReadOnly(repeatedPackedUnexpectedE_); }
-    }
-    public int RepeatedPackedUnexpectedECount {
-      get { return repeatedPackedUnexpectedE_.Count; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.MyEnumPlusExtra GetRepeatedPackedUnexpectedE(int index) {
-      return repeatedPackedUnexpectedE_[index];
-    }
-
-    public const int OneofE1FieldNumber = 5;
-    private bool hasOneofE1;
-    private global::Google.ProtocolBuffers.TestProtos.MyEnumPlusExtra oneofE1_ = global::Google.ProtocolBuffers.TestProtos.MyEnumPlusExtra.E_FOO;
-    public bool HasOneofE1 {
-      get { return hasOneofE1; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.MyEnumPlusExtra OneofE1 {
-      get { return oneofE1_; }
-    }
-
-    public const int OneofE2FieldNumber = 6;
-    private bool hasOneofE2;
-    private global::Google.ProtocolBuffers.TestProtos.MyEnumPlusExtra oneofE2_ = global::Google.ProtocolBuffers.TestProtos.MyEnumPlusExtra.E_FOO;
-    public bool HasOneofE2 {
-      get { return hasOneofE2; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.MyEnumPlusExtra OneofE2 {
-      get { return oneofE2_; }
-    }
-
-    public override bool IsInitialized {
-      get {
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _myMessagePlusExtraFieldNames;
-      if (hasE) {
-        output.WriteEnum(1, field_names[0], (int) E, E);
-      }
-      if (repeatedE_.Count > 0) {
-        output.WriteEnumArray(2, field_names[3], repeatedE_);
-      }
-      if (repeatedPackedE_.Count > 0) {
-        output.WritePackedEnumArray(3, field_names[4], repeatedPackedEMemoizedSerializedSize, repeatedPackedE_);
-      }
-      if (repeatedPackedUnexpectedE_.Count > 0) {
-        output.WritePackedEnumArray(4, field_names[5], repeatedPackedUnexpectedEMemoizedSerializedSize, repeatedPackedUnexpectedE_);
-      }
-      if (hasOneofE1) {
-        output.WriteEnum(5, field_names[1], (int) OneofE1, OneofE1);
-      }
-      if (hasOneofE2) {
-        output.WriteEnum(6, field_names[2], (int) OneofE2, OneofE2);
-      }
-      UnknownFields.WriteTo(output);
-    }
-
-    private int memoizedSerializedSize = -1;
-    public override int SerializedSize {
-      get {
-        int size = memoizedSerializedSize;
-        if (size != -1) return size;
-        return CalcSerializedSize();
-      }
-    }
-
-    private int CalcSerializedSize() {
-      int size = memoizedSerializedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (hasE) {
-        size += pb::CodedOutputStream.ComputeEnumSize(1, (int) E);
-      }
-      {
-        int dataSize = 0;
-        if (repeatedE_.Count > 0) {
-          foreach (global::Google.ProtocolBuffers.TestProtos.MyEnumPlusExtra element in repeatedE_) {
-            dataSize += pb::CodedOutputStream.ComputeEnumSizeNoTag((int) element);
-          }
-          size += dataSize;
-          size += 1 * repeatedE_.Count;
-        }
-      }
-      {
-        int dataSize = 0;
-        if (repeatedPackedE_.Count > 0) {
-          foreach (global::Google.ProtocolBuffers.TestProtos.MyEnumPlusExtra element in repeatedPackedE_) {
-            dataSize += pb::CodedOutputStream.ComputeEnumSizeNoTag((int) element);
-          }
-          size += dataSize;
-          size += 1;
-          size += pb::CodedOutputStream.ComputeRawVarint32Size((uint) dataSize);
-        }
-        repeatedPackedEMemoizedSerializedSize = dataSize;
-      }
-      {
-        int dataSize = 0;
-        if (repeatedPackedUnexpectedE_.Count > 0) {
-          foreach (global::Google.ProtocolBuffers.TestProtos.MyEnumPlusExtra element in repeatedPackedUnexpectedE_) {
-            dataSize += pb::CodedOutputStream.ComputeEnumSizeNoTag((int) element);
-          }
-          size += dataSize;
-          size += 1;
-          size += pb::CodedOutputStream.ComputeRawVarint32Size((uint) dataSize);
-        }
-        repeatedPackedUnexpectedEMemoizedSerializedSize = dataSize;
-      }
-      if (hasOneofE1) {
-        size += pb::CodedOutputStream.ComputeEnumSize(5, (int) OneofE1);
-      }
-      if (hasOneofE2) {
-        size += pb::CodedOutputStream.ComputeEnumSize(6, (int) OneofE2);
-      }
-      size += UnknownFields.SerializedSize;
-      memoizedSerializedSize = size;
-      return size;
-    }
-    public static MyMessagePlusExtra ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static MyMessagePlusExtra ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static MyMessagePlusExtra ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static MyMessagePlusExtra ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static MyMessagePlusExtra ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static MyMessagePlusExtra ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static MyMessagePlusExtra ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static MyMessagePlusExtra ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static MyMessagePlusExtra ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static MyMessagePlusExtra ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private MyMessagePlusExtra MakeReadOnly() {
-      repeatedE_.MakeReadOnly();
-      repeatedPackedE_.MakeReadOnly();
-      repeatedPackedUnexpectedE_.MakeReadOnly();
-      return this;
-    }
-
-    public static Builder CreateBuilder() { return new Builder(); }
-    public override Builder ToBuilder() { return CreateBuilder(this); }
-    public override Builder CreateBuilderForType() { return new Builder(); }
-    public static Builder CreateBuilder(MyMessagePlusExtra prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilder<MyMessagePlusExtra, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(MyMessagePlusExtra cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private MyMessagePlusExtra result;
-
-      private MyMessagePlusExtra PrepareBuilder() {
-        if (resultIsReadOnly) {
-          MyMessagePlusExtra original = result;
-          result = new MyMessagePlusExtra();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override MyMessagePlusExtra MessageBeingBuilt {
-        get { return PrepareBuilder(); }
-      }
-
-      public override Builder Clear() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-        return this;
-      }
-
-      public override Builder Clone() {
-        if (resultIsReadOnly) {
-          return new Builder(result);
-        } else {
-          return new Builder().MergeFrom(result);
-        }
-      }
-
-      public override pbd::MessageDescriptor DescriptorForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.MyMessagePlusExtra.Descriptor; }
-      }
-
-      public override MyMessagePlusExtra DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.MyMessagePlusExtra.DefaultInstance; }
-      }
-
-      public override MyMessagePlusExtra BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is MyMessagePlusExtra) {
-          return MergeFrom((MyMessagePlusExtra) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(MyMessagePlusExtra other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.MyMessagePlusExtra.DefaultInstance) return this;
-        PrepareBuilder();
-        if (other.HasE) {
-          E = other.E;
-        }
-        if (other.repeatedE_.Count != 0) {
-          result.repeatedE_.Add(other.repeatedE_);
-        }
-        if (other.repeatedPackedE_.Count != 0) {
-          result.repeatedPackedE_.Add(other.repeatedPackedE_);
-        }
-        if (other.repeatedPackedUnexpectedE_.Count != 0) {
-          result.repeatedPackedUnexpectedE_.Add(other.repeatedPackedUnexpectedE_);
-        }
-        if (other.HasOneofE1) {
-          OneofE1 = other.OneofE1;
-        }
-        if (other.HasOneofE2) {
-          OneofE2 = other.OneofE2;
-        }
-        this.MergeUnknownFields(other.UnknownFields);
-        return this;
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input) {
-        return MergeFrom(input, pb::ExtensionRegistry.Empty);
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-        PrepareBuilder();
-        pb::UnknownFieldSet.Builder unknownFields = null;
-        uint tag;
-        string field_name;
-        while (input.ReadTag(out tag, out field_name)) {
-          if(tag == 0 && field_name != null) {
-            int field_ordinal = global::System.Array.BinarySearch(_myMessagePlusExtraFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _myMessagePlusExtraFieldTags[field_ordinal];
-            else {
-              if (unknownFields == null) {
-                unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-              }
-              ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name);
-              continue;
-            }
-          }
-          switch (tag) {
-            case 0: {
-              throw pb::InvalidProtocolBufferException.InvalidTag();
-            }
-            default: {
-              if (pb::WireFormat.IsEndGroupTag(tag)) {
-                if (unknownFields != null) {
-                  this.UnknownFields = unknownFields.Build();
-                }
-                return this;
-              }
-              if (unknownFields == null) {
-                unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-              }
-              ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name);
-              break;
-            }
-            case 8: {
-              object unknown;
-              if(input.ReadEnum(ref result.e_, out unknown)) {
-                result.hasE = true;
-              } else if(unknown is int) {
-                if (unknownFields == null) {
-                  unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-                }
-                unknownFields.MergeVarintField(1, (ulong)(int)unknown);
-              }
-              break;
-            }
-            case 18:
-            case 16: {
-              scg::ICollection<object> unknownItems;
-              input.ReadEnumArray<global::Google.ProtocolBuffers.TestProtos.MyEnumPlusExtra>(tag, field_name, result.repeatedE_, out unknownItems);
-              if (unknownItems != null) {
-                if (unknownFields == null) {
-                  unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-                }
-                foreach (object rawValue in unknownItems)
-                  if (rawValue is int)
-                    unknownFields.MergeVarintField(2, (ulong)(int)rawValue);
-              }
-              break;
-            }
-            case 26:
-            case 24: {
-              scg::ICollection<object> unknownItems;
-              input.ReadEnumArray<global::Google.ProtocolBuffers.TestProtos.MyEnumPlusExtra>(tag, field_name, result.repeatedPackedE_, out unknownItems);
-              if (unknownItems != null) {
-                if (unknownFields == null) {
-                  unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-                }
-                foreach (object rawValue in unknownItems)
-                  if (rawValue is int)
-                    unknownFields.MergeVarintField(3, (ulong)(int)rawValue);
-              }
-              break;
-            }
-            case 34:
-            case 32: {
-              scg::ICollection<object> unknownItems;
-              input.ReadEnumArray<global::Google.ProtocolBuffers.TestProtos.MyEnumPlusExtra>(tag, field_name, result.repeatedPackedUnexpectedE_, out unknownItems);
-              if (unknownItems != null) {
-                if (unknownFields == null) {
-                  unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-                }
-                foreach (object rawValue in unknownItems)
-                  if (rawValue is int)
-                    unknownFields.MergeVarintField(4, (ulong)(int)rawValue);
-              }
-              break;
-            }
-            case 40: {
-              object unknown;
-              if(input.ReadEnum(ref result.oneofE1_, out unknown)) {
-                result.hasOneofE1 = true;
-              } else if(unknown is int) {
-                if (unknownFields == null) {
-                  unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-                }
-                unknownFields.MergeVarintField(5, (ulong)(int)unknown);
-              }
-              break;
-            }
-            case 48: {
-              object unknown;
-              if(input.ReadEnum(ref result.oneofE2_, out unknown)) {
-                result.hasOneofE2 = true;
-              } else if(unknown is int) {
-                if (unknownFields == null) {
-                  unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-                }
-                unknownFields.MergeVarintField(6, (ulong)(int)unknown);
-              }
-              break;
-            }
-          }
-        }
-
-        if (unknownFields != null) {
-          this.UnknownFields = unknownFields.Build();
-        }
-        return this;
-      }
-
-
-      public bool HasE {
-       get { return result.hasE; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.MyEnumPlusExtra E {
-        get { return result.E; }
-        set { SetE(value); }
-      }
-      public Builder SetE(global::Google.ProtocolBuffers.TestProtos.MyEnumPlusExtra value) {
-        PrepareBuilder();
-        result.hasE = true;
-        result.e_ = value;
-        return this;
-      }
-      public Builder ClearE() {
-        PrepareBuilder();
-        result.hasE = false;
-        result.e_ = global::Google.ProtocolBuffers.TestProtos.MyEnumPlusExtra.E_FOO;
-        return this;
-      }
-
-      public pbc::IPopsicleList<global::Google.ProtocolBuffers.TestProtos.MyEnumPlusExtra> RepeatedEList {
-        get { return PrepareBuilder().repeatedE_; }
-      }
-      public int RepeatedECount {
-        get { return result.RepeatedECount; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.MyEnumPlusExtra GetRepeatedE(int index) {
-        return result.GetRepeatedE(index);
-      }
-      public Builder SetRepeatedE(int index, global::Google.ProtocolBuffers.TestProtos.MyEnumPlusExtra value) {
-        PrepareBuilder();
-        result.repeatedE_[index] = value;
-        return this;
-      }
-      public Builder AddRepeatedE(global::Google.ProtocolBuffers.TestProtos.MyEnumPlusExtra value) {
-        PrepareBuilder();
-        result.repeatedE_.Add(value);
-        return this;
-      }
-      public Builder AddRangeRepeatedE(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.MyEnumPlusExtra> values) {
-        PrepareBuilder();
-        result.repeatedE_.Add(values);
-        return this;
-      }
-      public Builder ClearRepeatedE() {
-        PrepareBuilder();
-        result.repeatedE_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<global::Google.ProtocolBuffers.TestProtos.MyEnumPlusExtra> RepeatedPackedEList {
-        get { return PrepareBuilder().repeatedPackedE_; }
-      }
-      public int RepeatedPackedECount {
-        get { return result.RepeatedPackedECount; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.MyEnumPlusExtra GetRepeatedPackedE(int index) {
-        return result.GetRepeatedPackedE(index);
-      }
-      public Builder SetRepeatedPackedE(int index, global::Google.ProtocolBuffers.TestProtos.MyEnumPlusExtra value) {
-        PrepareBuilder();
-        result.repeatedPackedE_[index] = value;
-        return this;
-      }
-      public Builder AddRepeatedPackedE(global::Google.ProtocolBuffers.TestProtos.MyEnumPlusExtra value) {
-        PrepareBuilder();
-        result.repeatedPackedE_.Add(value);
-        return this;
-      }
-      public Builder AddRangeRepeatedPackedE(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.MyEnumPlusExtra> values) {
-        PrepareBuilder();
-        result.repeatedPackedE_.Add(values);
-        return this;
-      }
-      public Builder ClearRepeatedPackedE() {
-        PrepareBuilder();
-        result.repeatedPackedE_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<global::Google.ProtocolBuffers.TestProtos.MyEnumPlusExtra> RepeatedPackedUnexpectedEList {
-        get { return PrepareBuilder().repeatedPackedUnexpectedE_; }
-      }
-      public int RepeatedPackedUnexpectedECount {
-        get { return result.RepeatedPackedUnexpectedECount; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.MyEnumPlusExtra GetRepeatedPackedUnexpectedE(int index) {
-        return result.GetRepeatedPackedUnexpectedE(index);
-      }
-      public Builder SetRepeatedPackedUnexpectedE(int index, global::Google.ProtocolBuffers.TestProtos.MyEnumPlusExtra value) {
-        PrepareBuilder();
-        result.repeatedPackedUnexpectedE_[index] = value;
-        return this;
-      }
-      public Builder AddRepeatedPackedUnexpectedE(global::Google.ProtocolBuffers.TestProtos.MyEnumPlusExtra value) {
-        PrepareBuilder();
-        result.repeatedPackedUnexpectedE_.Add(value);
-        return this;
-      }
-      public Builder AddRangeRepeatedPackedUnexpectedE(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.MyEnumPlusExtra> values) {
-        PrepareBuilder();
-        result.repeatedPackedUnexpectedE_.Add(values);
-        return this;
-      }
-      public Builder ClearRepeatedPackedUnexpectedE() {
-        PrepareBuilder();
-        result.repeatedPackedUnexpectedE_.Clear();
-        return this;
-      }
-
-      public bool HasOneofE1 {
-       get { return result.hasOneofE1; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.MyEnumPlusExtra OneofE1 {
-        get { return result.OneofE1; }
-        set { SetOneofE1(value); }
-      }
-      public Builder SetOneofE1(global::Google.ProtocolBuffers.TestProtos.MyEnumPlusExtra value) {
-        PrepareBuilder();
-        result.hasOneofE1 = true;
-        result.oneofE1_ = value;
-        return this;
-      }
-      public Builder ClearOneofE1() {
-        PrepareBuilder();
-        result.hasOneofE1 = false;
-        result.oneofE1_ = global::Google.ProtocolBuffers.TestProtos.MyEnumPlusExtra.E_FOO;
-        return this;
-      }
-
-      public bool HasOneofE2 {
-       get { return result.hasOneofE2; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.MyEnumPlusExtra OneofE2 {
-        get { return result.OneofE2; }
-        set { SetOneofE2(value); }
-      }
-      public Builder SetOneofE2(global::Google.ProtocolBuffers.TestProtos.MyEnumPlusExtra value) {
-        PrepareBuilder();
-        result.hasOneofE2 = true;
-        result.oneofE2_ = value;
-        return this;
-      }
-      public Builder ClearOneofE2() {
-        PrepareBuilder();
-        result.hasOneofE2 = false;
-        result.oneofE2_ = global::Google.ProtocolBuffers.TestProtos.MyEnumPlusExtra.E_FOO;
-        return this;
-      }
-    }
-    static MyMessagePlusExtra() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnittestPreserveUnknownEnum.Descriptor, null);
-    }
-  }
-
-  #endregion
-
-}
-
-#endregion Designer generated code

+ 0 - 684
csharp/src/ProtocolBuffers.Test/TestProtos/UnittestPreserveUnknownEnum2.cs

@@ -1,684 +0,0 @@
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
-// source: google/protobuf/unittest_preserve_unknown_enum2.proto
-#pragma warning disable 1591, 0612, 3021
-#region Designer generated code
-
-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 {
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public static partial class UnittestPreserveUnknownEnum2 {
-
-    #region Extension registration
-    public static void RegisterAllExtensions(pb::ExtensionRegistry registry) {
-    }
-    #endregion
-    #region Static variables
-    internal static pbd::MessageDescriptor internal__static_proto2_preserve_unknown_enum_unittest_MyMessage__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.MyMessage, global::Google.ProtocolBuffers.TestProtos.MyMessage.Builder> internal__static_proto2_preserve_unknown_enum_unittest_MyMessage__FieldAccessorTable;
-    #endregion
-    #region Descriptor
-    public static pbd::FileDescriptor Descriptor {
-      get { return descriptor; }
-    }
-    private static pbd::FileDescriptor descriptor;
-
-    static UnittestPreserveUnknownEnum2() {
-      byte[] descriptorData = global::System.Convert.FromBase64String(
-          string.Concat(
-            "CjVnb29nbGUvcHJvdG9idWYvdW5pdHRlc3RfcHJlc2VydmVfdW5rbm93bl9l", 
-            "bnVtMi5wcm90bxIlcHJvdG8yX3ByZXNlcnZlX3Vua25vd25fZW51bV91bml0", 
-            "dGVzdCK4AwoJTXlNZXNzYWdlEjgKAWUYASABKA4yLS5wcm90bzJfcHJlc2Vy", 
-            "dmVfdW5rbm93bl9lbnVtX3VuaXR0ZXN0Lk15RW51bRJBCgpyZXBlYXRlZF9l", 
-            "GAIgAygOMi0ucHJvdG8yX3ByZXNlcnZlX3Vua25vd25fZW51bV91bml0dGVz", 
-            "dC5NeUVudW0STAoRcmVwZWF0ZWRfcGFja2VkX2UYAyADKA4yLS5wcm90bzJf", 
-            "cHJlc2VydmVfdW5rbm93bl9lbnVtX3VuaXR0ZXN0Lk15RW51bUICEAESUwoc", 
-            "cmVwZWF0ZWRfcGFja2VkX3VuZXhwZWN0ZWRfZRgEIAMoDjItLnByb3RvMl9w", 
-            "cmVzZXJ2ZV91bmtub3duX2VudW1fdW5pdHRlc3QuTXlFbnVtEkIKCW9uZW9m", 
-            "X2VfMRgFIAEoDjItLnByb3RvMl9wcmVzZXJ2ZV91bmtub3duX2VudW1fdW5p", 
-            "dHRlc3QuTXlFbnVtSAASQgoJb25lb2ZfZV8yGAYgASgOMi0ucHJvdG8yX3By", 
-            "ZXNlcnZlX3Vua25vd25fZW51bV91bml0dGVzdC5NeUVudW1IAEIDCgFvKiMK", 
-            "Bk15RW51bRIHCgNGT08QABIHCgNCQVIQARIHCgNCQVoQAkIkqgIhR29vZ2xl", 
-          "LlByb3RvY29sQnVmZmVycy5UZXN0UHJvdG9z"));
-      pbd::FileDescriptor.InternalDescriptorAssigner assigner = delegate(pbd::FileDescriptor root) {
-        descriptor = root;
-        internal__static_proto2_preserve_unknown_enum_unittest_MyMessage__Descriptor = Descriptor.MessageTypes[0];
-        internal__static_proto2_preserve_unknown_enum_unittest_MyMessage__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.MyMessage, global::Google.ProtocolBuffers.TestProtos.MyMessage.Builder>(internal__static_proto2_preserve_unknown_enum_unittest_MyMessage__Descriptor,
-                new string[] { "E", "RepeatedE", "RepeatedPackedE", "RepeatedPackedUnexpectedE", "OneofE1", "OneofE2", });
-        pb::ExtensionRegistry registry = pb::ExtensionRegistry.CreateInstance();
-        RegisterAllExtensions(registry);
-        return registry;
-      };
-      pbd::FileDescriptor.InternalBuildGeneratedFileFrom(descriptorData,
-          new pbd::FileDescriptor[] {
-          }, assigner);
-    }
-    #endregion
-
-  }
-  #region Enums
-  public enum MyEnum {
-    FOO = 0,
-    BAR = 1,
-    BAZ = 2,
-  }
-
-  #endregion
-
-  #region Messages
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class MyMessage : pb::GeneratedMessage<MyMessage, MyMessage.Builder> {
-    private MyMessage() { }
-    private static readonly MyMessage defaultInstance = new MyMessage().MakeReadOnly();
-    private static readonly string[] _myMessageFieldNames = new string[] { "e", "oneof_e_1", "oneof_e_2", "repeated_e", "repeated_packed_e", "repeated_packed_unexpected_e" };
-    private static readonly uint[] _myMessageFieldTags = new uint[] { 8, 40, 48, 16, 26, 32 };
-    public static MyMessage DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override MyMessage DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override MyMessage ThisMessage {
-      get { return this; }
-    }
-
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::Google.ProtocolBuffers.TestProtos.UnittestPreserveUnknownEnum2.internal__static_proto2_preserve_unknown_enum_unittest_MyMessage__Descriptor; }
-    }
-
-    protected override pb::FieldAccess.FieldAccessorTable<MyMessage, MyMessage.Builder> InternalFieldAccessors {
-      get { return global::Google.ProtocolBuffers.TestProtos.UnittestPreserveUnknownEnum2.internal__static_proto2_preserve_unknown_enum_unittest_MyMessage__FieldAccessorTable; }
-    }
-
-    public const int EFieldNumber = 1;
-    private bool hasE;
-    private global::Google.ProtocolBuffers.TestProtos.MyEnum e_ = global::Google.ProtocolBuffers.TestProtos.MyEnum.FOO;
-    public bool HasE {
-      get { return hasE; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.MyEnum E {
-      get { return e_; }
-    }
-
-    public const int RepeatedEFieldNumber = 2;
-    private pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.MyEnum> repeatedE_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.MyEnum>();
-    public scg::IList<global::Google.ProtocolBuffers.TestProtos.MyEnum> RepeatedEList {
-      get { return pbc::Lists.AsReadOnly(repeatedE_); }
-    }
-    public int RepeatedECount {
-      get { return repeatedE_.Count; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.MyEnum GetRepeatedE(int index) {
-      return repeatedE_[index];
-    }
-
-    public const int RepeatedPackedEFieldNumber = 3;
-    private int repeatedPackedEMemoizedSerializedSize;
-    private pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.MyEnum> repeatedPackedE_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.MyEnum>();
-    public scg::IList<global::Google.ProtocolBuffers.TestProtos.MyEnum> RepeatedPackedEList {
-      get { return pbc::Lists.AsReadOnly(repeatedPackedE_); }
-    }
-    public int RepeatedPackedECount {
-      get { return repeatedPackedE_.Count; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.MyEnum GetRepeatedPackedE(int index) {
-      return repeatedPackedE_[index];
-    }
-
-    public const int RepeatedPackedUnexpectedEFieldNumber = 4;
-    private pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.MyEnum> repeatedPackedUnexpectedE_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.MyEnum>();
-    public scg::IList<global::Google.ProtocolBuffers.TestProtos.MyEnum> RepeatedPackedUnexpectedEList {
-      get { return pbc::Lists.AsReadOnly(repeatedPackedUnexpectedE_); }
-    }
-    public int RepeatedPackedUnexpectedECount {
-      get { return repeatedPackedUnexpectedE_.Count; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.MyEnum GetRepeatedPackedUnexpectedE(int index) {
-      return repeatedPackedUnexpectedE_[index];
-    }
-
-    public const int OneofE1FieldNumber = 5;
-    private bool hasOneofE1;
-    private global::Google.ProtocolBuffers.TestProtos.MyEnum oneofE1_ = global::Google.ProtocolBuffers.TestProtos.MyEnum.FOO;
-    public bool HasOneofE1 {
-      get { return hasOneofE1; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.MyEnum OneofE1 {
-      get { return oneofE1_; }
-    }
-
-    public const int OneofE2FieldNumber = 6;
-    private bool hasOneofE2;
-    private global::Google.ProtocolBuffers.TestProtos.MyEnum oneofE2_ = global::Google.ProtocolBuffers.TestProtos.MyEnum.FOO;
-    public bool HasOneofE2 {
-      get { return hasOneofE2; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.MyEnum OneofE2 {
-      get { return oneofE2_; }
-    }
-
-    public override bool IsInitialized {
-      get {
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _myMessageFieldNames;
-      if (hasE) {
-        output.WriteEnum(1, field_names[0], (int) E, E);
-      }
-      if (repeatedE_.Count > 0) {
-        output.WriteEnumArray(2, field_names[3], repeatedE_);
-      }
-      if (repeatedPackedE_.Count > 0) {
-        output.WritePackedEnumArray(3, field_names[4], repeatedPackedEMemoizedSerializedSize, repeatedPackedE_);
-      }
-      if (repeatedPackedUnexpectedE_.Count > 0) {
-        output.WriteEnumArray(4, field_names[5], repeatedPackedUnexpectedE_);
-      }
-      if (hasOneofE1) {
-        output.WriteEnum(5, field_names[1], (int) OneofE1, OneofE1);
-      }
-      if (hasOneofE2) {
-        output.WriteEnum(6, field_names[2], (int) OneofE2, OneofE2);
-      }
-      UnknownFields.WriteTo(output);
-    }
-
-    private int memoizedSerializedSize = -1;
-    public override int SerializedSize {
-      get {
-        int size = memoizedSerializedSize;
-        if (size != -1) return size;
-        return CalcSerializedSize();
-      }
-    }
-
-    private int CalcSerializedSize() {
-      int size = memoizedSerializedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (hasE) {
-        size += pb::CodedOutputStream.ComputeEnumSize(1, (int) E);
-      }
-      {
-        int dataSize = 0;
-        if (repeatedE_.Count > 0) {
-          foreach (global::Google.ProtocolBuffers.TestProtos.MyEnum element in repeatedE_) {
-            dataSize += pb::CodedOutputStream.ComputeEnumSizeNoTag((int) element);
-          }
-          size += dataSize;
-          size += 1 * repeatedE_.Count;
-        }
-      }
-      {
-        int dataSize = 0;
-        if (repeatedPackedE_.Count > 0) {
-          foreach (global::Google.ProtocolBuffers.TestProtos.MyEnum element in repeatedPackedE_) {
-            dataSize += pb::CodedOutputStream.ComputeEnumSizeNoTag((int) element);
-          }
-          size += dataSize;
-          size += 1;
-          size += pb::CodedOutputStream.ComputeRawVarint32Size((uint) dataSize);
-        }
-        repeatedPackedEMemoizedSerializedSize = dataSize;
-      }
-      {
-        int dataSize = 0;
-        if (repeatedPackedUnexpectedE_.Count > 0) {
-          foreach (global::Google.ProtocolBuffers.TestProtos.MyEnum element in repeatedPackedUnexpectedE_) {
-            dataSize += pb::CodedOutputStream.ComputeEnumSizeNoTag((int) element);
-          }
-          size += dataSize;
-          size += 1 * repeatedPackedUnexpectedE_.Count;
-        }
-      }
-      if (hasOneofE1) {
-        size += pb::CodedOutputStream.ComputeEnumSize(5, (int) OneofE1);
-      }
-      if (hasOneofE2) {
-        size += pb::CodedOutputStream.ComputeEnumSize(6, (int) OneofE2);
-      }
-      size += UnknownFields.SerializedSize;
-      memoizedSerializedSize = size;
-      return size;
-    }
-    public static MyMessage ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static MyMessage ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static MyMessage ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static MyMessage ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static MyMessage ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static MyMessage ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static MyMessage ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static MyMessage ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static MyMessage ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static MyMessage ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private MyMessage MakeReadOnly() {
-      repeatedE_.MakeReadOnly();
-      repeatedPackedE_.MakeReadOnly();
-      repeatedPackedUnexpectedE_.MakeReadOnly();
-      return this;
-    }
-
-    public static Builder CreateBuilder() { return new Builder(); }
-    public override Builder ToBuilder() { return CreateBuilder(this); }
-    public override Builder CreateBuilderForType() { return new Builder(); }
-    public static Builder CreateBuilder(MyMessage prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilder<MyMessage, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(MyMessage cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private MyMessage result;
-
-      private MyMessage PrepareBuilder() {
-        if (resultIsReadOnly) {
-          MyMessage original = result;
-          result = new MyMessage();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override MyMessage MessageBeingBuilt {
-        get { return PrepareBuilder(); }
-      }
-
-      public override Builder Clear() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-        return this;
-      }
-
-      public override Builder Clone() {
-        if (resultIsReadOnly) {
-          return new Builder(result);
-        } else {
-          return new Builder().MergeFrom(result);
-        }
-      }
-
-      public override pbd::MessageDescriptor DescriptorForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.MyMessage.Descriptor; }
-      }
-
-      public override MyMessage DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.MyMessage.DefaultInstance; }
-      }
-
-      public override MyMessage BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is MyMessage) {
-          return MergeFrom((MyMessage) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(MyMessage other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.MyMessage.DefaultInstance) return this;
-        PrepareBuilder();
-        if (other.HasE) {
-          E = other.E;
-        }
-        if (other.repeatedE_.Count != 0) {
-          result.repeatedE_.Add(other.repeatedE_);
-        }
-        if (other.repeatedPackedE_.Count != 0) {
-          result.repeatedPackedE_.Add(other.repeatedPackedE_);
-        }
-        if (other.repeatedPackedUnexpectedE_.Count != 0) {
-          result.repeatedPackedUnexpectedE_.Add(other.repeatedPackedUnexpectedE_);
-        }
-        if (other.HasOneofE1) {
-          OneofE1 = other.OneofE1;
-        }
-        if (other.HasOneofE2) {
-          OneofE2 = other.OneofE2;
-        }
-        this.MergeUnknownFields(other.UnknownFields);
-        return this;
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input) {
-        return MergeFrom(input, pb::ExtensionRegistry.Empty);
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-        PrepareBuilder();
-        pb::UnknownFieldSet.Builder unknownFields = null;
-        uint tag;
-        string field_name;
-        while (input.ReadTag(out tag, out field_name)) {
-          if(tag == 0 && field_name != null) {
-            int field_ordinal = global::System.Array.BinarySearch(_myMessageFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _myMessageFieldTags[field_ordinal];
-            else {
-              if (unknownFields == null) {
-                unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-              }
-              ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name);
-              continue;
-            }
-          }
-          switch (tag) {
-            case 0: {
-              throw pb::InvalidProtocolBufferException.InvalidTag();
-            }
-            default: {
-              if (pb::WireFormat.IsEndGroupTag(tag)) {
-                if (unknownFields != null) {
-                  this.UnknownFields = unknownFields.Build();
-                }
-                return this;
-              }
-              if (unknownFields == null) {
-                unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-              }
-              ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name);
-              break;
-            }
-            case 8: {
-              object unknown;
-              if(input.ReadEnum(ref result.e_, out unknown)) {
-                result.hasE = true;
-              } else if(unknown is int) {
-                if (unknownFields == null) {
-                  unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-                }
-                unknownFields.MergeVarintField(1, (ulong)(int)unknown);
-              }
-              break;
-            }
-            case 18:
-            case 16: {
-              scg::ICollection<object> unknownItems;
-              input.ReadEnumArray<global::Google.ProtocolBuffers.TestProtos.MyEnum>(tag, field_name, result.repeatedE_, out unknownItems);
-              if (unknownItems != null) {
-                if (unknownFields == null) {
-                  unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-                }
-                foreach (object rawValue in unknownItems)
-                  if (rawValue is int)
-                    unknownFields.MergeVarintField(2, (ulong)(int)rawValue);
-              }
-              break;
-            }
-            case 26:
-            case 24: {
-              scg::ICollection<object> unknownItems;
-              input.ReadEnumArray<global::Google.ProtocolBuffers.TestProtos.MyEnum>(tag, field_name, result.repeatedPackedE_, out unknownItems);
-              if (unknownItems != null) {
-                if (unknownFields == null) {
-                  unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-                }
-                foreach (object rawValue in unknownItems)
-                  if (rawValue is int)
-                    unknownFields.MergeVarintField(3, (ulong)(int)rawValue);
-              }
-              break;
-            }
-            case 34:
-            case 32: {
-              scg::ICollection<object> unknownItems;
-              input.ReadEnumArray<global::Google.ProtocolBuffers.TestProtos.MyEnum>(tag, field_name, result.repeatedPackedUnexpectedE_, out unknownItems);
-              if (unknownItems != null) {
-                if (unknownFields == null) {
-                  unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-                }
-                foreach (object rawValue in unknownItems)
-                  if (rawValue is int)
-                    unknownFields.MergeVarintField(4, (ulong)(int)rawValue);
-              }
-              break;
-            }
-            case 40: {
-              object unknown;
-              if(input.ReadEnum(ref result.oneofE1_, out unknown)) {
-                result.hasOneofE1 = true;
-              } else if(unknown is int) {
-                if (unknownFields == null) {
-                  unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-                }
-                unknownFields.MergeVarintField(5, (ulong)(int)unknown);
-              }
-              break;
-            }
-            case 48: {
-              object unknown;
-              if(input.ReadEnum(ref result.oneofE2_, out unknown)) {
-                result.hasOneofE2 = true;
-              } else if(unknown is int) {
-                if (unknownFields == null) {
-                  unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-                }
-                unknownFields.MergeVarintField(6, (ulong)(int)unknown);
-              }
-              break;
-            }
-          }
-        }
-
-        if (unknownFields != null) {
-          this.UnknownFields = unknownFields.Build();
-        }
-        return this;
-      }
-
-
-      public bool HasE {
-       get { return result.hasE; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.MyEnum E {
-        get { return result.E; }
-        set { SetE(value); }
-      }
-      public Builder SetE(global::Google.ProtocolBuffers.TestProtos.MyEnum value) {
-        PrepareBuilder();
-        result.hasE = true;
-        result.e_ = value;
-        return this;
-      }
-      public Builder ClearE() {
-        PrepareBuilder();
-        result.hasE = false;
-        result.e_ = global::Google.ProtocolBuffers.TestProtos.MyEnum.FOO;
-        return this;
-      }
-
-      public pbc::IPopsicleList<global::Google.ProtocolBuffers.TestProtos.MyEnum> RepeatedEList {
-        get { return PrepareBuilder().repeatedE_; }
-      }
-      public int RepeatedECount {
-        get { return result.RepeatedECount; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.MyEnum GetRepeatedE(int index) {
-        return result.GetRepeatedE(index);
-      }
-      public Builder SetRepeatedE(int index, global::Google.ProtocolBuffers.TestProtos.MyEnum value) {
-        PrepareBuilder();
-        result.repeatedE_[index] = value;
-        return this;
-      }
-      public Builder AddRepeatedE(global::Google.ProtocolBuffers.TestProtos.MyEnum value) {
-        PrepareBuilder();
-        result.repeatedE_.Add(value);
-        return this;
-      }
-      public Builder AddRangeRepeatedE(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.MyEnum> values) {
-        PrepareBuilder();
-        result.repeatedE_.Add(values);
-        return this;
-      }
-      public Builder ClearRepeatedE() {
-        PrepareBuilder();
-        result.repeatedE_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<global::Google.ProtocolBuffers.TestProtos.MyEnum> RepeatedPackedEList {
-        get { return PrepareBuilder().repeatedPackedE_; }
-      }
-      public int RepeatedPackedECount {
-        get { return result.RepeatedPackedECount; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.MyEnum GetRepeatedPackedE(int index) {
-        return result.GetRepeatedPackedE(index);
-      }
-      public Builder SetRepeatedPackedE(int index, global::Google.ProtocolBuffers.TestProtos.MyEnum value) {
-        PrepareBuilder();
-        result.repeatedPackedE_[index] = value;
-        return this;
-      }
-      public Builder AddRepeatedPackedE(global::Google.ProtocolBuffers.TestProtos.MyEnum value) {
-        PrepareBuilder();
-        result.repeatedPackedE_.Add(value);
-        return this;
-      }
-      public Builder AddRangeRepeatedPackedE(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.MyEnum> values) {
-        PrepareBuilder();
-        result.repeatedPackedE_.Add(values);
-        return this;
-      }
-      public Builder ClearRepeatedPackedE() {
-        PrepareBuilder();
-        result.repeatedPackedE_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<global::Google.ProtocolBuffers.TestProtos.MyEnum> RepeatedPackedUnexpectedEList {
-        get { return PrepareBuilder().repeatedPackedUnexpectedE_; }
-      }
-      public int RepeatedPackedUnexpectedECount {
-        get { return result.RepeatedPackedUnexpectedECount; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.MyEnum GetRepeatedPackedUnexpectedE(int index) {
-        return result.GetRepeatedPackedUnexpectedE(index);
-      }
-      public Builder SetRepeatedPackedUnexpectedE(int index, global::Google.ProtocolBuffers.TestProtos.MyEnum value) {
-        PrepareBuilder();
-        result.repeatedPackedUnexpectedE_[index] = value;
-        return this;
-      }
-      public Builder AddRepeatedPackedUnexpectedE(global::Google.ProtocolBuffers.TestProtos.MyEnum value) {
-        PrepareBuilder();
-        result.repeatedPackedUnexpectedE_.Add(value);
-        return this;
-      }
-      public Builder AddRangeRepeatedPackedUnexpectedE(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.MyEnum> values) {
-        PrepareBuilder();
-        result.repeatedPackedUnexpectedE_.Add(values);
-        return this;
-      }
-      public Builder ClearRepeatedPackedUnexpectedE() {
-        PrepareBuilder();
-        result.repeatedPackedUnexpectedE_.Clear();
-        return this;
-      }
-
-      public bool HasOneofE1 {
-       get { return result.hasOneofE1; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.MyEnum OneofE1 {
-        get { return result.OneofE1; }
-        set { SetOneofE1(value); }
-      }
-      public Builder SetOneofE1(global::Google.ProtocolBuffers.TestProtos.MyEnum value) {
-        PrepareBuilder();
-        result.hasOneofE1 = true;
-        result.oneofE1_ = value;
-        return this;
-      }
-      public Builder ClearOneofE1() {
-        PrepareBuilder();
-        result.hasOneofE1 = false;
-        result.oneofE1_ = global::Google.ProtocolBuffers.TestProtos.MyEnum.FOO;
-        return this;
-      }
-
-      public bool HasOneofE2 {
-       get { return result.hasOneofE2; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.MyEnum OneofE2 {
-        get { return result.OneofE2; }
-        set { SetOneofE2(value); }
-      }
-      public Builder SetOneofE2(global::Google.ProtocolBuffers.TestProtos.MyEnum value) {
-        PrepareBuilder();
-        result.hasOneofE2 = true;
-        result.oneofE2_ = value;
-        return this;
-      }
-      public Builder ClearOneofE2() {
-        PrepareBuilder();
-        result.hasOneofE2 = false;
-        result.oneofE2_ = global::Google.ProtocolBuffers.TestProtos.MyEnum.FOO;
-        return this;
-      }
-    }
-    static MyMessage() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnittestPreserveUnknownEnum2.Descriptor, null);
-    }
-  }
-
-  #endregion
-
-}
-
-#endregion Designer generated code

+ 0 - 3
csharp/src/ProtocolBuffersLite.Test/TestProtos/UnittestExtrasFull.cs

@@ -420,7 +420,6 @@ namespace Google.ProtocolBuffers.TestProtos {
         public bool HasZip {
         public bool HasZip {
           get { return hasZip; }
           get { return hasZip; }
         }
         }
-        [global::System.CLSCompliant(false)]
         public uint Zip {
         public uint Zip {
           get { return zip_; }
           get { return zip_; }
         }
         }
@@ -619,12 +618,10 @@ namespace Google.ProtocolBuffers.TestProtos {
           public bool HasZip {
           public bool HasZip {
             get { return result.hasZip; }
             get { return result.hasZip; }
           }
           }
-          [global::System.CLSCompliant(false)]
           public uint Zip {
           public uint Zip {
             get { return result.Zip; }
             get { return result.Zip; }
             set { SetZip(value); }
             set { SetZip(value); }
           }
           }
-          [global::System.CLSCompliant(false)]
           public Builder SetZip(uint value) {
           public Builder SetZip(uint value) {
             PrepareBuilder();
             PrepareBuilder();
             result.hasZip = true;
             result.hasZip = true;

+ 48 - 51
csharp/src/ProtocolBuffersLite.Test/TestProtos/UnittestExtrasLite.cs

@@ -39,20 +39,16 @@ namespace Google.ProtocolBuffers.TestProtos {
     public const int UnpackedInt64ExtensionLiteFieldNumber = 91;
     public const int UnpackedInt64ExtensionLiteFieldNumber = 91;
     public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, long> UnpackedInt64ExtensionLite;
     public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, long> UnpackedInt64ExtensionLite;
     public const int UnpackedUint32ExtensionLiteFieldNumber = 92;
     public const int UnpackedUint32ExtensionLiteFieldNumber = 92;
-    [global::System.CLSCompliant(false)]
     public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, uint> UnpackedUint32ExtensionLite;
     public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, uint> UnpackedUint32ExtensionLite;
     public const int UnpackedUint64ExtensionLiteFieldNumber = 93;
     public const int UnpackedUint64ExtensionLiteFieldNumber = 93;
-    [global::System.CLSCompliant(false)]
     public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, ulong> UnpackedUint64ExtensionLite;
     public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, ulong> UnpackedUint64ExtensionLite;
     public const int UnpackedSint32ExtensionLiteFieldNumber = 94;
     public const int UnpackedSint32ExtensionLiteFieldNumber = 94;
     public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, int> UnpackedSint32ExtensionLite;
     public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, int> UnpackedSint32ExtensionLite;
     public const int UnpackedSint64ExtensionLiteFieldNumber = 95;
     public const int UnpackedSint64ExtensionLiteFieldNumber = 95;
     public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, long> UnpackedSint64ExtensionLite;
     public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, long> UnpackedSint64ExtensionLite;
     public const int UnpackedFixed32ExtensionLiteFieldNumber = 96;
     public const int UnpackedFixed32ExtensionLiteFieldNumber = 96;
-    [global::System.CLSCompliant(false)]
     public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, uint> UnpackedFixed32ExtensionLite;
     public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, uint> UnpackedFixed32ExtensionLite;
     public const int UnpackedFixed64ExtensionLiteFieldNumber = 97;
     public const int UnpackedFixed64ExtensionLiteFieldNumber = 97;
-    [global::System.CLSCompliant(false)]
     public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, ulong> UnpackedFixed64ExtensionLite;
     public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, ulong> UnpackedFixed64ExtensionLite;
     public const int UnpackedSfixed32ExtensionLiteFieldNumber = 98;
     public const int UnpackedSfixed32ExtensionLiteFieldNumber = 98;
     public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, int> UnpackedSfixed32ExtensionLite;
     public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, int> UnpackedSfixed32ExtensionLite;
@@ -313,8 +309,12 @@ namespace Google.ProtocolBuffers.TestProtos {
     #region Lite runtime methods
     #region Lite runtime methods
     public override int GetHashCode() {
     public override int GetHashCode() {
       int hash = GetType().GetHashCode();
       int hash = GetType().GetHashCode();
-      if (hasD) hash ^= d_.GetHashCode();
-      if (hasEn) hash ^= en_.GetHashCode();
+      if (hasD) {
+        hash ^= d_.GetHashCode();
+      }
+      if (hasEn) {
+        hash ^= en_.GetHashCode();
+      }
       return hash;
       return hash;
     }
     }
 
 
@@ -657,8 +657,12 @@ namespace Google.ProtocolBuffers.TestProtos {
         #region Lite runtime methods
         #region Lite runtime methods
         public override int GetHashCode() {
         public override int GetHashCode() {
           int hash = GetType().GetHashCode();
           int hash = GetType().GetHashCode();
-          if (hasNumber) hash ^= number_.GetHashCode();
-          if (hasType) hash ^= type_.GetHashCode();
+          if (hasNumber) {
+            hash ^= number_.GetHashCode();
+          }
+          if (hasType) {
+            hash ^= type_.GetHashCode();
+          }
           return hash;
           return hash;
         }
         }
 
 
@@ -957,7 +961,6 @@ namespace Google.ProtocolBuffers.TestProtos {
         public bool HasZip {
         public bool HasZip {
           get { return hasZip; }
           get { return hasZip; }
         }
         }
-        [global::System.CLSCompliant(false)]
         public uint Zip {
         public uint Zip {
           get { return zip_; }
           get { return zip_; }
         }
         }
@@ -1027,11 +1030,21 @@ namespace Google.ProtocolBuffers.TestProtos {
         #region Lite runtime methods
         #region Lite runtime methods
         public override int GetHashCode() {
         public override int GetHashCode() {
           int hash = GetType().GetHashCode();
           int hash = GetType().GetHashCode();
-          if (hasAddress) hash ^= address_.GetHashCode();
-          if (hasAddress2) hash ^= address2_.GetHashCode();
-          if (hasCity) hash ^= city_.GetHashCode();
-          if (hasState) hash ^= state_.GetHashCode();
-          if (hasZip) hash ^= zip_.GetHashCode();
+          if (hasAddress) {
+            hash ^= address_.GetHashCode();
+          }
+          if (hasAddress2) {
+            hash ^= address2_.GetHashCode();
+          }
+          if (hasCity) {
+            hash ^= city_.GetHashCode();
+          }
+          if (hasState) {
+            hash ^= state_.GetHashCode();
+          }
+          if (hasZip) {
+            hash ^= zip_.GetHashCode();
+          }
           return hash;
           return hash;
         }
         }
 
 
@@ -1330,12 +1343,10 @@ namespace Google.ProtocolBuffers.TestProtos {
           public bool HasZip {
           public bool HasZip {
             get { return result.hasZip; }
             get { return result.hasZip; }
           }
           }
-          [global::System.CLSCompliant(false)]
           public uint Zip {
           public uint Zip {
             get { return result.Zip; }
             get { return result.Zip; }
             set { SetZip(value); }
             set { SetZip(value); }
           }
           }
-          [global::System.CLSCompliant(false)]
           public Builder SetZip(uint value) {
           public Builder SetZip(uint value) {
             PrepareBuilder();
             PrepareBuilder();
             result.hasZip = true;
             result.hasZip = true;
@@ -1508,9 +1519,15 @@ namespace Google.ProtocolBuffers.TestProtos {
     #region Lite runtime methods
     #region Lite runtime methods
     public override int GetHashCode() {
     public override int GetHashCode() {
       int hash = GetType().GetHashCode();
       int hash = GetType().GetHashCode();
-      if (hasName) hash ^= name_.GetHashCode();
-      if (hasId) hash ^= id_.GetHashCode();
-      if (hasEmail) hash ^= email_.GetHashCode();
+      if (hasName) {
+        hash ^= name_.GetHashCode();
+      }
+      if (hasId) {
+        hash ^= id_.GetHashCode();
+      }
+      if (hasEmail) {
+        hash ^= email_.GetHashCode();
+      }
       foreach(int i in codes_)
       foreach(int i in codes_)
         hash ^= i.GetHashCode();
         hash ^= i.GetHashCode();
       foreach(global::Google.ProtocolBuffers.TestProtos.TestInteropPersonLite.Types.PhoneNumber i in phone_)
       foreach(global::Google.ProtocolBuffers.TestProtos.TestInteropPersonLite.Types.PhoneNumber i in phone_)
@@ -2002,7 +2019,9 @@ namespace Google.ProtocolBuffers.TestProtos {
     #region Lite runtime methods
     #region Lite runtime methods
     public override int GetHashCode() {
     public override int GetHashCode() {
       int hash = GetType().GetHashCode();
       int hash = GetType().GetHashCode();
-      if (hasNumber) hash ^= number_.GetHashCode();
+      if (hasNumber) {
+        hash ^= number_.GetHashCode();
+      }
       return hash;
       return hash;
     }
     }
 
 
@@ -2476,28 +2495,24 @@ namespace Google.ProtocolBuffers.TestProtos {
 
 
     public const int UnpackedUint32FieldNumber = 92;
     public const int UnpackedUint32FieldNumber = 92;
     private pbc::PopsicleList<uint> unpackedUint32_ = new pbc::PopsicleList<uint>();
     private pbc::PopsicleList<uint> unpackedUint32_ = new pbc::PopsicleList<uint>();
-    [global::System.CLSCompliant(false)]
     public scg::IList<uint> UnpackedUint32List {
     public scg::IList<uint> UnpackedUint32List {
       get { return pbc::Lists.AsReadOnly(unpackedUint32_); }
       get { return pbc::Lists.AsReadOnly(unpackedUint32_); }
     }
     }
     public int UnpackedUint32Count {
     public int UnpackedUint32Count {
       get { return unpackedUint32_.Count; }
       get { return unpackedUint32_.Count; }
     }
     }
-    [global::System.CLSCompliant(false)]
     public uint GetUnpackedUint32(int index) {
     public uint GetUnpackedUint32(int index) {
       return unpackedUint32_[index];
       return unpackedUint32_[index];
     }
     }
 
 
     public const int UnpackedUint64FieldNumber = 93;
     public const int UnpackedUint64FieldNumber = 93;
     private pbc::PopsicleList<ulong> unpackedUint64_ = new pbc::PopsicleList<ulong>();
     private pbc::PopsicleList<ulong> unpackedUint64_ = new pbc::PopsicleList<ulong>();
-    [global::System.CLSCompliant(false)]
     public scg::IList<ulong> UnpackedUint64List {
     public scg::IList<ulong> UnpackedUint64List {
       get { return pbc::Lists.AsReadOnly(unpackedUint64_); }
       get { return pbc::Lists.AsReadOnly(unpackedUint64_); }
     }
     }
     public int UnpackedUint64Count {
     public int UnpackedUint64Count {
       get { return unpackedUint64_.Count; }
       get { return unpackedUint64_.Count; }
     }
     }
-    [global::System.CLSCompliant(false)]
     public ulong GetUnpackedUint64(int index) {
     public ulong GetUnpackedUint64(int index) {
       return unpackedUint64_[index];
       return unpackedUint64_[index];
     }
     }
@@ -2528,28 +2543,24 @@ namespace Google.ProtocolBuffers.TestProtos {
 
 
     public const int UnpackedFixed32FieldNumber = 96;
     public const int UnpackedFixed32FieldNumber = 96;
     private pbc::PopsicleList<uint> unpackedFixed32_ = new pbc::PopsicleList<uint>();
     private pbc::PopsicleList<uint> unpackedFixed32_ = new pbc::PopsicleList<uint>();
-    [global::System.CLSCompliant(false)]
     public scg::IList<uint> UnpackedFixed32List {
     public scg::IList<uint> UnpackedFixed32List {
       get { return pbc::Lists.AsReadOnly(unpackedFixed32_); }
       get { return pbc::Lists.AsReadOnly(unpackedFixed32_); }
     }
     }
     public int UnpackedFixed32Count {
     public int UnpackedFixed32Count {
       get { return unpackedFixed32_.Count; }
       get { return unpackedFixed32_.Count; }
     }
     }
-    [global::System.CLSCompliant(false)]
     public uint GetUnpackedFixed32(int index) {
     public uint GetUnpackedFixed32(int index) {
       return unpackedFixed32_[index];
       return unpackedFixed32_[index];
     }
     }
 
 
     public const int UnpackedFixed64FieldNumber = 97;
     public const int UnpackedFixed64FieldNumber = 97;
     private pbc::PopsicleList<ulong> unpackedFixed64_ = new pbc::PopsicleList<ulong>();
     private pbc::PopsicleList<ulong> unpackedFixed64_ = new pbc::PopsicleList<ulong>();
-    [global::System.CLSCompliant(false)]
     public scg::IList<ulong> UnpackedFixed64List {
     public scg::IList<ulong> UnpackedFixed64List {
       get { return pbc::Lists.AsReadOnly(unpackedFixed64_); }
       get { return pbc::Lists.AsReadOnly(unpackedFixed64_); }
     }
     }
     public int UnpackedFixed64Count {
     public int UnpackedFixed64Count {
       get { return unpackedFixed64_.Count; }
       get { return unpackedFixed64_.Count; }
     }
     }
-    [global::System.CLSCompliant(false)]
     public ulong GetUnpackedFixed64(int index) {
     public ulong GetUnpackedFixed64(int index) {
       return unpackedFixed64_[index];
       return unpackedFixed64_[index];
     }
     }
@@ -3236,30 +3247,25 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
         return this;
       }
       }
 
 
-      [global::System.CLSCompliant(false)]
       public pbc::IPopsicleList<uint> UnpackedUint32List {
       public pbc::IPopsicleList<uint> UnpackedUint32List {
         get { return PrepareBuilder().unpackedUint32_; }
         get { return PrepareBuilder().unpackedUint32_; }
       }
       }
       public int UnpackedUint32Count {
       public int UnpackedUint32Count {
         get { return result.UnpackedUint32Count; }
         get { return result.UnpackedUint32Count; }
       }
       }
-      [global::System.CLSCompliant(false)]
       public uint GetUnpackedUint32(int index) {
       public uint GetUnpackedUint32(int index) {
         return result.GetUnpackedUint32(index);
         return result.GetUnpackedUint32(index);
       }
       }
-      [global::System.CLSCompliant(false)]
       public Builder SetUnpackedUint32(int index, uint value) {
       public Builder SetUnpackedUint32(int index, uint value) {
         PrepareBuilder();
         PrepareBuilder();
         result.unpackedUint32_[index] = value;
         result.unpackedUint32_[index] = value;
         return this;
         return this;
       }
       }
-      [global::System.CLSCompliant(false)]
       public Builder AddUnpackedUint32(uint value) {
       public Builder AddUnpackedUint32(uint value) {
         PrepareBuilder();
         PrepareBuilder();
         result.unpackedUint32_.Add(value);
         result.unpackedUint32_.Add(value);
         return this;
         return this;
       }
       }
-      [global::System.CLSCompliant(false)]
       public Builder AddRangeUnpackedUint32(scg::IEnumerable<uint> values) {
       public Builder AddRangeUnpackedUint32(scg::IEnumerable<uint> values) {
         PrepareBuilder();
         PrepareBuilder();
         result.unpackedUint32_.Add(values);
         result.unpackedUint32_.Add(values);
@@ -3271,30 +3277,25 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
         return this;
       }
       }
 
 
-      [global::System.CLSCompliant(false)]
       public pbc::IPopsicleList<ulong> UnpackedUint64List {
       public pbc::IPopsicleList<ulong> UnpackedUint64List {
         get { return PrepareBuilder().unpackedUint64_; }
         get { return PrepareBuilder().unpackedUint64_; }
       }
       }
       public int UnpackedUint64Count {
       public int UnpackedUint64Count {
         get { return result.UnpackedUint64Count; }
         get { return result.UnpackedUint64Count; }
       }
       }
-      [global::System.CLSCompliant(false)]
       public ulong GetUnpackedUint64(int index) {
       public ulong GetUnpackedUint64(int index) {
         return result.GetUnpackedUint64(index);
         return result.GetUnpackedUint64(index);
       }
       }
-      [global::System.CLSCompliant(false)]
       public Builder SetUnpackedUint64(int index, ulong value) {
       public Builder SetUnpackedUint64(int index, ulong value) {
         PrepareBuilder();
         PrepareBuilder();
         result.unpackedUint64_[index] = value;
         result.unpackedUint64_[index] = value;
         return this;
         return this;
       }
       }
-      [global::System.CLSCompliant(false)]
       public Builder AddUnpackedUint64(ulong value) {
       public Builder AddUnpackedUint64(ulong value) {
         PrepareBuilder();
         PrepareBuilder();
         result.unpackedUint64_.Add(value);
         result.unpackedUint64_.Add(value);
         return this;
         return this;
       }
       }
-      [global::System.CLSCompliant(false)]
       public Builder AddRangeUnpackedUint64(scg::IEnumerable<ulong> values) {
       public Builder AddRangeUnpackedUint64(scg::IEnumerable<ulong> values) {
         PrepareBuilder();
         PrepareBuilder();
         result.unpackedUint64_.Add(values);
         result.unpackedUint64_.Add(values);
@@ -3366,30 +3367,25 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
         return this;
       }
       }
 
 
-      [global::System.CLSCompliant(false)]
       public pbc::IPopsicleList<uint> UnpackedFixed32List {
       public pbc::IPopsicleList<uint> UnpackedFixed32List {
         get { return PrepareBuilder().unpackedFixed32_; }
         get { return PrepareBuilder().unpackedFixed32_; }
       }
       }
       public int UnpackedFixed32Count {
       public int UnpackedFixed32Count {
         get { return result.UnpackedFixed32Count; }
         get { return result.UnpackedFixed32Count; }
       }
       }
-      [global::System.CLSCompliant(false)]
       public uint GetUnpackedFixed32(int index) {
       public uint GetUnpackedFixed32(int index) {
         return result.GetUnpackedFixed32(index);
         return result.GetUnpackedFixed32(index);
       }
       }
-      [global::System.CLSCompliant(false)]
       public Builder SetUnpackedFixed32(int index, uint value) {
       public Builder SetUnpackedFixed32(int index, uint value) {
         PrepareBuilder();
         PrepareBuilder();
         result.unpackedFixed32_[index] = value;
         result.unpackedFixed32_[index] = value;
         return this;
         return this;
       }
       }
-      [global::System.CLSCompliant(false)]
       public Builder AddUnpackedFixed32(uint value) {
       public Builder AddUnpackedFixed32(uint value) {
         PrepareBuilder();
         PrepareBuilder();
         result.unpackedFixed32_.Add(value);
         result.unpackedFixed32_.Add(value);
         return this;
         return this;
       }
       }
-      [global::System.CLSCompliant(false)]
       public Builder AddRangeUnpackedFixed32(scg::IEnumerable<uint> values) {
       public Builder AddRangeUnpackedFixed32(scg::IEnumerable<uint> values) {
         PrepareBuilder();
         PrepareBuilder();
         result.unpackedFixed32_.Add(values);
         result.unpackedFixed32_.Add(values);
@@ -3401,30 +3397,25 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
         return this;
       }
       }
 
 
-      [global::System.CLSCompliant(false)]
       public pbc::IPopsicleList<ulong> UnpackedFixed64List {
       public pbc::IPopsicleList<ulong> UnpackedFixed64List {
         get { return PrepareBuilder().unpackedFixed64_; }
         get { return PrepareBuilder().unpackedFixed64_; }
       }
       }
       public int UnpackedFixed64Count {
       public int UnpackedFixed64Count {
         get { return result.UnpackedFixed64Count; }
         get { return result.UnpackedFixed64Count; }
       }
       }
-      [global::System.CLSCompliant(false)]
       public ulong GetUnpackedFixed64(int index) {
       public ulong GetUnpackedFixed64(int index) {
         return result.GetUnpackedFixed64(index);
         return result.GetUnpackedFixed64(index);
       }
       }
-      [global::System.CLSCompliant(false)]
       public Builder SetUnpackedFixed64(int index, ulong value) {
       public Builder SetUnpackedFixed64(int index, ulong value) {
         PrepareBuilder();
         PrepareBuilder();
         result.unpackedFixed64_[index] = value;
         result.unpackedFixed64_[index] = value;
         return this;
         return this;
       }
       }
-      [global::System.CLSCompliant(false)]
       public Builder AddUnpackedFixed64(ulong value) {
       public Builder AddUnpackedFixed64(ulong value) {
         PrepareBuilder();
         PrepareBuilder();
         result.unpackedFixed64_.Add(value);
         result.unpackedFixed64_.Add(value);
         return this;
         return this;
       }
       }
-      [global::System.CLSCompliant(false)]
       public Builder AddRangeUnpackedFixed64(scg::IEnumerable<ulong> values) {
       public Builder AddRangeUnpackedFixed64(scg::IEnumerable<ulong> values) {
         PrepareBuilder();
         PrepareBuilder();
         result.unpackedFixed64_.Add(values);
         result.unpackedFixed64_.Add(values);
@@ -3686,7 +3677,9 @@ namespace Google.ProtocolBuffers.TestProtos {
     #region Lite runtime methods
     #region Lite runtime methods
     public override int GetHashCode() {
     public override int GetHashCode() {
       int hash = GetType().GetHashCode();
       int hash = GetType().GetHashCode();
-      if (hasValue) hash ^= value_.GetHashCode();
+      if (hasValue) {
+        hash ^= value_.GetHashCode();
+      }
       return hash;
       return hash;
     }
     }
 
 
@@ -3969,8 +3962,12 @@ namespace Google.ProtocolBuffers.TestProtos {
     #region Lite runtime methods
     #region Lite runtime methods
     public override int GetHashCode() {
     public override int GetHashCode() {
       int hash = GetType().GetHashCode();
       int hash = GetType().GetHashCode();
-      if (hasValue) hash ^= value_.GetHashCode();
-      if (hasValue2) hash ^= value2_.GetHashCode();
+      if (hasValue) {
+        hash ^= value_.GetHashCode();
+      }
+      if (hasValue2) {
+        hash ^= value2_.GetHashCode();
+      }
       return hash;
       return hash;
     }
     }
 
 

+ 0 - 2277
csharp/src/ProtocolBuffersLite.Test/TestProtos/UnittestExtrasXmltest.cs

@@ -1,2277 +0,0 @@
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
-// source: unittest_extras_xmltest.proto
-#pragma warning disable 1591, 0612, 3021
-#region Designer generated code
-
-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 {
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public static partial class UnittestExtrasXmltest {
-
-    #region Extension registration
-    public static void RegisterAllExtensions(pb::ExtensionRegistry registry) {
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestExtrasXmltest.ExtensionEnum);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestExtrasXmltest.ExtensionText);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestExtrasXmltest.ExtensionNumber);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestExtrasXmltest.ExtensionMessage);
-    }
-    #endregion
-    #region Extensions
-    public const int ExtensionEnumFieldNumber = 101;
-    public static pb::GeneratedExtensionBase<global::Google.ProtocolBuffers.TestProtos.EnumOptions> ExtensionEnum;
-    public const int ExtensionTextFieldNumber = 102;
-    public static pb::GeneratedExtensionBase<string> ExtensionText;
-    public const int ExtensionNumberFieldNumber = 103;
-    public static pb::GeneratedExtensionBase<scg::IList<int>> ExtensionNumber;
-    public const int ExtensionMessageFieldNumber = 199;
-    public static pb::GeneratedExtensionBase<global::Google.ProtocolBuffers.TestProtos.TestXmlExtension> ExtensionMessage;
-    #endregion
-
-    #region Static variables
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_extra_TestXmlChild__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestXmlChild, global::Google.ProtocolBuffers.TestProtos.TestXmlChild.Builder> internal__static_protobuf_unittest_extra_TestXmlChild__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_extra_TestXmlNoFields__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestXmlNoFields, global::Google.ProtocolBuffers.TestProtos.TestXmlNoFields.Builder> internal__static_protobuf_unittest_extra_TestXmlNoFields__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_extra_TestXmlRescursive__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestXmlRescursive, global::Google.ProtocolBuffers.TestProtos.TestXmlRescursive.Builder> internal__static_protobuf_unittest_extra_TestXmlRescursive__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_extra_TestXmlMessage__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestXmlMessage, global::Google.ProtocolBuffers.TestProtos.TestXmlMessage.Builder> internal__static_protobuf_unittest_extra_TestXmlMessage__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_extra_TestXmlMessage_Children__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestXmlMessage.Types.Children, global::Google.ProtocolBuffers.TestProtos.TestXmlMessage.Types.Children.Builder> internal__static_protobuf_unittest_extra_TestXmlMessage_Children__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_extra_TestXmlExtension__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestXmlExtension, global::Google.ProtocolBuffers.TestProtos.TestXmlExtension.Builder> internal__static_protobuf_unittest_extra_TestXmlExtension__FieldAccessorTable;
-    #endregion
-    #region Descriptor
-    public static pbd::FileDescriptor Descriptor {
-      get { return descriptor; }
-    }
-    private static pbd::FileDescriptor descriptor;
-
-    static UnittestExtrasXmltest() {
-      byte[] descriptorData = global::System.Convert.FromBase64String(
-          string.Concat(
-            "Ch11bml0dGVzdF9leHRyYXNfeG1sdGVzdC5wcm90bxIXcHJvdG9idWZfdW5p", 
-            "dHRlc3RfZXh0cmEiVQoMVGVzdFhtbENoaWxkEjUKB29wdGlvbnMYAyADKA4y", 
-            "JC5wcm90b2J1Zl91bml0dGVzdF9leHRyYS5FbnVtT3B0aW9ucxIOCgZiaW5h", 
-            "cnkYBCABKAwiEQoPVGVzdFhtbE5vRmllbGRzIk4KEVRlc3RYbWxSZXNjdXJz", 
-            "aXZlEjkKBWNoaWxkGAEgASgLMioucHJvdG9idWZfdW5pdHRlc3RfZXh0cmEu", 
-            "VGVzdFhtbFJlc2N1cnNpdmUitwIKDlRlc3RYbWxNZXNzYWdlEg4KBm51bWJl", 
-            "chgGIAEoAxIPCgdudW1iZXJzGAIgAygFEgwKBHRleHQYAyABKAkSEgoJdGV4", 
-            "dGxpbmVzGLwFIAMoCRINCgV2YWxpZBgFIAEoCBI0CgVjaGlsZBgBIAEoCzIl", 
-            "LnByb3RvYnVmX3VuaXR0ZXN0X2V4dHJhLlRlc3RYbWxDaGlsZBJDCghjaGls", 
-            "ZHJlbhiRAyADKAoyMC5wcm90b2J1Zl91bml0dGVzdF9leHRyYS5UZXN0WG1s", 
-            "TWVzc2FnZS5DaGlsZHJlbhpRCghDaGlsZHJlbhI1CgdvcHRpb25zGAMgAygO", 
-            "MiQucHJvdG9idWZfdW5pdHRlc3RfZXh0cmEuRW51bU9wdGlvbnMSDgoGYmlu", 
-            "YXJ5GAQgASgMKgUIZBDIASIiChBUZXN0WG1sRXh0ZW5zaW9uEg4KBm51bWJl", 
-            "chgBIAIoBSoqCgtFbnVtT3B0aW9ucxIHCgNPTkUQABIHCgNUV08QARIJCgVU", 
-            "SFJFRRACOmUKDmV4dGVuc2lvbl9lbnVtEicucHJvdG9idWZfdW5pdHRlc3Rf", 
-            "ZXh0cmEuVGVzdFhtbE1lc3NhZ2UYZSABKA4yJC5wcm90b2J1Zl91bml0dGVz", 
-            "dF9leHRyYS5FbnVtT3B0aW9uczo/Cg5leHRlbnNpb25fdGV4dBInLnByb3Rv", 
-            "YnVmX3VuaXR0ZXN0X2V4dHJhLlRlc3RYbWxNZXNzYWdlGGYgASgJOkUKEGV4", 
-            "dGVuc2lvbl9udW1iZXISJy5wcm90b2J1Zl91bml0dGVzdF9leHRyYS5UZXN0", 
-            "WG1sTWVzc2FnZRhnIAMoBUICEAE6bgoRZXh0ZW5zaW9uX21lc3NhZ2USJy5w", 
-            "cm90b2J1Zl91bml0dGVzdF9leHRyYS5UZXN0WG1sTWVzc2FnZRjHASABKAsy", 
-            "KS5wcm90b2J1Zl91bml0dGVzdF9leHRyYS5UZXN0WG1sRXh0ZW5zaW9uQiZI", 
-          "AaoCIUdvb2dsZS5Qcm90b2NvbEJ1ZmZlcnMuVGVzdFByb3Rvcw=="));
-      pbd::FileDescriptor.InternalDescriptorAssigner assigner = delegate(pbd::FileDescriptor root) {
-        descriptor = root;
-        internal__static_protobuf_unittest_extra_TestXmlChild__Descriptor = Descriptor.MessageTypes[0];
-        internal__static_protobuf_unittest_extra_TestXmlChild__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestXmlChild, global::Google.ProtocolBuffers.TestProtos.TestXmlChild.Builder>(internal__static_protobuf_unittest_extra_TestXmlChild__Descriptor,
-                new string[] { "Options", "Binary", });
-        internal__static_protobuf_unittest_extra_TestXmlNoFields__Descriptor = Descriptor.MessageTypes[1];
-        internal__static_protobuf_unittest_extra_TestXmlNoFields__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestXmlNoFields, global::Google.ProtocolBuffers.TestProtos.TestXmlNoFields.Builder>(internal__static_protobuf_unittest_extra_TestXmlNoFields__Descriptor,
-                new string[] { });
-        internal__static_protobuf_unittest_extra_TestXmlRescursive__Descriptor = Descriptor.MessageTypes[2];
-        internal__static_protobuf_unittest_extra_TestXmlRescursive__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestXmlRescursive, global::Google.ProtocolBuffers.TestProtos.TestXmlRescursive.Builder>(internal__static_protobuf_unittest_extra_TestXmlRescursive__Descriptor,
-                new string[] { "Child", });
-        internal__static_protobuf_unittest_extra_TestXmlMessage__Descriptor = Descriptor.MessageTypes[3];
-        internal__static_protobuf_unittest_extra_TestXmlMessage__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestXmlMessage, global::Google.ProtocolBuffers.TestProtos.TestXmlMessage.Builder>(internal__static_protobuf_unittest_extra_TestXmlMessage__Descriptor,
-                new string[] { "Number", "Numbers", "Text", "Textlines", "Valid", "Child", "Children", });
-        internal__static_protobuf_unittest_extra_TestXmlMessage_Children__Descriptor = internal__static_protobuf_unittest_extra_TestXmlMessage__Descriptor.NestedTypes[0];
-        internal__static_protobuf_unittest_extra_TestXmlMessage_Children__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestXmlMessage.Types.Children, global::Google.ProtocolBuffers.TestProtos.TestXmlMessage.Types.Children.Builder>(internal__static_protobuf_unittest_extra_TestXmlMessage_Children__Descriptor,
-                new string[] { "Options", "Binary", });
-        internal__static_protobuf_unittest_extra_TestXmlExtension__Descriptor = Descriptor.MessageTypes[4];
-        internal__static_protobuf_unittest_extra_TestXmlExtension__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestXmlExtension, global::Google.ProtocolBuffers.TestProtos.TestXmlExtension.Builder>(internal__static_protobuf_unittest_extra_TestXmlExtension__Descriptor,
-                new string[] { "Number", });
-        global::Google.ProtocolBuffers.TestProtos.UnittestExtrasXmltest.ExtensionEnum = pb::GeneratedSingleExtension<global::Google.ProtocolBuffers.TestProtos.EnumOptions>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnittestExtrasXmltest.Descriptor.Extensions[0]);
-        global::Google.ProtocolBuffers.TestProtos.UnittestExtrasXmltest.ExtensionText = pb::GeneratedSingleExtension<string>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnittestExtrasXmltest.Descriptor.Extensions[1]);
-        global::Google.ProtocolBuffers.TestProtos.UnittestExtrasXmltest.ExtensionNumber = pb::GeneratedRepeatExtension<int>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnittestExtrasXmltest.Descriptor.Extensions[2]);
-        global::Google.ProtocolBuffers.TestProtos.UnittestExtrasXmltest.ExtensionMessage = pb::GeneratedSingleExtension<global::Google.ProtocolBuffers.TestProtos.TestXmlExtension>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnittestExtrasXmltest.Descriptor.Extensions[3]);
-        pb::ExtensionRegistry registry = pb::ExtensionRegistry.CreateInstance();
-        RegisterAllExtensions(registry);
-        return registry;
-      };
-      pbd::FileDescriptor.InternalBuildGeneratedFileFrom(descriptorData,
-          new pbd::FileDescriptor[] {
-          }, assigner);
-    }
-    #endregion
-
-  }
-  #region Enums
-  public enum EnumOptions {
-    ONE = 0,
-    TWO = 1,
-    THREE = 2,
-  }
-
-  #endregion
-
-  #region Messages
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class TestXmlChild : pb::GeneratedMessage<TestXmlChild, TestXmlChild.Builder> {
-    private TestXmlChild() { }
-    private static readonly TestXmlChild defaultInstance = new TestXmlChild().MakeReadOnly();
-    private static readonly string[] _testXmlChildFieldNames = new string[] { "binary", "options" };
-    private static readonly uint[] _testXmlChildFieldTags = new uint[] { 34, 24 };
-    public static TestXmlChild DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override TestXmlChild DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override TestXmlChild ThisMessage {
-      get { return this; }
-    }
-
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::Google.ProtocolBuffers.TestProtos.UnittestExtrasXmltest.internal__static_protobuf_unittest_extra_TestXmlChild__Descriptor; }
-    }
-
-    protected override pb::FieldAccess.FieldAccessorTable<TestXmlChild, TestXmlChild.Builder> InternalFieldAccessors {
-      get { return global::Google.ProtocolBuffers.TestProtos.UnittestExtrasXmltest.internal__static_protobuf_unittest_extra_TestXmlChild__FieldAccessorTable; }
-    }
-
-    public const int OptionsFieldNumber = 3;
-    private pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.EnumOptions> options_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.EnumOptions>();
-    public scg::IList<global::Google.ProtocolBuffers.TestProtos.EnumOptions> OptionsList {
-      get { return pbc::Lists.AsReadOnly(options_); }
-    }
-    public int OptionsCount {
-      get { return options_.Count; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.EnumOptions GetOptions(int index) {
-      return options_[index];
-    }
-
-    public const int BinaryFieldNumber = 4;
-    private bool hasBinary;
-    private pb::ByteString binary_ = pb::ByteString.Empty;
-    public bool HasBinary {
-      get { return hasBinary; }
-    }
-    public pb::ByteString Binary {
-      get { return binary_; }
-    }
-
-    public override bool IsInitialized {
-      get {
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _testXmlChildFieldNames;
-      if (options_.Count > 0) {
-        output.WriteEnumArray(3, field_names[1], options_);
-      }
-      if (hasBinary) {
-        output.WriteBytes(4, field_names[0], Binary);
-      }
-      UnknownFields.WriteTo(output);
-    }
-
-    private int memoizedSerializedSize = -1;
-    public override int SerializedSize {
-      get {
-        int size = memoizedSerializedSize;
-        if (size != -1) return size;
-        return CalcSerializedSize();
-      }
-    }
-
-    private int CalcSerializedSize() {
-      int size = memoizedSerializedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      {
-        int dataSize = 0;
-        if (options_.Count > 0) {
-          foreach (global::Google.ProtocolBuffers.TestProtos.EnumOptions element in options_) {
-            dataSize += pb::CodedOutputStream.ComputeEnumSizeNoTag((int) element);
-          }
-          size += dataSize;
-          size += 1 * options_.Count;
-        }
-      }
-      if (hasBinary) {
-        size += pb::CodedOutputStream.ComputeBytesSize(4, Binary);
-      }
-      size += UnknownFields.SerializedSize;
-      memoizedSerializedSize = size;
-      return size;
-    }
-    public static TestXmlChild ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestXmlChild ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestXmlChild ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestXmlChild ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestXmlChild ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestXmlChild ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static TestXmlChild ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static TestXmlChild ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static TestXmlChild ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestXmlChild ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private TestXmlChild MakeReadOnly() {
-      options_.MakeReadOnly();
-      return this;
-    }
-
-    public static Builder CreateBuilder() { return new Builder(); }
-    public override Builder ToBuilder() { return CreateBuilder(this); }
-    public override Builder CreateBuilderForType() { return new Builder(); }
-    public static Builder CreateBuilder(TestXmlChild prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilder<TestXmlChild, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(TestXmlChild cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private TestXmlChild result;
-
-      private TestXmlChild PrepareBuilder() {
-        if (resultIsReadOnly) {
-          TestXmlChild original = result;
-          result = new TestXmlChild();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override TestXmlChild MessageBeingBuilt {
-        get { return PrepareBuilder(); }
-      }
-
-      public override Builder Clear() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-        return this;
-      }
-
-      public override Builder Clone() {
-        if (resultIsReadOnly) {
-          return new Builder(result);
-        } else {
-          return new Builder().MergeFrom(result);
-        }
-      }
-
-      public override pbd::MessageDescriptor DescriptorForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.TestXmlChild.Descriptor; }
-      }
-
-      public override TestXmlChild DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.TestXmlChild.DefaultInstance; }
-      }
-
-      public override TestXmlChild BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is TestXmlChild) {
-          return MergeFrom((TestXmlChild) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(TestXmlChild other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.TestXmlChild.DefaultInstance) return this;
-        PrepareBuilder();
-        if (other.options_.Count != 0) {
-          result.options_.Add(other.options_);
-        }
-        if (other.HasBinary) {
-          Binary = other.Binary;
-        }
-        this.MergeUnknownFields(other.UnknownFields);
-        return this;
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input) {
-        return MergeFrom(input, pb::ExtensionRegistry.Empty);
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-        PrepareBuilder();
-        pb::UnknownFieldSet.Builder unknownFields = null;
-        uint tag;
-        string field_name;
-        while (input.ReadTag(out tag, out field_name)) {
-          if(tag == 0 && field_name != null) {
-            int field_ordinal = global::System.Array.BinarySearch(_testXmlChildFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _testXmlChildFieldTags[field_ordinal];
-            else {
-              if (unknownFields == null) {
-                unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-              }
-              ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name);
-              continue;
-            }
-          }
-          switch (tag) {
-            case 0: {
-              throw pb::InvalidProtocolBufferException.InvalidTag();
-            }
-            default: {
-              if (pb::WireFormat.IsEndGroupTag(tag)) {
-                if (unknownFields != null) {
-                  this.UnknownFields = unknownFields.Build();
-                }
-                return this;
-              }
-              if (unknownFields == null) {
-                unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-              }
-              ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name);
-              break;
-            }
-            case 26:
-            case 24: {
-              scg::ICollection<object> unknownItems;
-              input.ReadEnumArray<global::Google.ProtocolBuffers.TestProtos.EnumOptions>(tag, field_name, result.options_, out unknownItems);
-              if (unknownItems != null) {
-                if (unknownFields == null) {
-                  unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-                }
-                foreach (object rawValue in unknownItems)
-                  if (rawValue is int)
-                    unknownFields.MergeVarintField(3, (ulong)(int)rawValue);
-              }
-              break;
-            }
-            case 34: {
-              result.hasBinary = input.ReadBytes(ref result.binary_);
-              break;
-            }
-          }
-        }
-
-        if (unknownFields != null) {
-          this.UnknownFields = unknownFields.Build();
-        }
-        return this;
-      }
-
-
-      public pbc::IPopsicleList<global::Google.ProtocolBuffers.TestProtos.EnumOptions> OptionsList {
-        get { return PrepareBuilder().options_; }
-      }
-      public int OptionsCount {
-        get { return result.OptionsCount; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.EnumOptions GetOptions(int index) {
-        return result.GetOptions(index);
-      }
-      public Builder SetOptions(int index, global::Google.ProtocolBuffers.TestProtos.EnumOptions value) {
-        PrepareBuilder();
-        result.options_[index] = value;
-        return this;
-      }
-      public Builder AddOptions(global::Google.ProtocolBuffers.TestProtos.EnumOptions value) {
-        PrepareBuilder();
-        result.options_.Add(value);
-        return this;
-      }
-      public Builder AddRangeOptions(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.EnumOptions> values) {
-        PrepareBuilder();
-        result.options_.Add(values);
-        return this;
-      }
-      public Builder ClearOptions() {
-        PrepareBuilder();
-        result.options_.Clear();
-        return this;
-      }
-
-      public bool HasBinary {
-        get { return result.hasBinary; }
-      }
-      public pb::ByteString Binary {
-        get { return result.Binary; }
-        set { SetBinary(value); }
-      }
-      public Builder SetBinary(pb::ByteString value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasBinary = true;
-        result.binary_ = value;
-        return this;
-      }
-      public Builder ClearBinary() {
-        PrepareBuilder();
-        result.hasBinary = false;
-        result.binary_ = pb::ByteString.Empty;
-        return this;
-      }
-    }
-    static TestXmlChild() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnittestExtrasXmltest.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class TestXmlNoFields : pb::GeneratedMessage<TestXmlNoFields, TestXmlNoFields.Builder> {
-    private TestXmlNoFields() { }
-    private static readonly TestXmlNoFields defaultInstance = new TestXmlNoFields().MakeReadOnly();
-    private static readonly string[] _testXmlNoFieldsFieldNames = new string[] {  };
-    private static readonly uint[] _testXmlNoFieldsFieldTags = new uint[] {  };
-    public static TestXmlNoFields DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override TestXmlNoFields DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override TestXmlNoFields ThisMessage {
-      get { return this; }
-    }
-
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::Google.ProtocolBuffers.TestProtos.UnittestExtrasXmltest.internal__static_protobuf_unittest_extra_TestXmlNoFields__Descriptor; }
-    }
-
-    protected override pb::FieldAccess.FieldAccessorTable<TestXmlNoFields, TestXmlNoFields.Builder> InternalFieldAccessors {
-      get { return global::Google.ProtocolBuffers.TestProtos.UnittestExtrasXmltest.internal__static_protobuf_unittest_extra_TestXmlNoFields__FieldAccessorTable; }
-    }
-
-    public override bool IsInitialized {
-      get {
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _testXmlNoFieldsFieldNames;
-      UnknownFields.WriteTo(output);
-    }
-
-    private int memoizedSerializedSize = -1;
-    public override int SerializedSize {
-      get {
-        int size = memoizedSerializedSize;
-        if (size != -1) return size;
-        return CalcSerializedSize();
-      }
-    }
-
-    private int CalcSerializedSize() {
-      int size = memoizedSerializedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      size += UnknownFields.SerializedSize;
-      memoizedSerializedSize = size;
-      return size;
-    }
-    public static TestXmlNoFields ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestXmlNoFields ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestXmlNoFields ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestXmlNoFields ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestXmlNoFields ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestXmlNoFields ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static TestXmlNoFields ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static TestXmlNoFields ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static TestXmlNoFields ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestXmlNoFields ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private TestXmlNoFields MakeReadOnly() {
-      return this;
-    }
-
-    public static Builder CreateBuilder() { return new Builder(); }
-    public override Builder ToBuilder() { return CreateBuilder(this); }
-    public override Builder CreateBuilderForType() { return new Builder(); }
-    public static Builder CreateBuilder(TestXmlNoFields prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilder<TestXmlNoFields, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(TestXmlNoFields cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private TestXmlNoFields result;
-
-      private TestXmlNoFields PrepareBuilder() {
-        if (resultIsReadOnly) {
-          TestXmlNoFields original = result;
-          result = new TestXmlNoFields();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override TestXmlNoFields MessageBeingBuilt {
-        get { return PrepareBuilder(); }
-      }
-
-      public override Builder Clear() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-        return this;
-      }
-
-      public override Builder Clone() {
-        if (resultIsReadOnly) {
-          return new Builder(result);
-        } else {
-          return new Builder().MergeFrom(result);
-        }
-      }
-
-      public override pbd::MessageDescriptor DescriptorForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.TestXmlNoFields.Descriptor; }
-      }
-
-      public override TestXmlNoFields DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.TestXmlNoFields.DefaultInstance; }
-      }
-
-      public override TestXmlNoFields BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is TestXmlNoFields) {
-          return MergeFrom((TestXmlNoFields) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(TestXmlNoFields other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.TestXmlNoFields.DefaultInstance) return this;
-        PrepareBuilder();
-        this.MergeUnknownFields(other.UnknownFields);
-        return this;
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input) {
-        return MergeFrom(input, pb::ExtensionRegistry.Empty);
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-        PrepareBuilder();
-        pb::UnknownFieldSet.Builder unknownFields = null;
-        uint tag;
-        string field_name;
-        while (input.ReadTag(out tag, out field_name)) {
-          if(tag == 0 && field_name != null) {
-            int field_ordinal = global::System.Array.BinarySearch(_testXmlNoFieldsFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _testXmlNoFieldsFieldTags[field_ordinal];
-            else {
-              if (unknownFields == null) {
-                unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-              }
-              ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name);
-              continue;
-            }
-          }
-          switch (tag) {
-            case 0: {
-              throw pb::InvalidProtocolBufferException.InvalidTag();
-            }
-            default: {
-              if (pb::WireFormat.IsEndGroupTag(tag)) {
-                if (unknownFields != null) {
-                  this.UnknownFields = unknownFields.Build();
-                }
-                return this;
-              }
-              if (unknownFields == null) {
-                unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-              }
-              ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name);
-              break;
-            }
-          }
-        }
-
-        if (unknownFields != null) {
-          this.UnknownFields = unknownFields.Build();
-        }
-        return this;
-      }
-
-    }
-    static TestXmlNoFields() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnittestExtrasXmltest.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class TestXmlRescursive : pb::GeneratedMessage<TestXmlRescursive, TestXmlRescursive.Builder> {
-    private TestXmlRescursive() { }
-    private static readonly TestXmlRescursive defaultInstance = new TestXmlRescursive().MakeReadOnly();
-    private static readonly string[] _testXmlRescursiveFieldNames = new string[] { "child" };
-    private static readonly uint[] _testXmlRescursiveFieldTags = new uint[] { 10 };
-    public static TestXmlRescursive DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override TestXmlRescursive DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override TestXmlRescursive ThisMessage {
-      get { return this; }
-    }
-
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::Google.ProtocolBuffers.TestProtos.UnittestExtrasXmltest.internal__static_protobuf_unittest_extra_TestXmlRescursive__Descriptor; }
-    }
-
-    protected override pb::FieldAccess.FieldAccessorTable<TestXmlRescursive, TestXmlRescursive.Builder> InternalFieldAccessors {
-      get { return global::Google.ProtocolBuffers.TestProtos.UnittestExtrasXmltest.internal__static_protobuf_unittest_extra_TestXmlRescursive__FieldAccessorTable; }
-    }
-
-    public const int ChildFieldNumber = 1;
-    private bool hasChild;
-    private global::Google.ProtocolBuffers.TestProtos.TestXmlRescursive child_;
-    public bool HasChild {
-      get { return hasChild; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.TestXmlRescursive Child {
-      get { return child_ ?? global::Google.ProtocolBuffers.TestProtos.TestXmlRescursive.DefaultInstance; }
-    }
-
-    public override bool IsInitialized {
-      get {
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _testXmlRescursiveFieldNames;
-      if (hasChild) {
-        output.WriteMessage(1, field_names[0], Child);
-      }
-      UnknownFields.WriteTo(output);
-    }
-
-    private int memoizedSerializedSize = -1;
-    public override int SerializedSize {
-      get {
-        int size = memoizedSerializedSize;
-        if (size != -1) return size;
-        return CalcSerializedSize();
-      }
-    }
-
-    private int CalcSerializedSize() {
-      int size = memoizedSerializedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (hasChild) {
-        size += pb::CodedOutputStream.ComputeMessageSize(1, Child);
-      }
-      size += UnknownFields.SerializedSize;
-      memoizedSerializedSize = size;
-      return size;
-    }
-    public static TestXmlRescursive ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestXmlRescursive ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestXmlRescursive ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestXmlRescursive ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestXmlRescursive ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestXmlRescursive ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static TestXmlRescursive ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static TestXmlRescursive ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static TestXmlRescursive ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestXmlRescursive ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private TestXmlRescursive MakeReadOnly() {
-      return this;
-    }
-
-    public static Builder CreateBuilder() { return new Builder(); }
-    public override Builder ToBuilder() { return CreateBuilder(this); }
-    public override Builder CreateBuilderForType() { return new Builder(); }
-    public static Builder CreateBuilder(TestXmlRescursive prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilder<TestXmlRescursive, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(TestXmlRescursive cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private TestXmlRescursive result;
-
-      private TestXmlRescursive PrepareBuilder() {
-        if (resultIsReadOnly) {
-          TestXmlRescursive original = result;
-          result = new TestXmlRescursive();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override TestXmlRescursive MessageBeingBuilt {
-        get { return PrepareBuilder(); }
-      }
-
-      public override Builder Clear() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-        return this;
-      }
-
-      public override Builder Clone() {
-        if (resultIsReadOnly) {
-          return new Builder(result);
-        } else {
-          return new Builder().MergeFrom(result);
-        }
-      }
-
-      public override pbd::MessageDescriptor DescriptorForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.TestXmlRescursive.Descriptor; }
-      }
-
-      public override TestXmlRescursive DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.TestXmlRescursive.DefaultInstance; }
-      }
-
-      public override TestXmlRescursive BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is TestXmlRescursive) {
-          return MergeFrom((TestXmlRescursive) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(TestXmlRescursive other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.TestXmlRescursive.DefaultInstance) return this;
-        PrepareBuilder();
-        if (other.HasChild) {
-          MergeChild(other.Child);
-        }
-        this.MergeUnknownFields(other.UnknownFields);
-        return this;
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input) {
-        return MergeFrom(input, pb::ExtensionRegistry.Empty);
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-        PrepareBuilder();
-        pb::UnknownFieldSet.Builder unknownFields = null;
-        uint tag;
-        string field_name;
-        while (input.ReadTag(out tag, out field_name)) {
-          if(tag == 0 && field_name != null) {
-            int field_ordinal = global::System.Array.BinarySearch(_testXmlRescursiveFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _testXmlRescursiveFieldTags[field_ordinal];
-            else {
-              if (unknownFields == null) {
-                unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-              }
-              ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name);
-              continue;
-            }
-          }
-          switch (tag) {
-            case 0: {
-              throw pb::InvalidProtocolBufferException.InvalidTag();
-            }
-            default: {
-              if (pb::WireFormat.IsEndGroupTag(tag)) {
-                if (unknownFields != null) {
-                  this.UnknownFields = unknownFields.Build();
-                }
-                return this;
-              }
-              if (unknownFields == null) {
-                unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-              }
-              ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name);
-              break;
-            }
-            case 10: {
-              global::Google.ProtocolBuffers.TestProtos.TestXmlRescursive.Builder subBuilder = global::Google.ProtocolBuffers.TestProtos.TestXmlRescursive.CreateBuilder();
-              if (result.hasChild) {
-                subBuilder.MergeFrom(Child);
-              }
-              input.ReadMessage(subBuilder, extensionRegistry);
-              Child = subBuilder.BuildPartial();
-              break;
-            }
-          }
-        }
-
-        if (unknownFields != null) {
-          this.UnknownFields = unknownFields.Build();
-        }
-        return this;
-      }
-
-
-      public bool HasChild {
-       get { return result.hasChild; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.TestXmlRescursive Child {
-        get { return result.Child; }
-        set { SetChild(value); }
-      }
-      public Builder SetChild(global::Google.ProtocolBuffers.TestProtos.TestXmlRescursive value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasChild = true;
-        result.child_ = value;
-        return this;
-      }
-      public Builder SetChild(global::Google.ProtocolBuffers.TestProtos.TestXmlRescursive.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.hasChild = true;
-        result.child_ = builderForValue.Build();
-        return this;
-      }
-      public Builder MergeChild(global::Google.ProtocolBuffers.TestProtos.TestXmlRescursive value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        if (result.hasChild &&
-            result.child_ != global::Google.ProtocolBuffers.TestProtos.TestXmlRescursive.DefaultInstance) {
-            result.child_ = global::Google.ProtocolBuffers.TestProtos.TestXmlRescursive.CreateBuilder(result.child_).MergeFrom(value).BuildPartial();
-        } else {
-          result.child_ = value;
-        }
-        result.hasChild = true;
-        return this;
-      }
-      public Builder ClearChild() {
-        PrepareBuilder();
-        result.hasChild = false;
-        result.child_ = null;
-        return this;
-      }
-    }
-    static TestXmlRescursive() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnittestExtrasXmltest.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class TestXmlMessage : pb::ExtendableMessage<TestXmlMessage, TestXmlMessage.Builder> {
-    private TestXmlMessage() { }
-    private static readonly TestXmlMessage defaultInstance = new TestXmlMessage().MakeReadOnly();
-    private static readonly string[] _testXmlMessageFieldNames = new string[] { "child", "children", "number", "numbers", "text", "textlines", "valid" };
-    private static readonly uint[] _testXmlMessageFieldTags = new uint[] { 10, 3211, 48, 16, 26, 5602, 40 };
-    public static TestXmlMessage DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override TestXmlMessage DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override TestXmlMessage ThisMessage {
-      get { return this; }
-    }
-
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::Google.ProtocolBuffers.TestProtos.UnittestExtrasXmltest.internal__static_protobuf_unittest_extra_TestXmlMessage__Descriptor; }
-    }
-
-    protected override pb::FieldAccess.FieldAccessorTable<TestXmlMessage, TestXmlMessage.Builder> InternalFieldAccessors {
-      get { return global::Google.ProtocolBuffers.TestProtos.UnittestExtrasXmltest.internal__static_protobuf_unittest_extra_TestXmlMessage__FieldAccessorTable; }
-    }
-
-    #region Nested types
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public static partial class Types {
-      [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-      public sealed partial class Children : pb::GeneratedMessage<Children, Children.Builder> {
-        private Children() { }
-        private static readonly Children defaultInstance = new Children().MakeReadOnly();
-        private static readonly string[] _childrenFieldNames = new string[] { "binary", "options" };
-        private static readonly uint[] _childrenFieldTags = new uint[] { 34, 24 };
-        public static Children DefaultInstance {
-          get { return defaultInstance; }
-        }
-
-        public override Children DefaultInstanceForType {
-          get { return DefaultInstance; }
-        }
-
-        protected override Children ThisMessage {
-          get { return this; }
-        }
-
-        public static pbd::MessageDescriptor Descriptor {
-          get { return global::Google.ProtocolBuffers.TestProtos.UnittestExtrasXmltest.internal__static_protobuf_unittest_extra_TestXmlMessage_Children__Descriptor; }
-        }
-
-        protected override pb::FieldAccess.FieldAccessorTable<Children, Children.Builder> InternalFieldAccessors {
-          get { return global::Google.ProtocolBuffers.TestProtos.UnittestExtrasXmltest.internal__static_protobuf_unittest_extra_TestXmlMessage_Children__FieldAccessorTable; }
-        }
-
-        public const int OptionsFieldNumber = 3;
-        private pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.EnumOptions> options_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.EnumOptions>();
-        public scg::IList<global::Google.ProtocolBuffers.TestProtos.EnumOptions> OptionsList {
-          get { return pbc::Lists.AsReadOnly(options_); }
-        }
-        public int OptionsCount {
-          get { return options_.Count; }
-        }
-        public global::Google.ProtocolBuffers.TestProtos.EnumOptions GetOptions(int index) {
-          return options_[index];
-        }
-
-        public const int BinaryFieldNumber = 4;
-        private bool hasBinary;
-        private pb::ByteString binary_ = pb::ByteString.Empty;
-        public bool HasBinary {
-          get { return hasBinary; }
-        }
-        public pb::ByteString Binary {
-          get { return binary_; }
-        }
-
-        public override bool IsInitialized {
-          get {
-            return true;
-          }
-        }
-
-        public override void WriteTo(pb::ICodedOutputStream output) {
-          CalcSerializedSize();
-          string[] field_names = _childrenFieldNames;
-          if (options_.Count > 0) {
-            output.WriteEnumArray(3, field_names[1], options_);
-          }
-          if (hasBinary) {
-            output.WriteBytes(4, field_names[0], Binary);
-          }
-          UnknownFields.WriteTo(output);
-        }
-
-        private int memoizedSerializedSize = -1;
-        public override int SerializedSize {
-          get {
-            int size = memoizedSerializedSize;
-            if (size != -1) return size;
-            return CalcSerializedSize();
-          }
-        }
-
-        private int CalcSerializedSize() {
-          int size = memoizedSerializedSize;
-          if (size != -1) return size;
-
-          size = 0;
-          {
-            int dataSize = 0;
-            if (options_.Count > 0) {
-              foreach (global::Google.ProtocolBuffers.TestProtos.EnumOptions element in options_) {
-                dataSize += pb::CodedOutputStream.ComputeEnumSizeNoTag((int) element);
-              }
-              size += dataSize;
-              size += 1 * options_.Count;
-            }
-          }
-          if (hasBinary) {
-            size += pb::CodedOutputStream.ComputeBytesSize(4, Binary);
-          }
-          size += UnknownFields.SerializedSize;
-          memoizedSerializedSize = size;
-          return size;
-        }
-        public static Children ParseFrom(pb::ByteString data) {
-          return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-        }
-        public static Children ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-        }
-        public static Children ParseFrom(byte[] data) {
-          return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-        }
-        public static Children ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-        }
-        public static Children ParseFrom(global::System.IO.Stream input) {
-          return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-        }
-        public static Children ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-        }
-        public static Children ParseDelimitedFrom(global::System.IO.Stream input) {
-          return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-        }
-        public static Children ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-          return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-        }
-        public static Children ParseFrom(pb::ICodedInputStream input) {
-          return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-        }
-        public static Children ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-        }
-        private Children MakeReadOnly() {
-          options_.MakeReadOnly();
-          return this;
-        }
-
-        public static Builder CreateBuilder() { return new Builder(); }
-        public override Builder ToBuilder() { return CreateBuilder(this); }
-        public override Builder CreateBuilderForType() { return new Builder(); }
-        public static Builder CreateBuilder(Children prototype) {
-          return new Builder(prototype);
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-        public sealed partial class Builder : pb::GeneratedBuilder<Children, Builder> {
-          protected override Builder ThisBuilder {
-            get { return this; }
-          }
-          public Builder() {
-            result = DefaultInstance;
-            resultIsReadOnly = true;
-          }
-          internal Builder(Children cloneFrom) {
-            result = cloneFrom;
-            resultIsReadOnly = true;
-          }
-
-          private bool resultIsReadOnly;
-          private Children result;
-
-          private Children PrepareBuilder() {
-            if (resultIsReadOnly) {
-              Children original = result;
-              result = new Children();
-              resultIsReadOnly = false;
-              MergeFrom(original);
-            }
-            return result;
-          }
-
-          public override bool IsInitialized {
-            get { return result.IsInitialized; }
-          }
-
-          protected override Children MessageBeingBuilt {
-            get { return PrepareBuilder(); }
-          }
-
-          public override Builder Clear() {
-            result = DefaultInstance;
-            resultIsReadOnly = true;
-            return this;
-          }
-
-          public override Builder Clone() {
-            if (resultIsReadOnly) {
-              return new Builder(result);
-            } else {
-              return new Builder().MergeFrom(result);
-            }
-          }
-
-          public override pbd::MessageDescriptor DescriptorForType {
-            get { return global::Google.ProtocolBuffers.TestProtos.TestXmlMessage.Types.Children.Descriptor; }
-          }
-
-          public override Children DefaultInstanceForType {
-            get { return global::Google.ProtocolBuffers.TestProtos.TestXmlMessage.Types.Children.DefaultInstance; }
-          }
-
-          public override Children BuildPartial() {
-            if (resultIsReadOnly) {
-              return result;
-            }
-            resultIsReadOnly = true;
-            return result.MakeReadOnly();
-          }
-
-          public override Builder MergeFrom(pb::IMessage other) {
-            if (other is Children) {
-              return MergeFrom((Children) other);
-            } else {
-              base.MergeFrom(other);
-              return this;
-            }
-          }
-
-          public override Builder MergeFrom(Children other) {
-            if (other == global::Google.ProtocolBuffers.TestProtos.TestXmlMessage.Types.Children.DefaultInstance) return this;
-            PrepareBuilder();
-            if (other.options_.Count != 0) {
-              result.options_.Add(other.options_);
-            }
-            if (other.HasBinary) {
-              Binary = other.Binary;
-            }
-            this.MergeUnknownFields(other.UnknownFields);
-            return this;
-          }
-
-          public override Builder MergeFrom(pb::ICodedInputStream input) {
-            return MergeFrom(input, pb::ExtensionRegistry.Empty);
-          }
-
-          public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-            PrepareBuilder();
-            pb::UnknownFieldSet.Builder unknownFields = null;
-            uint tag;
-            string field_name;
-            while (input.ReadTag(out tag, out field_name)) {
-              if(tag == 0 && field_name != null) {
-                int field_ordinal = global::System.Array.BinarySearch(_childrenFieldNames, field_name, global::System.StringComparer.Ordinal);
-                if(field_ordinal >= 0)
-                  tag = _childrenFieldTags[field_ordinal];
-                else {
-                  if (unknownFields == null) {
-                    unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-                  }
-                  ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name);
-                  continue;
-                }
-              }
-              switch (tag) {
-                case 0: {
-                  throw pb::InvalidProtocolBufferException.InvalidTag();
-                }
-                default: {
-                  if (pb::WireFormat.IsEndGroupTag(tag)) {
-                    if (unknownFields != null) {
-                      this.UnknownFields = unknownFields.Build();
-                    }
-                    return this;
-                  }
-                  if (unknownFields == null) {
-                    unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-                  }
-                  ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name);
-                  break;
-                }
-                case 26:
-                case 24: {
-                  scg::ICollection<object> unknownItems;
-                  input.ReadEnumArray<global::Google.ProtocolBuffers.TestProtos.EnumOptions>(tag, field_name, result.options_, out unknownItems);
-                  if (unknownItems != null) {
-                    if (unknownFields == null) {
-                      unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-                    }
-                    foreach (object rawValue in unknownItems)
-                      if (rawValue is int)
-                        unknownFields.MergeVarintField(3, (ulong)(int)rawValue);
-                  }
-                  break;
-                }
-                case 34: {
-                  result.hasBinary = input.ReadBytes(ref result.binary_);
-                  break;
-                }
-              }
-            }
-
-            if (unknownFields != null) {
-              this.UnknownFields = unknownFields.Build();
-            }
-            return this;
-          }
-
-
-          public pbc::IPopsicleList<global::Google.ProtocolBuffers.TestProtos.EnumOptions> OptionsList {
-            get { return PrepareBuilder().options_; }
-          }
-          public int OptionsCount {
-            get { return result.OptionsCount; }
-          }
-          public global::Google.ProtocolBuffers.TestProtos.EnumOptions GetOptions(int index) {
-            return result.GetOptions(index);
-          }
-          public Builder SetOptions(int index, global::Google.ProtocolBuffers.TestProtos.EnumOptions value) {
-            PrepareBuilder();
-            result.options_[index] = value;
-            return this;
-          }
-          public Builder AddOptions(global::Google.ProtocolBuffers.TestProtos.EnumOptions value) {
-            PrepareBuilder();
-            result.options_.Add(value);
-            return this;
-          }
-          public Builder AddRangeOptions(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.EnumOptions> values) {
-            PrepareBuilder();
-            result.options_.Add(values);
-            return this;
-          }
-          public Builder ClearOptions() {
-            PrepareBuilder();
-            result.options_.Clear();
-            return this;
-          }
-
-          public bool HasBinary {
-            get { return result.hasBinary; }
-          }
-          public pb::ByteString Binary {
-            get { return result.Binary; }
-            set { SetBinary(value); }
-          }
-          public Builder SetBinary(pb::ByteString value) {
-            pb::ThrowHelper.ThrowIfNull(value, "value");
-            PrepareBuilder();
-            result.hasBinary = true;
-            result.binary_ = value;
-            return this;
-          }
-          public Builder ClearBinary() {
-            PrepareBuilder();
-            result.hasBinary = false;
-            result.binary_ = pb::ByteString.Empty;
-            return this;
-          }
-        }
-        static Children() {
-          object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnittestExtrasXmltest.Descriptor, null);
-        }
-      }
-
-    }
-    #endregion
-
-    public const int NumberFieldNumber = 6;
-    private bool hasNumber;
-    private long number_;
-    public bool HasNumber {
-      get { return hasNumber; }
-    }
-    public long Number {
-      get { return number_; }
-    }
-
-    public const int NumbersFieldNumber = 2;
-    private pbc::PopsicleList<int> numbers_ = new pbc::PopsicleList<int>();
-    public scg::IList<int> NumbersList {
-      get { return pbc::Lists.AsReadOnly(numbers_); }
-    }
-    public int NumbersCount {
-      get { return numbers_.Count; }
-    }
-    public int GetNumbers(int index) {
-      return numbers_[index];
-    }
-
-    public const int TextFieldNumber = 3;
-    private bool hasText;
-    private string text_ = "";
-    public bool HasText {
-      get { return hasText; }
-    }
-    public string Text {
-      get { return text_; }
-    }
-
-    public const int TextlinesFieldNumber = 700;
-    private pbc::PopsicleList<string> textlines_ = new pbc::PopsicleList<string>();
-    public scg::IList<string> TextlinesList {
-      get { return pbc::Lists.AsReadOnly(textlines_); }
-    }
-    public int TextlinesCount {
-      get { return textlines_.Count; }
-    }
-    public string GetTextlines(int index) {
-      return textlines_[index];
-    }
-
-    public const int ValidFieldNumber = 5;
-    private bool hasValid;
-    private bool valid_;
-    public bool HasValid {
-      get { return hasValid; }
-    }
-    public bool Valid {
-      get { return valid_; }
-    }
-
-    public const int ChildFieldNumber = 1;
-    private bool hasChild;
-    private global::Google.ProtocolBuffers.TestProtos.TestXmlChild child_;
-    public bool HasChild {
-      get { return hasChild; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.TestXmlChild Child {
-      get { return child_ ?? global::Google.ProtocolBuffers.TestProtos.TestXmlChild.DefaultInstance; }
-    }
-
-    public const int ChildrenFieldNumber = 401;
-    private pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.TestXmlMessage.Types.Children> children_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.TestXmlMessage.Types.Children>();
-    public scg::IList<global::Google.ProtocolBuffers.TestProtos.TestXmlMessage.Types.Children> ChildrenList {
-      get { return children_; }
-    }
-    public int ChildrenCount {
-      get { return children_.Count; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.TestXmlMessage.Types.Children GetChildren(int index) {
-      return children_[index];
-    }
-
-    public override bool IsInitialized {
-      get {
-        if (!ExtensionsAreInitialized) return false;
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _testXmlMessageFieldNames;
-      pb::ExtendableMessage<TestXmlMessage, TestXmlMessage.Builder>.ExtensionWriter extensionWriter = CreateExtensionWriter(this);
-      if (hasChild) {
-        output.WriteMessage(1, field_names[0], Child);
-      }
-      if (numbers_.Count > 0) {
-        output.WriteInt32Array(2, field_names[3], numbers_);
-      }
-      if (hasText) {
-        output.WriteString(3, field_names[4], Text);
-      }
-      if (hasValid) {
-        output.WriteBool(5, field_names[6], Valid);
-      }
-      if (hasNumber) {
-        output.WriteInt64(6, field_names[2], Number);
-      }
-      extensionWriter.WriteUntil(200, output);
-      if (children_.Count > 0) {
-        output.WriteGroupArray(401, field_names[1], children_);
-      }
-      if (textlines_.Count > 0) {
-        output.WriteStringArray(700, field_names[5], textlines_);
-      }
-      UnknownFields.WriteTo(output);
-    }
-
-    private int memoizedSerializedSize = -1;
-    public override int SerializedSize {
-      get {
-        int size = memoizedSerializedSize;
-        if (size != -1) return size;
-        return CalcSerializedSize();
-      }
-    }
-
-    private int CalcSerializedSize() {
-      int size = memoizedSerializedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (hasNumber) {
-        size += pb::CodedOutputStream.ComputeInt64Size(6, Number);
-      }
-      {
-        int dataSize = 0;
-        foreach (int element in NumbersList) {
-          dataSize += pb::CodedOutputStream.ComputeInt32SizeNoTag(element);
-        }
-        size += dataSize;
-        size += 1 * numbers_.Count;
-      }
-      if (hasText) {
-        size += pb::CodedOutputStream.ComputeStringSize(3, Text);
-      }
-      {
-        int dataSize = 0;
-        foreach (string element in TextlinesList) {
-          dataSize += pb::CodedOutputStream.ComputeStringSizeNoTag(element);
-        }
-        size += dataSize;
-        size += 2 * textlines_.Count;
-      }
-      if (hasValid) {
-        size += pb::CodedOutputStream.ComputeBoolSize(5, Valid);
-      }
-      if (hasChild) {
-        size += pb::CodedOutputStream.ComputeMessageSize(1, Child);
-      }
-      foreach (global::Google.ProtocolBuffers.TestProtos.TestXmlMessage.Types.Children element in ChildrenList) {
-        size += pb::CodedOutputStream.ComputeGroupSize(401, element);
-      }
-      size += ExtensionsSerializedSize;
-      size += UnknownFields.SerializedSize;
-      memoizedSerializedSize = size;
-      return size;
-    }
-    public static TestXmlMessage ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestXmlMessage ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestXmlMessage ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestXmlMessage ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestXmlMessage ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestXmlMessage ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static TestXmlMessage ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static TestXmlMessage ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static TestXmlMessage ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestXmlMessage ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private TestXmlMessage MakeReadOnly() {
-      numbers_.MakeReadOnly();
-      textlines_.MakeReadOnly();
-      children_.MakeReadOnly();
-      return this;
-    }
-
-    public static Builder CreateBuilder() { return new Builder(); }
-    public override Builder ToBuilder() { return CreateBuilder(this); }
-    public override Builder CreateBuilderForType() { return new Builder(); }
-    public static Builder CreateBuilder(TestXmlMessage prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::ExtendableBuilder<TestXmlMessage, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(TestXmlMessage cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private TestXmlMessage result;
-
-      private TestXmlMessage PrepareBuilder() {
-        if (resultIsReadOnly) {
-          TestXmlMessage original = result;
-          result = new TestXmlMessage();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override TestXmlMessage MessageBeingBuilt {
-        get { return PrepareBuilder(); }
-      }
-
-      public override Builder Clear() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-        return this;
-      }
-
-      public override Builder Clone() {
-        if (resultIsReadOnly) {
-          return new Builder(result);
-        } else {
-          return new Builder().MergeFrom(result);
-        }
-      }
-
-      public override pbd::MessageDescriptor DescriptorForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.TestXmlMessage.Descriptor; }
-      }
-
-      public override TestXmlMessage DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.TestXmlMessage.DefaultInstance; }
-      }
-
-      public override TestXmlMessage BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is TestXmlMessage) {
-          return MergeFrom((TestXmlMessage) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(TestXmlMessage other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.TestXmlMessage.DefaultInstance) return this;
-        PrepareBuilder();
-        if (other.HasNumber) {
-          Number = other.Number;
-        }
-        if (other.numbers_.Count != 0) {
-          result.numbers_.Add(other.numbers_);
-        }
-        if (other.HasText) {
-          Text = other.Text;
-        }
-        if (other.textlines_.Count != 0) {
-          result.textlines_.Add(other.textlines_);
-        }
-        if (other.HasValid) {
-          Valid = other.Valid;
-        }
-        if (other.HasChild) {
-          MergeChild(other.Child);
-        }
-        if (other.children_.Count != 0) {
-          result.children_.Add(other.children_);
-        }
-          this.MergeExtensionFields(other);
-        this.MergeUnknownFields(other.UnknownFields);
-        return this;
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input) {
-        return MergeFrom(input, pb::ExtensionRegistry.Empty);
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-        PrepareBuilder();
-        pb::UnknownFieldSet.Builder unknownFields = null;
-        uint tag;
-        string field_name;
-        while (input.ReadTag(out tag, out field_name)) {
-          if(tag == 0 && field_name != null) {
-            int field_ordinal = global::System.Array.BinarySearch(_testXmlMessageFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _testXmlMessageFieldTags[field_ordinal];
-            else {
-              if (unknownFields == null) {
-                unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-              }
-              ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name);
-              continue;
-            }
-          }
-          switch (tag) {
-            case 0: {
-              throw pb::InvalidProtocolBufferException.InvalidTag();
-            }
-            default: {
-              if (pb::WireFormat.IsEndGroupTag(tag)) {
-                if (unknownFields != null) {
-                  this.UnknownFields = unknownFields.Build();
-                }
-                return this;
-              }
-              if (unknownFields == null) {
-                unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-              }
-              ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name);
-              break;
-            }
-            case 10: {
-              global::Google.ProtocolBuffers.TestProtos.TestXmlChild.Builder subBuilder = global::Google.ProtocolBuffers.TestProtos.TestXmlChild.CreateBuilder();
-              if (result.hasChild) {
-                subBuilder.MergeFrom(Child);
-              }
-              input.ReadMessage(subBuilder, extensionRegistry);
-              Child = subBuilder.BuildPartial();
-              break;
-            }
-            case 18:
-            case 16: {
-              input.ReadInt32Array(tag, field_name, result.numbers_);
-              break;
-            }
-            case 26: {
-              result.hasText = input.ReadString(ref result.text_);
-              break;
-            }
-            case 40: {
-              result.hasValid = input.ReadBool(ref result.valid_);
-              break;
-            }
-            case 48: {
-              result.hasNumber = input.ReadInt64(ref result.number_);
-              break;
-            }
-            case 3211: {
-              input.ReadGroupArray(tag, field_name, result.children_, global::Google.ProtocolBuffers.TestProtos.TestXmlMessage.Types.Children.DefaultInstance, extensionRegistry);
-              break;
-            }
-            case 5602: {
-              input.ReadStringArray(tag, field_name, result.textlines_);
-              break;
-            }
-          }
-        }
-
-        if (unknownFields != null) {
-          this.UnknownFields = unknownFields.Build();
-        }
-        return this;
-      }
-
-
-      public bool HasNumber {
-        get { return result.hasNumber; }
-      }
-      public long Number {
-        get { return result.Number; }
-        set { SetNumber(value); }
-      }
-      public Builder SetNumber(long value) {
-        PrepareBuilder();
-        result.hasNumber = true;
-        result.number_ = value;
-        return this;
-      }
-      public Builder ClearNumber() {
-        PrepareBuilder();
-        result.hasNumber = false;
-        result.number_ = 0L;
-        return this;
-      }
-
-      public pbc::IPopsicleList<int> NumbersList {
-        get { return PrepareBuilder().numbers_; }
-      }
-      public int NumbersCount {
-        get { return result.NumbersCount; }
-      }
-      public int GetNumbers(int index) {
-        return result.GetNumbers(index);
-      }
-      public Builder SetNumbers(int index, int value) {
-        PrepareBuilder();
-        result.numbers_[index] = value;
-        return this;
-      }
-      public Builder AddNumbers(int value) {
-        PrepareBuilder();
-        result.numbers_.Add(value);
-        return this;
-      }
-      public Builder AddRangeNumbers(scg::IEnumerable<int> values) {
-        PrepareBuilder();
-        result.numbers_.Add(values);
-        return this;
-      }
-      public Builder ClearNumbers() {
-        PrepareBuilder();
-        result.numbers_.Clear();
-        return this;
-      }
-
-      public bool HasText {
-        get { return result.hasText; }
-      }
-      public string Text {
-        get { return result.Text; }
-        set { SetText(value); }
-      }
-      public Builder SetText(string value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasText = true;
-        result.text_ = value;
-        return this;
-      }
-      public Builder ClearText() {
-        PrepareBuilder();
-        result.hasText = false;
-        result.text_ = "";
-        return this;
-      }
-
-      public pbc::IPopsicleList<string> TextlinesList {
-        get { return PrepareBuilder().textlines_; }
-      }
-      public int TextlinesCount {
-        get { return result.TextlinesCount; }
-      }
-      public string GetTextlines(int index) {
-        return result.GetTextlines(index);
-      }
-      public Builder SetTextlines(int index, string value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.textlines_[index] = value;
-        return this;
-      }
-      public Builder AddTextlines(string value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.textlines_.Add(value);
-        return this;
-      }
-      public Builder AddRangeTextlines(scg::IEnumerable<string> values) {
-        PrepareBuilder();
-        result.textlines_.Add(values);
-        return this;
-      }
-      public Builder ClearTextlines() {
-        PrepareBuilder();
-        result.textlines_.Clear();
-        return this;
-      }
-
-      public bool HasValid {
-        get { return result.hasValid; }
-      }
-      public bool Valid {
-        get { return result.Valid; }
-        set { SetValid(value); }
-      }
-      public Builder SetValid(bool value) {
-        PrepareBuilder();
-        result.hasValid = true;
-        result.valid_ = value;
-        return this;
-      }
-      public Builder ClearValid() {
-        PrepareBuilder();
-        result.hasValid = false;
-        result.valid_ = false;
-        return this;
-      }
-
-      public bool HasChild {
-       get { return result.hasChild; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.TestXmlChild Child {
-        get { return result.Child; }
-        set { SetChild(value); }
-      }
-      public Builder SetChild(global::Google.ProtocolBuffers.TestProtos.TestXmlChild value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasChild = true;
-        result.child_ = value;
-        return this;
-      }
-      public Builder SetChild(global::Google.ProtocolBuffers.TestProtos.TestXmlChild.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.hasChild = true;
-        result.child_ = builderForValue.Build();
-        return this;
-      }
-      public Builder MergeChild(global::Google.ProtocolBuffers.TestProtos.TestXmlChild value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        if (result.hasChild &&
-            result.child_ != global::Google.ProtocolBuffers.TestProtos.TestXmlChild.DefaultInstance) {
-            result.child_ = global::Google.ProtocolBuffers.TestProtos.TestXmlChild.CreateBuilder(result.child_).MergeFrom(value).BuildPartial();
-        } else {
-          result.child_ = value;
-        }
-        result.hasChild = true;
-        return this;
-      }
-      public Builder ClearChild() {
-        PrepareBuilder();
-        result.hasChild = false;
-        result.child_ = null;
-        return this;
-      }
-
-      public pbc::IPopsicleList<global::Google.ProtocolBuffers.TestProtos.TestXmlMessage.Types.Children> ChildrenList {
-        get { return PrepareBuilder().children_; }
-      }
-      public int ChildrenCount {
-        get { return result.ChildrenCount; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.TestXmlMessage.Types.Children GetChildren(int index) {
-        return result.GetChildren(index);
-      }
-      public Builder SetChildren(int index, global::Google.ProtocolBuffers.TestProtos.TestXmlMessage.Types.Children value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.children_[index] = value;
-        return this;
-      }
-      public Builder SetChildren(int index, global::Google.ProtocolBuffers.TestProtos.TestXmlMessage.Types.Children.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.children_[index] = builderForValue.Build();
-        return this;
-      }
-      public Builder AddChildren(global::Google.ProtocolBuffers.TestProtos.TestXmlMessage.Types.Children value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.children_.Add(value);
-        return this;
-      }
-      public Builder AddChildren(global::Google.ProtocolBuffers.TestProtos.TestXmlMessage.Types.Children.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.children_.Add(builderForValue.Build());
-        return this;
-      }
-      public Builder AddRangeChildren(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.TestXmlMessage.Types.Children> values) {
-        PrepareBuilder();
-        result.children_.Add(values);
-        return this;
-      }
-      public Builder ClearChildren() {
-        PrepareBuilder();
-        result.children_.Clear();
-        return this;
-      }
-    }
-    static TestXmlMessage() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnittestExtrasXmltest.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class TestXmlExtension : pb::GeneratedMessage<TestXmlExtension, TestXmlExtension.Builder> {
-    private TestXmlExtension() { }
-    private static readonly TestXmlExtension defaultInstance = new TestXmlExtension().MakeReadOnly();
-    private static readonly string[] _testXmlExtensionFieldNames = new string[] { "number" };
-    private static readonly uint[] _testXmlExtensionFieldTags = new uint[] { 8 };
-    public static TestXmlExtension DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override TestXmlExtension DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override TestXmlExtension ThisMessage {
-      get { return this; }
-    }
-
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::Google.ProtocolBuffers.TestProtos.UnittestExtrasXmltest.internal__static_protobuf_unittest_extra_TestXmlExtension__Descriptor; }
-    }
-
-    protected override pb::FieldAccess.FieldAccessorTable<TestXmlExtension, TestXmlExtension.Builder> InternalFieldAccessors {
-      get { return global::Google.ProtocolBuffers.TestProtos.UnittestExtrasXmltest.internal__static_protobuf_unittest_extra_TestXmlExtension__FieldAccessorTable; }
-    }
-
-    public const int NumberFieldNumber = 1;
-    private bool hasNumber;
-    private int number_;
-    public bool HasNumber {
-      get { return hasNumber; }
-    }
-    public int Number {
-      get { return number_; }
-    }
-
-    public override bool IsInitialized {
-      get {
-        if (!hasNumber) return false;
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _testXmlExtensionFieldNames;
-      if (hasNumber) {
-        output.WriteInt32(1, field_names[0], Number);
-      }
-      UnknownFields.WriteTo(output);
-    }
-
-    private int memoizedSerializedSize = -1;
-    public override int SerializedSize {
-      get {
-        int size = memoizedSerializedSize;
-        if (size != -1) return size;
-        return CalcSerializedSize();
-      }
-    }
-
-    private int CalcSerializedSize() {
-      int size = memoizedSerializedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (hasNumber) {
-        size += pb::CodedOutputStream.ComputeInt32Size(1, Number);
-      }
-      size += UnknownFields.SerializedSize;
-      memoizedSerializedSize = size;
-      return size;
-    }
-    public static TestXmlExtension ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestXmlExtension ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestXmlExtension ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestXmlExtension ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestXmlExtension ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestXmlExtension ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static TestXmlExtension ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static TestXmlExtension ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static TestXmlExtension ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestXmlExtension ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private TestXmlExtension MakeReadOnly() {
-      return this;
-    }
-
-    public static Builder CreateBuilder() { return new Builder(); }
-    public override Builder ToBuilder() { return CreateBuilder(this); }
-    public override Builder CreateBuilderForType() { return new Builder(); }
-    public static Builder CreateBuilder(TestXmlExtension prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilder<TestXmlExtension, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(TestXmlExtension cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private TestXmlExtension result;
-
-      private TestXmlExtension PrepareBuilder() {
-        if (resultIsReadOnly) {
-          TestXmlExtension original = result;
-          result = new TestXmlExtension();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override TestXmlExtension MessageBeingBuilt {
-        get { return PrepareBuilder(); }
-      }
-
-      public override Builder Clear() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-        return this;
-      }
-
-      public override Builder Clone() {
-        if (resultIsReadOnly) {
-          return new Builder(result);
-        } else {
-          return new Builder().MergeFrom(result);
-        }
-      }
-
-      public override pbd::MessageDescriptor DescriptorForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.TestXmlExtension.Descriptor; }
-      }
-
-      public override TestXmlExtension DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.TestXmlExtension.DefaultInstance; }
-      }
-
-      public override TestXmlExtension BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is TestXmlExtension) {
-          return MergeFrom((TestXmlExtension) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(TestXmlExtension other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.TestXmlExtension.DefaultInstance) return this;
-        PrepareBuilder();
-        if (other.HasNumber) {
-          Number = other.Number;
-        }
-        this.MergeUnknownFields(other.UnknownFields);
-        return this;
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input) {
-        return MergeFrom(input, pb::ExtensionRegistry.Empty);
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-        PrepareBuilder();
-        pb::UnknownFieldSet.Builder unknownFields = null;
-        uint tag;
-        string field_name;
-        while (input.ReadTag(out tag, out field_name)) {
-          if(tag == 0 && field_name != null) {
-            int field_ordinal = global::System.Array.BinarySearch(_testXmlExtensionFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _testXmlExtensionFieldTags[field_ordinal];
-            else {
-              if (unknownFields == null) {
-                unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-              }
-              ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name);
-              continue;
-            }
-          }
-          switch (tag) {
-            case 0: {
-              throw pb::InvalidProtocolBufferException.InvalidTag();
-            }
-            default: {
-              if (pb::WireFormat.IsEndGroupTag(tag)) {
-                if (unknownFields != null) {
-                  this.UnknownFields = unknownFields.Build();
-                }
-                return this;
-              }
-              if (unknownFields == null) {
-                unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-              }
-              ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name);
-              break;
-            }
-            case 8: {
-              result.hasNumber = input.ReadInt32(ref result.number_);
-              break;
-            }
-          }
-        }
-
-        if (unknownFields != null) {
-          this.UnknownFields = unknownFields.Build();
-        }
-        return this;
-      }
-
-
-      public bool HasNumber {
-        get { return result.hasNumber; }
-      }
-      public int Number {
-        get { return result.Number; }
-        set { SetNumber(value); }
-      }
-      public Builder SetNumber(int value) {
-        PrepareBuilder();
-        result.hasNumber = true;
-        result.number_ = value;
-        return this;
-      }
-      public Builder ClearNumber() {
-        PrepareBuilder();
-        result.hasNumber = false;
-        result.number_ = 0;
-        return this;
-      }
-    }
-    static TestXmlExtension() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnittestExtrasXmltest.Descriptor, null);
-    }
-  }
-
-  #endregion
-
-}
-
-#endregion Designer generated code

+ 3 - 1
csharp/src/ProtocolBuffersLite.Test/TestProtos/UnittestImportLite.cs

@@ -101,7 +101,9 @@ namespace Google.ProtocolBuffers.TestProtos {
     #region Lite runtime methods
     #region Lite runtime methods
     public override int GetHashCode() {
     public override int GetHashCode() {
       int hash = GetType().GetHashCode();
       int hash = GetType().GetHashCode();
-      if (hasD) hash ^= d_.GetHashCode();
+      if (hasD) {
+        hash ^= d_.GetHashCode();
+      }
       return hash;
       return hash;
     }
     }
 
 

+ 3 - 1
csharp/src/ProtocolBuffersLite.Test/TestProtos/UnittestImportPublicLite.cs

@@ -92,7 +92,9 @@ namespace Google.ProtocolBuffers.TestProtos {
     #region Lite runtime methods
     #region Lite runtime methods
     public override int GetHashCode() {
     public override int GetHashCode() {
       int hash = GetType().GetHashCode();
       int hash = GetType().GetHashCode();
-      if (hasE) hash ^= e_.GetHashCode();
+      if (hasE) {
+        hash ^= e_.GetHashCode();
+      }
       return hash;
       return hash;
     }
     }
 
 

+ 0 - 3437
csharp/src/ProtocolBuffersLite.Test/TestProtos/UnittestIssues.cs

@@ -1,3437 +0,0 @@
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
-// source: unittest_issues.proto
-#pragma warning disable 1591, 0612, 3021
-#region Designer generated code
-
-using pb = global::Google.ProtocolBuffers;
-using pbc = global::Google.ProtocolBuffers.Collections;
-using pbd = global::Google.ProtocolBuffers.Descriptors;
-using scg = global::System.Collections.Generic;
-namespace UnitTest.Issues.TestProtos {
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public static partial class UnittestIssues {
-
-    #region Extension registration
-    public static void RegisterAllExtensions(pb::ExtensionRegistry registry) {
-    }
-    #endregion
-    #region Static variables
-    internal static pbd::MessageDescriptor internal__static_unittest_issues_A__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::UnitTest.Issues.TestProtos.A, global::UnitTest.Issues.TestProtos.A.Builder> internal__static_unittest_issues_A__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_unittest_issues_B__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::UnitTest.Issues.TestProtos.B, global::UnitTest.Issues.TestProtos.B.Builder> internal__static_unittest_issues_B__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_unittest_issues_AB__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::UnitTest.Issues.TestProtos.AB, global::UnitTest.Issues.TestProtos.AB.Builder> internal__static_unittest_issues_AB__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_unittest_issues_NumberField__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::UnitTest.Issues.TestProtos.NumberField, global::UnitTest.Issues.TestProtos.NumberField.Builder> internal__static_unittest_issues_NumberField__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_unittest_issues_MyMessageAReferenceB__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::UnitTest.Issues.TestProtos.MyMessageAReferenceB, global::UnitTest.Issues.TestProtos.MyMessageAReferenceB.Builder> internal__static_unittest_issues_MyMessageAReferenceB__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_unittest_issues_MyMessageBReferenceA__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::UnitTest.Issues.TestProtos.MyMessageBReferenceA, global::UnitTest.Issues.TestProtos.MyMessageBReferenceA.Builder> internal__static_unittest_issues_MyMessageBReferenceA__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_unittest_issues_NegativeEnumMessage__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::UnitTest.Issues.TestProtos.NegativeEnumMessage, global::UnitTest.Issues.TestProtos.NegativeEnumMessage.Builder> internal__static_unittest_issues_NegativeEnumMessage__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_unittest_issues_DeprecatedChild__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::UnitTest.Issues.TestProtos.DeprecatedChild, global::UnitTest.Issues.TestProtos.DeprecatedChild.Builder> internal__static_unittest_issues_DeprecatedChild__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_unittest_issues_DeprecatedFieldsMessage__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::UnitTest.Issues.TestProtos.DeprecatedFieldsMessage, global::UnitTest.Issues.TestProtos.DeprecatedFieldsMessage.Builder> internal__static_unittest_issues_DeprecatedFieldsMessage__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_unittest_issues_ItemField__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::UnitTest.Issues.TestProtos.ItemField, global::UnitTest.Issues.TestProtos.ItemField.Builder> internal__static_unittest_issues_ItemField__FieldAccessorTable;
-    #endregion
-    #region Descriptor
-    public static pbd::FileDescriptor Descriptor {
-      get { return descriptor; }
-    }
-    private static pbd::FileDescriptor descriptor;
-
-    static UnittestIssues() {
-      byte[] descriptorData = global::System.Convert.FromBase64String(
-          string.Concat(
-            "ChV1bml0dGVzdF9pc3N1ZXMucHJvdG8SD3VuaXR0ZXN0X2lzc3VlcyIPCgFB", 
-            "EgoKAl9BGAEgASgFIg8KAUISCgoCQl8YASABKAUiEQoCQUISCwoDYV9iGAEg", 
-            "ASgFIhoKC051bWJlckZpZWxkEgsKA18wMRgBIAEoBSJMChRNeU1lc3NhZ2VB", 
-            "UmVmZXJlbmNlQhI0CgV2YWx1ZRgBIAIoCzIlLnVuaXR0ZXN0X2lzc3Vlcy5N", 
-            "eU1lc3NhZ2VCUmVmZXJlbmNlQSJMChRNeU1lc3NhZ2VCUmVmZXJlbmNlQRI0", 
-            "CgV2YWx1ZRgBIAIoCzIlLnVuaXR0ZXN0X2lzc3Vlcy5NeU1lc3NhZ2VBUmVm", 
-            "ZXJlbmNlQiKsAQoTTmVnYXRpdmVFbnVtTWVzc2FnZRIsCgV2YWx1ZRgBIAEo", 
-            "DjIdLnVuaXR0ZXN0X2lzc3Vlcy5OZWdhdGl2ZUVudW0SLQoGdmFsdWVzGAIg", 
-            "AygOMh0udW5pdHRlc3RfaXNzdWVzLk5lZ2F0aXZlRW51bRI4Cg1wYWNrZWRf", 
-            "dmFsdWVzGAMgAygOMh0udW5pdHRlc3RfaXNzdWVzLk5lZ2F0aXZlRW51bUIC", 
-            "EAEiEQoPRGVwcmVjYXRlZENoaWxkIrkCChdEZXByZWNhdGVkRmllbGRzTWVz", 
-            "c2FnZRIaCg5QcmltaXRpdmVWYWx1ZRgBIAEoBUICGAESGgoOUHJpbWl0aXZl", 
-            "QXJyYXkYAiADKAVCAhgBEjoKDE1lc3NhZ2VWYWx1ZRgDIAEoCzIgLnVuaXR0", 
-            "ZXN0X2lzc3Vlcy5EZXByZWNhdGVkQ2hpbGRCAhgBEjoKDE1lc3NhZ2VBcnJh", 
-            "eRgEIAMoCzIgLnVuaXR0ZXN0X2lzc3Vlcy5EZXByZWNhdGVkQ2hpbGRCAhgB", 
-            "EjYKCUVudW1WYWx1ZRgFIAEoDjIfLnVuaXR0ZXN0X2lzc3Vlcy5EZXByZWNh", 
-            "dGVkRW51bUICGAESNgoJRW51bUFycmF5GAYgAygOMh8udW5pdHRlc3RfaXNz", 
-            "dWVzLkRlcHJlY2F0ZWRFbnVtQgIYASIZCglJdGVtRmllbGQSDAoEaXRlbRgB", 
-            "IAEoBSpHCgxOZWdhdGl2ZUVudW0SFgoJRml2ZUJlbG93EPv//////////wES", 
-            "FQoITWludXNPbmUQ////////////ARIICgRaZXJvEAAqGQoORGVwcmVjYXRl", 
-            "ZEVudW0SBwoDb25lEAFCH0gBqgIaVW5pdFRlc3QuSXNzdWVzLlRlc3RQcm90", 
-          "b3M="));
-      pbd::FileDescriptor.InternalDescriptorAssigner assigner = delegate(pbd::FileDescriptor root) {
-        descriptor = root;
-        internal__static_unittest_issues_A__Descriptor = Descriptor.MessageTypes[0];
-        internal__static_unittest_issues_A__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::UnitTest.Issues.TestProtos.A, global::UnitTest.Issues.TestProtos.A.Builder>(internal__static_unittest_issues_A__Descriptor,
-                new string[] { "A_", });
-        internal__static_unittest_issues_B__Descriptor = Descriptor.MessageTypes[1];
-        internal__static_unittest_issues_B__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::UnitTest.Issues.TestProtos.B, global::UnitTest.Issues.TestProtos.B.Builder>(internal__static_unittest_issues_B__Descriptor,
-                new string[] { "B_", });
-        internal__static_unittest_issues_AB__Descriptor = Descriptor.MessageTypes[2];
-        internal__static_unittest_issues_AB__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::UnitTest.Issues.TestProtos.AB, global::UnitTest.Issues.TestProtos.AB.Builder>(internal__static_unittest_issues_AB__Descriptor,
-                new string[] { "AB_", });
-        internal__static_unittest_issues_NumberField__Descriptor = Descriptor.MessageTypes[3];
-        internal__static_unittest_issues_NumberField__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::UnitTest.Issues.TestProtos.NumberField, global::UnitTest.Issues.TestProtos.NumberField.Builder>(internal__static_unittest_issues_NumberField__Descriptor,
-                new string[] { "01", });
-        internal__static_unittest_issues_MyMessageAReferenceB__Descriptor = Descriptor.MessageTypes[4];
-        internal__static_unittest_issues_MyMessageAReferenceB__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::UnitTest.Issues.TestProtos.MyMessageAReferenceB, global::UnitTest.Issues.TestProtos.MyMessageAReferenceB.Builder>(internal__static_unittest_issues_MyMessageAReferenceB__Descriptor,
-                new string[] { "Value", });
-        internal__static_unittest_issues_MyMessageBReferenceA__Descriptor = Descriptor.MessageTypes[5];
-        internal__static_unittest_issues_MyMessageBReferenceA__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::UnitTest.Issues.TestProtos.MyMessageBReferenceA, global::UnitTest.Issues.TestProtos.MyMessageBReferenceA.Builder>(internal__static_unittest_issues_MyMessageBReferenceA__Descriptor,
-                new string[] { "Value", });
-        internal__static_unittest_issues_NegativeEnumMessage__Descriptor = Descriptor.MessageTypes[6];
-        internal__static_unittest_issues_NegativeEnumMessage__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::UnitTest.Issues.TestProtos.NegativeEnumMessage, global::UnitTest.Issues.TestProtos.NegativeEnumMessage.Builder>(internal__static_unittest_issues_NegativeEnumMessage__Descriptor,
-                new string[] { "Value", "Values", "PackedValues", });
-        internal__static_unittest_issues_DeprecatedChild__Descriptor = Descriptor.MessageTypes[7];
-        internal__static_unittest_issues_DeprecatedChild__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::UnitTest.Issues.TestProtos.DeprecatedChild, global::UnitTest.Issues.TestProtos.DeprecatedChild.Builder>(internal__static_unittest_issues_DeprecatedChild__Descriptor,
-                new string[] { });
-        internal__static_unittest_issues_DeprecatedFieldsMessage__Descriptor = Descriptor.MessageTypes[8];
-        internal__static_unittest_issues_DeprecatedFieldsMessage__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::UnitTest.Issues.TestProtos.DeprecatedFieldsMessage, global::UnitTest.Issues.TestProtos.DeprecatedFieldsMessage.Builder>(internal__static_unittest_issues_DeprecatedFieldsMessage__Descriptor,
-                new string[] { "PrimitiveValue", "PrimitiveArray", "MessageValue", "MessageArray", "EnumValue", "EnumArray", });
-        internal__static_unittest_issues_ItemField__Descriptor = Descriptor.MessageTypes[9];
-        internal__static_unittest_issues_ItemField__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::UnitTest.Issues.TestProtos.ItemField, global::UnitTest.Issues.TestProtos.ItemField.Builder>(internal__static_unittest_issues_ItemField__Descriptor,
-                new string[] { "Item", });
-        pb::ExtensionRegistry registry = pb::ExtensionRegistry.CreateInstance();
-        RegisterAllExtensions(registry);
-        return registry;
-      };
-      pbd::FileDescriptor.InternalBuildGeneratedFileFrom(descriptorData,
-          new pbd::FileDescriptor[] {
-          }, assigner);
-    }
-    #endregion
-
-  }
-  #region Enums
-  public enum NegativeEnum {
-    FiveBelow = -5,
-    MinusOne = -1,
-    Zero = 0,
-  }
-
-  public enum DeprecatedEnum {
-    one = 1,
-  }
-
-  #endregion
-
-  #region Messages
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class A : pb::GeneratedMessage<A, A.Builder> {
-    private A() { }
-    private static readonly A defaultInstance = new A().MakeReadOnly();
-    private static readonly string[] _aFieldNames = new string[] { "_A" };
-    private static readonly uint[] _aFieldTags = new uint[] { 8 };
-    public static A DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override A DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override A ThisMessage {
-      get { return this; }
-    }
-
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::UnitTest.Issues.TestProtos.UnittestIssues.internal__static_unittest_issues_A__Descriptor; }
-    }
-
-    protected override pb::FieldAccess.FieldAccessorTable<A, A.Builder> InternalFieldAccessors {
-      get { return global::UnitTest.Issues.TestProtos.UnittestIssues.internal__static_unittest_issues_A__FieldAccessorTable; }
-    }
-
-    public const int A_FieldNumber = 1;
-    private bool hasA_;
-    private int A_;
-    public bool HasA_ {
-      get { return hasA_; }
-    }
-    public int A_ {
-      get { return A_; }
-    }
-
-    public override bool IsInitialized {
-      get {
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _aFieldNames;
-      if (hasA_) {
-        output.WriteInt32(1, field_names[0], A_);
-      }
-      UnknownFields.WriteTo(output);
-    }
-
-    private int memoizedSerializedSize = -1;
-    public override int SerializedSize {
-      get {
-        int size = memoizedSerializedSize;
-        if (size != -1) return size;
-        return CalcSerializedSize();
-      }
-    }
-
-    private int CalcSerializedSize() {
-      int size = memoizedSerializedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (hasA_) {
-        size += pb::CodedOutputStream.ComputeInt32Size(1, A_);
-      }
-      size += UnknownFields.SerializedSize;
-      memoizedSerializedSize = size;
-      return size;
-    }
-    public static A ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static A ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static A ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static A ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static A ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static A ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static A ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static A ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static A ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static A ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private A MakeReadOnly() {
-      return this;
-    }
-
-    public static Builder CreateBuilder() { return new Builder(); }
-    public override Builder ToBuilder() { return CreateBuilder(this); }
-    public override Builder CreateBuilderForType() { return new Builder(); }
-    public static Builder CreateBuilder(A prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilder<A, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(A cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private A result;
-
-      private A PrepareBuilder() {
-        if (resultIsReadOnly) {
-          A original = result;
-          result = new A();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override A MessageBeingBuilt {
-        get { return PrepareBuilder(); }
-      }
-
-      public override Builder Clear() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-        return this;
-      }
-
-      public override Builder Clone() {
-        if (resultIsReadOnly) {
-          return new Builder(result);
-        } else {
-          return new Builder().MergeFrom(result);
-        }
-      }
-
-      public override pbd::MessageDescriptor DescriptorForType {
-        get { return global::UnitTest.Issues.TestProtos.A.Descriptor; }
-      }
-
-      public override A DefaultInstanceForType {
-        get { return global::UnitTest.Issues.TestProtos.A.DefaultInstance; }
-      }
-
-      public override A BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is A) {
-          return MergeFrom((A) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(A other) {
-        if (other == global::UnitTest.Issues.TestProtos.A.DefaultInstance) return this;
-        PrepareBuilder();
-        if (other.HasA_) {
-          A_ = other.A_;
-        }
-        this.MergeUnknownFields(other.UnknownFields);
-        return this;
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input) {
-        return MergeFrom(input, pb::ExtensionRegistry.Empty);
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-        PrepareBuilder();
-        pb::UnknownFieldSet.Builder unknownFields = null;
-        uint tag;
-        string field_name;
-        while (input.ReadTag(out tag, out field_name)) {
-          if(tag == 0 && field_name != null) {
-            int field_ordinal = global::System.Array.BinarySearch(_aFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _aFieldTags[field_ordinal];
-            else {
-              if (unknownFields == null) {
-                unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-              }
-              ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name);
-              continue;
-            }
-          }
-          switch (tag) {
-            case 0: {
-              throw pb::InvalidProtocolBufferException.InvalidTag();
-            }
-            default: {
-              if (pb::WireFormat.IsEndGroupTag(tag)) {
-                if (unknownFields != null) {
-                  this.UnknownFields = unknownFields.Build();
-                }
-                return this;
-              }
-              if (unknownFields == null) {
-                unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-              }
-              ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name);
-              break;
-            }
-            case 8: {
-              result.hasA_ = input.ReadInt32(ref result.A_);
-              break;
-            }
-          }
-        }
-
-        if (unknownFields != null) {
-          this.UnknownFields = unknownFields.Build();
-        }
-        return this;
-      }
-
-
-      public bool HasA_ {
-        get { return result.hasA_; }
-      }
-      public int A_ {
-        get { return result.A_; }
-        set { SetA_(value); }
-      }
-      public Builder SetA_(int value) {
-        PrepareBuilder();
-        result.hasA_ = true;
-        result.A_ = value;
-        return this;
-      }
-      public Builder ClearA_() {
-        PrepareBuilder();
-        result.hasA_ = false;
-        result.A_ = 0;
-        return this;
-      }
-    }
-    static A() {
-      object.ReferenceEquals(global::UnitTest.Issues.TestProtos.UnittestIssues.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class B : pb::GeneratedMessage<B, B.Builder> {
-    private B() { }
-    private static readonly B defaultInstance = new B().MakeReadOnly();
-    private static readonly string[] _bFieldNames = new string[] { "B_" };
-    private static readonly uint[] _bFieldTags = new uint[] { 8 };
-    public static B DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override B DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override B ThisMessage {
-      get { return this; }
-    }
-
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::UnitTest.Issues.TestProtos.UnittestIssues.internal__static_unittest_issues_B__Descriptor; }
-    }
-
-    protected override pb::FieldAccess.FieldAccessorTable<B, B.Builder> InternalFieldAccessors {
-      get { return global::UnitTest.Issues.TestProtos.UnittestIssues.internal__static_unittest_issues_B__FieldAccessorTable; }
-    }
-
-    public const int B_FieldNumber = 1;
-    private bool hasB_;
-    private int b_;
-    public bool HasB_ {
-      get { return hasB_; }
-    }
-    public int B_ {
-      get { return b_; }
-    }
-
-    public override bool IsInitialized {
-      get {
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _bFieldNames;
-      if (hasB_) {
-        output.WriteInt32(1, field_names[0], B_);
-      }
-      UnknownFields.WriteTo(output);
-    }
-
-    private int memoizedSerializedSize = -1;
-    public override int SerializedSize {
-      get {
-        int size = memoizedSerializedSize;
-        if (size != -1) return size;
-        return CalcSerializedSize();
-      }
-    }
-
-    private int CalcSerializedSize() {
-      int size = memoizedSerializedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (hasB_) {
-        size += pb::CodedOutputStream.ComputeInt32Size(1, B_);
-      }
-      size += UnknownFields.SerializedSize;
-      memoizedSerializedSize = size;
-      return size;
-    }
-    public static B ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static B ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static B ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static B ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static B ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static B ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static B ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static B ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static B ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static B ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private B MakeReadOnly() {
-      return this;
-    }
-
-    public static Builder CreateBuilder() { return new Builder(); }
-    public override Builder ToBuilder() { return CreateBuilder(this); }
-    public override Builder CreateBuilderForType() { return new Builder(); }
-    public static Builder CreateBuilder(B prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilder<B, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(B cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private B result;
-
-      private B PrepareBuilder() {
-        if (resultIsReadOnly) {
-          B original = result;
-          result = new B();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override B MessageBeingBuilt {
-        get { return PrepareBuilder(); }
-      }
-
-      public override Builder Clear() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-        return this;
-      }
-
-      public override Builder Clone() {
-        if (resultIsReadOnly) {
-          return new Builder(result);
-        } else {
-          return new Builder().MergeFrom(result);
-        }
-      }
-
-      public override pbd::MessageDescriptor DescriptorForType {
-        get { return global::UnitTest.Issues.TestProtos.B.Descriptor; }
-      }
-
-      public override B DefaultInstanceForType {
-        get { return global::UnitTest.Issues.TestProtos.B.DefaultInstance; }
-      }
-
-      public override B BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is B) {
-          return MergeFrom((B) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(B other) {
-        if (other == global::UnitTest.Issues.TestProtos.B.DefaultInstance) return this;
-        PrepareBuilder();
-        if (other.HasB_) {
-          B_ = other.B_;
-        }
-        this.MergeUnknownFields(other.UnknownFields);
-        return this;
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input) {
-        return MergeFrom(input, pb::ExtensionRegistry.Empty);
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-        PrepareBuilder();
-        pb::UnknownFieldSet.Builder unknownFields = null;
-        uint tag;
-        string field_name;
-        while (input.ReadTag(out tag, out field_name)) {
-          if(tag == 0 && field_name != null) {
-            int field_ordinal = global::System.Array.BinarySearch(_bFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _bFieldTags[field_ordinal];
-            else {
-              if (unknownFields == null) {
-                unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-              }
-              ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name);
-              continue;
-            }
-          }
-          switch (tag) {
-            case 0: {
-              throw pb::InvalidProtocolBufferException.InvalidTag();
-            }
-            default: {
-              if (pb::WireFormat.IsEndGroupTag(tag)) {
-                if (unknownFields != null) {
-                  this.UnknownFields = unknownFields.Build();
-                }
-                return this;
-              }
-              if (unknownFields == null) {
-                unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-              }
-              ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name);
-              break;
-            }
-            case 8: {
-              result.hasB_ = input.ReadInt32(ref result.b_);
-              break;
-            }
-          }
-        }
-
-        if (unknownFields != null) {
-          this.UnknownFields = unknownFields.Build();
-        }
-        return this;
-      }
-
-
-      public bool HasB_ {
-        get { return result.hasB_; }
-      }
-      public int B_ {
-        get { return result.B_; }
-        set { SetB_(value); }
-      }
-      public Builder SetB_(int value) {
-        PrepareBuilder();
-        result.hasB_ = true;
-        result.b_ = value;
-        return this;
-      }
-      public Builder ClearB_() {
-        PrepareBuilder();
-        result.hasB_ = false;
-        result.b_ = 0;
-        return this;
-      }
-    }
-    static B() {
-      object.ReferenceEquals(global::UnitTest.Issues.TestProtos.UnittestIssues.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class AB : pb::GeneratedMessage<AB, AB.Builder> {
-    private AB() { }
-    private static readonly AB defaultInstance = new AB().MakeReadOnly();
-    private static readonly string[] _aBFieldNames = new string[] { "a_b" };
-    private static readonly uint[] _aBFieldTags = new uint[] { 8 };
-    public static AB DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override AB DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override AB ThisMessage {
-      get { return this; }
-    }
-
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::UnitTest.Issues.TestProtos.UnittestIssues.internal__static_unittest_issues_AB__Descriptor; }
-    }
-
-    protected override pb::FieldAccess.FieldAccessorTable<AB, AB.Builder> InternalFieldAccessors {
-      get { return global::UnitTest.Issues.TestProtos.UnittestIssues.internal__static_unittest_issues_AB__FieldAccessorTable; }
-    }
-
-    public const int AB_FieldNumber = 1;
-    private bool hasAB_;
-    private int aB_;
-    public bool HasAB_ {
-      get { return hasAB_; }
-    }
-    public int AB_ {
-      get { return aB_; }
-    }
-
-    public override bool IsInitialized {
-      get {
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _aBFieldNames;
-      if (hasAB_) {
-        output.WriteInt32(1, field_names[0], AB_);
-      }
-      UnknownFields.WriteTo(output);
-    }
-
-    private int memoizedSerializedSize = -1;
-    public override int SerializedSize {
-      get {
-        int size = memoizedSerializedSize;
-        if (size != -1) return size;
-        return CalcSerializedSize();
-      }
-    }
-
-    private int CalcSerializedSize() {
-      int size = memoizedSerializedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (hasAB_) {
-        size += pb::CodedOutputStream.ComputeInt32Size(1, AB_);
-      }
-      size += UnknownFields.SerializedSize;
-      memoizedSerializedSize = size;
-      return size;
-    }
-    public static AB ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static AB ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static AB ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static AB ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static AB ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static AB ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static AB ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static AB ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static AB ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static AB ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private AB MakeReadOnly() {
-      return this;
-    }
-
-    public static Builder CreateBuilder() { return new Builder(); }
-    public override Builder ToBuilder() { return CreateBuilder(this); }
-    public override Builder CreateBuilderForType() { return new Builder(); }
-    public static Builder CreateBuilder(AB prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilder<AB, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(AB cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private AB result;
-
-      private AB PrepareBuilder() {
-        if (resultIsReadOnly) {
-          AB original = result;
-          result = new AB();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override AB MessageBeingBuilt {
-        get { return PrepareBuilder(); }
-      }
-
-      public override Builder Clear() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-        return this;
-      }
-
-      public override Builder Clone() {
-        if (resultIsReadOnly) {
-          return new Builder(result);
-        } else {
-          return new Builder().MergeFrom(result);
-        }
-      }
-
-      public override pbd::MessageDescriptor DescriptorForType {
-        get { return global::UnitTest.Issues.TestProtos.AB.Descriptor; }
-      }
-
-      public override AB DefaultInstanceForType {
-        get { return global::UnitTest.Issues.TestProtos.AB.DefaultInstance; }
-      }
-
-      public override AB BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is AB) {
-          return MergeFrom((AB) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(AB other) {
-        if (other == global::UnitTest.Issues.TestProtos.AB.DefaultInstance) return this;
-        PrepareBuilder();
-        if (other.HasAB_) {
-          AB_ = other.AB_;
-        }
-        this.MergeUnknownFields(other.UnknownFields);
-        return this;
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input) {
-        return MergeFrom(input, pb::ExtensionRegistry.Empty);
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-        PrepareBuilder();
-        pb::UnknownFieldSet.Builder unknownFields = null;
-        uint tag;
-        string field_name;
-        while (input.ReadTag(out tag, out field_name)) {
-          if(tag == 0 && field_name != null) {
-            int field_ordinal = global::System.Array.BinarySearch(_aBFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _aBFieldTags[field_ordinal];
-            else {
-              if (unknownFields == null) {
-                unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-              }
-              ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name);
-              continue;
-            }
-          }
-          switch (tag) {
-            case 0: {
-              throw pb::InvalidProtocolBufferException.InvalidTag();
-            }
-            default: {
-              if (pb::WireFormat.IsEndGroupTag(tag)) {
-                if (unknownFields != null) {
-                  this.UnknownFields = unknownFields.Build();
-                }
-                return this;
-              }
-              if (unknownFields == null) {
-                unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-              }
-              ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name);
-              break;
-            }
-            case 8: {
-              result.hasAB_ = input.ReadInt32(ref result.aB_);
-              break;
-            }
-          }
-        }
-
-        if (unknownFields != null) {
-          this.UnknownFields = unknownFields.Build();
-        }
-        return this;
-      }
-
-
-      public bool HasAB_ {
-        get { return result.hasAB_; }
-      }
-      public int AB_ {
-        get { return result.AB_; }
-        set { SetAB_(value); }
-      }
-      public Builder SetAB_(int value) {
-        PrepareBuilder();
-        result.hasAB_ = true;
-        result.aB_ = value;
-        return this;
-      }
-      public Builder ClearAB_() {
-        PrepareBuilder();
-        result.hasAB_ = false;
-        result.aB_ = 0;
-        return this;
-      }
-    }
-    static AB() {
-      object.ReferenceEquals(global::UnitTest.Issues.TestProtos.UnittestIssues.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class NumberField : pb::GeneratedMessage<NumberField, NumberField.Builder> {
-    private NumberField() { }
-    private static readonly NumberField defaultInstance = new NumberField().MakeReadOnly();
-    private static readonly string[] _numberFieldFieldNames = new string[] { "_01" };
-    private static readonly uint[] _numberFieldFieldTags = new uint[] { 8 };
-    public static NumberField DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override NumberField DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override NumberField ThisMessage {
-      get { return this; }
-    }
-
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::UnitTest.Issues.TestProtos.UnittestIssues.internal__static_unittest_issues_NumberField__Descriptor; }
-    }
-
-    protected override pb::FieldAccess.FieldAccessorTable<NumberField, NumberField.Builder> InternalFieldAccessors {
-      get { return global::UnitTest.Issues.TestProtos.UnittestIssues.internal__static_unittest_issues_NumberField__FieldAccessorTable; }
-    }
-
-    public const int 01FieldNumber = 1;
-    private bool has01;
-    private int 01_;
-    public bool Has01 {
-      get { return has01; }
-    }
-    public int 01 {
-      get { return 01_; }
-    }
-
-    public override bool IsInitialized {
-      get {
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _numberFieldFieldNames;
-      if (has01) {
-        output.WriteInt32(1, field_names[0], 01);
-      }
-      UnknownFields.WriteTo(output);
-    }
-
-    private int memoizedSerializedSize = -1;
-    public override int SerializedSize {
-      get {
-        int size = memoizedSerializedSize;
-        if (size != -1) return size;
-        return CalcSerializedSize();
-      }
-    }
-
-    private int CalcSerializedSize() {
-      int size = memoizedSerializedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (has01) {
-        size += pb::CodedOutputStream.ComputeInt32Size(1, 01);
-      }
-      size += UnknownFields.SerializedSize;
-      memoizedSerializedSize = size;
-      return size;
-    }
-    public static NumberField ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static NumberField ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static NumberField ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static NumberField ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static NumberField ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static NumberField ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static NumberField ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static NumberField ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static NumberField ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static NumberField ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private NumberField MakeReadOnly() {
-      return this;
-    }
-
-    public static Builder CreateBuilder() { return new Builder(); }
-    public override Builder ToBuilder() { return CreateBuilder(this); }
-    public override Builder CreateBuilderForType() { return new Builder(); }
-    public static Builder CreateBuilder(NumberField prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilder<NumberField, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(NumberField cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private NumberField result;
-
-      private NumberField PrepareBuilder() {
-        if (resultIsReadOnly) {
-          NumberField original = result;
-          result = new NumberField();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override NumberField MessageBeingBuilt {
-        get { return PrepareBuilder(); }
-      }
-
-      public override Builder Clear() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-        return this;
-      }
-
-      public override Builder Clone() {
-        if (resultIsReadOnly) {
-          return new Builder(result);
-        } else {
-          return new Builder().MergeFrom(result);
-        }
-      }
-
-      public override pbd::MessageDescriptor DescriptorForType {
-        get { return global::UnitTest.Issues.TestProtos.NumberField.Descriptor; }
-      }
-
-      public override NumberField DefaultInstanceForType {
-        get { return global::UnitTest.Issues.TestProtos.NumberField.DefaultInstance; }
-      }
-
-      public override NumberField BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is NumberField) {
-          return MergeFrom((NumberField) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(NumberField other) {
-        if (other == global::UnitTest.Issues.TestProtos.NumberField.DefaultInstance) return this;
-        PrepareBuilder();
-        if (other.Has01) {
-          01 = other.01;
-        }
-        this.MergeUnknownFields(other.UnknownFields);
-        return this;
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input) {
-        return MergeFrom(input, pb::ExtensionRegistry.Empty);
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-        PrepareBuilder();
-        pb::UnknownFieldSet.Builder unknownFields = null;
-        uint tag;
-        string field_name;
-        while (input.ReadTag(out tag, out field_name)) {
-          if(tag == 0 && field_name != null) {
-            int field_ordinal = global::System.Array.BinarySearch(_numberFieldFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _numberFieldFieldTags[field_ordinal];
-            else {
-              if (unknownFields == null) {
-                unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-              }
-              ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name);
-              continue;
-            }
-          }
-          switch (tag) {
-            case 0: {
-              throw pb::InvalidProtocolBufferException.InvalidTag();
-            }
-            default: {
-              if (pb::WireFormat.IsEndGroupTag(tag)) {
-                if (unknownFields != null) {
-                  this.UnknownFields = unknownFields.Build();
-                }
-                return this;
-              }
-              if (unknownFields == null) {
-                unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-              }
-              ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name);
-              break;
-            }
-            case 8: {
-              result.has01 = input.ReadInt32(ref result.01_);
-              break;
-            }
-          }
-        }
-
-        if (unknownFields != null) {
-          this.UnknownFields = unknownFields.Build();
-        }
-        return this;
-      }
-
-
-      public bool Has01 {
-        get { return result.has01; }
-      }
-      public int 01 {
-        get { return result.01; }
-        set { Set01(value); }
-      }
-      public Builder Set01(int value) {
-        PrepareBuilder();
-        result.has01 = true;
-        result.01_ = value;
-        return this;
-      }
-      public Builder Clear01() {
-        PrepareBuilder();
-        result.has01 = false;
-        result.01_ = 0;
-        return this;
-      }
-    }
-    static NumberField() {
-      object.ReferenceEquals(global::UnitTest.Issues.TestProtos.UnittestIssues.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class MyMessageAReferenceB : pb::GeneratedMessage<MyMessageAReferenceB, MyMessageAReferenceB.Builder> {
-    private MyMessageAReferenceB() { }
-    private static readonly MyMessageAReferenceB defaultInstance = new MyMessageAReferenceB().MakeReadOnly();
-    private static readonly string[] _myMessageAReferenceBFieldNames = new string[] { "value" };
-    private static readonly uint[] _myMessageAReferenceBFieldTags = new uint[] { 10 };
-    public static MyMessageAReferenceB DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override MyMessageAReferenceB DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override MyMessageAReferenceB ThisMessage {
-      get { return this; }
-    }
-
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::UnitTest.Issues.TestProtos.UnittestIssues.internal__static_unittest_issues_MyMessageAReferenceB__Descriptor; }
-    }
-
-    protected override pb::FieldAccess.FieldAccessorTable<MyMessageAReferenceB, MyMessageAReferenceB.Builder> InternalFieldAccessors {
-      get { return global::UnitTest.Issues.TestProtos.UnittestIssues.internal__static_unittest_issues_MyMessageAReferenceB__FieldAccessorTable; }
-    }
-
-    public const int ValueFieldNumber = 1;
-    private bool hasValue;
-    private global::UnitTest.Issues.TestProtos.MyMessageBReferenceA value_;
-    public bool HasValue {
-      get { return hasValue; }
-    }
-    public global::UnitTest.Issues.TestProtos.MyMessageBReferenceA Value {
-      get { return value_ ?? global::UnitTest.Issues.TestProtos.MyMessageBReferenceA.DefaultInstance; }
-    }
-
-    public override bool IsInitialized {
-      get {
-        if (!hasValue) return false;
-        if (!Value.IsInitialized) return false;
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _myMessageAReferenceBFieldNames;
-      if (hasValue) {
-        output.WriteMessage(1, field_names[0], Value);
-      }
-      UnknownFields.WriteTo(output);
-    }
-
-    private int memoizedSerializedSize = -1;
-    public override int SerializedSize {
-      get {
-        int size = memoizedSerializedSize;
-        if (size != -1) return size;
-        return CalcSerializedSize();
-      }
-    }
-
-    private int CalcSerializedSize() {
-      int size = memoizedSerializedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (hasValue) {
-        size += pb::CodedOutputStream.ComputeMessageSize(1, Value);
-      }
-      size += UnknownFields.SerializedSize;
-      memoizedSerializedSize = size;
-      return size;
-    }
-    public static MyMessageAReferenceB ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static MyMessageAReferenceB ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static MyMessageAReferenceB ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static MyMessageAReferenceB ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static MyMessageAReferenceB ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static MyMessageAReferenceB ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static MyMessageAReferenceB ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static MyMessageAReferenceB ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static MyMessageAReferenceB ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static MyMessageAReferenceB ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private MyMessageAReferenceB MakeReadOnly() {
-      return this;
-    }
-
-    public static Builder CreateBuilder() { return new Builder(); }
-    public override Builder ToBuilder() { return CreateBuilder(this); }
-    public override Builder CreateBuilderForType() { return new Builder(); }
-    public static Builder CreateBuilder(MyMessageAReferenceB prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilder<MyMessageAReferenceB, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(MyMessageAReferenceB cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private MyMessageAReferenceB result;
-
-      private MyMessageAReferenceB PrepareBuilder() {
-        if (resultIsReadOnly) {
-          MyMessageAReferenceB original = result;
-          result = new MyMessageAReferenceB();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override MyMessageAReferenceB MessageBeingBuilt {
-        get { return PrepareBuilder(); }
-      }
-
-      public override Builder Clear() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-        return this;
-      }
-
-      public override Builder Clone() {
-        if (resultIsReadOnly) {
-          return new Builder(result);
-        } else {
-          return new Builder().MergeFrom(result);
-        }
-      }
-
-      public override pbd::MessageDescriptor DescriptorForType {
-        get { return global::UnitTest.Issues.TestProtos.MyMessageAReferenceB.Descriptor; }
-      }
-
-      public override MyMessageAReferenceB DefaultInstanceForType {
-        get { return global::UnitTest.Issues.TestProtos.MyMessageAReferenceB.DefaultInstance; }
-      }
-
-      public override MyMessageAReferenceB BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is MyMessageAReferenceB) {
-          return MergeFrom((MyMessageAReferenceB) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(MyMessageAReferenceB other) {
-        if (other == global::UnitTest.Issues.TestProtos.MyMessageAReferenceB.DefaultInstance) return this;
-        PrepareBuilder();
-        if (other.HasValue) {
-          MergeValue(other.Value);
-        }
-        this.MergeUnknownFields(other.UnknownFields);
-        return this;
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input) {
-        return MergeFrom(input, pb::ExtensionRegistry.Empty);
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-        PrepareBuilder();
-        pb::UnknownFieldSet.Builder unknownFields = null;
-        uint tag;
-        string field_name;
-        while (input.ReadTag(out tag, out field_name)) {
-          if(tag == 0 && field_name != null) {
-            int field_ordinal = global::System.Array.BinarySearch(_myMessageAReferenceBFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _myMessageAReferenceBFieldTags[field_ordinal];
-            else {
-              if (unknownFields == null) {
-                unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-              }
-              ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name);
-              continue;
-            }
-          }
-          switch (tag) {
-            case 0: {
-              throw pb::InvalidProtocolBufferException.InvalidTag();
-            }
-            default: {
-              if (pb::WireFormat.IsEndGroupTag(tag)) {
-                if (unknownFields != null) {
-                  this.UnknownFields = unknownFields.Build();
-                }
-                return this;
-              }
-              if (unknownFields == null) {
-                unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-              }
-              ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name);
-              break;
-            }
-            case 10: {
-              global::UnitTest.Issues.TestProtos.MyMessageBReferenceA.Builder subBuilder = global::UnitTest.Issues.TestProtos.MyMessageBReferenceA.CreateBuilder();
-              if (result.hasValue) {
-                subBuilder.MergeFrom(Value);
-              }
-              input.ReadMessage(subBuilder, extensionRegistry);
-              Value = subBuilder.BuildPartial();
-              break;
-            }
-          }
-        }
-
-        if (unknownFields != null) {
-          this.UnknownFields = unknownFields.Build();
-        }
-        return this;
-      }
-
-
-      public bool HasValue {
-       get { return result.hasValue; }
-      }
-      public global::UnitTest.Issues.TestProtos.MyMessageBReferenceA Value {
-        get { return result.Value; }
-        set { SetValue(value); }
-      }
-      public Builder SetValue(global::UnitTest.Issues.TestProtos.MyMessageBReferenceA value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasValue = true;
-        result.value_ = value;
-        return this;
-      }
-      public Builder SetValue(global::UnitTest.Issues.TestProtos.MyMessageBReferenceA.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.hasValue = true;
-        result.value_ = builderForValue.Build();
-        return this;
-      }
-      public Builder MergeValue(global::UnitTest.Issues.TestProtos.MyMessageBReferenceA value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        if (result.hasValue &&
-            result.value_ != global::UnitTest.Issues.TestProtos.MyMessageBReferenceA.DefaultInstance) {
-            result.value_ = global::UnitTest.Issues.TestProtos.MyMessageBReferenceA.CreateBuilder(result.value_).MergeFrom(value).BuildPartial();
-        } else {
-          result.value_ = value;
-        }
-        result.hasValue = true;
-        return this;
-      }
-      public Builder ClearValue() {
-        PrepareBuilder();
-        result.hasValue = false;
-        result.value_ = null;
-        return this;
-      }
-    }
-    static MyMessageAReferenceB() {
-      object.ReferenceEquals(global::UnitTest.Issues.TestProtos.UnittestIssues.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class MyMessageBReferenceA : pb::GeneratedMessage<MyMessageBReferenceA, MyMessageBReferenceA.Builder> {
-    private MyMessageBReferenceA() { }
-    private static readonly MyMessageBReferenceA defaultInstance = new MyMessageBReferenceA().MakeReadOnly();
-    private static readonly string[] _myMessageBReferenceAFieldNames = new string[] { "value" };
-    private static readonly uint[] _myMessageBReferenceAFieldTags = new uint[] { 10 };
-    public static MyMessageBReferenceA DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override MyMessageBReferenceA DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override MyMessageBReferenceA ThisMessage {
-      get { return this; }
-    }
-
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::UnitTest.Issues.TestProtos.UnittestIssues.internal__static_unittest_issues_MyMessageBReferenceA__Descriptor; }
-    }
-
-    protected override pb::FieldAccess.FieldAccessorTable<MyMessageBReferenceA, MyMessageBReferenceA.Builder> InternalFieldAccessors {
-      get { return global::UnitTest.Issues.TestProtos.UnittestIssues.internal__static_unittest_issues_MyMessageBReferenceA__FieldAccessorTable; }
-    }
-
-    public const int ValueFieldNumber = 1;
-    private bool hasValue;
-    private global::UnitTest.Issues.TestProtos.MyMessageAReferenceB value_;
-    public bool HasValue {
-      get { return hasValue; }
-    }
-    public global::UnitTest.Issues.TestProtos.MyMessageAReferenceB Value {
-      get { return value_ ?? global::UnitTest.Issues.TestProtos.MyMessageAReferenceB.DefaultInstance; }
-    }
-
-    public override bool IsInitialized {
-      get {
-        if (!hasValue) return false;
-        if (!Value.IsInitialized) return false;
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _myMessageBReferenceAFieldNames;
-      if (hasValue) {
-        output.WriteMessage(1, field_names[0], Value);
-      }
-      UnknownFields.WriteTo(output);
-    }
-
-    private int memoizedSerializedSize = -1;
-    public override int SerializedSize {
-      get {
-        int size = memoizedSerializedSize;
-        if (size != -1) return size;
-        return CalcSerializedSize();
-      }
-    }
-
-    private int CalcSerializedSize() {
-      int size = memoizedSerializedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (hasValue) {
-        size += pb::CodedOutputStream.ComputeMessageSize(1, Value);
-      }
-      size += UnknownFields.SerializedSize;
-      memoizedSerializedSize = size;
-      return size;
-    }
-    public static MyMessageBReferenceA ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static MyMessageBReferenceA ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static MyMessageBReferenceA ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static MyMessageBReferenceA ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static MyMessageBReferenceA ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static MyMessageBReferenceA ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static MyMessageBReferenceA ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static MyMessageBReferenceA ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static MyMessageBReferenceA ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static MyMessageBReferenceA ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private MyMessageBReferenceA MakeReadOnly() {
-      return this;
-    }
-
-    public static Builder CreateBuilder() { return new Builder(); }
-    public override Builder ToBuilder() { return CreateBuilder(this); }
-    public override Builder CreateBuilderForType() { return new Builder(); }
-    public static Builder CreateBuilder(MyMessageBReferenceA prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilder<MyMessageBReferenceA, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(MyMessageBReferenceA cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private MyMessageBReferenceA result;
-
-      private MyMessageBReferenceA PrepareBuilder() {
-        if (resultIsReadOnly) {
-          MyMessageBReferenceA original = result;
-          result = new MyMessageBReferenceA();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override MyMessageBReferenceA MessageBeingBuilt {
-        get { return PrepareBuilder(); }
-      }
-
-      public override Builder Clear() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-        return this;
-      }
-
-      public override Builder Clone() {
-        if (resultIsReadOnly) {
-          return new Builder(result);
-        } else {
-          return new Builder().MergeFrom(result);
-        }
-      }
-
-      public override pbd::MessageDescriptor DescriptorForType {
-        get { return global::UnitTest.Issues.TestProtos.MyMessageBReferenceA.Descriptor; }
-      }
-
-      public override MyMessageBReferenceA DefaultInstanceForType {
-        get { return global::UnitTest.Issues.TestProtos.MyMessageBReferenceA.DefaultInstance; }
-      }
-
-      public override MyMessageBReferenceA BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is MyMessageBReferenceA) {
-          return MergeFrom((MyMessageBReferenceA) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(MyMessageBReferenceA other) {
-        if (other == global::UnitTest.Issues.TestProtos.MyMessageBReferenceA.DefaultInstance) return this;
-        PrepareBuilder();
-        if (other.HasValue) {
-          MergeValue(other.Value);
-        }
-        this.MergeUnknownFields(other.UnknownFields);
-        return this;
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input) {
-        return MergeFrom(input, pb::ExtensionRegistry.Empty);
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-        PrepareBuilder();
-        pb::UnknownFieldSet.Builder unknownFields = null;
-        uint tag;
-        string field_name;
-        while (input.ReadTag(out tag, out field_name)) {
-          if(tag == 0 && field_name != null) {
-            int field_ordinal = global::System.Array.BinarySearch(_myMessageBReferenceAFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _myMessageBReferenceAFieldTags[field_ordinal];
-            else {
-              if (unknownFields == null) {
-                unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-              }
-              ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name);
-              continue;
-            }
-          }
-          switch (tag) {
-            case 0: {
-              throw pb::InvalidProtocolBufferException.InvalidTag();
-            }
-            default: {
-              if (pb::WireFormat.IsEndGroupTag(tag)) {
-                if (unknownFields != null) {
-                  this.UnknownFields = unknownFields.Build();
-                }
-                return this;
-              }
-              if (unknownFields == null) {
-                unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-              }
-              ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name);
-              break;
-            }
-            case 10: {
-              global::UnitTest.Issues.TestProtos.MyMessageAReferenceB.Builder subBuilder = global::UnitTest.Issues.TestProtos.MyMessageAReferenceB.CreateBuilder();
-              if (result.hasValue) {
-                subBuilder.MergeFrom(Value);
-              }
-              input.ReadMessage(subBuilder, extensionRegistry);
-              Value = subBuilder.BuildPartial();
-              break;
-            }
-          }
-        }
-
-        if (unknownFields != null) {
-          this.UnknownFields = unknownFields.Build();
-        }
-        return this;
-      }
-
-
-      public bool HasValue {
-       get { return result.hasValue; }
-      }
-      public global::UnitTest.Issues.TestProtos.MyMessageAReferenceB Value {
-        get { return result.Value; }
-        set { SetValue(value); }
-      }
-      public Builder SetValue(global::UnitTest.Issues.TestProtos.MyMessageAReferenceB value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasValue = true;
-        result.value_ = value;
-        return this;
-      }
-      public Builder SetValue(global::UnitTest.Issues.TestProtos.MyMessageAReferenceB.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.hasValue = true;
-        result.value_ = builderForValue.Build();
-        return this;
-      }
-      public Builder MergeValue(global::UnitTest.Issues.TestProtos.MyMessageAReferenceB value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        if (result.hasValue &&
-            result.value_ != global::UnitTest.Issues.TestProtos.MyMessageAReferenceB.DefaultInstance) {
-            result.value_ = global::UnitTest.Issues.TestProtos.MyMessageAReferenceB.CreateBuilder(result.value_).MergeFrom(value).BuildPartial();
-        } else {
-          result.value_ = value;
-        }
-        result.hasValue = true;
-        return this;
-      }
-      public Builder ClearValue() {
-        PrepareBuilder();
-        result.hasValue = false;
-        result.value_ = null;
-        return this;
-      }
-    }
-    static MyMessageBReferenceA() {
-      object.ReferenceEquals(global::UnitTest.Issues.TestProtos.UnittestIssues.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class NegativeEnumMessage : pb::GeneratedMessage<NegativeEnumMessage, NegativeEnumMessage.Builder> {
-    private NegativeEnumMessage() { }
-    private static readonly NegativeEnumMessage defaultInstance = new NegativeEnumMessage().MakeReadOnly();
-    private static readonly string[] _negativeEnumMessageFieldNames = new string[] { "packed_values", "value", "values" };
-    private static readonly uint[] _negativeEnumMessageFieldTags = new uint[] { 26, 8, 16 };
-    public static NegativeEnumMessage DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override NegativeEnumMessage DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override NegativeEnumMessage ThisMessage {
-      get { return this; }
-    }
-
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::UnitTest.Issues.TestProtos.UnittestIssues.internal__static_unittest_issues_NegativeEnumMessage__Descriptor; }
-    }
-
-    protected override pb::FieldAccess.FieldAccessorTable<NegativeEnumMessage, NegativeEnumMessage.Builder> InternalFieldAccessors {
-      get { return global::UnitTest.Issues.TestProtos.UnittestIssues.internal__static_unittest_issues_NegativeEnumMessage__FieldAccessorTable; }
-    }
-
-    public const int ValueFieldNumber = 1;
-    private bool hasValue;
-    private global::UnitTest.Issues.TestProtos.NegativeEnum value_ = global::UnitTest.Issues.TestProtos.NegativeEnum.FiveBelow;
-    public bool HasValue {
-      get { return hasValue; }
-    }
-    public global::UnitTest.Issues.TestProtos.NegativeEnum Value {
-      get { return value_; }
-    }
-
-    public const int ValuesFieldNumber = 2;
-    private pbc::PopsicleList<global::UnitTest.Issues.TestProtos.NegativeEnum> values_ = new pbc::PopsicleList<global::UnitTest.Issues.TestProtos.NegativeEnum>();
-    public scg::IList<global::UnitTest.Issues.TestProtos.NegativeEnum> ValuesList {
-      get { return pbc::Lists.AsReadOnly(values_); }
-    }
-    public int ValuesCount {
-      get { return values_.Count; }
-    }
-    public global::UnitTest.Issues.TestProtos.NegativeEnum GetValues(int index) {
-      return values_[index];
-    }
-
-    public const int PackedValuesFieldNumber = 3;
-    private int packedValuesMemoizedSerializedSize;
-    private pbc::PopsicleList<global::UnitTest.Issues.TestProtos.NegativeEnum> packedValues_ = new pbc::PopsicleList<global::UnitTest.Issues.TestProtos.NegativeEnum>();
-    public scg::IList<global::UnitTest.Issues.TestProtos.NegativeEnum> PackedValuesList {
-      get { return pbc::Lists.AsReadOnly(packedValues_); }
-    }
-    public int PackedValuesCount {
-      get { return packedValues_.Count; }
-    }
-    public global::UnitTest.Issues.TestProtos.NegativeEnum GetPackedValues(int index) {
-      return packedValues_[index];
-    }
-
-    public override bool IsInitialized {
-      get {
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _negativeEnumMessageFieldNames;
-      if (hasValue) {
-        output.WriteEnum(1, field_names[1], (int) Value, Value);
-      }
-      if (values_.Count > 0) {
-        output.WriteEnumArray(2, field_names[2], values_);
-      }
-      if (packedValues_.Count > 0) {
-        output.WritePackedEnumArray(3, field_names[0], packedValuesMemoizedSerializedSize, packedValues_);
-      }
-      UnknownFields.WriteTo(output);
-    }
-
-    private int memoizedSerializedSize = -1;
-    public override int SerializedSize {
-      get {
-        int size = memoizedSerializedSize;
-        if (size != -1) return size;
-        return CalcSerializedSize();
-      }
-    }
-
-    private int CalcSerializedSize() {
-      int size = memoizedSerializedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (hasValue) {
-        size += pb::CodedOutputStream.ComputeEnumSize(1, (int) Value);
-      }
-      {
-        int dataSize = 0;
-        if (values_.Count > 0) {
-          foreach (global::UnitTest.Issues.TestProtos.NegativeEnum element in values_) {
-            dataSize += pb::CodedOutputStream.ComputeEnumSizeNoTag((int) element);
-          }
-          size += dataSize;
-          size += 1 * values_.Count;
-        }
-      }
-      {
-        int dataSize = 0;
-        if (packedValues_.Count > 0) {
-          foreach (global::UnitTest.Issues.TestProtos.NegativeEnum element in packedValues_) {
-            dataSize += pb::CodedOutputStream.ComputeEnumSizeNoTag((int) element);
-          }
-          size += dataSize;
-          size += 1;
-          size += pb::CodedOutputStream.ComputeRawVarint32Size((uint) dataSize);
-        }
-        packedValuesMemoizedSerializedSize = dataSize;
-      }
-      size += UnknownFields.SerializedSize;
-      memoizedSerializedSize = size;
-      return size;
-    }
-    public static NegativeEnumMessage ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static NegativeEnumMessage ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static NegativeEnumMessage ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static NegativeEnumMessage ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static NegativeEnumMessage ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static NegativeEnumMessage ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static NegativeEnumMessage ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static NegativeEnumMessage ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static NegativeEnumMessage ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static NegativeEnumMessage ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private NegativeEnumMessage MakeReadOnly() {
-      values_.MakeReadOnly();
-      packedValues_.MakeReadOnly();
-      return this;
-    }
-
-    public static Builder CreateBuilder() { return new Builder(); }
-    public override Builder ToBuilder() { return CreateBuilder(this); }
-    public override Builder CreateBuilderForType() { return new Builder(); }
-    public static Builder CreateBuilder(NegativeEnumMessage prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilder<NegativeEnumMessage, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(NegativeEnumMessage cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private NegativeEnumMessage result;
-
-      private NegativeEnumMessage PrepareBuilder() {
-        if (resultIsReadOnly) {
-          NegativeEnumMessage original = result;
-          result = new NegativeEnumMessage();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override NegativeEnumMessage MessageBeingBuilt {
-        get { return PrepareBuilder(); }
-      }
-
-      public override Builder Clear() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-        return this;
-      }
-
-      public override Builder Clone() {
-        if (resultIsReadOnly) {
-          return new Builder(result);
-        } else {
-          return new Builder().MergeFrom(result);
-        }
-      }
-
-      public override pbd::MessageDescriptor DescriptorForType {
-        get { return global::UnitTest.Issues.TestProtos.NegativeEnumMessage.Descriptor; }
-      }
-
-      public override NegativeEnumMessage DefaultInstanceForType {
-        get { return global::UnitTest.Issues.TestProtos.NegativeEnumMessage.DefaultInstance; }
-      }
-
-      public override NegativeEnumMessage BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is NegativeEnumMessage) {
-          return MergeFrom((NegativeEnumMessage) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(NegativeEnumMessage other) {
-        if (other == global::UnitTest.Issues.TestProtos.NegativeEnumMessage.DefaultInstance) return this;
-        PrepareBuilder();
-        if (other.HasValue) {
-          Value = other.Value;
-        }
-        if (other.values_.Count != 0) {
-          result.values_.Add(other.values_);
-        }
-        if (other.packedValues_.Count != 0) {
-          result.packedValues_.Add(other.packedValues_);
-        }
-        this.MergeUnknownFields(other.UnknownFields);
-        return this;
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input) {
-        return MergeFrom(input, pb::ExtensionRegistry.Empty);
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-        PrepareBuilder();
-        pb::UnknownFieldSet.Builder unknownFields = null;
-        uint tag;
-        string field_name;
-        while (input.ReadTag(out tag, out field_name)) {
-          if(tag == 0 && field_name != null) {
-            int field_ordinal = global::System.Array.BinarySearch(_negativeEnumMessageFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _negativeEnumMessageFieldTags[field_ordinal];
-            else {
-              if (unknownFields == null) {
-                unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-              }
-              ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name);
-              continue;
-            }
-          }
-          switch (tag) {
-            case 0: {
-              throw pb::InvalidProtocolBufferException.InvalidTag();
-            }
-            default: {
-              if (pb::WireFormat.IsEndGroupTag(tag)) {
-                if (unknownFields != null) {
-                  this.UnknownFields = unknownFields.Build();
-                }
-                return this;
-              }
-              if (unknownFields == null) {
-                unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-              }
-              ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name);
-              break;
-            }
-            case 8: {
-              object unknown;
-              if(input.ReadEnum(ref result.value_, out unknown)) {
-                result.hasValue = true;
-              } else if(unknown is int) {
-                if (unknownFields == null) {
-                  unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-                }
-                unknownFields.MergeVarintField(1, (ulong)(int)unknown);
-              }
-              break;
-            }
-            case 18:
-            case 16: {
-              scg::ICollection<object> unknownItems;
-              input.ReadEnumArray<global::UnitTest.Issues.TestProtos.NegativeEnum>(tag, field_name, result.values_, out unknownItems);
-              if (unknownItems != null) {
-                if (unknownFields == null) {
-                  unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-                }
-                foreach (object rawValue in unknownItems)
-                  if (rawValue is int)
-                    unknownFields.MergeVarintField(2, (ulong)(int)rawValue);
-              }
-              break;
-            }
-            case 26:
-            case 24: {
-              scg::ICollection<object> unknownItems;
-              input.ReadEnumArray<global::UnitTest.Issues.TestProtos.NegativeEnum>(tag, field_name, result.packedValues_, out unknownItems);
-              if (unknownItems != null) {
-                if (unknownFields == null) {
-                  unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-                }
-                foreach (object rawValue in unknownItems)
-                  if (rawValue is int)
-                    unknownFields.MergeVarintField(3, (ulong)(int)rawValue);
-              }
-              break;
-            }
-          }
-        }
-
-        if (unknownFields != null) {
-          this.UnknownFields = unknownFields.Build();
-        }
-        return this;
-      }
-
-
-      public bool HasValue {
-       get { return result.hasValue; }
-      }
-      public global::UnitTest.Issues.TestProtos.NegativeEnum Value {
-        get { return result.Value; }
-        set { SetValue(value); }
-      }
-      public Builder SetValue(global::UnitTest.Issues.TestProtos.NegativeEnum value) {
-        PrepareBuilder();
-        result.hasValue = true;
-        result.value_ = value;
-        return this;
-      }
-      public Builder ClearValue() {
-        PrepareBuilder();
-        result.hasValue = false;
-        result.value_ = global::UnitTest.Issues.TestProtos.NegativeEnum.FiveBelow;
-        return this;
-      }
-
-      public pbc::IPopsicleList<global::UnitTest.Issues.TestProtos.NegativeEnum> ValuesList {
-        get { return PrepareBuilder().values_; }
-      }
-      public int ValuesCount {
-        get { return result.ValuesCount; }
-      }
-      public global::UnitTest.Issues.TestProtos.NegativeEnum GetValues(int index) {
-        return result.GetValues(index);
-      }
-      public Builder SetValues(int index, global::UnitTest.Issues.TestProtos.NegativeEnum value) {
-        PrepareBuilder();
-        result.values_[index] = value;
-        return this;
-      }
-      public Builder AddValues(global::UnitTest.Issues.TestProtos.NegativeEnum value) {
-        PrepareBuilder();
-        result.values_.Add(value);
-        return this;
-      }
-      public Builder AddRangeValues(scg::IEnumerable<global::UnitTest.Issues.TestProtos.NegativeEnum> values) {
-        PrepareBuilder();
-        result.values_.Add(values);
-        return this;
-      }
-      public Builder ClearValues() {
-        PrepareBuilder();
-        result.values_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<global::UnitTest.Issues.TestProtos.NegativeEnum> PackedValuesList {
-        get { return PrepareBuilder().packedValues_; }
-      }
-      public int PackedValuesCount {
-        get { return result.PackedValuesCount; }
-      }
-      public global::UnitTest.Issues.TestProtos.NegativeEnum GetPackedValues(int index) {
-        return result.GetPackedValues(index);
-      }
-      public Builder SetPackedValues(int index, global::UnitTest.Issues.TestProtos.NegativeEnum value) {
-        PrepareBuilder();
-        result.packedValues_[index] = value;
-        return this;
-      }
-      public Builder AddPackedValues(global::UnitTest.Issues.TestProtos.NegativeEnum value) {
-        PrepareBuilder();
-        result.packedValues_.Add(value);
-        return this;
-      }
-      public Builder AddRangePackedValues(scg::IEnumerable<global::UnitTest.Issues.TestProtos.NegativeEnum> values) {
-        PrepareBuilder();
-        result.packedValues_.Add(values);
-        return this;
-      }
-      public Builder ClearPackedValues() {
-        PrepareBuilder();
-        result.packedValues_.Clear();
-        return this;
-      }
-    }
-    static NegativeEnumMessage() {
-      object.ReferenceEquals(global::UnitTest.Issues.TestProtos.UnittestIssues.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class DeprecatedChild : pb::GeneratedMessage<DeprecatedChild, DeprecatedChild.Builder> {
-    private DeprecatedChild() { }
-    private static readonly DeprecatedChild defaultInstance = new DeprecatedChild().MakeReadOnly();
-    private static readonly string[] _deprecatedChildFieldNames = new string[] {  };
-    private static readonly uint[] _deprecatedChildFieldTags = new uint[] {  };
-    public static DeprecatedChild DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override DeprecatedChild DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override DeprecatedChild ThisMessage {
-      get { return this; }
-    }
-
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::UnitTest.Issues.TestProtos.UnittestIssues.internal__static_unittest_issues_DeprecatedChild__Descriptor; }
-    }
-
-    protected override pb::FieldAccess.FieldAccessorTable<DeprecatedChild, DeprecatedChild.Builder> InternalFieldAccessors {
-      get { return global::UnitTest.Issues.TestProtos.UnittestIssues.internal__static_unittest_issues_DeprecatedChild__FieldAccessorTable; }
-    }
-
-    public override bool IsInitialized {
-      get {
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _deprecatedChildFieldNames;
-      UnknownFields.WriteTo(output);
-    }
-
-    private int memoizedSerializedSize = -1;
-    public override int SerializedSize {
-      get {
-        int size = memoizedSerializedSize;
-        if (size != -1) return size;
-        return CalcSerializedSize();
-      }
-    }
-
-    private int CalcSerializedSize() {
-      int size = memoizedSerializedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      size += UnknownFields.SerializedSize;
-      memoizedSerializedSize = size;
-      return size;
-    }
-    public static DeprecatedChild ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static DeprecatedChild ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static DeprecatedChild ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static DeprecatedChild ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static DeprecatedChild ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static DeprecatedChild ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static DeprecatedChild ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static DeprecatedChild ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static DeprecatedChild ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static DeprecatedChild ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private DeprecatedChild MakeReadOnly() {
-      return this;
-    }
-
-    public static Builder CreateBuilder() { return new Builder(); }
-    public override Builder ToBuilder() { return CreateBuilder(this); }
-    public override Builder CreateBuilderForType() { return new Builder(); }
-    public static Builder CreateBuilder(DeprecatedChild prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilder<DeprecatedChild, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(DeprecatedChild cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private DeprecatedChild result;
-
-      private DeprecatedChild PrepareBuilder() {
-        if (resultIsReadOnly) {
-          DeprecatedChild original = result;
-          result = new DeprecatedChild();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override DeprecatedChild MessageBeingBuilt {
-        get { return PrepareBuilder(); }
-      }
-
-      public override Builder Clear() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-        return this;
-      }
-
-      public override Builder Clone() {
-        if (resultIsReadOnly) {
-          return new Builder(result);
-        } else {
-          return new Builder().MergeFrom(result);
-        }
-      }
-
-      public override pbd::MessageDescriptor DescriptorForType {
-        get { return global::UnitTest.Issues.TestProtos.DeprecatedChild.Descriptor; }
-      }
-
-      public override DeprecatedChild DefaultInstanceForType {
-        get { return global::UnitTest.Issues.TestProtos.DeprecatedChild.DefaultInstance; }
-      }
-
-      public override DeprecatedChild BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is DeprecatedChild) {
-          return MergeFrom((DeprecatedChild) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(DeprecatedChild other) {
-        if (other == global::UnitTest.Issues.TestProtos.DeprecatedChild.DefaultInstance) return this;
-        PrepareBuilder();
-        this.MergeUnknownFields(other.UnknownFields);
-        return this;
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input) {
-        return MergeFrom(input, pb::ExtensionRegistry.Empty);
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-        PrepareBuilder();
-        pb::UnknownFieldSet.Builder unknownFields = null;
-        uint tag;
-        string field_name;
-        while (input.ReadTag(out tag, out field_name)) {
-          if(tag == 0 && field_name != null) {
-            int field_ordinal = global::System.Array.BinarySearch(_deprecatedChildFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _deprecatedChildFieldTags[field_ordinal];
-            else {
-              if (unknownFields == null) {
-                unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-              }
-              ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name);
-              continue;
-            }
-          }
-          switch (tag) {
-            case 0: {
-              throw pb::InvalidProtocolBufferException.InvalidTag();
-            }
-            default: {
-              if (pb::WireFormat.IsEndGroupTag(tag)) {
-                if (unknownFields != null) {
-                  this.UnknownFields = unknownFields.Build();
-                }
-                return this;
-              }
-              if (unknownFields == null) {
-                unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-              }
-              ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name);
-              break;
-            }
-          }
-        }
-
-        if (unknownFields != null) {
-          this.UnknownFields = unknownFields.Build();
-        }
-        return this;
-      }
-
-    }
-    static DeprecatedChild() {
-      object.ReferenceEquals(global::UnitTest.Issues.TestProtos.UnittestIssues.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class DeprecatedFieldsMessage : pb::GeneratedMessage<DeprecatedFieldsMessage, DeprecatedFieldsMessage.Builder> {
-    private DeprecatedFieldsMessage() { }
-    private static readonly DeprecatedFieldsMessage defaultInstance = new DeprecatedFieldsMessage().MakeReadOnly();
-    private static readonly string[] _deprecatedFieldsMessageFieldNames = new string[] { "EnumArray", "EnumValue", "MessageArray", "MessageValue", "PrimitiveArray", "PrimitiveValue" };
-    private static readonly uint[] _deprecatedFieldsMessageFieldTags = new uint[] { 48, 40, 34, 26, 16, 8 };
-    public static DeprecatedFieldsMessage DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override DeprecatedFieldsMessage DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override DeprecatedFieldsMessage ThisMessage {
-      get { return this; }
-    }
-
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::UnitTest.Issues.TestProtos.UnittestIssues.internal__static_unittest_issues_DeprecatedFieldsMessage__Descriptor; }
-    }
-
-    protected override pb::FieldAccess.FieldAccessorTable<DeprecatedFieldsMessage, DeprecatedFieldsMessage.Builder> InternalFieldAccessors {
-      get { return global::UnitTest.Issues.TestProtos.UnittestIssues.internal__static_unittest_issues_DeprecatedFieldsMessage__FieldAccessorTable; }
-    }
-
-    public const int PrimitiveValueFieldNumber = 1;
-    private bool hasPrimitiveValue;
-    private int primitiveValue_;
-    [global::System.ObsoleteAttribute()]
-    public bool HasPrimitiveValue {
-      get { return hasPrimitiveValue; }
-    }
-    [global::System.ObsoleteAttribute()]
-    public int PrimitiveValue {
-      get { return primitiveValue_; }
-    }
-
-    public const int PrimitiveArrayFieldNumber = 2;
-    private pbc::PopsicleList<int> primitiveArray_ = new pbc::PopsicleList<int>();
-    [global::System.ObsoleteAttribute()]
-    public scg::IList<int> PrimitiveArrayList {
-      get { return pbc::Lists.AsReadOnly(primitiveArray_); }
-    }
-    [global::System.ObsoleteAttribute()]
-    public int PrimitiveArrayCount {
-      get { return primitiveArray_.Count; }
-    }
-    [global::System.ObsoleteAttribute()]
-    public int GetPrimitiveArray(int index) {
-      return primitiveArray_[index];
-    }
-
-    public const int MessageValueFieldNumber = 3;
-    private bool hasMessageValue;
-    private global::UnitTest.Issues.TestProtos.DeprecatedChild messageValue_;
-    [global::System.ObsoleteAttribute()]
-    public bool HasMessageValue {
-      get { return hasMessageValue; }
-    }
-    [global::System.ObsoleteAttribute()]
-    public global::UnitTest.Issues.TestProtos.DeprecatedChild MessageValue {
-      get { return messageValue_ ?? global::UnitTest.Issues.TestProtos.DeprecatedChild.DefaultInstance; }
-    }
-
-    public const int MessageArrayFieldNumber = 4;
-    private pbc::PopsicleList<global::UnitTest.Issues.TestProtos.DeprecatedChild> messageArray_ = new pbc::PopsicleList<global::UnitTest.Issues.TestProtos.DeprecatedChild>();
-    [global::System.ObsoleteAttribute()]
-    public scg::IList<global::UnitTest.Issues.TestProtos.DeprecatedChild> MessageArrayList {
-      get { return messageArray_; }
-    }
-    [global::System.ObsoleteAttribute()]
-    public int MessageArrayCount {
-      get { return messageArray_.Count; }
-    }
-    [global::System.ObsoleteAttribute()]
-    public global::UnitTest.Issues.TestProtos.DeprecatedChild GetMessageArray(int index) {
-      return messageArray_[index];
-    }
-
-    public const int EnumValueFieldNumber = 5;
-    private bool hasEnumValue;
-    private global::UnitTest.Issues.TestProtos.DeprecatedEnum enumValue_ = global::UnitTest.Issues.TestProtos.DeprecatedEnum.one;
-    [global::System.ObsoleteAttribute()]
-    public bool HasEnumValue {
-      get { return hasEnumValue; }
-    }
-    [global::System.ObsoleteAttribute()]
-    public global::UnitTest.Issues.TestProtos.DeprecatedEnum EnumValue {
-      get { return enumValue_; }
-    }
-
-    public const int EnumArrayFieldNumber = 6;
-    private pbc::PopsicleList<global::UnitTest.Issues.TestProtos.DeprecatedEnum> enumArray_ = new pbc::PopsicleList<global::UnitTest.Issues.TestProtos.DeprecatedEnum>();
-    [global::System.ObsoleteAttribute()]
-    public scg::IList<global::UnitTest.Issues.TestProtos.DeprecatedEnum> EnumArrayList {
-      get { return pbc::Lists.AsReadOnly(enumArray_); }
-    }
-    [global::System.ObsoleteAttribute()]
-    public int EnumArrayCount {
-      get { return enumArray_.Count; }
-    }
-    [global::System.ObsoleteAttribute()]
-    public global::UnitTest.Issues.TestProtos.DeprecatedEnum GetEnumArray(int index) {
-      return enumArray_[index];
-    }
-
-    public override bool IsInitialized {
-      get {
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _deprecatedFieldsMessageFieldNames;
-      if (hasPrimitiveValue) {
-        output.WriteInt32(1, field_names[5], PrimitiveValue);
-      }
-      if (primitiveArray_.Count > 0) {
-        output.WriteInt32Array(2, field_names[4], primitiveArray_);
-      }
-      if (hasMessageValue) {
-        output.WriteMessage(3, field_names[3], MessageValue);
-      }
-      if (messageArray_.Count > 0) {
-        output.WriteMessageArray(4, field_names[2], messageArray_);
-      }
-      if (hasEnumValue) {
-        output.WriteEnum(5, field_names[1], (int) EnumValue, EnumValue);
-      }
-      if (enumArray_.Count > 0) {
-        output.WriteEnumArray(6, field_names[0], enumArray_);
-      }
-      UnknownFields.WriteTo(output);
-    }
-
-    private int memoizedSerializedSize = -1;
-    public override int SerializedSize {
-      get {
-        int size = memoizedSerializedSize;
-        if (size != -1) return size;
-        return CalcSerializedSize();
-      }
-    }
-
-    private int CalcSerializedSize() {
-      int size = memoizedSerializedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (hasPrimitiveValue) {
-        size += pb::CodedOutputStream.ComputeInt32Size(1, PrimitiveValue);
-      }
-      {
-        int dataSize = 0;
-        foreach (int element in PrimitiveArrayList) {
-          dataSize += pb::CodedOutputStream.ComputeInt32SizeNoTag(element);
-        }
-        size += dataSize;
-        size += 1 * primitiveArray_.Count;
-      }
-      if (hasMessageValue) {
-        size += pb::CodedOutputStream.ComputeMessageSize(3, MessageValue);
-      }
-      foreach (global::UnitTest.Issues.TestProtos.DeprecatedChild element in MessageArrayList) {
-        size += pb::CodedOutputStream.ComputeMessageSize(4, element);
-      }
-      if (hasEnumValue) {
-        size += pb::CodedOutputStream.ComputeEnumSize(5, (int) EnumValue);
-      }
-      {
-        int dataSize = 0;
-        if (enumArray_.Count > 0) {
-          foreach (global::UnitTest.Issues.TestProtos.DeprecatedEnum element in enumArray_) {
-            dataSize += pb::CodedOutputStream.ComputeEnumSizeNoTag((int) element);
-          }
-          size += dataSize;
-          size += 1 * enumArray_.Count;
-        }
-      }
-      size += UnknownFields.SerializedSize;
-      memoizedSerializedSize = size;
-      return size;
-    }
-    public static DeprecatedFieldsMessage ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static DeprecatedFieldsMessage ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static DeprecatedFieldsMessage ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static DeprecatedFieldsMessage ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static DeprecatedFieldsMessage ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static DeprecatedFieldsMessage ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static DeprecatedFieldsMessage ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static DeprecatedFieldsMessage ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static DeprecatedFieldsMessage ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static DeprecatedFieldsMessage ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private DeprecatedFieldsMessage MakeReadOnly() {
-      primitiveArray_.MakeReadOnly();
-      messageArray_.MakeReadOnly();
-      enumArray_.MakeReadOnly();
-      return this;
-    }
-
-    public static Builder CreateBuilder() { return new Builder(); }
-    public override Builder ToBuilder() { return CreateBuilder(this); }
-    public override Builder CreateBuilderForType() { return new Builder(); }
-    public static Builder CreateBuilder(DeprecatedFieldsMessage prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilder<DeprecatedFieldsMessage, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(DeprecatedFieldsMessage cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private DeprecatedFieldsMessage result;
-
-      private DeprecatedFieldsMessage PrepareBuilder() {
-        if (resultIsReadOnly) {
-          DeprecatedFieldsMessage original = result;
-          result = new DeprecatedFieldsMessage();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override DeprecatedFieldsMessage MessageBeingBuilt {
-        get { return PrepareBuilder(); }
-      }
-
-      public override Builder Clear() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-        return this;
-      }
-
-      public override Builder Clone() {
-        if (resultIsReadOnly) {
-          return new Builder(result);
-        } else {
-          return new Builder().MergeFrom(result);
-        }
-      }
-
-      public override pbd::MessageDescriptor DescriptorForType {
-        get { return global::UnitTest.Issues.TestProtos.DeprecatedFieldsMessage.Descriptor; }
-      }
-
-      public override DeprecatedFieldsMessage DefaultInstanceForType {
-        get { return global::UnitTest.Issues.TestProtos.DeprecatedFieldsMessage.DefaultInstance; }
-      }
-
-      public override DeprecatedFieldsMessage BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is DeprecatedFieldsMessage) {
-          return MergeFrom((DeprecatedFieldsMessage) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(DeprecatedFieldsMessage other) {
-        if (other == global::UnitTest.Issues.TestProtos.DeprecatedFieldsMessage.DefaultInstance) return this;
-        PrepareBuilder();
-        if (other.HasPrimitiveValue) {
-          PrimitiveValue = other.PrimitiveValue;
-        }
-        if (other.primitiveArray_.Count != 0) {
-          result.primitiveArray_.Add(other.primitiveArray_);
-        }
-        if (other.HasMessageValue) {
-          MergeMessageValue(other.MessageValue);
-        }
-        if (other.messageArray_.Count != 0) {
-          result.messageArray_.Add(other.messageArray_);
-        }
-        if (other.HasEnumValue) {
-          EnumValue = other.EnumValue;
-        }
-        if (other.enumArray_.Count != 0) {
-          result.enumArray_.Add(other.enumArray_);
-        }
-        this.MergeUnknownFields(other.UnknownFields);
-        return this;
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input) {
-        return MergeFrom(input, pb::ExtensionRegistry.Empty);
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-        PrepareBuilder();
-        pb::UnknownFieldSet.Builder unknownFields = null;
-        uint tag;
-        string field_name;
-        while (input.ReadTag(out tag, out field_name)) {
-          if(tag == 0 && field_name != null) {
-            int field_ordinal = global::System.Array.BinarySearch(_deprecatedFieldsMessageFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _deprecatedFieldsMessageFieldTags[field_ordinal];
-            else {
-              if (unknownFields == null) {
-                unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-              }
-              ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name);
-              continue;
-            }
-          }
-          switch (tag) {
-            case 0: {
-              throw pb::InvalidProtocolBufferException.InvalidTag();
-            }
-            default: {
-              if (pb::WireFormat.IsEndGroupTag(tag)) {
-                if (unknownFields != null) {
-                  this.UnknownFields = unknownFields.Build();
-                }
-                return this;
-              }
-              if (unknownFields == null) {
-                unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-              }
-              ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name);
-              break;
-            }
-            case 8: {
-              result.hasPrimitiveValue = input.ReadInt32(ref result.primitiveValue_);
-              break;
-            }
-            case 18:
-            case 16: {
-              input.ReadInt32Array(tag, field_name, result.primitiveArray_);
-              break;
-            }
-            case 26: {
-              global::UnitTest.Issues.TestProtos.DeprecatedChild.Builder subBuilder = global::UnitTest.Issues.TestProtos.DeprecatedChild.CreateBuilder();
-              if (result.hasMessageValue) {
-                subBuilder.MergeFrom(MessageValue);
-              }
-              input.ReadMessage(subBuilder, extensionRegistry);
-              MessageValue = subBuilder.BuildPartial();
-              break;
-            }
-            case 34: {
-              input.ReadMessageArray(tag, field_name, result.messageArray_, global::UnitTest.Issues.TestProtos.DeprecatedChild.DefaultInstance, extensionRegistry);
-              break;
-            }
-            case 40: {
-              object unknown;
-              if(input.ReadEnum(ref result.enumValue_, out unknown)) {
-                result.hasEnumValue = true;
-              } else if(unknown is int) {
-                if (unknownFields == null) {
-                  unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-                }
-                unknownFields.MergeVarintField(5, (ulong)(int)unknown);
-              }
-              break;
-            }
-            case 50:
-            case 48: {
-              scg::ICollection<object> unknownItems;
-              input.ReadEnumArray<global::UnitTest.Issues.TestProtos.DeprecatedEnum>(tag, field_name, result.enumArray_, out unknownItems);
-              if (unknownItems != null) {
-                if (unknownFields == null) {
-                  unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-                }
-                foreach (object rawValue in unknownItems)
-                  if (rawValue is int)
-                    unknownFields.MergeVarintField(6, (ulong)(int)rawValue);
-              }
-              break;
-            }
-          }
-        }
-
-        if (unknownFields != null) {
-          this.UnknownFields = unknownFields.Build();
-        }
-        return this;
-      }
-
-
-      [global::System.ObsoleteAttribute()]
-      public bool HasPrimitiveValue {
-        get { return result.hasPrimitiveValue; }
-      }
-      [global::System.ObsoleteAttribute()]
-      public int PrimitiveValue {
-        get { return result.PrimitiveValue; }
-        set { SetPrimitiveValue(value); }
-      }
-      [global::System.ObsoleteAttribute()]
-      public Builder SetPrimitiveValue(int value) {
-        PrepareBuilder();
-        result.hasPrimitiveValue = true;
-        result.primitiveValue_ = value;
-        return this;
-      }
-      [global::System.ObsoleteAttribute()]
-      public Builder ClearPrimitiveValue() {
-        PrepareBuilder();
-        result.hasPrimitiveValue = false;
-        result.primitiveValue_ = 0;
-        return this;
-      }
-
-      [global::System.ObsoleteAttribute()]
-      public pbc::IPopsicleList<int> PrimitiveArrayList {
-        get { return PrepareBuilder().primitiveArray_; }
-      }
-      [global::System.ObsoleteAttribute()]
-      public int PrimitiveArrayCount {
-        get { return result.PrimitiveArrayCount; }
-      }
-      [global::System.ObsoleteAttribute()]
-      public int GetPrimitiveArray(int index) {
-        return result.GetPrimitiveArray(index);
-      }
-      [global::System.ObsoleteAttribute()]
-      public Builder SetPrimitiveArray(int index, int value) {
-        PrepareBuilder();
-        result.primitiveArray_[index] = value;
-        return this;
-      }
-      [global::System.ObsoleteAttribute()]
-      public Builder AddPrimitiveArray(int value) {
-        PrepareBuilder();
-        result.primitiveArray_.Add(value);
-        return this;
-      }
-      [global::System.ObsoleteAttribute()]
-      public Builder AddRangePrimitiveArray(scg::IEnumerable<int> values) {
-        PrepareBuilder();
-        result.primitiveArray_.Add(values);
-        return this;
-      }
-      [global::System.ObsoleteAttribute()]
-      public Builder ClearPrimitiveArray() {
-        PrepareBuilder();
-        result.primitiveArray_.Clear();
-        return this;
-      }
-
-      [global::System.ObsoleteAttribute()]
-      public bool HasMessageValue {
-       get { return result.hasMessageValue; }
-      }
-      [global::System.ObsoleteAttribute()]
-      public global::UnitTest.Issues.TestProtos.DeprecatedChild MessageValue {
-        get { return result.MessageValue; }
-        set { SetMessageValue(value); }
-      }
-      [global::System.ObsoleteAttribute()]
-      public Builder SetMessageValue(global::UnitTest.Issues.TestProtos.DeprecatedChild value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasMessageValue = true;
-        result.messageValue_ = value;
-        return this;
-      }
-      [global::System.ObsoleteAttribute()]
-      public Builder SetMessageValue(global::UnitTest.Issues.TestProtos.DeprecatedChild.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.hasMessageValue = true;
-        result.messageValue_ = builderForValue.Build();
-        return this;
-      }
-      [global::System.ObsoleteAttribute()]
-      public Builder MergeMessageValue(global::UnitTest.Issues.TestProtos.DeprecatedChild value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        if (result.hasMessageValue &&
-            result.messageValue_ != global::UnitTest.Issues.TestProtos.DeprecatedChild.DefaultInstance) {
-            result.messageValue_ = global::UnitTest.Issues.TestProtos.DeprecatedChild.CreateBuilder(result.messageValue_).MergeFrom(value).BuildPartial();
-        } else {
-          result.messageValue_ = value;
-        }
-        result.hasMessageValue = true;
-        return this;
-      }
-      [global::System.ObsoleteAttribute()]
-      public Builder ClearMessageValue() {
-        PrepareBuilder();
-        result.hasMessageValue = false;
-        result.messageValue_ = null;
-        return this;
-      }
-
-      [global::System.ObsoleteAttribute()]
-      public pbc::IPopsicleList<global::UnitTest.Issues.TestProtos.DeprecatedChild> MessageArrayList {
-        get { return PrepareBuilder().messageArray_; }
-      }
-      [global::System.ObsoleteAttribute()]
-      public int MessageArrayCount {
-        get { return result.MessageArrayCount; }
-      }
-      [global::System.ObsoleteAttribute()]
-      public global::UnitTest.Issues.TestProtos.DeprecatedChild GetMessageArray(int index) {
-        return result.GetMessageArray(index);
-      }
-      [global::System.ObsoleteAttribute()]
-      public Builder SetMessageArray(int index, global::UnitTest.Issues.TestProtos.DeprecatedChild value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.messageArray_[index] = value;
-        return this;
-      }
-      [global::System.ObsoleteAttribute()]
-      public Builder SetMessageArray(int index, global::UnitTest.Issues.TestProtos.DeprecatedChild.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.messageArray_[index] = builderForValue.Build();
-        return this;
-      }
-      [global::System.ObsoleteAttribute()]
-      public Builder AddMessageArray(global::UnitTest.Issues.TestProtos.DeprecatedChild value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.messageArray_.Add(value);
-        return this;
-      }
-      [global::System.ObsoleteAttribute()]
-      public Builder AddMessageArray(global::UnitTest.Issues.TestProtos.DeprecatedChild.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.messageArray_.Add(builderForValue.Build());
-        return this;
-      }
-      [global::System.ObsoleteAttribute()]
-      public Builder AddRangeMessageArray(scg::IEnumerable<global::UnitTest.Issues.TestProtos.DeprecatedChild> values) {
-        PrepareBuilder();
-        result.messageArray_.Add(values);
-        return this;
-      }
-      [global::System.ObsoleteAttribute()]
-      public Builder ClearMessageArray() {
-        PrepareBuilder();
-        result.messageArray_.Clear();
-        return this;
-      }
-
-      [global::System.ObsoleteAttribute()]
-      public bool HasEnumValue {
-       get { return result.hasEnumValue; }
-      }
-      [global::System.ObsoleteAttribute()]
-      public global::UnitTest.Issues.TestProtos.DeprecatedEnum EnumValue {
-        get { return result.EnumValue; }
-        set { SetEnumValue(value); }
-      }
-      [global::System.ObsoleteAttribute()]
-      public Builder SetEnumValue(global::UnitTest.Issues.TestProtos.DeprecatedEnum value) {
-        PrepareBuilder();
-        result.hasEnumValue = true;
-        result.enumValue_ = value;
-        return this;
-      }
-      [global::System.ObsoleteAttribute()]
-      public Builder ClearEnumValue() {
-        PrepareBuilder();
-        result.hasEnumValue = false;
-        result.enumValue_ = global::UnitTest.Issues.TestProtos.DeprecatedEnum.one;
-        return this;
-      }
-
-      [global::System.ObsoleteAttribute()]
-      public pbc::IPopsicleList<global::UnitTest.Issues.TestProtos.DeprecatedEnum> EnumArrayList {
-        get { return PrepareBuilder().enumArray_; }
-      }
-      [global::System.ObsoleteAttribute()]
-      public int EnumArrayCount {
-        get { return result.EnumArrayCount; }
-      }
-      [global::System.ObsoleteAttribute()]
-      public global::UnitTest.Issues.TestProtos.DeprecatedEnum GetEnumArray(int index) {
-        return result.GetEnumArray(index);
-      }
-      [global::System.ObsoleteAttribute()]
-      public Builder SetEnumArray(int index, global::UnitTest.Issues.TestProtos.DeprecatedEnum value) {
-        PrepareBuilder();
-        result.enumArray_[index] = value;
-        return this;
-      }
-      [global::System.ObsoleteAttribute()]
-      public Builder AddEnumArray(global::UnitTest.Issues.TestProtos.DeprecatedEnum value) {
-        PrepareBuilder();
-        result.enumArray_.Add(value);
-        return this;
-      }
-      [global::System.ObsoleteAttribute()]
-      public Builder AddRangeEnumArray(scg::IEnumerable<global::UnitTest.Issues.TestProtos.DeprecatedEnum> values) {
-        PrepareBuilder();
-        result.enumArray_.Add(values);
-        return this;
-      }
-      [global::System.ObsoleteAttribute()]
-      public Builder ClearEnumArray() {
-        PrepareBuilder();
-        result.enumArray_.Clear();
-        return this;
-      }
-    }
-    static DeprecatedFieldsMessage() {
-      object.ReferenceEquals(global::UnitTest.Issues.TestProtos.UnittestIssues.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class ItemField : pb::GeneratedMessage<ItemField, ItemField.Builder> {
-    private ItemField() { }
-    private static readonly ItemField defaultInstance = new ItemField().MakeReadOnly();
-    private static readonly string[] _itemFieldFieldNames = new string[] { "item" };
-    private static readonly uint[] _itemFieldFieldTags = new uint[] { 8 };
-    public static ItemField DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override ItemField DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override ItemField ThisMessage {
-      get { return this; }
-    }
-
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::UnitTest.Issues.TestProtos.UnittestIssues.internal__static_unittest_issues_ItemField__Descriptor; }
-    }
-
-    protected override pb::FieldAccess.FieldAccessorTable<ItemField, ItemField.Builder> InternalFieldAccessors {
-      get { return global::UnitTest.Issues.TestProtos.UnittestIssues.internal__static_unittest_issues_ItemField__FieldAccessorTable; }
-    }
-
-    public const int ItemFieldNumber = 1;
-    private bool hasItem;
-    private int item_;
-    public bool HasItem {
-      get { return hasItem; }
-    }
-    public int Item {
-      get { return item_; }
-    }
-
-    public override bool IsInitialized {
-      get {
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _itemFieldFieldNames;
-      if (hasItem) {
-        output.WriteInt32(1, field_names[0], Item);
-      }
-      UnknownFields.WriteTo(output);
-    }
-
-    private int memoizedSerializedSize = -1;
-    public override int SerializedSize {
-      get {
-        int size = memoizedSerializedSize;
-        if (size != -1) return size;
-        return CalcSerializedSize();
-      }
-    }
-
-    private int CalcSerializedSize() {
-      int size = memoizedSerializedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (hasItem) {
-        size += pb::CodedOutputStream.ComputeInt32Size(1, Item);
-      }
-      size += UnknownFields.SerializedSize;
-      memoizedSerializedSize = size;
-      return size;
-    }
-    public static ItemField ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static ItemField ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static ItemField ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static ItemField ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static ItemField ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static ItemField ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static ItemField ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static ItemField ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static ItemField ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static ItemField ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private ItemField MakeReadOnly() {
-      return this;
-    }
-
-    public static Builder CreateBuilder() { return new Builder(); }
-    public override Builder ToBuilder() { return CreateBuilder(this); }
-    public override Builder CreateBuilderForType() { return new Builder(); }
-    public static Builder CreateBuilder(ItemField prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilder<ItemField, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(ItemField cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private ItemField result;
-
-      private ItemField PrepareBuilder() {
-        if (resultIsReadOnly) {
-          ItemField original = result;
-          result = new ItemField();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override ItemField MessageBeingBuilt {
-        get { return PrepareBuilder(); }
-      }
-
-      public override Builder Clear() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-        return this;
-      }
-
-      public override Builder Clone() {
-        if (resultIsReadOnly) {
-          return new Builder(result);
-        } else {
-          return new Builder().MergeFrom(result);
-        }
-      }
-
-      public override pbd::MessageDescriptor DescriptorForType {
-        get { return global::UnitTest.Issues.TestProtos.ItemField.Descriptor; }
-      }
-
-      public override ItemField DefaultInstanceForType {
-        get { return global::UnitTest.Issues.TestProtos.ItemField.DefaultInstance; }
-      }
-
-      public override ItemField BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is ItemField) {
-          return MergeFrom((ItemField) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(ItemField other) {
-        if (other == global::UnitTest.Issues.TestProtos.ItemField.DefaultInstance) return this;
-        PrepareBuilder();
-        if (other.HasItem) {
-          Item = other.Item;
-        }
-        this.MergeUnknownFields(other.UnknownFields);
-        return this;
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input) {
-        return MergeFrom(input, pb::ExtensionRegistry.Empty);
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-        PrepareBuilder();
-        pb::UnknownFieldSet.Builder unknownFields = null;
-        uint tag;
-        string field_name;
-        while (input.ReadTag(out tag, out field_name)) {
-          if(tag == 0 && field_name != null) {
-            int field_ordinal = global::System.Array.BinarySearch(_itemFieldFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _itemFieldFieldTags[field_ordinal];
-            else {
-              if (unknownFields == null) {
-                unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-              }
-              ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name);
-              continue;
-            }
-          }
-          switch (tag) {
-            case 0: {
-              throw pb::InvalidProtocolBufferException.InvalidTag();
-            }
-            default: {
-              if (pb::WireFormat.IsEndGroupTag(tag)) {
-                if (unknownFields != null) {
-                  this.UnknownFields = unknownFields.Build();
-                }
-                return this;
-              }
-              if (unknownFields == null) {
-                unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-              }
-              ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name);
-              break;
-            }
-            case 8: {
-              result.hasItem = input.ReadInt32(ref result.item_);
-              break;
-            }
-          }
-        }
-
-        if (unknownFields != null) {
-          this.UnknownFields = unknownFields.Build();
-        }
-        return this;
-      }
-
-
-      public bool HasItem {
-        get { return result.hasItem; }
-      }
-      public int Item {
-        get { return result.Item; }
-        set { SetItem(value); }
-      }
-      public Builder SetItem(int value) {
-        PrepareBuilder();
-        result.hasItem = true;
-        result.item_ = value;
-        return this;
-      }
-      public Builder ClearItem() {
-        PrepareBuilder();
-        result.hasItem = false;
-        result.item_ = 0;
-        return this;
-      }
-    }
-    static ItemField() {
-      object.ReferenceEquals(global::UnitTest.Issues.TestProtos.UnittestIssues.Descriptor, null);
-    }
-  }
-
-  #endregion
-
-}
-
-#endregion Designer generated code