Browse Source

Delete "lite" project and serialization project+code

We'll probably want a lot of the code from the serialization project when we do JSON, but enough of it will change that it's not worth keeping in a broken state for now.
Jon Skeet 10 years ago
parent
commit
a09b491080
46 changed files with 0 additions and 61270 deletions
  1. 0 686
      csharp/src/ProtocolBuffers.Serialization/AbstractReader.cs
  2. 0 175
      csharp/src/ProtocolBuffers.Serialization/AbstractTextReader.cs
  3. 0 104
      csharp/src/ProtocolBuffers.Serialization/AbstractTextWriter.cs
  4. 0 503
      csharp/src/ProtocolBuffers.Serialization/AbstractWriter.cs
  5. 0 265
      csharp/src/ProtocolBuffers.Serialization/DictionaryReader.cs
  6. 0 200
      csharp/src/ProtocolBuffers.Serialization/DictionaryWriter.cs
  7. 0 185
      csharp/src/ProtocolBuffers.Serialization/Extensions.cs
  8. 0 162
      csharp/src/ProtocolBuffers.Serialization/Http/FormUrlEncodedReader.cs
  9. 0 112
      csharp/src/ProtocolBuffers.Serialization/Http/MessageFormatFactory.cs
  10. 0 176
      csharp/src/ProtocolBuffers.Serialization/Http/MessageFormatOptions.cs
  11. 0 262
      csharp/src/ProtocolBuffers.Serialization/JsonFormatReader.cs
  12. 0 541
      csharp/src/ProtocolBuffers.Serialization/JsonFormatWriter.cs
  13. 0 442
      csharp/src/ProtocolBuffers.Serialization/JsonTextCursor.cs
  14. 0 65
      csharp/src/ProtocolBuffers.Serialization/Properties/AssemblyInfo.cs
  15. 0 93
      csharp/src/ProtocolBuffers.Serialization/ProtocolBuffers.Serialization.csproj
  16. 0 93
      csharp/src/ProtocolBuffers.Serialization/ProtocolBuffersLite.Serialization.csproj
  17. 0 18
      csharp/src/ProtocolBuffers.Serialization/RecursionLimitExceeded.cs
  18. 0 338
      csharp/src/ProtocolBuffers.Serialization/XmlFormatReader.cs
  19. 0 280
      csharp/src/ProtocolBuffers.Serialization/XmlFormatWriter.cs
  20. 0 17
      csharp/src/ProtocolBuffers.Serialization/XmlReaderOptions.cs
  21. 0 24
      csharp/src/ProtocolBuffers.Serialization/XmlWriterOptions.cs
  22. 0 99
      csharp/src/ProtocolBuffers/ProtocolBuffersLite.csproj
  23. 0 336
      csharp/src/ProtocolBuffersLite.Test/AbstractBuilderLiteTest.cs
  24. 0 133
      csharp/src/ProtocolBuffersLite.Test/AbstractMessageLiteTest.cs
  25. 0 8
      csharp/src/ProtocolBuffersLite.Test/App.xaml
  26. 0 60
      csharp/src/ProtocolBuffersLite.Test/App.xaml.cs
  27. 0 286
      csharp/src/ProtocolBuffersLite.Test/ExtendableBuilderLiteTest.cs
  28. 0 378
      csharp/src/ProtocolBuffersLite.Test/ExtendableMessageLiteTest.cs
  29. 0 185
      csharp/src/ProtocolBuffersLite.Test/InteropLiteTest.cs
  30. 0 113
      csharp/src/ProtocolBuffersLite.Test/LiteTest.cs
  31. 0 237
      csharp/src/ProtocolBuffersLite.Test/MissingFieldAndExtensionTest.cs
  32. 0 6
      csharp/src/ProtocolBuffersLite.Test/Properties/AppManifest.xml
  33. 0 7
      csharp/src/ProtocolBuffersLite.Test/Properties/OutOfBrowserSettings.xml
  34. 0 113
      csharp/src/ProtocolBuffersLite.Test/ProtocolBuffersLite.Test.csproj
  35. 0 110
      csharp/src/ProtocolBuffersLite.Test/ProtocolBuffersLiteMixed.Test.csproj
  36. 0 120
      csharp/src/ProtocolBuffersLite.Test/TestLiteByApi.cs
  37. 0 33878
      csharp/src/ProtocolBuffersLite.Test/TestProtos/Unittest.cs
  38. 0 2138
      csharp/src/ProtocolBuffersLite.Test/TestProtos/UnittestExtrasFull.cs
  39. 0 4206
      csharp/src/ProtocolBuffersLite.Test/TestProtos/UnittestExtrasLite.cs
  40. 0 347
      csharp/src/ProtocolBuffersLite.Test/TestProtos/UnittestImport.cs
  41. 0 311
      csharp/src/ProtocolBuffersLite.Test/TestProtos/UnittestImportLite.cs
  42. 0 333
      csharp/src/ProtocolBuffersLite.Test/TestProtos/UnittestImportPublic.cs
  43. 0 302
      csharp/src/ProtocolBuffersLite.Test/TestProtos/UnittestImportPublicLite.cs
  44. 0 12493
      csharp/src/ProtocolBuffersLite.Test/TestProtos/UnittestLite.cs
  45. 0 325
      csharp/src/ProtocolBuffersLite.Test/TestProtos/UnittestLiteImportsNonlite.cs
  46. 0 5
      csharp/src/ProtocolBuffersLite.Test/packages.config

+ 0 - 686
csharp/src/ProtocolBuffers.Serialization/AbstractReader.cs

@@ -1,686 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Globalization;
-using Google.ProtocolBuffers.Descriptors;
-
-//Disable CS3011: only CLS-compliant members can be abstract
-#pragma warning disable 3011
-
-namespace Google.ProtocolBuffers.Serialization
-{
-    /// <summary>
-    /// Provides a base-class that provides some basic functionality for handling type dispatching
-    /// </summary>
-    public abstract class AbstractReader : ICodedInputStream
-    {
-        private const int DefaultMaxDepth = 64;
-        private int _depth;
-        
-        /// <summary> Constructs a new reader </summary>
-        protected AbstractReader() { MaxDepth = DefaultMaxDepth; }
-
-        /// <summary> Gets or sets the maximum recursion depth allowed </summary>
-        public int MaxDepth { get; set; }
-
-        /// <summary>
-        /// Merges the contents of stream into the provided message builder
-        /// </summary>
-        public TBuilder Merge<TBuilder>(TBuilder builder) where TBuilder : IBuilderLite
-        {
-            return Merge(builder, ExtensionRegistry.Empty);
-        }
-
-        /// <summary>
-        /// Merges the contents of stream into the provided message builder
-        /// </summary>
-        public abstract TBuilder Merge<TBuilder>(TBuilder builder, ExtensionRegistry registry)
-            where TBuilder : IBuilderLite;
-
-        /// <summary>
-        /// Peeks at the next field in the input stream and returns what information is available.
-        /// </summary>
-        /// <remarks>
-        /// This may be called multiple times without actually reading the field.  Only after the field
-        /// is either read, or skipped, should PeekNext return a different value.
-        /// </remarks>
-        protected abstract bool PeekNext(out string field);
-
-        /// <summary>
-        /// Causes the reader to skip past this field
-        /// </summary>
-        protected abstract void Skip();
-
-        /// <summary>
-        /// Returns true if it was able to read a Boolean from the input
-        /// </summary>
-        protected abstract bool Read(ref bool value);
-
-        /// <summary>
-        /// Returns true if it was able to read a Int32 from the input
-        /// </summary>
-        protected abstract bool Read(ref int value);
-
-        /// <summary>
-        /// Returns true if it was able to read a UInt32 from the input
-        /// </summary>
-        protected abstract bool Read(ref uint value);
-
-        /// <summary>
-        /// Returns true if it was able to read a Int64 from the input
-        /// </summary>
-        protected abstract bool Read(ref long value);
-
-        /// <summary>
-        /// Returns true if it was able to read a UInt64 from the input
-        /// </summary>
-        protected abstract bool Read(ref ulong value);
-
-        /// <summary>
-        /// Returns true if it was able to read a Single from the input
-        /// </summary>
-        protected abstract bool Read(ref float value);
-
-        /// <summary>
-        /// Returns true if it was able to read a Double from the input
-        /// </summary>
-        protected abstract bool Read(ref double value);
-
-        /// <summary>
-        /// Returns true if it was able to read a String from the input
-        /// </summary>
-        protected abstract bool Read(ref string value);
-
-        /// <summary>
-        /// Returns true if it was able to read a ByteString from the input
-        /// </summary>
-        protected abstract bool Read(ref ByteString value);
-
-        /// <summary>
-        /// returns true if it was able to read a single value into the value reference.  The value
-        /// stored may be of type System.String, System.Int32, or an IEnumLite from the IEnumLiteMap.
-        /// </summary>
-        protected abstract bool ReadEnum(ref object value);
-
-        /// <summary>
-        /// Merges the input stream into the provided IBuilderLite 
-        /// </summary>
-        protected abstract bool ReadMessage(IBuilderLite builder, ExtensionRegistry registry);
-        
-        /// <summary>
-        /// Reads the root-message preamble specific to this formatter
-        /// </summary>
-        public abstract void ReadMessageStart();
-
-        /// <summary>
-        /// Reads the root-message close specific to this formatter
-        /// </summary>
-        public abstract void ReadMessageEnd();
-
-        /// <summary>
-        /// Merges the input stream into the provided IBuilderLite 
-        /// </summary>
-        public virtual bool ReadGroup(IBuilderLite value, ExtensionRegistry registry)
-        {
-            return ReadMessage(value, registry);
-        }
-
-        /// <summary>
-        /// Cursors through the array elements and stops at the end of the array
-        /// </summary>
-        protected virtual IEnumerable<string> ForeachArrayItem(string field)
-        {
-            string next = field;
-            while (true)
-            {
-                yield return next;
-
-                if (!PeekNext(out next) || next != field)
-                {
-                    break;
-                }
-            }
-        }
-
-        /// <summary>
-        /// Reads an array of T messages
-        /// </summary>
-        public virtual bool ReadMessageArray<T>(string field, ICollection<T> items, IMessageLite messageType,
-                                                ExtensionRegistry registry)
-        {
-            bool success = false;
-            foreach (string next in ForeachArrayItem(field))
-            {
-                IBuilderLite builder = messageType.WeakCreateBuilderForType();
-                if (ReadMessage(builder, registry))
-                {
-                    items.Add((T) builder.WeakBuild());
-                    success |= true;
-                }
-            }
-            return success;
-        }
-
-        /// <summary>
-        /// Reads an array of T messages as a proto-buffer group
-        /// </summary>
-        public virtual bool ReadGroupArray<T>(string field, ICollection<T> items, IMessageLite messageType,
-                                              ExtensionRegistry registry)
-        {
-            bool success = false;
-            foreach (string next in ForeachArrayItem(field))
-            {
-                IBuilderLite builder = messageType.WeakCreateBuilderForType();
-                if (ReadGroup(builder, registry))
-                {
-                    items.Add((T) builder.WeakBuild());
-                    success |= true;
-                }
-            }
-            return success;
-        }
-
-        /// <summary>
-        /// Reads an array of System.Enum type T and adds them to the collection
-        /// </summary>
-        public virtual bool ReadEnumArray(string field, ICollection<object> items)
-        {
-            bool success = false;
-            foreach (string next in ForeachArrayItem(field))
-            {
-                object temp = null;
-                if (ReadEnum(ref temp))
-                {
-                    items.Add(temp);
-                    success |= true;
-                }
-            }
-            return success;
-        }
-
-        /// <summary>
-        /// Reads an array of T, where T is a primitive type defined by FieldType
-        /// </summary>
-        public virtual bool ReadArray<T>(FieldType type, string field, ICollection<T> items)
-        {
-            bool success = false;
-            foreach (string next in ForeachArrayItem(field))
-            {
-                object temp = null;
-                if (ReadField(type, ref temp))
-                {
-                    items.Add((T) temp);
-                    success |= true;
-                }
-            }
-            return success;
-        }
-
-        /// <summary>
-        /// returns true if it was able to read a single primitive value of FieldType into the value reference
-        /// </summary>
-        public virtual bool ReadField(FieldType type, ref object value)
-        {
-            switch (type)
-            {
-                case FieldType.Bool:
-                    {
-                        bool temp = false;
-                        if (Read(ref temp))
-                        {
-                            value = temp;
-                        }
-                        else
-                        {
-                            return false;
-                        }
-                        break;
-                    }
-                case FieldType.Int64:
-                case FieldType.SInt64:
-                case FieldType.SFixed64:
-                    {
-                        long temp = 0;
-                        if (Read(ref temp))
-                        {
-                            value = temp;
-                        }
-                        else
-                        {
-                            return false;
-                        }
-                        break;
-                    }
-                case FieldType.UInt64:
-                case FieldType.Fixed64:
-                    {
-                        ulong temp = 0;
-                        if (Read(ref temp))
-                        {
-                            value = temp;
-                        }
-                        else
-                        {
-                            return false;
-                        }
-                        break;
-                    }
-                case FieldType.Int32:
-                case FieldType.SInt32:
-                case FieldType.SFixed32:
-                    {
-                        int temp = 0;
-                        if (Read(ref temp))
-                        {
-                            value = temp;
-                        }
-                        else
-                        {
-                            return false;
-                        }
-                        break;
-                    }
-                case FieldType.UInt32:
-                case FieldType.Fixed32:
-                    {
-                        uint temp = 0;
-                        if (Read(ref temp))
-                        {
-                            value = temp;
-                        }
-                        else
-                        {
-                            return false;
-                        }
-                        break;
-                    }
-                case FieldType.Float:
-                    {
-                        float temp = float.NaN;
-                        if (Read(ref temp))
-                        {
-                            value = temp;
-                        }
-                        else
-                        {
-                            return false;
-                        }
-                        break;
-                    }
-                case FieldType.Double:
-                    {
-                        double temp = float.NaN;
-                        if (Read(ref temp))
-                        {
-                            value = temp;
-                        }
-                        else
-                        {
-                            return false;
-                        }
-                        break;
-                    }
-                case FieldType.String:
-                    {
-                        string temp = null;
-                        if (Read(ref temp))
-                        {
-                            value = temp;
-                        }
-                        else
-                        {
-                            return false;
-                        }
-                        break;
-                    }
-                case FieldType.Bytes:
-                    {
-                        ByteString temp = null;
-                        if (Read(ref temp))
-                        {
-                            value = temp;
-                        }
-                        else
-                        {
-                            return false;
-                        }
-                        break;
-                    }
-                default:
-                    throw InvalidProtocolBufferException.InvalidTag();
-            }
-            return true;
-        }
-
-        #region ICodedInputStream Members
-
-        bool ICodedInputStream.ReadTag(out uint fieldTag, out string fieldName)
-        {
-            fieldTag = 0;
-            if (PeekNext(out fieldName))
-            {
-                return true;
-            }
-            return false;
-        }
-
-        bool ICodedInputStream.ReadDouble(ref double value)
-        {
-            return Read(ref value);
-        }
-
-        bool ICodedInputStream.ReadFloat(ref float value)
-        {
-            return Read(ref value);
-        }
-
-        bool ICodedInputStream.ReadUInt64(ref ulong value)
-        {
-            return Read(ref value);
-        }
-
-        bool ICodedInputStream.ReadInt64(ref long value)
-        {
-            return Read(ref value);
-        }
-
-        bool ICodedInputStream.ReadInt32(ref int value)
-        {
-            return Read(ref value);
-        }
-
-        bool ICodedInputStream.ReadFixed64(ref ulong value)
-        {
-            return Read(ref value);
-        }
-
-        bool ICodedInputStream.ReadFixed32(ref uint value)
-        {
-            return Read(ref value);
-        }
-
-        bool ICodedInputStream.ReadBool(ref bool value)
-        {
-            return Read(ref value);
-        }
-
-        bool ICodedInputStream.ReadString(ref string value)
-        {
-            return Read(ref value);
-        }
-
-        void ICodedInputStream.ReadGroup(int fieldNumber, IBuilderLite builder, ExtensionRegistry extensionRegistry)
-        {
-            if (_depth++ > MaxDepth)
-            {
-                throw new RecursionLimitExceededException();
-            }
-            ReadGroup(builder, extensionRegistry);
-            _depth--;
-        }
-
-        void ICodedInputStream.ReadUnknownGroup(int fieldNumber, IBuilderLite builder)
-        {
-            throw new NotSupportedException();
-        }
-
-        void ICodedInputStream.ReadMessage(IBuilderLite builder, ExtensionRegistry extensionRegistry)
-        {
-            if (_depth++ > MaxDepth)
-            {
-                throw new RecursionLimitExceededException();
-            }
-            ReadMessage(builder, extensionRegistry);
-            _depth--;
-        }
-
-        bool ICodedInputStream.ReadBytes(ref ByteString value)
-        {
-            return Read(ref value);
-        }
-
-        bool ICodedInputStream.ReadUInt32(ref uint value)
-        {
-            return Read(ref value);
-        }
-
-        bool ICodedInputStream.ReadEnum(ref IEnumLite value, out object unknown, IEnumLiteMap mapping)
-        {
-            value = null;
-            unknown = null;
-            if (ReadEnum(ref unknown))
-            {
-                if (unknown is int)
-                {
-                    value = mapping.FindValueByNumber((int) unknown);
-                }
-                else if (unknown is string)
-                {
-                    value = mapping.FindValueByName((string) unknown);
-                }
-                return value != null;
-            }
-            return false;
-        }
-
-        bool ICodedInputStream.ReadEnum<T>(ref T value, out object rawValue)
-        {
-            rawValue = null;
-            if (ReadEnum(ref rawValue))
-            {
-                if (!EnumParser<T>.TryConvert(rawValue, ref value))
-                {
-                    value = default(T);
-                    return false;
-                }
-                return true;
-            }
-            return false;
-        }
-
-        bool ICodedInputStream.ReadSFixed32(ref int value)
-        {
-            return Read(ref value);
-        }
-
-        bool ICodedInputStream.ReadSFixed64(ref long value)
-        {
-            return Read(ref value);
-        }
-
-        bool ICodedInputStream.ReadSInt32(ref int value)
-        {
-            return Read(ref value);
-        }
-
-        bool ICodedInputStream.ReadSInt64(ref long value)
-        {
-            return Read(ref value);
-        }
-
-        void ICodedInputStream.ReadPrimitiveArray(FieldType fieldType, uint fieldTag, string fieldName,
-                                                  ICollection<object> list)
-        {
-            ReadArray(fieldType, fieldName, list);
-        }
-
-        void ICodedInputStream.ReadEnumArray(uint fieldTag, string fieldName, ICollection<IEnumLite> list,
-                                             out ICollection<object> unknown, IEnumLiteMap mapping)
-        {
-            unknown = null;
-            List<object> array = new List<object>();
-            if (ReadEnumArray(fieldName, array))
-            {
-                foreach (object rawValue in array)
-                {
-                    IEnumLite item = null;
-                    if (rawValue is int)
-                    {
-                        item = mapping.FindValueByNumber((int) rawValue);
-                    }
-                    else if (rawValue is string)
-                    {
-                        item = mapping.FindValueByName((string) rawValue);
-                    }
-
-                    if (item != null)
-                    {
-                        list.Add(item);
-                    }
-                    else
-                    {
-                        if (unknown == null)
-                        {
-                            unknown = new List<object>();
-                        }
-                        unknown.Add(rawValue);
-                    }
-                }
-            }
-        }
-
-        void ICodedInputStream.ReadEnumArray<T>(uint fieldTag, string fieldName, ICollection<T> list,
-                                                out ICollection<object> unknown)
-        {
-            unknown = null;
-            List<object> array = new List<object>();
-            if (ReadEnumArray(fieldName, array))
-            {
-                foreach (object rawValue in array)
-                {
-                    T val = default(T);
-                    if (EnumParser<T>.TryConvert(rawValue, ref val))
-                    {
-                        list.Add(val);
-                    }
-                    else
-                    {
-                        if (unknown == null)
-                        {
-                            unknown = new List<object>();
-                        }
-                        unknown.Add(rawValue);
-                    }
-                }
-            }
-        }
-
-        void ICodedInputStream.ReadMessageArray<T>(uint fieldTag, string fieldName, ICollection<T> list, T messageType,
-                                                   ExtensionRegistry registry)
-        {
-            if (_depth++ > MaxDepth)
-            {
-                throw new RecursionLimitExceededException();
-            }
-            ReadMessageArray(fieldName, list, messageType, registry);
-            _depth--;
-        }
-
-        void ICodedInputStream.ReadGroupArray<T>(uint fieldTag, string fieldName, ICollection<T> list, T messageType,
-                                                 ExtensionRegistry registry)
-        {
-            if (_depth++ > MaxDepth)
-            {
-                throw new RecursionLimitExceededException();
-            }
-            ReadGroupArray(fieldName, list, messageType, registry);
-            _depth--;
-        }
-
-        bool ICodedInputStream.ReadPrimitiveField(FieldType fieldType, ref object value)
-        {
-            return ReadField(fieldType, ref value);
-        }
-
-        bool ICodedInputStream.IsAtEnd
-        {
-            get
-            {
-                string next;
-                return PeekNext(out next) == false;
-            }
-        }
-
-        bool ICodedInputStream.SkipField()
-        {
-            Skip();
-            return true;
-        }
-
-        void ICodedInputStream.ReadStringArray(uint fieldTag, string fieldName, ICollection<string> list)
-        {
-            ReadArray(FieldType.String, fieldName, list);
-        }
-
-        void ICodedInputStream.ReadBytesArray(uint fieldTag, string fieldName, ICollection<ByteString> list)
-        {
-            ReadArray(FieldType.Bytes, fieldName, list);
-        }
-
-        void ICodedInputStream.ReadBoolArray(uint fieldTag, string fieldName, ICollection<bool> list)
-        {
-            ReadArray(FieldType.Bool, fieldName, list);
-        }
-
-        void ICodedInputStream.ReadInt32Array(uint fieldTag, string fieldName, ICollection<int> list)
-        {
-            ReadArray(FieldType.Int32, fieldName, list);
-        }
-
-        void ICodedInputStream.ReadSInt32Array(uint fieldTag, string fieldName, ICollection<int> list)
-        {
-            ReadArray(FieldType.SInt32, fieldName, list);
-        }
-
-        void ICodedInputStream.ReadUInt32Array(uint fieldTag, string fieldName, ICollection<uint> list)
-        {
-            ReadArray(FieldType.UInt32, fieldName, list);
-        }
-
-        void ICodedInputStream.ReadFixed32Array(uint fieldTag, string fieldName, ICollection<uint> list)
-        {
-            ReadArray(FieldType.Fixed32, fieldName, list);
-        }
-
-        void ICodedInputStream.ReadSFixed32Array(uint fieldTag, string fieldName, ICollection<int> list)
-        {
-            ReadArray(FieldType.SFixed32, fieldName, list);
-        }
-
-        void ICodedInputStream.ReadInt64Array(uint fieldTag, string fieldName, ICollection<long> list)
-        {
-            ReadArray(FieldType.Int64, fieldName, list);
-        }
-
-        void ICodedInputStream.ReadSInt64Array(uint fieldTag, string fieldName, ICollection<long> list)
-        {
-            ReadArray(FieldType.SInt64, fieldName, list);
-        }
-
-        void ICodedInputStream.ReadUInt64Array(uint fieldTag, string fieldName, ICollection<ulong> list)
-        {
-            ReadArray(FieldType.UInt64, fieldName, list);
-        }
-
-        void ICodedInputStream.ReadFixed64Array(uint fieldTag, string fieldName, ICollection<ulong> list)
-        {
-            ReadArray(FieldType.Fixed64, fieldName, list);
-        }
-
-        void ICodedInputStream.ReadSFixed64Array(uint fieldTag, string fieldName, ICollection<long> list)
-        {
-            ReadArray(FieldType.SFixed64, fieldName, list);
-        }
-
-        void ICodedInputStream.ReadDoubleArray(uint fieldTag, string fieldName, ICollection<double> list)
-        {
-            ReadArray(FieldType.Double, fieldName, list);
-        }
-
-        void ICodedInputStream.ReadFloatArray(uint fieldTag, string fieldName, ICollection<float> list)
-        {
-            ReadArray(FieldType.Float, fieldName, list);
-        }
-
-        #endregion
-    }
-}

+ 0 - 175
csharp/src/ProtocolBuffers.Serialization/AbstractTextReader.cs

@@ -1,175 +0,0 @@
-using System;
-using System.Globalization;
-using System.Xml;
-
-namespace Google.ProtocolBuffers.Serialization
-{
-    /// <summary>
-    /// Provides a base class for text-parsing readers
-    /// </summary>
-    public abstract class AbstractTextReader : AbstractReader
-    {
-        /// <summary> Constructs a new reader </summary>
-        protected AbstractTextReader() { }
-
-        /// <summary>
-        /// Reads a typed field as a string
-        /// </summary>
-        protected abstract bool ReadAsText(ref string textValue, Type type);
-
-        /// <summary>
-        /// Returns true if it was able to read a String from the input
-        /// </summary>
-        protected override bool Read(ref string value)
-        {
-            string text = null;
-            if (ReadAsText(ref text, typeof(string)))
-            {
-                value = text;
-                return true;
-            }
-            return false;
-        }
-
-        /// <summary>
-        /// Returns true if it was able to read a Boolean from the input
-        /// </summary>
-        protected override bool Read(ref bool value)
-        {
-            string text = null;
-            if (ReadAsText(ref text, typeof(bool)))
-            {
-                value = XmlConvert.ToBoolean(text);
-                return true;
-            }
-            return false;
-        }
-
-        /// <summary>
-        /// Returns true if it was able to read a Int32 from the input
-        /// </summary>
-        protected override bool Read(ref int value)
-        {
-            string text = null;
-            if (ReadAsText(ref text, typeof(int)))
-            {
-                value = XmlConvert.ToInt32(text);
-                return true;
-            }
-            return false;
-        }
-
-        /// <summary>
-        /// Returns true if it was able to read a UInt32 from the input
-        /// </summary>
-        protected override bool Read(ref uint value)
-        {
-            string text = null;
-            if (ReadAsText(ref text, typeof(uint)))
-            {
-                value = XmlConvert.ToUInt32(text);
-                return true;
-            }
-            return false;
-        }
-
-        /// <summary>
-        /// Returns true if it was able to read a Int64 from the input
-        /// </summary>
-        protected override bool Read(ref long value)
-        {
-            string text = null;
-            if (ReadAsText(ref text, typeof(long)))
-            {
-                value = XmlConvert.ToInt64(text);
-                return true;
-            }
-            return false;
-        }
-
-        /// <summary>
-        /// Returns true if it was able to read a UInt64 from the input
-        /// </summary>
-        protected override bool Read(ref ulong value)
-        {
-            string text = null;
-            if (ReadAsText(ref text, typeof(ulong)))
-            {
-                value = XmlConvert.ToUInt64(text);
-                return true;
-            }
-            return false;
-        }
-
-        /// <summary>
-        /// Returns true if it was able to read a Single from the input
-        /// </summary>
-        protected override bool Read(ref float value)
-        {
-            string text = null;
-            if (ReadAsText(ref text, typeof(float)))
-            {
-                value = XmlConvert.ToSingle(text);
-                return true;
-            }
-            return false;
-        }
-
-        /// <summary>
-        /// Returns true if it was able to read a Double from the input
-        /// </summary>
-        protected override bool Read(ref double value)
-        {
-            string text = null;
-            if (ReadAsText(ref text, typeof(double)))
-            {
-                value = XmlConvert.ToDouble(text);
-                return true;
-            }
-            return false;
-        }
-
-        /// <summary>
-        /// Provides decoding of bytes read from the input stream
-        /// </summary>
-        protected virtual ByteString DecodeBytes(string bytes)
-        {
-            return ByteString.FromBase64(bytes);
-        }
-
-        /// <summary>
-        /// Returns true if it was able to read a ByteString from the input
-        /// </summary>
-        protected override bool Read(ref ByteString value)
-        {
-            string text = null;
-            if (ReadAsText(ref text, typeof(ByteString)))
-            {
-                value = DecodeBytes(text);
-                return true;
-            }
-            return false;
-        }
-
-        /// <summary>
-        /// returns true if it was able to read a single value into the value reference.  The value
-        /// stored may be of type System.String, System.Int32, or an IEnumLite from the IEnumLiteMap.
-        /// </summary>
-        protected override bool ReadEnum(ref object value)
-        {
-            string text = null;
-            if (ReadAsText(ref text, typeof(Enum)))
-            {
-                int number;
-                if (FrameworkPortability.TryParseInt32(text, NumberStyles.Integer, FrameworkPortability.InvariantCulture, out number))
-                {
-                    value = number;
-                    return true;
-                }
-                value = text;
-                return true;
-            }
-            return false;
-        }
-    }
-}

+ 0 - 104
csharp/src/ProtocolBuffers.Serialization/AbstractTextWriter.cs

@@ -1,104 +0,0 @@
-using System;
-using System.Xml;
-
-namespace Google.ProtocolBuffers.Serialization
-{
-    /// <summary>
-    /// Provides a base class for text writers
-    /// </summary>
-    public abstract class AbstractTextWriter : AbstractWriter
-    {
-        /// <summary>
-        /// Encodes raw bytes to be written to the stream
-        /// </summary>
-        protected virtual string EncodeBytes(ByteString bytes)
-        {
-            return bytes.ToBase64();
-        }
-
-        /// <summary>
-        /// Writes a typed field as a text value
-        /// </summary>
-        protected abstract void WriteAsText(string field, string textValue, object typedValue);
-
-        /// <summary>
-        /// Writes a String value
-        /// </summary>
-        protected override void Write(string field, string value)
-        {
-            WriteAsText(field, value, value);
-        }
-
-        /// <summary>
-        /// Writes a Boolean value
-        /// </summary>
-        protected override void Write(string field, bool value)
-        {
-            WriteAsText(field, XmlConvert.ToString(value), value);
-        }
-
-        /// <summary>
-        /// Writes a Int32 value
-        /// </summary>
-        protected override void Write(string field, int value)
-        {
-            WriteAsText(field, XmlConvert.ToString(value), value);
-        }
-
-        /// <summary>
-        /// Writes a UInt32 value
-        /// </summary>
-        protected override void Write(string field, uint value)
-        {
-            WriteAsText(field, XmlConvert.ToString(value), value);
-        }
-
-        /// <summary>
-        /// Writes a Int64 value
-        /// </summary>
-        protected override void Write(string field, long value)
-        {
-            WriteAsText(field, XmlConvert.ToString(value), value);
-        }
-
-        /// <summary>
-        /// Writes a UInt64 value
-        /// </summary>
-        protected override void Write(string field, ulong value)
-        {
-            WriteAsText(field, XmlConvert.ToString(value), value);
-        }
-
-        /// <summary>
-        /// Writes a Single value
-        /// </summary>
-        protected override void Write(string field, float value)
-        {
-            WriteAsText(field, XmlConvert.ToString(value), value);
-        }
-
-        /// <summary>
-        /// Writes a Double value
-        /// </summary>
-        protected override void Write(string field, double value)
-        {
-            WriteAsText(field, XmlConvert.ToString(value), value);
-        }
-
-        /// <summary>
-        /// Writes a set of bytes
-        /// </summary>
-        protected override void Write(string field, ByteString value)
-        {
-            WriteAsText(field, EncodeBytes(value), value);
-        }
-
-        /// <summary>
-        /// Writes a System.Enum by the numeric and textual value
-        /// </summary>
-        protected override void WriteEnum(string field, int number, string name)
-        {
-            WriteAsText(field, name, number);
-        }
-    }
-}

+ 0 - 503
csharp/src/ProtocolBuffers.Serialization/AbstractWriter.cs

@@ -1,503 +0,0 @@
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.Globalization;
-using Google.ProtocolBuffers.Descriptors;
-
-//Disable CS3011: only CLS-compliant members can be abstract
-#pragma warning disable 3011
-
-namespace Google.ProtocolBuffers.Serialization
-{
-    /// <summary>
-    /// Provides a base class for writers that performs some basic type dispatching
-    /// </summary>
-    public abstract class AbstractWriter : ICodedOutputStream
-    {
-        /// <summary>
-        /// Completes any pending write operations
-        /// </summary>
-        public virtual void Flush()
-        {
-        }
-
-        /// <summary>
-        /// Writes the message to the the formatted stream.
-        /// </summary>
-        public abstract void WriteMessage(IMessageLite message);
-
-        /// <summary>
-        /// Used to write any nessary root-message preamble. After this call you can call 
-        /// IMessageLite.MergeTo(...) and complete the message with a call to WriteMessageEnd().
-        /// These three calls are identical to just calling WriteMessage(message);
-        /// </summary>
-        /// <example>
-        /// AbstractWriter writer;
-        /// writer.WriteMessageStart();
-        /// message.WriteTo(writer);
-        /// writer.WriteMessageEnd();
-        /// // ... or, but not both ...
-        /// writer.WriteMessage(message);
-        /// </example>
-        public abstract void WriteMessageStart();
-
-        /// <summary>
-        /// Used to complete a root-message previously started with a call to WriteMessageStart()
-        /// </summary>
-        public abstract void WriteMessageEnd();
-
-        /// <summary>
-        /// Writes a Boolean value
-        /// </summary>
-        protected abstract void Write(string field, Boolean value);
-
-        /// <summary>
-        /// Writes a Int32 value
-        /// </summary>
-        protected abstract void Write(string field, Int32 value);
-
-        /// <summary>
-        /// Writes a UInt32 value
-        /// </summary>
-        protected abstract void Write(string field, UInt32 value);
-
-        /// <summary>
-        /// Writes a Int64 value
-        /// </summary>
-        protected abstract void Write(string field, Int64 value);
-
-        /// <summary>
-        /// Writes a UInt64 value
-        /// </summary>
-        protected abstract void Write(string field, UInt64 value);
-
-        /// <summary>
-        /// Writes a Single value
-        /// </summary>
-        protected abstract void Write(string field, Single value);
-
-        /// <summary>
-        /// Writes a Double value
-        /// </summary>
-        protected abstract void Write(string field, Double value);
-
-        /// <summary>
-        /// Writes a String value
-        /// </summary>
-        protected abstract void Write(string field, String value);
-
-        /// <summary>
-        /// Writes a set of bytes
-        /// </summary>
-        protected abstract void Write(string field, ByteString value);
-
-        /// <summary>
-        /// Writes a message or group as a field
-        /// </summary>
-        protected abstract void WriteMessageOrGroup(string field, IMessageLite message);
-
-        /// <summary>
-        /// Writes a System.Enum by the numeric and textual value
-        /// </summary>
-        protected abstract void WriteEnum(string field, int number, string name);
-
-        /// <summary>
-        /// Writes a field of the type determined by field.FieldType
-        /// </summary>
-        protected virtual void WriteField(FieldType fieldType, string field, object value)
-        {
-            switch (fieldType)
-            {
-                case FieldType.Bool:
-                    Write(field, (bool) value);
-                    break;
-                case FieldType.Int64:
-                case FieldType.SInt64:
-                case FieldType.SFixed64:
-                    Write(field, (long) value);
-                    break;
-                case FieldType.UInt64:
-                case FieldType.Fixed64:
-                    Write(field, (ulong) value);
-                    break;
-                case FieldType.Int32:
-                case FieldType.SInt32:
-                case FieldType.SFixed32:
-                    Write(field, (int) value);
-                    break;
-                case FieldType.UInt32:
-                case FieldType.Fixed32:
-                    Write(field, (uint) value);
-                    break;
-                case FieldType.Float:
-                    Write(field, (float) value);
-                    break;
-                case FieldType.Double:
-                    Write(field, (double) value);
-                    break;
-                case FieldType.String:
-                    Write(field, (string) value);
-                    break;
-                case FieldType.Bytes:
-                    Write(field, (ByteString) value);
-                    break;
-                case FieldType.Group:
-                    WriteMessageOrGroup(field, (IMessageLite) value);
-                    break;
-                case FieldType.Message:
-                    WriteMessageOrGroup(field, (IMessageLite) value);
-                    break;
-                case FieldType.Enum:
-                    {
-                        if (value is IEnumLite)
-                        {
-                            WriteEnum(field, ((IEnumLite) value).Number, ((IEnumLite) value).Name);
-                        }
-                        else if (value is IConvertible)
-                        {
-                            WriteEnum(field, ((IConvertible)value).ToInt32(FrameworkPortability.InvariantCulture),
-                                      ((IConvertible)value).ToString(FrameworkPortability.InvariantCulture));
-                        }
-                        else
-                        {
-                            throw new ArgumentException("Expected an Enum type for field " + field);
-                        }
-                        break;
-                    }
-                default:
-                    throw InvalidProtocolBufferException.InvalidTag();
-            }
-        }
-
-        /// <summary>
-        /// Writes an array of field values
-        /// </summary>
-        protected virtual void WriteArray(FieldType fieldType, string field, IEnumerable items)
-        {
-            foreach (object obj in items)
-            {
-                WriteField(fieldType, field, obj);
-            }
-        }
-
-        /// <summary>
-        /// Writes a numeric unknown field of wire type: Fixed32, Fixed64, or Variant
-        /// </summary>
-        protected virtual void WriteUnknown(WireFormat.WireType wireType, int fieldNumber, ulong value)
-        {
-        }
-
-        /// <summary>
-        /// Writes an unknown field, Expect WireType of GroupStart or LengthPrefix
-        /// </summary>
-        protected virtual void WriteUnknown(WireFormat.WireType wireType, int fieldNumber, ByteString value)
-        {
-        }
-
-        #region ICodedOutputStream Members
-
-        void ICodedOutputStream.WriteUnknownGroup(int fieldNumber, IMessageLite value)
-        {
-        }
-
-        void ICodedOutputStream.WriteUnknownBytes(int fieldNumber, ByteString value)
-        {
-        }
-
-        void ICodedOutputStream.WriteUnknownField(int fieldNumber, WireFormat.WireType type, ulong value)
-        {
-        }
-
-        void ICodedOutputStream.WriteMessageSetExtension(int fieldNumber, string fieldName, IMessageLite value)
-        {
-        }
-
-        void ICodedOutputStream.WriteMessageSetExtension(int fieldNumber, string fieldName, ByteString value)
-        {
-        }
-
-        void ICodedOutputStream.WriteField(FieldType fieldType, int fieldNumber, string fieldName, object value)
-        {
-            WriteField(fieldType, fieldName, value);
-        }
-
-        void ICodedOutputStream.WriteDouble(int fieldNumber, string fieldName, double value)
-        {
-            Write(fieldName, value);
-        }
-
-        void ICodedOutputStream.WriteFloat(int fieldNumber, string fieldName, float value)
-        {
-            Write(fieldName, value);
-        }
-
-        void ICodedOutputStream.WriteUInt64(int fieldNumber, string fieldName, ulong value)
-        {
-            Write(fieldName, value);
-        }
-
-        void ICodedOutputStream.WriteInt64(int fieldNumber, string fieldName, long value)
-        {
-            Write(fieldName, value);
-        }
-
-        void ICodedOutputStream.WriteInt32(int fieldNumber, string fieldName, int value)
-        {
-            Write(fieldName, value);
-        }
-
-        void ICodedOutputStream.WriteFixed64(int fieldNumber, string fieldName, ulong value)
-        {
-            Write(fieldName, value);
-        }
-
-        void ICodedOutputStream.WriteFixed32(int fieldNumber, string fieldName, uint value)
-        {
-            Write(fieldName, value);
-        }
-
-        void ICodedOutputStream.WriteBool(int fieldNumber, string fieldName, bool value)
-        {
-            Write(fieldName, value);
-        }
-
-        void ICodedOutputStream.WriteString(int fieldNumber, string fieldName, string value)
-        {
-            Write(fieldName, value);
-        }
-
-        void ICodedOutputStream.WriteGroup(int fieldNumber, string fieldName, IMessageLite value)
-        {
-            WriteMessageOrGroup(fieldName, value);
-        }
-
-        void ICodedOutputStream.WriteMessage(int fieldNumber, string fieldName, IMessageLite value)
-        {
-            WriteMessageOrGroup(fieldName, value);
-        }
-
-        void ICodedOutputStream.WriteBytes(int fieldNumber, string fieldName, ByteString value)
-        {
-            Write(fieldName, value);
-        }
-
-        void ICodedOutputStream.WriteUInt32(int fieldNumber, string fieldName, uint value)
-        {
-            Write(fieldName, value);
-        }
-
-        void ICodedOutputStream.WriteEnum(int fieldNumber, string fieldName, int value, object rawValue)
-        {
-            WriteEnum(fieldName, value, rawValue.ToString());
-        }
-
-        void ICodedOutputStream.WriteSFixed32(int fieldNumber, string fieldName, int value)
-        {
-            Write(fieldName, value);
-        }
-
-        void ICodedOutputStream.WriteSFixed64(int fieldNumber, string fieldName, long value)
-        {
-            Write(fieldName, value);
-        }
-
-        void ICodedOutputStream.WriteSInt32(int fieldNumber, string fieldName, int value)
-        {
-            Write(fieldName, value);
-        }
-
-        void ICodedOutputStream.WriteSInt64(int fieldNumber, string fieldName, long value)
-        {
-            Write(fieldName, value);
-        }
-
-
-        void ICodedOutputStream.WriteArray(FieldType fieldType, int fieldNumber, string fieldName, IEnumerable list)
-        {
-            WriteArray(fieldType, fieldName, list);
-        }
-
-        void ICodedOutputStream.WriteGroupArray<T>(int fieldNumber, string fieldName, IEnumerable<T> list)
-        {
-            WriteArray(FieldType.Group, fieldName, list);
-        }
-
-        void ICodedOutputStream.WriteMessageArray<T>(int fieldNumber, string fieldName, IEnumerable<T> list)
-        {
-            WriteArray(FieldType.Message, fieldName, list);
-        }
-
-        void ICodedOutputStream.WriteStringArray(int fieldNumber, string fieldName, IEnumerable<string> list)
-        {
-            WriteArray(FieldType.String, fieldName, list);
-        }
-
-        void ICodedOutputStream.WriteBytesArray(int fieldNumber, string fieldName, IEnumerable<ByteString> list)
-        {
-            WriteArray(FieldType.Bytes, fieldName, list);
-        }
-
-        void ICodedOutputStream.WriteBoolArray(int fieldNumber, string fieldName, IEnumerable<bool> list)
-        {
-            WriteArray(FieldType.Bool, fieldName, list);
-        }
-
-        void ICodedOutputStream.WriteInt32Array(int fieldNumber, string fieldName, IEnumerable<int> list)
-        {
-            WriteArray(FieldType.Int32, fieldName, list);
-        }
-
-        void ICodedOutputStream.WriteSInt32Array(int fieldNumber, string fieldName, IEnumerable<int> list)
-        {
-            WriteArray(FieldType.SInt32, fieldName, list);
-        }
-
-        void ICodedOutputStream.WriteUInt32Array(int fieldNumber, string fieldName, IEnumerable<uint> list)
-        {
-            WriteArray(FieldType.UInt32, fieldName, list);
-        }
-
-        void ICodedOutputStream.WriteFixed32Array(int fieldNumber, string fieldName, IEnumerable<uint> list)
-        {
-            WriteArray(FieldType.Fixed32, fieldName, list);
-        }
-
-        void ICodedOutputStream.WriteSFixed32Array(int fieldNumber, string fieldName, IEnumerable<int> list)
-        {
-            WriteArray(FieldType.SFixed32, fieldName, list);
-        }
-
-        void ICodedOutputStream.WriteInt64Array(int fieldNumber, string fieldName, IEnumerable<long> list)
-        {
-            WriteArray(FieldType.Int64, fieldName, list);
-        }
-
-        void ICodedOutputStream.WriteSInt64Array(int fieldNumber, string fieldName, IEnumerable<long> list)
-        {
-            WriteArray(FieldType.SInt64, fieldName, list);
-        }
-
-        void ICodedOutputStream.WriteUInt64Array(int fieldNumber, string fieldName, IEnumerable<ulong> list)
-        {
-            WriteArray(FieldType.UInt64, fieldName, list);
-        }
-
-        void ICodedOutputStream.WriteFixed64Array(int fieldNumber, string fieldName, IEnumerable<ulong> list)
-        {
-            WriteArray(FieldType.Fixed64, fieldName, list);
-        }
-
-        void ICodedOutputStream.WriteSFixed64Array(int fieldNumber, string fieldName, IEnumerable<long> list)
-        {
-            WriteArray(FieldType.SFixed64, fieldName, list);
-        }
-
-        void ICodedOutputStream.WriteDoubleArray(int fieldNumber, string fieldName, IEnumerable<double> list)
-        {
-            WriteArray(FieldType.Double, fieldName, list);
-        }
-
-        void ICodedOutputStream.WriteFloatArray(int fieldNumber, string fieldName, IEnumerable<float> list)
-        {
-            WriteArray(FieldType.Float, fieldName, list);
-        }
-
-        void ICodedOutputStream.WriteEnumArray<T>(int fieldNumber, string fieldName, IEnumerable<T> list)
-        {
-            WriteArray(FieldType.Enum, fieldName, list);
-        }
-
-        void ICodedOutputStream.WritePackedArray(FieldType fieldType, int fieldNumber, string fieldName,
-                                                 IEnumerable list)
-        {
-            WriteArray(fieldType, fieldName, list);
-        }
-
-
-        void ICodedOutputStream.WritePackedBoolArray(int fieldNumber, string fieldName, int computedSize,
-                                                     IEnumerable<bool> list)
-        {
-            WriteArray(FieldType.Bool, fieldName, list);
-        }
-
-        void ICodedOutputStream.WritePackedInt32Array(int fieldNumber, string fieldName, int computedSize,
-                                                      IEnumerable<int> list)
-        {
-            WriteArray(FieldType.Int32, fieldName, list);
-        }
-
-        void ICodedOutputStream.WritePackedSInt32Array(int fieldNumber, string fieldName, int computedSize,
-                                                       IEnumerable<int> list)
-        {
-            WriteArray(FieldType.SInt32, fieldName, list);
-        }
-
-        void ICodedOutputStream.WritePackedUInt32Array(int fieldNumber, string fieldName, int computedSize,
-                                                       IEnumerable<uint> list)
-        {
-            WriteArray(FieldType.UInt32, fieldName, list);
-        }
-
-        void ICodedOutputStream.WritePackedFixed32Array(int fieldNumber, string fieldName, int computedSize,
-                                                        IEnumerable<uint> list)
-        {
-            WriteArray(FieldType.Fixed32, fieldName, list);
-        }
-
-        void ICodedOutputStream.WritePackedSFixed32Array(int fieldNumber, string fieldName, int computedSize,
-                                                         IEnumerable<int> list)
-        {
-            WriteArray(FieldType.SFixed32, fieldName, list);
-        }
-
-        void ICodedOutputStream.WritePackedInt64Array(int fieldNumber, string fieldName, int computedSize,
-                                                      IEnumerable<long> list)
-        {
-            WriteArray(FieldType.Int64, fieldName, list);
-        }
-
-        void ICodedOutputStream.WritePackedSInt64Array(int fieldNumber, string fieldName, int computedSize,
-                                                       IEnumerable<long> list)
-        {
-            WriteArray(FieldType.SInt64, fieldName, list);
-        }
-
-        void ICodedOutputStream.WritePackedUInt64Array(int fieldNumber, string fieldName, int computedSize,
-                                                       IEnumerable<ulong> list)
-        {
-            WriteArray(FieldType.UInt64, fieldName, list);
-        }
-
-        void ICodedOutputStream.WritePackedFixed64Array(int fieldNumber, string fieldName, int computedSize,
-                                                        IEnumerable<ulong> list)
-        {
-            WriteArray(FieldType.Fixed64, fieldName, list);
-        }
-
-        void ICodedOutputStream.WritePackedSFixed64Array(int fieldNumber, string fieldName, int computedSize,
-                                                         IEnumerable<long> list)
-        {
-            WriteArray(FieldType.SFixed64, fieldName, list);
-        }
-
-        void ICodedOutputStream.WritePackedDoubleArray(int fieldNumber, string fieldName, int computedSize,
-                                                       IEnumerable<double> list)
-        {
-            WriteArray(FieldType.Double, fieldName, list);
-        }
-
-        void ICodedOutputStream.WritePackedFloatArray(int fieldNumber, string fieldName, int computedSize,
-                                                      IEnumerable<float> list)
-        {
-            WriteArray(FieldType.Float, fieldName, list);
-        }
-
-        void ICodedOutputStream.WritePackedEnumArray<T>(int fieldNumber, string fieldName, int computedSize,
-                                                        IEnumerable<T> list)
-        {
-            WriteArray(FieldType.Enum, fieldName, list);
-        }
-
-        #endregion
-    }
-}

+ 0 - 265
csharp/src/ProtocolBuffers.Serialization/DictionaryReader.cs

@@ -1,265 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Globalization;
-using Google.ProtocolBuffers.Descriptors;
-
-namespace Google.ProtocolBuffers.Serialization
-{
-    /// <summary>
-    /// Allows reading messages from a name/value dictionary
-    /// </summary>
-    public class DictionaryReader : AbstractReader
-    {
-        private readonly IEnumerator<KeyValuePair<string, object>> _input;
-        private bool _ready;
-
-        /// <summary>
-        /// Creates a dictionary reader from an enumeration of KeyValuePair data, like an IDictionary
-        /// </summary>
-        public DictionaryReader(IEnumerable<KeyValuePair<string, object>> input)
-        {
-            _input = input.GetEnumerator();
-            _ready = _input.MoveNext();
-        }
-
-        /// <summary>
-        /// No-op
-        /// </summary>
-        public override void ReadMessageStart()
-        { }
-
-        /// <summary>
-        /// No-op
-        /// </summary>
-        public override void ReadMessageEnd()
-        { }
-
-        /// <summary>
-        /// Merges the contents of stream into the provided message builder
-        /// </summary>
-        public override TBuilder Merge<TBuilder>(TBuilder builder, ExtensionRegistry registry)
-        {
-            builder.WeakMergeFrom(this, registry);
-            return builder;
-        }
-
-        /// <summary>
-        /// Peeks at the next field in the input stream and returns what information is available.
-        /// </summary>
-        /// <remarks>
-        /// This may be called multiple times without actually reading the field.  Only after the field
-        /// is either read, or skipped, should PeekNext return a different value.
-        /// </remarks>
-        protected override bool PeekNext(out string field)
-        {
-            field = _ready ? _input.Current.Key : null;
-            return _ready;
-        }
-
-        /// <summary>
-        /// Causes the reader to skip past this field
-        /// </summary>
-        protected override void Skip()
-        {
-            _ready = _input.MoveNext();
-        }
-
-        private bool GetValue<T>(ref T value)
-        {
-            if (!_ready)
-            {
-                return false;
-            }
-
-            object obj = _input.Current.Value;
-            if (obj is T)
-            {
-                value = (T) obj;
-            }
-            else
-            {
-                try
-                {
-                    if (obj is IConvertible)
-                    {
-                        value = (T)Convert.ChangeType(obj, typeof(T), FrameworkPortability.InvariantCulture);
-                    }
-                    else
-                    {
-                        value = (T) obj;
-                    }
-                }
-                catch
-                {
-                    _ready = _input.MoveNext();
-                    return false;
-                }
-            }
-            _ready = _input.MoveNext();
-            return true;
-        }
-
-        /// <summary>
-        /// Returns true if it was able to read a Boolean from the input
-        /// </summary>
-        protected override bool Read(ref bool value)
-        {
-            return GetValue(ref value);
-        }
-
-        /// <summary>
-        /// Returns true if it was able to read a Int32 from the input
-        /// </summary>
-        protected override bool Read(ref int value)
-        {
-            return GetValue(ref value);
-        }
-
-        /// <summary>
-        /// Returns true if it was able to read a UInt32 from the input
-        /// </summary>
-        protected override bool Read(ref uint value)
-        {
-            return GetValue(ref value);
-        }
-
-        /// <summary>
-        /// Returns true if it was able to read a Int64 from the input
-        /// </summary>
-        protected override bool Read(ref long value)
-        {
-            return GetValue(ref value);
-        }
-
-        /// <summary>
-        /// Returns true if it was able to read a UInt64 from the input
-        /// </summary>
-        protected override bool Read(ref ulong value)
-        {
-            return GetValue(ref value);
-        }
-
-        /// <summary>
-        /// Returns true if it was able to read a Single from the input
-        /// </summary>
-        protected override bool Read(ref float value)
-        {
-            return GetValue(ref value);
-        }
-
-        /// <summary>
-        /// Returns true if it was able to read a Double from the input
-        /// </summary>
-        protected override bool Read(ref double value)
-        {
-            return GetValue(ref value);
-        }
-
-        /// <summary>
-        /// Returns true if it was able to read a String from the input
-        /// </summary>
-        protected override bool Read(ref string value)
-        {
-            return GetValue(ref value);
-        }
-
-        /// <summary>
-        /// Returns true if it was able to read a ByteString from the input
-        /// </summary>
-        protected override bool Read(ref ByteString value)
-        {
-            byte[] rawbytes = null;
-            if (GetValue(ref rawbytes))
-            {
-                value = ByteString.CopyFrom(rawbytes);
-                return true;
-            }
-            return false;
-        }
-
-        /// <summary>
-        /// returns true if it was able to read a single value into the value reference.  The value
-        /// stored may be of type System.String, System.Int32, or an IEnumLite from the IEnumLiteMap.
-        /// </summary>
-        protected override bool ReadEnum(ref object value)
-        {
-            return GetValue(ref value);
-        }
-
-        /// <summary>
-        /// Merges the input stream into the provided IBuilderLite 
-        /// </summary>
-        protected override bool ReadMessage(IBuilderLite builder, ExtensionRegistry registry)
-        {
-            IDictionary<string, object> values = null;
-            if (GetValue(ref values))
-            {
-                new DictionaryReader(values).Merge(builder, registry);
-                return true;
-            }
-            return false;
-        }
-
-        public override bool ReadArray<T>(FieldType type, string field, ICollection<T> items)
-        {
-            object[] array = null;
-            if (GetValue(ref array))
-            {
-                if (typeof(T) == typeof(ByteString))
-                {
-                    ICollection<ByteString> output = (ICollection<ByteString>) items;
-                    foreach (byte[] item in array)
-                    {
-                        output.Add(ByteString.CopyFrom(item));
-                    }
-                }
-                else
-                {
-                    foreach (T item in array)
-                    {
-                        items.Add(item);
-                    }
-                }
-                return true;
-            }
-            return false;
-        }
-
-        public override bool ReadEnumArray(string field, ICollection<object> items)
-        {
-            object[] array = null;
-            if (GetValue(ref array))
-            {
-                foreach (object item in array)
-                {
-                    items.Add(item);
-                }
-                return true;
-            }
-            return false;
-        }
-
-        public override bool ReadMessageArray<T>(string field, ICollection<T> items, IMessageLite messageType,
-                                                 ExtensionRegistry registry)
-        {
-            object[] array = null;
-            if (GetValue(ref array))
-            {
-                foreach (IDictionary<string, object> item in array)
-                {
-                    IBuilderLite builder = messageType.WeakCreateBuilderForType();
-                    new DictionaryReader(item).Merge(builder);
-                    items.Add((T) builder.WeakBuild());
-                }
-                return true;
-            }
-            return false;
-        }
-
-        public override bool ReadGroupArray<T>(string field, ICollection<T> items, IMessageLite messageType,
-                                               ExtensionRegistry registry)
-        {
-            return ReadMessageArray(field, items, messageType, registry);
-        }
-    }
-}

+ 0 - 200
csharp/src/ProtocolBuffers.Serialization/DictionaryWriter.cs

@@ -1,200 +0,0 @@
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using Google.ProtocolBuffers.Descriptors;
-
-namespace Google.ProtocolBuffers.Serialization
-{
-    /// <summary>
-    /// Allows writing messages to a name/value dictionary
-    /// </summary>
-    public class DictionaryWriter : AbstractWriter
-    {
-        private readonly IDictionary<string, object> _output;
-
-        /// <summary>
-        /// Constructs a writer using a new dictionary
-        /// </summary>
-        public DictionaryWriter()
-            : this(new Dictionary<string, object>(StringComparer.Ordinal))
-        {
-        }
-
-        /// <summary>
-        /// Constructs a writer using an existing dictionary
-        /// </summary>
-        public DictionaryWriter(IDictionary<string, object> output)
-        {
-            ThrowHelper.ThrowIfNull(output, "output");
-            _output = output;
-        }
-
-        /// <summary>
-        /// Creates the dictionary instance for a child message.
-        /// </summary>
-        protected virtual DictionaryWriter Create()
-        {
-            return new DictionaryWriter();
-        }
-
-        /// <summary>
-        /// Accesses the dictionary that is backing this writer
-        /// </summary>
-        public IDictionary<string, object> ToDictionary()
-        {
-            return _output;
-        }
-
-        /// <summary>
-        /// Writes the message to the the formatted stream.
-        /// </summary>
-        public override void WriteMessage(IMessageLite message)
-        {
-            message.WriteTo(this);
-        }
-
-
-        /// <summary>
-        /// No-op
-        /// </summary>
-        public override void WriteMessageStart()
-        { }
-
-        /// <summary>
-        /// No-op
-        /// </summary>
-        public override void WriteMessageEnd()
-        { }
-
-        /// <summary>
-        /// Writes a Boolean value
-        /// </summary>
-        protected override void Write(string field, bool value)
-        {
-            _output[field] = value;
-        }
-
-        /// <summary>
-        /// Writes a Int32 value
-        /// </summary>
-        protected override void Write(string field, int value)
-        {
-            _output[field] = value;
-        }
-
-        /// <summary>
-        /// Writes a UInt32 value
-        /// </summary>
-        protected override void Write(string field, uint value)
-        {
-            _output[field] = value;
-        }
-
-        /// <summary>
-        /// Writes a Int64 value
-        /// </summary>
-        protected override void Write(string field, long value)
-        {
-            _output[field] = value;
-        }
-
-        /// <summary>
-        /// Writes a UInt64 value
-        /// </summary>
-        protected override void Write(string field, ulong value)
-        {
-            _output[field] = value;
-        }
-
-        /// <summary>
-        /// Writes a Single value
-        /// </summary>
-        protected override void Write(string field, float value)
-        {
-            _output[field] = value;
-        }
-
-        /// <summary>
-        /// Writes a Double value
-        /// </summary>
-        protected override void Write(string field, double value)
-        {
-            _output[field] = value;
-        }
-
-        /// <summary>
-        /// Writes a String value
-        /// </summary>
-        protected override void Write(string field, string value)
-        {
-            _output[field] = value;
-        }
-
-        /// <summary>
-        /// Writes a set of bytes
-        /// </summary>
-        protected override void Write(string field, ByteString value)
-        {
-            _output[field] = value.ToByteArray();
-        }
-
-        /// <summary>
-        /// Writes a message or group as a field
-        /// </summary>
-        protected override void WriteMessageOrGroup(string field, IMessageLite message)
-        {
-            DictionaryWriter writer = Create();
-            writer.WriteMessage(message);
-
-            _output[field] = writer.ToDictionary();
-        }
-
-        /// <summary>
-        /// Writes a System.Enum by the numeric and textual value
-        /// </summary>
-        protected override void WriteEnum(string field, int number, string name)
-        {
-            _output[field] = number;
-        }
-
-        /// <summary>
-        /// Writes an array of field values
-        /// </summary>
-        protected override void WriteArray(FieldType fieldType, string field, IEnumerable items)
-        {
-            List<object> objects = new List<object>();
-            foreach (object o in items)
-            {
-                switch (fieldType)
-                {
-                    case FieldType.Group:
-                    case FieldType.Message:
-                        {
-                            DictionaryWriter writer = Create();
-                            writer.WriteMessage((IMessageLite) o);
-                            objects.Add(writer.ToDictionary());
-                        }
-                        break;
-                    case FieldType.Bytes:
-                        objects.Add(((ByteString) o).ToByteArray());
-                        break;
-                    case FieldType.Enum:
-                        if (o is IEnumLite)
-                        {
-                            objects.Add(((IEnumLite) o).Number);
-                        }
-                        else
-                        {
-                            objects.Add((int) o);
-                        }
-                        break;
-                    default:
-                        objects.Add(o);
-                        break;
-                }
-            }
-
-            _output[field] = objects.ToArray();
-        }
-    }
-}

+ 0 - 185
csharp/src/ProtocolBuffers.Serialization/Extensions.cs

@@ -1,185 +0,0 @@
-using System;
-using System.Text;
-using System.IO;
-using System.Xml;
-using Google.ProtocolBuffers.Serialization;
-using Google.ProtocolBuffers.Serialization.Http;
-
-namespace Google.ProtocolBuffers
-{
-    /// <summary>
-    /// Extension methods for using serializers on instances of IMessageLite/IBuilderLite
-    /// </summary>
-    public static class Extensions
-    {
-        #region IMessageLite Extension
-        /// <summary>
-        /// Serializes the message to JSON text.  This is a trivial wrapper
-        /// around Serialization.JsonFormatWriter.WriteMessage.
-        /// </summary>
-        public static string ToJson(
-#if !NOEXTENSIONS
-            this
-#endif
-            IMessageLite message)
-        {
-            JsonFormatWriter w = JsonFormatWriter.CreateInstance();
-            w.WriteMessage(message);
-            return w.ToString();
-        }
-        /// <summary>
-        /// Serializes the message to XML text.  This is a trivial wrapper
-        /// around Serialization.XmlFormatWriter.WriteMessage.
-        /// </summary>
-        public static string ToXml(
-#if !NOEXTENSIONS
-            this
-#endif
-            IMessageLite message)
-        {
-            StringWriter w = new StringWriter(new StringBuilder(4096));
-            XmlFormatWriter.CreateInstance(w).WriteMessage(message);
-            return w.ToString();
-        }
-        /// <summary>
-        /// Serializes the message to XML text using the element name provided.
-        /// This is a trivial wrapper around Serialization.XmlFormatWriter.WriteMessage.
-        /// </summary>
-        public static string ToXml(
-#if !NOEXTENSIONS
-            this
-#endif
-            IMessageLite message, string rootElementName)
-        {
-            StringWriter w = new StringWriter(new StringBuilder(4096));
-            XmlFormatWriter.CreateInstance(w).WriteMessage(rootElementName, message);
-            return w.ToString();
-        }
-
-        /// <summary>
-        /// Writes the message instance to the stream using the content type provided
-        /// </summary>
-        /// <param name="message">An instance of a message</param>
-        /// <param name="options">Options specific to writing this message and/or content type</param>
-        /// <param name="contentType">The mime type of the content to be written</param>
-        /// <param name="output">The stream to write the message to</param>
-        public static void WriteTo(
-#if !NOEXTENSIONS
-            this
-#endif
-            IMessageLite message, MessageFormatOptions options, string contentType, Stream output)
-        {
-            ICodedOutputStream codedOutput = MessageFormatFactory.CreateOutputStream(options, contentType, output);
-
-            // Output the appropriate message preamble
-            codedOutput.WriteMessageStart();
-
-            // Write the message content to the output
-            message.WriteTo(codedOutput);
-
-            // Write the closing message fragment
-            codedOutput.WriteMessageEnd();
-            codedOutput.Flush();
-        }
-
-        #endregion
-        #region IBuilderLite Extensions
-        /// <summary>
-        /// Merges a JSON object into this builder and returns
-        /// </summary>
-        public static TBuilder MergeFromJson<TBuilder>(
-#if !NOEXTENSIONS
-            this
-#endif
-            TBuilder builder, string jsonText) where TBuilder : IBuilderLite
-        {
-            return JsonFormatReader.CreateInstance(jsonText)
-                .Merge(builder);
-        }
-        /// <summary>
-        /// Merges a JSON object into this builder and returns
-        /// </summary>
-        public static TBuilder MergeFromJson<TBuilder>(
-#if !NOEXTENSIONS
-            this
-#endif
-            TBuilder builder, TextReader reader) where TBuilder : IBuilderLite
-        {
-            return MergeFromJson(builder, reader, ExtensionRegistry.Empty);
-        }
-        /// <summary>
-        /// Merges a JSON object into this builder using the extensions provided and returns
-        /// </summary>
-        public static TBuilder MergeFromJson<TBuilder>(
-#if !NOEXTENSIONS
-            this
-#endif
-            TBuilder builder, TextReader reader, ExtensionRegistry extensionRegistry) where TBuilder : IBuilderLite
-        {
-            return JsonFormatReader.CreateInstance(reader)
-                .Merge(builder, extensionRegistry);
-        }
-
-        /// <summary>
-        /// Merges an XML object into this builder and returns
-        /// </summary>
-        public static TBuilder MergeFromXml<TBuilder>(
-#if !NOEXTENSIONS
-            this
-#endif
-            TBuilder builder, XmlReader reader) where TBuilder : IBuilderLite
-        {
-            return MergeFromXml(builder, XmlFormatReader.DefaultRootElementName, reader, ExtensionRegistry.Empty);
-        }
-
-        /// <summary>
-        /// Merges an XML object into this builder and returns
-        /// </summary>
-        public static TBuilder MergeFromXml<TBuilder>(
-#if !NOEXTENSIONS
-            this
-#endif
-            TBuilder builder, string rootElementName, XmlReader reader) where TBuilder : IBuilderLite
-        {
-            return MergeFromXml(builder, rootElementName, reader, ExtensionRegistry.Empty);
-        }
-
-        /// <summary>
-        /// Merges an XML object into this builder using the extensions provided and returns
-        /// </summary>
-        public static TBuilder MergeFromXml<TBuilder>(
-#if !NOEXTENSIONS
-            this
-#endif
-            TBuilder builder, string rootElementName, XmlReader reader,
-            ExtensionRegistry extensionRegistry) where TBuilder : IBuilderLite
-        {
-            return XmlFormatReader.CreateInstance(reader)
-                .Merge(rootElementName, builder, extensionRegistry);
-        }
-
-        /// <summary>
-        /// Merges the message from the input stream based on the contentType provided
-        /// </summary>
-        /// <typeparam name="TBuilder">A type derived from IBuilderLite</typeparam>
-        /// <param name="builder">An instance of a message builder</param>
-        /// <param name="options">Options specific to reading this message and/or content type</param>
-        /// <param name="contentType">The mime type of the input stream content</param>
-        /// <param name="input">The stream to read the message from</param>
-        /// <returns>The same builder instance that was supplied in the builder parameter</returns>
-        public static TBuilder MergeFrom<TBuilder>(
-#if !NOEXTENSIONS
-            this
-#endif
-            TBuilder builder, MessageFormatOptions options, string contentType, Stream input) where TBuilder : IBuilderLite
-        {
-            ICodedInputStream codedInput = MessageFormatFactory.CreateInputStream(options, contentType, input);
-            codedInput.ReadMessageStart();
-            builder.WeakMergeFrom(codedInput, options.ExtensionRegistry);
-            codedInput.ReadMessageEnd();
-            return builder;
-        }
-
-        #endregion
-    }
-}

+ 0 - 162
csharp/src/ProtocolBuffers.Serialization/Http/FormUrlEncodedReader.cs

@@ -1,162 +0,0 @@
-using System;
-using System.IO;
-using System.Text;
-
-namespace Google.ProtocolBuffers.Serialization.Http
-{
-    /// <summary>
-    /// Allows reading messages from a name/value dictionary
-    /// </summary>
-    public class FormUrlEncodedReader : AbstractTextReader
-    {
-        private readonly TextReader _input;
-        private string _fieldName, _fieldValue;
-        private bool _ready;
-
-        /// <summary>
-        /// Creates a dictionary reader from an enumeration of KeyValuePair data, like an IDictionary
-        /// </summary>
-        FormUrlEncodedReader(TextReader input)
-        {
-            _input = input;
-            int ch = input.Peek();
-            if (ch == '?')
-            {
-                input.Read();
-            }
-            _ready = ReadNext();
-        }
-
-        #region CreateInstance overloads
-        /// <summary>
-        /// Constructs a FormUrlEncodedReader to parse form data, or url query text into a message.
-        /// </summary>
-        public static FormUrlEncodedReader CreateInstance(Stream stream)
-        {
-            return new FormUrlEncodedReader(new StreamReader(stream, Encoding.UTF8, false));
-        }
-
-        /// <summary>
-        /// Constructs a FormUrlEncodedReader to parse form data, or url query text into a message.
-        /// </summary>
-        public static FormUrlEncodedReader CreateInstance(byte[] bytes)
-        {
-            return new FormUrlEncodedReader(new StreamReader(new MemoryStream(bytes, false), Encoding.UTF8, false));
-        }
-
-        /// <summary>
-        /// Constructs a FormUrlEncodedReader to parse form data, or url query text into a message.
-        /// </summary>
-        public static FormUrlEncodedReader CreateInstance(string text)
-        {
-            return new FormUrlEncodedReader(new StringReader(text));
-        }
-
-        /// <summary>
-        /// Constructs a FormUrlEncodedReader to parse form data, or url query text into a message.
-        /// </summary>
-        public static FormUrlEncodedReader CreateInstance(TextReader input)
-        {
-            return new FormUrlEncodedReader(input);
-        }
-        #endregion
-
-        private bool ReadNext()
-        {
-            StringBuilder field = new StringBuilder(32);
-            StringBuilder value = new StringBuilder(64);
-            int ch;
-            while (-1 != (ch = _input.Read()) && ch != '=' && ch != '&')
-            {
-                field.Append((char)ch);
-            }
-
-            if (ch != -1 && ch != '&')
-            {
-                while (-1 != (ch = _input.Read()) && ch != '&')
-                {
-                    value.Append((char)ch);
-                }
-            }
-
-            _fieldName = field.ToString();
-            _fieldValue = Uri.UnescapeDataString(value.Replace('+', ' ').ToString());
-            
-            return !String.IsNullOrEmpty(_fieldName);
-        }
-
-        /// <summary>
-        /// No-op
-        /// </summary>
-        public override void ReadMessageStart()
-        { }
-
-        /// <summary>
-        /// No-op
-        /// </summary>
-        public override void ReadMessageEnd()
-        { }
-
-        /// <summary>
-        /// Merges the contents of stream into the provided message builder
-        /// </summary>
-        public override TBuilder Merge<TBuilder>(TBuilder builder, ExtensionRegistry registry)
-        {
-            builder.WeakMergeFrom(this, registry);
-            return builder;
-        }
-
-        /// <summary>
-        /// Causes the reader to skip past this field
-        /// </summary>
-        protected override void Skip()
-        {
-            _ready = ReadNext();
-        }
-
-        /// <summary>
-        /// Peeks at the next field in the input stream and returns what information is available.
-        /// </summary>
-        /// <remarks>
-        /// This may be called multiple times without actually reading the field.  Only after the field
-        /// is either read, or skipped, should PeekNext return a different value.
-        /// </remarks>
-        protected override bool PeekNext(out string field)
-        {
-            field = _ready ? _fieldName : null;
-            return field != null;
-        }
-
-        /// <summary>
-        /// Returns true if it was able to read a String from the input
-        /// </summary>
-        protected override bool ReadAsText(ref string value, Type typeInfo)
-        {
-            if (_ready)
-            {
-                value = _fieldValue;
-                _ready = ReadNext();
-                return true;
-            }
-            return false;
-        }
-
-        /// <summary>
-        /// It's unlikely this will work for anything but text data as bytes UTF8 are transformed to text and back to bytes
-        /// </summary>
-        protected override ByteString DecodeBytes(string bytes)
-        { return ByteString.CopyFromUtf8(bytes); }
-
-        /// <summary>
-        /// Not Supported
-        /// </summary>
-        public override bool ReadGroup(IBuilderLite value, ExtensionRegistry registry)
-        { throw new NotSupportedException(); }
-
-        /// <summary>
-        /// Not Supported
-        /// </summary>
-        protected override bool ReadMessage(IBuilderLite builder, ExtensionRegistry registry)
-        { throw new NotSupportedException(); }
-    }
-}

+ 0 - 112
csharp/src/ProtocolBuffers.Serialization/Http/MessageFormatFactory.cs

@@ -1,112 +0,0 @@
-using System;
-using System.IO;
-using System.Xml;
-using System.Text;
-
-namespace Google.ProtocolBuffers.Serialization.Http
-{
-    /// <summary>
-    /// Extensions and helpers to abstract the reading/writing of messages by a client-specified content type.
-    /// </summary>
-    public static class MessageFormatFactory
-    {
-        /// <summary>
-        /// Constructs an ICodedInputStream from the input stream based on the contentType provided
-        /// </summary>
-        /// <param name="options">Options specific to reading this message and/or content type</param>
-        /// <param name="contentType">The mime type of the input stream content</param>
-        /// <param name="input">The stream to read the message from</param>
-        /// <returns>The ICodedInputStream that can be given to the IBuilder.MergeFrom(...) method</returns>
-        public static ICodedInputStream CreateInputStream(MessageFormatOptions options, string contentType, Stream input)
-        {
-            ICodedInputStream codedInput = ContentTypeToInputStream(contentType, options, input);
-
-            if (codedInput is XmlFormatReader)
-            {
-                XmlFormatReader reader = (XmlFormatReader)codedInput;
-                reader.RootElementName = options.XmlReaderRootElementName;
-                reader.Options = options.XmlReaderOptions;
-            }
-
-            return codedInput;
-        }
-        
-        /// <summary>
-        /// Writes the message instance to the stream using the content type provided
-        /// </summary>
-        /// <param name="options">Options specific to writing this message and/or content type</param>
-        /// <param name="contentType">The mime type of the content to be written</param>
-        /// <param name="output">The stream to write the message to</param>
-        /// <remarks> If you do not dispose of ICodedOutputStream some formats may yield incomplete output </remarks>
-        public static ICodedOutputStream CreateOutputStream(MessageFormatOptions options, string contentType, Stream output)
-        {
-            ICodedOutputStream codedOutput = ContentTypeToOutputStream(contentType, options, output);
-
-            if (codedOutput is JsonFormatWriter)
-            {
-                JsonFormatWriter writer = (JsonFormatWriter)codedOutput;
-                if (options.FormattedOutput)
-                {
-                    writer.Formatted();
-                }
-            }
-            else if (codedOutput is XmlFormatWriter)
-            {
-                XmlFormatWriter writer = (XmlFormatWriter)codedOutput;
-                if (options.FormattedOutput)
-                {
-                    XmlWriterSettings settings = new XmlWriterSettings()
-                                                     {
-                                                         CheckCharacters = false,
-                                                         NewLineHandling = NewLineHandling.Entitize,
-                                                         OmitXmlDeclaration = true,
-                                                         Encoding = new UTF8Encoding(false),
-                                                         Indent = true,
-                                                         IndentChars = "    ",
-                                                     };
-                    // Don't know how else to change xml writer options?
-                    codedOutput = writer = XmlFormatWriter.CreateInstance(XmlWriter.Create(output, settings));
-                }
-                writer.RootElementName = options.XmlWriterRootElementName;
-                writer.Options = options.XmlWriterOptions;
-            }
-
-            return codedOutput;
-        }
-
-        private static ICodedInputStream ContentTypeToInputStream(string contentType, MessageFormatOptions options, Stream input)
-        {
-            contentType = (contentType ?? String.Empty).Split(';')[0].Trim();
-
-            CodedInputBuilder factory;
-            if(!options.MimeInputTypesReadOnly.TryGetValue(contentType, out factory) || factory == null)
-            {
-                if(String.IsNullOrEmpty(options.DefaultContentType) ||
-                    !options.MimeInputTypesReadOnly.TryGetValue(options.DefaultContentType, out factory) || factory == null)
-                {
-                    throw new ArgumentOutOfRangeException("contentType");
-                }
-            }
-
-            return factory(input);
-        }
-
-        private static ICodedOutputStream ContentTypeToOutputStream(string contentType, MessageFormatOptions options, Stream output)
-        {
-            contentType = (contentType ?? String.Empty).Split(';')[0].Trim();
-
-            CodedOutputBuilder factory;
-            if (!options.MimeOutputTypesReadOnly.TryGetValue(contentType, out factory) || factory == null)
-            {
-                if (String.IsNullOrEmpty(options.DefaultContentType) ||
-                    !options.MimeOutputTypesReadOnly.TryGetValue(options.DefaultContentType, out factory) || factory == null)
-                {
-                    throw new ArgumentOutOfRangeException("contentType");
-                }
-            }
-
-            return factory(output);
-        }
-
-    }
-}

+ 0 - 176
csharp/src/ProtocolBuffers.Serialization/Http/MessageFormatOptions.cs

@@ -1,176 +0,0 @@
-using System;
-using System.IO;
-using System.Collections.Generic;
-using Google.ProtocolBuffers.Collections;
-
-namespace Google.ProtocolBuffers.Serialization.Http
-{
-    /// <summary>
-    /// A delegate used to specify a method that constructs an ICodedInputStream from a .NET Stream.
-    /// </summary>
-    public delegate ICodedInputStream CodedInputBuilder(Stream stream);
-    /// <summary>
-    /// A delegate used to specify a method that constructs an ICodedOutputStream from a .NET Stream.
-    /// </summary>
-    public delegate ICodedOutputStream CodedOutputBuilder(Stream stream);
-
-    /// <summary>
-    /// Defines control information for the various formatting used with HTTP services
-    /// </summary>
-    public class MessageFormatOptions
-    {
-        /// <summary>The mime type for xml content</summary>
-        /// <remarks>Other valid xml mime types include: application/binary, application/x-protobuf</remarks>
-        public const string ContentTypeProtoBuffer = "application/vnd.google.protobuf";
-
-        /// <summary>The mime type for xml content</summary>
-        /// <remarks>Other valid xml mime types include: text/xml</remarks>
-        public const string ContentTypeXml = "application/xml";
-        
-        /// <summary>The mime type for json content</summary>
-        /// <remarks>
-        /// Other valid json mime types include: application/json, application/x-json, 
-        /// application/x-javascript, text/javascript, text/x-javascript, text/x-json, text/json
-        /// </remarks>
-        public const string ContentTypeJson = "application/json";
-
-        /// <summary>The mime type for query strings and x-www-form-urlencoded content</summary>
-        /// <remarks>This mime type is input-only</remarks>
-        public const string ContentFormUrlEncoded = "application/x-www-form-urlencoded";
-
-        /// <summary>
-        /// Default mime-type handling for input
-        /// </summary>
-        private static readonly IDictionary<string, CodedInputBuilder> MimeInputDefaults =
-            new ReadOnlyDictionary<string, CodedInputBuilder>(
-            new Dictionary<string, CodedInputBuilder>(StringComparer.OrdinalIgnoreCase)
-                {
-                    {"application/json", JsonFormatReader.CreateInstance},
-                    {"application/x-json", JsonFormatReader.CreateInstance},
-                    {"application/x-javascript", JsonFormatReader.CreateInstance},
-                    {"text/javascript", JsonFormatReader.CreateInstance},
-                    {"text/x-javascript", JsonFormatReader.CreateInstance},
-                    {"text/x-json", JsonFormatReader.CreateInstance},
-                    {"text/json", JsonFormatReader.CreateInstance},
-                    {"text/xml", XmlFormatReader.CreateInstance},
-                    {"application/xml", XmlFormatReader.CreateInstance},
-                    {"application/binary", CodedInputStream.CreateInstance},
-                    {"application/x-protobuf", CodedInputStream.CreateInstance},
-                    {"application/vnd.google.protobuf", CodedInputStream.CreateInstance},
-                    {"application/x-www-form-urlencoded", FormUrlEncodedReader.CreateInstance},
-                }
-            );
-
-        /// <summary>
-        /// Default mime-type handling for output
-        /// </summary>
-        private static readonly IDictionary<string, CodedOutputBuilder> MimeOutputDefaults =
-            new ReadOnlyDictionary<string, CodedOutputBuilder>(
-            new Dictionary<string, CodedOutputBuilder>(StringComparer.OrdinalIgnoreCase)
-                {
-                    {"application/json", JsonFormatWriter.CreateInstance},
-                    {"application/x-json", JsonFormatWriter.CreateInstance},
-                    {"application/x-javascript", JsonFormatWriter.CreateInstance},
-                    {"text/javascript", JsonFormatWriter.CreateInstance},
-                    {"text/x-javascript", JsonFormatWriter.CreateInstance},
-                    {"text/x-json", JsonFormatWriter.CreateInstance},
-                    {"text/json", JsonFormatWriter.CreateInstance},
-                    {"text/xml", XmlFormatWriter.CreateInstance},
-                    {"application/xml", XmlFormatWriter.CreateInstance},
-                    {"application/binary", CodedOutputStream.CreateInstance},
-                    {"application/x-protobuf", CodedOutputStream.CreateInstance},
-                    {"application/vnd.google.protobuf", CodedOutputStream.CreateInstance},
-                }
-            );
-
-
-
-
-        private string _defaultContentType;
-        private string _xmlReaderRootElementName;
-        private string _xmlWriterRootElementName;
-        private ExtensionRegistry _extensionRegistry;
-        private Dictionary<string, CodedInputBuilder> _mimeInputTypes;
-        private Dictionary<string, CodedOutputBuilder> _mimeOutputTypes;
-
-        /// <summary> Provides access to modify the mime-type input stream construction </summary>
-        public IDictionary<string, CodedInputBuilder> MimeInputTypes
-        {
-            get
-            {
-                return _mimeInputTypes ??
-                    (_mimeInputTypes = new Dictionary<string, CodedInputBuilder>(
-                                           MimeInputDefaults, StringComparer.OrdinalIgnoreCase));
-            }
-        }
-
-        /// <summary> Provides access to modify the mime-type input stream construction </summary>
-        public IDictionary<string, CodedOutputBuilder> MimeOutputTypes
-        {
-            get
-            {
-                return _mimeOutputTypes ??
-                    (_mimeOutputTypes = new Dictionary<string, CodedOutputBuilder>(
-                                           MimeOutputDefaults, StringComparer.OrdinalIgnoreCase));
-            }
-        }
-
-        internal IDictionary<string, CodedInputBuilder> MimeInputTypesReadOnly
-        { get { return _mimeInputTypes ?? MimeInputDefaults; } }
-
-        internal IDictionary<string, CodedOutputBuilder> MimeOutputTypesReadOnly
-        { get { return _mimeOutputTypes ?? MimeOutputDefaults; } }
-
-        /// <summary>
-        /// The default content type to use if the input type is null or empty.  If this
-        /// value is not supplied an ArgumentOutOfRangeException exception will be raised.
-        /// </summary>
-        public string DefaultContentType
-        {
-            get { return _defaultContentType ?? String.Empty; }
-            set { _defaultContentType = value; }
-        }
-
-        /// <summary>
-        /// The extension registry to use when reading messages
-        /// </summary>
-        public ExtensionRegistry ExtensionRegistry
-        {
-            get { return _extensionRegistry ?? ExtensionRegistry.Empty; }
-            set { _extensionRegistry = value; }
-        }
-
-        /// <summary>
-        /// The name of the xml root element when reading messages
-        /// </summary>
-        public string XmlReaderRootElementName
-        {
-            get { return _xmlReaderRootElementName ?? XmlFormatReader.DefaultRootElementName; }
-            set { _xmlReaderRootElementName = value; }
-        }
-
-        /// <summary>
-        /// Xml reader options
-        /// </summary>
-        public XmlReaderOptions XmlReaderOptions { get; set; }
-
-        /// <summary>
-        /// True to use formatted output including new-lines and default indentation
-        /// </summary>
-        public bool FormattedOutput { get; set; }
-
-        /// <summary>
-        /// The name of the xml root element when writing messages
-        /// </summary>
-        public string XmlWriterRootElementName
-        {
-            get { return _xmlWriterRootElementName ?? XmlFormatWriter.DefaultRootElementName; }
-            set { _xmlWriterRootElementName = value; }
-        }
-
-        /// <summary>
-        /// Xml writer options
-        /// </summary>
-        public XmlWriterOptions XmlWriterOptions { get; set; }
-    }
-}

+ 0 - 262
csharp/src/ProtocolBuffers.Serialization/JsonFormatReader.cs

@@ -1,262 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Xml;
-
-namespace Google.ProtocolBuffers.Serialization
-{
-    /// <summary>
-    /// JsonFormatReader is used to parse Json into a message or an array of messages
-    /// </summary>
-    public class JsonFormatReader : AbstractTextReader
-    {
-        private readonly JsonCursor _input;
-        // The expected token that ends the current item, either ']' or '}'
-        private readonly Stack<int> _stopChar;
-
-        private enum ReaderState
-        {
-            Start,
-            BeginValue,
-            EndValue,
-            BeginObject,
-            BeginArray
-        }
-
-        private string _current;
-        private ReaderState _state;
-
-        /// <summary>
-        /// Constructs a JsonFormatReader to parse Json into a message, this method does not use text encoding, all bytes MUST
-        /// represent ASCII character values.
-        /// </summary>
-        public static JsonFormatReader CreateInstance(Stream stream)
-        {
-            return new JsonFormatReader(JsonCursor.CreateInstance(stream));
-        }
-
-        /// <summary>
-        /// Constructs a JsonFormatReader to parse Json into a message, this method does not use text encoding, all bytes MUST
-        /// represent ASCII character values.
-        /// </summary>
-        public static JsonFormatReader CreateInstance(byte[] bytes)
-        {
-            return new JsonFormatReader(JsonCursor.CreateInstance(bytes));
-        }
-
-        /// <summary>
-        /// Constructs a JsonFormatReader to parse Json into a message
-        /// </summary>
-        public static JsonFormatReader CreateInstance(string jsonText)
-        {
-            return new JsonFormatReader(JsonCursor.CreateInstance(jsonText));
-        }
-
-        /// <summary>
-        /// Constructs a JsonFormatReader to parse Json into a message
-        /// </summary>
-        public static JsonFormatReader CreateInstance(TextReader input)
-        {
-            return new JsonFormatReader(JsonCursor.CreateInstance(input));
-        }
-
-        /// <summary>
-        /// Constructs a JsonFormatReader to parse Json into a message
-        /// </summary>
-        internal JsonFormatReader(JsonCursor input)
-        {
-            _input = input;
-            _stopChar = new Stack<int>();
-            _stopChar.Push(-1);
-            _state = ReaderState.Start;
-        }
-
-        /// <summary>
-        /// Constructs a JsonFormatReader to parse Json into a message
-        /// </summary>
-        protected JsonFormatReader(TextReader input)
-            : this(JsonCursor.CreateInstance(input))
-        {
-        }
-
-        /// <summary>
-        /// Returns true if the reader is currently on an array element
-        /// </summary>
-        public bool IsArrayMessage
-        {
-            get { return _input.NextChar == '['; }
-        }
-
-        /// <summary>
-        /// Returns an enumerator that is used to cursor over an array of messages
-        /// </summary>
-        /// <remarks>
-        /// This is generally used when receiving an array of messages rather than a single root message
-        /// </remarks>
-        public IEnumerable<JsonFormatReader> EnumerateArray()
-        {
-            foreach (string ignored in ForeachArrayItem(_current))
-            {
-                yield return this;
-            }
-        }
-
-        /// <summary>
-        /// Reads the root-message preamble specific to this formatter
-        /// </summary>
-        public override void ReadMessageStart()
-        {
-            _input.Consume('{');
-            _stopChar.Push('}');
-
-            _state = ReaderState.BeginObject;
-        }
-
-        /// <summary>
-        /// Reads the root-message close specific to this formatter
-        /// </summary>
-        public override void ReadMessageEnd()
-        {
-            _input.Consume((char)_stopChar.Pop());
-            _state = ReaderState.EndValue;
-        }
-
-        /// <summary>
-        /// Merges the contents of stream into the provided message builder
-        /// </summary>
-        public override TBuilder Merge<TBuilder>(TBuilder builder, ExtensionRegistry registry)
-        {
-            ReadMessageStart();
-            builder.WeakMergeFrom(this, registry);
-            ReadMessageEnd();
-            return builder;
-        }
-
-        /// <summary>
-        /// Causes the reader to skip past this field
-        /// </summary>
-        protected override void Skip()
-        {
-            object temp;
-            _input.ReadVariant(out temp);
-            _state = ReaderState.EndValue;
-        }
-
-        /// <summary>
-        /// Peeks at the next field in the input stream and returns what information is available.
-        /// </summary>
-        /// <remarks>
-        /// This may be called multiple times without actually reading the field.  Only after the field
-        /// is either read, or skipped, should PeekNext return a different value.
-        /// </remarks>
-        protected override bool PeekNext(out string field)
-        {
-            field = _current;
-            if (_state == ReaderState.BeginValue)
-            {
-                return true;
-            }
-
-            int next = _input.NextChar;
-            if (next == _stopChar.Peek())
-            {
-                return false;
-            }
-
-            _input.Assert(next != -1, "Unexpected end of file.");
-
-            //not sure about this yet, it will allow {, "a":true }
-            if (_state == ReaderState.EndValue && !_input.TryConsume(','))
-            {
-                return false;
-            }
-
-            field = _current = _input.ReadString();
-            _input.Consume(':');
-            _state = ReaderState.BeginValue;
-            return true;
-        }
-
-        /// <summary>
-        /// Returns true if it was able to read a String from the input
-        /// </summary>
-        protected override bool ReadAsText(ref string value, Type typeInfo)
-        {
-            object temp;
-            JsonCursor.JsType type = _input.ReadVariant(out temp);
-            _state = ReaderState.EndValue;
-
-            _input.Assert(type != JsonCursor.JsType.Array && type != JsonCursor.JsType.Object,
-                          "Encountered {0} while expecting {1}", type, typeInfo);
-            if (type == JsonCursor.JsType.Null)
-            {
-                return false;
-            }
-            if (type == JsonCursor.JsType.True)
-            {
-                value = "1";
-            }
-            else if (type == JsonCursor.JsType.False)
-            {
-                value = "0";
-            }
-            else
-            {
-                value = temp as string;
-            }
-
-            //exponent representation of integer number:
-            if (value != null && type == JsonCursor.JsType.Number &&
-                (typeInfo != typeof(double) && typeInfo != typeof(float)) &&
-                value.IndexOf("e", StringComparison.OrdinalIgnoreCase) > 0)
-            {
-                value = XmlConvert.ToString((long) Math.Round(XmlConvert.ToDouble(value), 0));
-            }
-            return value != null;
-        }
-
-        /// <summary>
-        /// Returns true if it was able to read a ByteString from the input
-        /// </summary>
-        protected override bool Read(ref ByteString value)
-        {
-            string bytes = null;
-            if (Read(ref bytes))
-            {
-                value = ByteString.FromBase64(bytes);
-                return true;
-            }
-            return false;
-        }
-
-        /// <summary>
-        /// Cursors through the array elements and stops at the end of the array
-        /// </summary>
-        protected override IEnumerable<string> ForeachArrayItem(string field)
-        {
-            _input.Consume('[');
-            _stopChar.Push(']');
-            _state = ReaderState.BeginArray;
-            while (_input.NextChar != ']')
-            {
-                _current = field;
-                yield return field;
-                if (!_input.TryConsume(','))
-                {
-                    break;
-                }
-            }
-            _input.Consume((char) _stopChar.Pop());
-            _state = ReaderState.EndValue;
-        }
-
-        /// <summary>
-        /// Merges the input stream into the provided IBuilderLite 
-        /// </summary>
-        protected override bool ReadMessage(IBuilderLite builder, ExtensionRegistry registry)
-        {
-            Merge(builder, registry);
-            return true;
-        }
-    }
-}

+ 0 - 541
csharp/src/ProtocolBuffers.Serialization/JsonFormatWriter.cs

@@ -1,541 +0,0 @@
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.IO;
-using System.Text;
-using Google.ProtocolBuffers.Descriptors;
-
-namespace Google.ProtocolBuffers.Serialization
-{
-    /// <summary>
-    /// JsonFormatWriter is a .NET 2.0 friendly json formatter for proto buffer messages.  For .NET 3.5
-    /// you may also use the XmlFormatWriter with an XmlWriter created by the
-    /// <see cref="System.Runtime.Serialization.Json.JsonReaderWriterFactory">JsonReaderWriterFactory</see>.
-    /// </summary>
-    public abstract class JsonFormatWriter : AbstractTextWriter
-    {
-        #region buffering implementations
-
-        private class JsonTextWriter : JsonFormatWriter
-        {
-            private readonly char[] _buffer;
-            private TextWriter _output;
-            private int _bufferPos;
-
-            public JsonTextWriter(TextWriter output)
-            {
-                _buffer = new char[4096];
-                _bufferPos = 0;
-                _output = output;
-                _counter.Add(0);
-            }
-
-            /// <summary>
-            /// Returns the output of TextWriter.ToString() where TextWriter is the ctor argument.
-            /// </summary>
-            public override string ToString()
-            {
-                Flush();
-
-                if (_output != null)
-                {
-                    return _output.ToString();
-                }
-
-                return new String(_buffer, 0, _bufferPos);
-            }
-
-            protected override void WriteToOutput(char[] chars, int offset, int len)
-            {
-                if (_bufferPos + len >= _buffer.Length)
-                {
-                    if (_output == null)
-                    {
-                        _output = new StringWriter(new StringBuilder(_buffer.Length*2 + len));
-                    }
-                    Flush();
-                }
-
-                if (len < _buffer.Length)
-                {
-                    if (len <= 12)
-                    {
-                        int stop = offset + len;
-                        for (int i = offset; i < stop; i++)
-                        {
-                            _buffer[_bufferPos++] = chars[i];
-                        }
-                    }
-                    else
-                    {
-                        Buffer.BlockCopy(chars, offset << 1, _buffer, _bufferPos << 1, len << 1);
-                        _bufferPos += len;
-                    }
-                }
-                else
-                {
-                    _output.Write(chars, offset, len);
-                }
-            }
-
-            protected override void WriteToOutput(char ch)
-            {
-                if (_bufferPos >= _buffer.Length)
-                {
-                    if (_output == null)
-                    {
-                        _output = new StringWriter(new StringBuilder(_buffer.Length * 2));
-                    }
-                    Flush();
-                }
-                _buffer[_bufferPos++] = ch;
-            }
-
-            public override void Flush()
-            {
-                if (_bufferPos > 0 && _output != null)
-                {
-                    _output.Write(_buffer, 0, _bufferPos);
-                    _bufferPos = 0;
-                }
-                base.Flush();
-            }
-        }
-
-        private class JsonStreamWriter : JsonFormatWriter
-        {
-            static readonly Encoding Encoding = new UTF8Encoding(false);
-            private readonly byte[] _buffer;
-            private Stream _output;
-            private int _bufferPos;
-
-            public JsonStreamWriter(Stream output)
-            {
-                _buffer = new byte[8192];
-                _bufferPos = 0;
-                _output = output;
-                _counter.Add(0);
-            }
-
-            protected override void WriteToOutput(char[] chars, int offset, int len)
-            {
-                if (_bufferPos + len >= _buffer.Length)
-                {
-                    Flush();
-                }
-
-                if (len < _buffer.Length)
-                {
-                    if (len <= 12)
-                    {
-                        int stop = offset + len;
-                        for (int i = offset; i < stop; i++)
-                        {
-                            _buffer[_bufferPos++] = (byte) chars[i];
-                        }
-                    }
-                    else
-                    {
-                        _bufferPos += Encoding.GetBytes(chars, offset, len, _buffer, _bufferPos);
-                    }
-                }
-                else
-                {
-                    byte[] temp = Encoding.GetBytes(chars, offset, len);
-                    _output.Write(temp, 0, temp.Length);
-                }
-            }
-
-            protected override void WriteToOutput(char ch)
-            {
-                if (_bufferPos >= _buffer.Length)
-                {
-                    Flush();
-                }
-                _buffer[_bufferPos++] = (byte) ch;
-            }
-
-            public override void Flush()
-            {
-                if (_bufferPos > 0 && _output != null)
-                {
-                    _output.Write(_buffer, 0, _bufferPos);
-                    _bufferPos = 0;
-                }
-                base.Flush();
-            }
-        }
-
-        #endregion
-
-        //Tracks the writer depth and the array element count at that depth.
-        private readonly List<int> _counter;
-        //True if the top-level of the writer is an array as opposed to a single message.
-        private bool _isArray;
-
-        /// <summary>
-        /// Constructs a JsonFormatWriter, use the ToString() member to extract the final Json on completion.
-        /// </summary>
-        protected JsonFormatWriter()
-        {
-            _counter = new List<int>();
-        }
-
-        /// <summary>
-        /// Constructs a JsonFormatWriter, use ToString() to extract the final output
-        /// </summary>
-        public static JsonFormatWriter CreateInstance()
-        {
-            return new JsonTextWriter(null);
-        }
-
-        /// <summary>
-        /// Constructs a JsonFormatWriter to output to the given text writer
-        /// </summary>
-        public static JsonFormatWriter CreateInstance(TextWriter output)
-        {
-            return new JsonTextWriter(output);
-        }
-
-        /// <summary>
-        /// Constructs a JsonFormatWriter to output to the given stream
-        /// </summary>
-        public static JsonFormatWriter CreateInstance(Stream output)
-        {
-            return new JsonStreamWriter(output);
-        }
-
-        /// <summary> Write to the output stream </summary>
-        protected void WriteToOutput(string format, params object[] args)
-        {
-            WriteToOutput(String.Format(format, args));
-        }
-
-        /// <summary> Write to the output stream </summary>
-        protected void WriteToOutput(string text)
-        {
-            WriteToOutput(text.ToCharArray(), 0, text.Length);
-        }
-
-        /// <summary> Write to the output stream </summary>
-        protected abstract void WriteToOutput(char ch);
-
-        /// <summary> Write to the output stream </summary>
-        protected abstract void WriteToOutput(char[] chars, int offset, int len);
-
-        /// <summary> Sets the output formatting to use Environment.NewLine with 4-character indentions </summary>
-        public JsonFormatWriter Formatted()
-        {
-            NewLine = FrameworkPortability.NewLine;
-            Indent = "    ";
-            Whitespace = " ";
-            return this;
-        }
-
-        /// <summary> Gets or sets the characters to use for the new-line, default = empty </summary>
-        public string NewLine { get; set; }
-
-        /// <summary> Gets or sets the text to use for indenting, default = empty </summary>
-        public string Indent { get; set; }
-
-        /// <summary> Gets or sets the whitespace to use to separate the text, default = empty </summary>
-        public string Whitespace { get; set; }
-
-        private void Seperator()
-        {
-            if (_counter.Count == 0)
-            {
-                throw new InvalidOperationException("Mismatched open/close in Json writer.");
-            }
-
-            int index = _counter.Count - 1;
-            if (_counter[index] > 0)
-            {
-                WriteToOutput(',');
-            }
-
-            WriteLine(String.Empty);
-            _counter[index] = _counter[index] + 1;
-        }
-
-        private void WriteLine(string content)
-        {
-            if (!String.IsNullOrEmpty(NewLine))
-            {
-                WriteToOutput(NewLine);
-                for (int i = 1; i < _counter.Count; i++)
-                {
-                    WriteToOutput(Indent);
-                }
-            }
-            else if (!String.IsNullOrEmpty(Whitespace))
-            {
-                WriteToOutput(Whitespace);
-            }
-
-            WriteToOutput(content);
-        }
-
-        private void WriteName(string field)
-        {
-            Seperator();
-            if (!String.IsNullOrEmpty(field))
-            {
-                WriteToOutput('"');
-                WriteToOutput(field);
-                WriteToOutput('"');
-                WriteToOutput(':');
-                if (!String.IsNullOrEmpty(Whitespace))
-                {
-                    WriteToOutput(Whitespace);
-                }
-            }
-        }
-
-        private void EncodeText(string value)
-        {
-            char[] text = value.ToCharArray();
-            int len = text.Length;
-            int pos = 0;
-
-            while (pos < len)
-            {
-                int next = pos;
-                while (next < len && text[next] >= 32 && text[next] < 127 && text[next] != '\\' && text[next] != '/' &&
-                       text[next] != '"')
-                {
-                    next++;
-                }
-                WriteToOutput(text, pos, next - pos);
-                if (next < len)
-                {
-                    switch (text[next])
-                    {
-                        case '"':
-                            WriteToOutput(@"\""");
-                            break;
-                        case '\\':
-                            WriteToOutput(@"\\");
-                            break;
-                            //odd at best to escape '/', most Json implementations don't, but it is defined in the rfc-4627
-                        case '/':
-                            WriteToOutput(@"\/");
-                            break;
-                        case '\b':
-                            WriteToOutput(@"\b");
-                            break;
-                        case '\f':
-                            WriteToOutput(@"\f");
-                            break;
-                        case '\n':
-                            WriteToOutput(@"\n");
-                            break;
-                        case '\r':
-                            WriteToOutput(@"\r");
-                            break;
-                        case '\t':
-                            WriteToOutput(@"\t");
-                            break;
-                        default:
-                            WriteToOutput(@"\u{0:x4}", (int) text[next]);
-                            break;
-                    }
-                    next++;
-                }
-                pos = next;
-            }
-        }
-
-        /// <summary>
-        /// Writes a String value
-        /// </summary>
-        protected override void WriteAsText(string field, string textValue, object typedValue)
-        {
-            WriteName(field);
-            if (typedValue is bool || typedValue is int || typedValue is uint || typedValue is long ||
-                typedValue is ulong || typedValue is double || typedValue is float)
-            {
-                WriteToOutput(textValue);
-            }
-            else
-            {
-                WriteToOutput('"');
-                if (typedValue is string)
-                {
-                    EncodeText(textValue);
-                }
-                else
-                {
-                    WriteToOutput(textValue);
-                }
-                WriteToOutput('"');
-            }
-        }
-
-        /// <summary>
-        /// Writes a Double value
-        /// </summary>
-        protected override void Write(string field, double value)
-        {
-            if (double.IsNaN(value) || double.IsNegativeInfinity(value) || double.IsPositiveInfinity(value))
-            {
-                throw new InvalidOperationException("This format does not support NaN, Infinity, or -Infinity");
-            }
-            base.Write(field, value);
-        }
-
-        /// <summary>
-        /// Writes a Single value
-        /// </summary>
-        protected override void Write(string field, float value)
-        {
-            if (float.IsNaN(value) || float.IsNegativeInfinity(value) || float.IsPositiveInfinity(value))
-            {
-                throw new InvalidOperationException("This format does not support NaN, Infinity, or -Infinity");
-            }
-            base.Write(field, value);
-        }
-
-        // Treat enum as string
-        protected override void WriteEnum(string field, int number, string name)
-        {
-            Write(field, name);
-        }
-
-        /// <summary>
-        /// Writes an array of field values
-        /// </summary>
-        protected override void WriteArray(FieldType type, string field, IEnumerable items)
-        {
-            IEnumerator enumerator = items.GetEnumerator();
-            try
-            {
-                if (!enumerator.MoveNext())
-                {
-                    return;
-                }
-            }
-            finally
-            {
-                if (enumerator is IDisposable)
-                {
-                    ((IDisposable) enumerator).Dispose();
-                }
-            }
-
-            WriteName(field);
-            WriteToOutput("[");
-            _counter.Add(0);
-
-            base.WriteArray(type, String.Empty, items);
-
-            _counter.RemoveAt(_counter.Count - 1);
-            WriteLine("]");
-        }
-
-        /// <summary>
-        /// Writes a message
-        /// </summary>
-        protected override void WriteMessageOrGroup(string field, IMessageLite message)
-        {
-            WriteName(field);
-            WriteMessage(message);
-        }
-
-        /// <summary>
-        /// Writes the message to the the formatted stream.
-        /// </summary>
-        public override void WriteMessage(IMessageLite message)
-        {
-            WriteMessageStart();
-            message.WriteTo(this);
-            WriteMessageEnd();
-        }
-
-        /// <summary>
-        /// Used to write the root-message preamble, in json this is the left-curly brace '{'.
-        /// After this call you can call IMessageLite.MergeTo(...) and complete the message with
-        /// a call to WriteMessageEnd().
-        /// </summary>
-        public override void WriteMessageStart()
-        {
-            if (_isArray)
-            {
-                Seperator();
-            }
-            WriteToOutput("{");
-            _counter.Add(0);
-        }
-
-        /// <summary>
-        /// Used to complete a root-message previously started with a call to WriteMessageStart()
-        /// </summary>
-        public override void WriteMessageEnd()
-        {
-            _counter.RemoveAt(_counter.Count - 1);
-            WriteLine("}");
-            Flush();
-        }
-
-        /// <summary>
-        /// Used in streaming arrays of objects to the writer
-        /// </summary>
-        /// <example>
-        /// <code>
-        /// using(writer.StartArray())
-        ///     foreach(IMessageLite m in messages)
-        ///         writer.WriteMessage(m);
-        /// </code>
-        /// </example>
-        public sealed class JsonArray : IDisposable
-        {
-            private JsonFormatWriter _writer;
-
-            internal JsonArray(JsonFormatWriter writer)
-            {
-                _writer = writer;
-                _writer.WriteToOutput("[");
-                _writer._counter.Add(0);
-            }
-
-            /// <summary>
-            /// Causes the end of the array character to be written.
-            /// </summary>
-            private void EndArray()
-            {
-                if (_writer != null)
-                {
-                    _writer._counter.RemoveAt(_writer._counter.Count - 1);
-                    _writer.WriteLine("]");
-                    _writer.Flush();
-                }
-                _writer = null;
-            }
-
-            void IDisposable.Dispose()
-            {
-                EndArray();
-            }
-        }
-
-        /// <summary>
-        /// Used to write an array of messages as the output rather than a single message.
-        /// </summary>
-        /// <example>
-        /// <code>
-        /// using(writer.StartArray())
-        ///     foreach(IMessageLite m in messages)
-        ///         writer.WriteMessage(m);
-        /// </code>
-        /// </example>
-        public JsonArray StartArray()
-        {
-            if (_isArray)
-            {
-                Seperator();
-            }
-            _isArray = true;
-            return new JsonArray(this);
-        }
-    }
-}

+ 0 - 442
csharp/src/ProtocolBuffers.Serialization/JsonTextCursor.cs

@@ -1,442 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Diagnostics;
-using System.Globalization;
-using System.IO;
-
-namespace Google.ProtocolBuffers.Serialization
-{
-    /// <summary>
-    /// JSon Tokenizer used by JsonFormatReader
-    /// </summary>
-    internal abstract class JsonCursor
-    {
-        public enum JsType
-        {
-            String,
-            Number,
-            Object,
-            Array,
-            True,
-            False,
-            Null
-        }
-
-        #region Buffering implementations
-
-        private class JsonStreamCursor : JsonCursor
-        {
-            private readonly byte[] _buffer;
-            private int _bufferPos;
-            private readonly Stream _input;
-
-            public JsonStreamCursor(Stream input)
-            {
-                _input = input;
-                _next = _input.ReadByte();
-            }
-
-            public JsonStreamCursor(byte[] input)
-            {
-                _input = null;
-                _buffer = input;
-                _next = _buffer[_bufferPos];
-            }
-
-            protected override int Peek()
-            {
-                if (_input != null)
-                {
-                    return _next;
-                }
-                else if (_bufferPos < _buffer.Length)
-                {
-                    return _buffer[_bufferPos];
-                }
-                else
-                {
-                    return -1;
-                }
-            }
-
-            protected override int Read()
-            {
-                if (_input != null)
-                {
-                    int result = _next;
-                    _next = _input.ReadByte();
-                    return result;
-                }
-                else if (_bufferPos < _buffer.Length)
-                {
-                    return _buffer[_bufferPos++];
-                }
-                else
-                {
-                    return -1;
-                }
-            }
-        }
-
-        private class JsonTextCursor : JsonCursor
-        {
-            private readonly char[] _buffer;
-            private int _bufferPos;
-            private readonly TextReader _input;
-
-            public JsonTextCursor(char[] input)
-            {
-                _input = null;
-                _buffer = input;
-                _bufferPos = 0;
-                _next = Peek();
-            }
-
-            public JsonTextCursor(TextReader input)
-            {
-                _input = input;
-                _next = Peek();
-            }
-
-            protected override int Peek()
-            {
-                if (_input != null)
-                {
-                    return _input.Peek();
-                }
-                else if (_bufferPos < _buffer.Length)
-                {
-                    return _buffer[_bufferPos];
-                }
-                else
-                {
-                    return -1;
-                }
-            }
-
-            protected override int Read()
-            {
-                if (_input != null)
-                {
-                    return _input.Read();
-                }
-                else if (_bufferPos < _buffer.Length)
-                {
-                    return _buffer[_bufferPos++];
-                }
-                else
-                {
-                    return -1;
-                }
-            }
-        }
-
-        #endregion
-
-        protected int _next;
-        private int _lineNo, _linePos;
-
-        public static JsonCursor CreateInstance(byte[] input)
-        {
-            return new JsonStreamCursor(input);
-        }
-
-        public static JsonCursor CreateInstance(Stream input)
-        {
-            return new JsonStreamCursor(input);
-        }
-
-        public static JsonCursor CreateInstance(string input)
-        {
-            return new JsonTextCursor(input.ToCharArray());
-        }
-
-        public static JsonCursor CreateInstance(TextReader input)
-        {
-            return new JsonTextCursor(input);
-        }
-
-        protected JsonCursor()
-        {
-            _lineNo = 1;
-            _linePos = 0;
-        }
-
-        /// <summary>Returns the next character without actually 'reading' it</summary>
-        protected abstract int Peek();
-
-        /// <summary>Reads the next character in the input</summary>
-        protected abstract int Read();
-
-        public Char NextChar
-        {
-            get
-            {
-                SkipWhitespace();
-                return (char) _next;
-            }
-        }
-
-        #region Assert(...)
-
-        [DebuggerNonUserCode]
-        private string CharDisplay(int ch)
-        {
-            return ch == -1
-                       ? "EOF"
-                       : (ch > 32 && ch < 127)
-                             ? String.Format("'{0}'", (char) ch)
-                             : String.Format("'\\u{0:x4}'", ch);
-        }
-
-        [DebuggerNonUserCode]
-        private void Assert(bool cond, char expected)
-        {
-            if (!cond)
-            {
-                throw new FormatException(
-                    String.Format(FrameworkPortability.InvariantCulture,
-                                  "({0}:{1}) error: Unexpected token {2}, expected: {3}.",
-                                  _lineNo, _linePos,
-                                  CharDisplay(_next),
-                                  CharDisplay(expected)
-                        ));
-            }
-        }
-
-        [DebuggerNonUserCode]
-        public void Assert(bool cond, string message)
-        {
-            if (!cond)
-            {
-                throw new FormatException(
-                    String.Format(FrameworkPortability.InvariantCulture,
-                                  "({0},{1}) error: {2}", _lineNo, _linePos, message));
-            }
-        }
-
-        [DebuggerNonUserCode]
-        public void Assert(bool cond, string format, params object[] args)
-        {
-            if (!cond)
-            {
-                if (args != null && args.Length > 0)
-                {
-                    format = String.Format(format, args);
-                }
-                throw new FormatException(
-                    String.Format(FrameworkPortability.InvariantCulture,
-                                  "({0},{1}) error: {2}", _lineNo, _linePos, format));
-            }
-        }
-
-        #endregion
-
-        private char ReadChar()
-        {
-            int ch = Read();
-            Assert(ch != -1, "Unexpected end of file.");
-            if (ch == '\n')
-            {
-                _lineNo++;
-                _linePos = 0;
-            }
-            else if (ch != '\r')
-            {
-                _linePos++;
-            }
-            _next = Peek();
-            return (char) ch;
-        }
-
-        public void Consume(char ch)
-        {
-            Assert(TryConsume(ch), ch);
-        }
-
-        public bool TryConsume(char ch)
-        {
-            SkipWhitespace();
-            if (_next == ch)
-            {
-                ReadChar();
-                return true;
-            }
-            return false;
-        }
-
-        public void Consume(string sequence)
-        {
-            SkipWhitespace();
-
-            foreach (char ch in sequence)
-            {
-                Assert(ch == ReadChar(), "Expected token '{0}'.", sequence);
-            }
-        }
-
-        public void SkipWhitespace()
-        {
-            int chnext = _next;
-            while (chnext != -1)
-            {
-                if (!Char.IsWhiteSpace((char) chnext))
-                {
-                    break;
-                }
-                ReadChar();
-                chnext = _next;
-            }
-        }
-
-        public string ReadString()
-        {
-            SkipWhitespace();
-            Consume('"');
-            List<Char> sb = new List<char>(100);
-            while (_next != '"')
-            {
-                if (_next == '\\')
-                {
-                    Consume('\\'); //skip the escape
-                    char ch = ReadChar();
-                    switch (ch)
-                    {
-                        case 'b':
-                            sb.Add('\b');
-                            break;
-                        case 'f':
-                            sb.Add('\f');
-                            break;
-                        case 'n':
-                            sb.Add('\n');
-                            break;
-                        case 'r':
-                            sb.Add('\r');
-                            break;
-                        case 't':
-                            sb.Add('\t');
-                            break;
-                        case 'u':
-                            {
-                                string hex = new string(new char[] {ReadChar(), ReadChar(), ReadChar(), ReadChar()});
-                                int result;
-                                Assert(
-                                    FrameworkPortability.TryParseInt32(hex, NumberStyles.AllowHexSpecifier, FrameworkPortability.InvariantCulture,
-                                                 out result),
-                                    "Expected a 4-character hex specifier.");
-                                sb.Add((char) result);
-                                break;
-                            }
-                        default:
-                            sb.Add(ch);
-                            break;
-                    }
-                }
-                else
-                {
-                    Assert(_next != '\n' && _next != '\r' && _next != '\f' && _next != -1, '"');
-                    sb.Add(ReadChar());
-                }
-            }
-            Consume('"');
-            return new String(sb.ToArray());
-        }
-
-        public string ReadNumber()
-        {
-            SkipWhitespace();
-            List<Char> sb = new List<char>(24);
-            if (_next == '-')
-            {
-                sb.Add(ReadChar());
-            }
-            Assert(_next >= '0' && _next <= '9', "Expected a numeric type.");
-            while ((_next >= '0' && _next <= '9') || _next == '.')
-            {
-                sb.Add(ReadChar());
-            }
-            if (_next == 'e' || _next == 'E')
-            {
-                sb.Add(ReadChar());
-                if (_next == '-' || _next == '+')
-                {
-                    sb.Add(ReadChar());
-                }
-                Assert(_next >= '0' && _next <= '9', "Expected a numeric type.");
-                while (_next >= '0' && _next <= '9')
-                {
-                    sb.Add(ReadChar());
-                }
-            }
-            return new String(sb.ToArray());
-        }
-
-        public JsType ReadVariant(out object value)
-        {
-            SkipWhitespace();
-            switch (_next)
-            {
-                case 'n':
-                    Consume("null");
-                    value = null;
-                    return JsType.Null;
-                case 't':
-                    Consume("true");
-                    value = true;
-                    return JsType.True;
-                case 'f':
-                    Consume("false");
-                    value = false;
-                    return JsType.False;
-                case '"':
-                    value = ReadString();
-                    return JsType.String;
-                case '{':
-                    {
-                        Consume('{');
-                        while (NextChar != '}')
-                        {
-                            ReadString();
-                            Consume(':');
-                            object tmp;
-                            ReadVariant(out tmp);
-                            if (!TryConsume(','))
-                            {
-                                break;
-                            }
-                        }
-                        Consume('}');
-                        value = null;
-                        return JsType.Object;
-                    }
-                case '[':
-                    {
-                        Consume('[');
-                        List<object> values = new List<object>();
-                        while (NextChar != ']')
-                        {
-                            object tmp;
-                            ReadVariant(out tmp);
-                            values.Add(tmp);
-                            if (!TryConsume(','))
-                            {
-                                break;
-                            }
-                        }
-                        Consume(']');
-                        value = values.ToArray();
-                        return JsType.Array;
-                    }
-                default:
-                    if ((_next >= '0' && _next <= '9') || _next == '-')
-                    {
-                        value = ReadNumber();
-                        return JsType.Number;
-                    }
-                    Assert(false, "Expected a value.");
-                    throw new FormatException();
-            }
-        }
-    }
-}

+ 0 - 65
csharp/src/ProtocolBuffers.Serialization/Properties/AssemblyInfo.cs

@@ -1,65 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc.  All rights reserved.
-// http://github.com/jskeet/dotnet-protobufs/
-// Original C++/Java/Python code:
-// http://code.google.com/p/protobuf/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-using System;
-using System.Reflection;
-using System.Runtime.InteropServices;
-using System.Runtime.CompilerServices;
-
-// General Information about an assembly is controlled through the following 
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-
-[assembly: AssemblyTitle("ProtocolBuffers")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("ProtocolBuffers")]
-[assembly: AssemblyCopyright("Copyright ©  2008")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// Version information for an assembly consists of the following four values:
-//
-//      Major Version
-//      Minor Version 
-//      Build Number
-//      Revision
-//
-// You can specify all the values or you can default the Build and Revision Numbers 
-// by using the '*' as shown below:
-// [assembly: AssemblyVersion("2.4.1.555")]
-
-[assembly: AssemblyVersion("2.4.1.555")]
-
-#if !NOFILEVERSION
-[assembly: AssemblyFileVersion("2.4.1.555")]
-#endif

+ 0 - 93
csharp/src/ProtocolBuffers.Serialization/ProtocolBuffers.Serialization.csproj

@@ -1,93 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>9.0.30729</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{231391AF-449C-4A39-986C-AD7F270F4750}</ProjectGuid>
-    <OutputType>Library</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>Google.ProtocolBuffers.Serialization</RootNamespace>
-    <AssemblyName>Google.ProtocolBuffers.Serialization</AssemblyName>
-    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
-    <TargetFrameworkProfile>Profile92</TargetFrameworkProfile>
-    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
-    <FileAlignment>512</FileAlignment>
-    <SignAssembly>true</SignAssembly>
-    <AssemblyOriginatorKeyFile>..\..\keys\Google.ProtocolBuffers.snk</AssemblyOriginatorKeyFile>
-    <OldToolsVersion>3.5</OldToolsVersion>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
-    <OutputPath>bin\Debug</OutputPath>
-    <IntermediateOutputPath>obj\Debug\</IntermediateOutputPath>
-    <DocumentationFile>$(OutputPath)\$(AssemblyName).xml</DocumentationFile>
-    <NoWarn>1591, 1570, 1571, 1572, 1573, 1574</NoWarn>
-    <DefineConstants>DEBUG;TRACE;$(EnvironmentFlavor);$(EnvironmentTemplate)</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <NoStdLib>true</NoStdLib>
-    <GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
-    <OutputPath>bin\Release</OutputPath>
-    <IntermediateOutputPath>obj\Release\</IntermediateOutputPath>
-    <DocumentationFile>$(OutputPath)\$(AssemblyName).xml</DocumentationFile>
-    <NoWarn>1591, 1570, 1571, 1572, 1573, 1574</NoWarn>
-    <DefineConstants>TRACE;$(EnvironmentFlavor);$(EnvironmentTemplate)</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <NoStdLib>true</NoStdLib>
-    <GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="mscorlib" />
-    <Reference Include="System" />
-    <Reference Include="System.Xml" />
-    <Reference Include="System.Core" Condition="'$(TargetFrameworkVersion)' != 'v2.0'" />
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="..\ProtocolBuffers\FrameworkPortability.cs">
-      <Link>FrameworkPortability.cs</Link>
-    </Compile>
-    <Compile Include="Extensions.cs" />
-    <Compile Include="Http\FormUrlEncodedReader.cs" />
-    <Compile Include="Http\MessageFormatFactory.cs" />
-    <Compile Include="Http\MessageFormatOptions.cs" />
-    <Compile Include="Properties\AssemblyInfo.cs" />
-    <Compile Include="AbstractReader.cs" />
-    <Compile Include="AbstractTextReader.cs" />
-    <Compile Include="AbstractTextWriter.cs" />
-    <Compile Include="AbstractWriter.cs" />
-    <Compile Include="DictionaryReader.cs" />
-    <Compile Include="DictionaryWriter.cs" />
-    <Compile Include="JsonFormatReader.cs" />
-    <Compile Include="JsonFormatWriter.cs" />
-    <Compile Include="JsonTextCursor.cs" />
-    <Compile Include="RecursionLimitExceeded.cs" />
-    <Compile Include="XmlFormatReader.cs" />
-    <Compile Include="XmlFormatWriter.cs" />
-    <Compile Include="XmlReaderOptions.cs" />
-    <Compile Include="XmlWriterOptions.cs" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\ProtocolBuffers\ProtocolBuffers.csproj">
-      <Project>{6908BDCE-D925-43F3-94AC-A531E6DF2591}</Project>
-      <Name>ProtocolBuffers</Name>
-      <Private>False</Private>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(MSBuildExtensionsPath32)\Microsoft\Portable\$(TargetFrameworkVersion)\Microsoft.Portable.CSharp.targets" />
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
-       Other similar extension points exist, see Microsoft.Common.targets.
-  <Target Name="BeforeBuild">
-  </Target>
-  <Target Name="AfterBuild">
-  </Target>
-  -->
-</Project>

+ 0 - 93
csharp/src/ProtocolBuffers.Serialization/ProtocolBuffersLite.Serialization.csproj

@@ -1,93 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>9.0.30729</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{E067A59D-9D0A-4A1F-92B1-38E4457241D1}</ProjectGuid>
-    <OutputType>Library</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>Google.ProtocolBuffers.Serialization</RootNamespace>
-    <AssemblyName>Google.ProtocolBuffersLite.Serialization</AssemblyName>
-    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
-    <TargetFrameworkProfile>Profile92</TargetFrameworkProfile>
-    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
-    <FileAlignment>512</FileAlignment>
-    <SignAssembly>true</SignAssembly>
-    <AssemblyOriginatorKeyFile>..\..\keys\Google.ProtocolBuffers.snk</AssemblyOriginatorKeyFile>
-    <OldToolsVersion>3.5</OldToolsVersion>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
-    <OutputPath>bin\Debug</OutputPath>
-    <IntermediateOutputPath>obj\Debug\</IntermediateOutputPath>
-    <DocumentationFile>$(OutputPath)\$(AssemblyName).xml</DocumentationFile>
-    <NoWarn>1591, 1570, 1571, 1572, 1573, 1574</NoWarn>
-    <DefineConstants>DEBUG;TRACE;LITE;$(EnvironmentFlavor);$(EnvironmentTemplate)</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <NoStdLib>true</NoStdLib>
-    <GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
-    <OutputPath>bin\Release</OutputPath>
-    <IntermediateOutputPath>obj\Release\</IntermediateOutputPath>
-    <DocumentationFile>$(OutputPath)\$(AssemblyName).xml</DocumentationFile>
-    <NoWarn>1591, 1570, 1571, 1572, 1573, 1574</NoWarn>
-    <DefineConstants>TRACE;LITE;$(EnvironmentFlavor);$(EnvironmentTemplate)</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <NoStdLib>true</NoStdLib>
-    <GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="mscorlib" />
-    <Reference Include="System" />
-    <Reference Include="System.Xml" />
-    <Reference Include="System.Core" Condition="'$(TargetFrameworkVersion)' != 'v2.0'" />
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="..\ProtocolBuffers\FrameworkPortability.cs">
-      <Link>FrameworkPortability.cs</Link>
-    </Compile>
-    <Compile Include="Extensions.cs" />
-    <Compile Include="Http\FormUrlEncodedReader.cs" />
-    <Compile Include="Http\MessageFormatFactory.cs" />
-    <Compile Include="Http\MessageFormatOptions.cs" />
-    <Compile Include="Properties\AssemblyInfo.cs" />
-    <Compile Include="AbstractReader.cs" />
-    <Compile Include="AbstractTextReader.cs" />
-    <Compile Include="AbstractTextWriter.cs" />
-    <Compile Include="AbstractWriter.cs" />
-    <Compile Include="DictionaryReader.cs" />
-    <Compile Include="DictionaryWriter.cs" />
-    <Compile Include="JsonFormatReader.cs" />
-    <Compile Include="JsonFormatWriter.cs" />
-    <Compile Include="JsonTextCursor.cs" />
-    <Compile Include="RecursionLimitExceeded.cs" />
-    <Compile Include="XmlFormatReader.cs" />
-    <Compile Include="XmlFormatWriter.cs" />
-    <Compile Include="XmlReaderOptions.cs" />
-    <Compile Include="XmlWriterOptions.cs" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\ProtocolBuffers\ProtocolBuffersLite.csproj">
-      <Project>{6969BDCE-D925-43F3-94AC-A531E6DF2591}</Project>
-      <Name>ProtocolBuffersLite</Name>
-      <Private>False</Private>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(MSBuildExtensionsPath32)\Microsoft\Portable\$(TargetFrameworkVersion)\Microsoft.Portable.CSharp.targets" />
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
-       Other similar extension points exist, see Microsoft.Common.targets.
-  <Target Name="BeforeBuild">
-  </Target>
-  <Target Name="AfterBuild">
-  </Target>
-  -->
-</Project>

+ 0 - 18
csharp/src/ProtocolBuffers.Serialization/RecursionLimitExceeded.cs

@@ -1,18 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-namespace Google.ProtocolBuffers.Serialization
-{
-    /// <summary>
-    /// The exception raised when a recursion limit is reached while parsing input.
-    /// </summary>
-    public sealed class RecursionLimitExceededException : FormatException
-    {
-        const string message = "Possible malicious message had too many levels of nesting.";
-        
-        internal RecursionLimitExceededException() : base(message)
-        {
-        }
-    }
-}

+ 0 - 338
csharp/src/ProtocolBuffers.Serialization/XmlFormatReader.cs

@@ -1,338 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Xml;
-using System.Diagnostics;
-
-namespace Google.ProtocolBuffers.Serialization
-{
-    /// <summary>
-    /// Parses a proto buffer from an XML document or fragment.  .NET 3.5 users may also
-    /// use this class to process Json by setting the options to support Json and providing
-    /// an XmlReader obtained from <see cref="System.Runtime.Serialization.Json.JsonReaderWriterFactory"/>.
-    /// </summary>
-    public class XmlFormatReader : AbstractTextReader
-    {
-        public const string DefaultRootElementName = XmlFormatWriter.DefaultRootElementName;
-        private readonly XmlReader _input;
-        // Tracks the message element for each nested message read
-        private readonly Stack<ElementStackEntry> _elements;
-        // The default element name for ReadMessageStart
-        private string _rootElementName;
-
-        private struct ElementStackEntry
-        {
-            public readonly string LocalName;
-            public readonly int Depth;
-            public readonly bool IsEmpty;
-
-            public ElementStackEntry(string localName, int depth, bool isEmpty) : this()
-            {
-                LocalName = localName;
-                IsEmpty = isEmpty;
-                Depth = depth;
-            }
-        }
-
-        private static XmlReaderSettings DefaultSettings
-        {
-            get
-            {
-                return new XmlReaderSettings()
-                           {CheckCharacters = false, IgnoreComments = true, IgnoreProcessingInstructions = true};
-            }
-        }
-
-        /// <summary>
-        /// Constructs the XmlFormatReader using the stream provided as the xml
-        /// </summary>
-        public static XmlFormatReader CreateInstance(byte[] input)
-        {
-            return new XmlFormatReader(XmlReader.Create(new MemoryStream(input, false), DefaultSettings));
-        }
-
-        /// <summary>
-        /// Constructs the XmlFormatReader using the stream provided as the xml
-        /// </summary>
-        public static XmlFormatReader CreateInstance(Stream input)
-        {
-            return new XmlFormatReader(XmlReader.Create(input, DefaultSettings));
-        }
-
-        /// <summary>
-        /// Constructs the XmlFormatReader using the string provided as the xml to be read
-        /// </summary>
-        public static XmlFormatReader CreateInstance(String input)
-        {
-            return new XmlFormatReader(XmlReader.Create(new StringReader(input), DefaultSettings));
-        }
-
-        /// <summary>
-        /// Constructs the XmlFormatReader using the xml in the TextReader
-        /// </summary>
-        public static XmlFormatReader CreateInstance(TextReader input)
-        {
-            return new XmlFormatReader(XmlReader.Create(input, DefaultSettings));
-        }
-
-        /// <summary>
-        /// Constructs the XmlFormatReader with the XmlReader
-        /// </summary>
-        public static XmlFormatReader CreateInstance(XmlReader input)
-        {
-            return new XmlFormatReader(input);
-        }
-
-        /// <summary>
-        /// Constructs the XmlFormatReader with the XmlReader and options
-        /// </summary>
-        protected XmlFormatReader(XmlReader input)
-        {
-            _input = input;
-            _rootElementName = DefaultRootElementName;
-            _elements = new Stack<ElementStackEntry>();
-            Options = XmlReaderOptions.None;
-        }
-
-        /// <summary>
-        /// Gets or sets the options to use when reading the xml
-        /// </summary>
-        public XmlReaderOptions Options { get; set; }
-
-        /// <summary>
-        /// Sets the options to use while generating the XML
-        /// </summary>
-        public XmlFormatReader SetOptions(XmlReaderOptions options)
-        {
-            Options = options;
-            return this;
-        }
-
-        /// <summary>
-        /// Gets or sets the default element name to use when using the Merge&lt;TBuilder>()
-        /// </summary>
-        public string RootElementName
-        {
-            get { return _rootElementName; }
-            set
-            {
-                ThrowHelper.ThrowIfNull(value, "RootElementName");
-                _rootElementName = value;
-            }
-        }
-
-        [DebuggerNonUserCode]
-        private static void Assert(bool cond)
-        {
-            if (!cond)
-            {
-                throw new FormatException();
-            }
-        }
-
-        /// <summary>
-        /// Reads the root-message preamble specific to this formatter
-        /// </summary>
-        public override void ReadMessageStart()
-        {
-            ReadMessageStart(_rootElementName);
-        }
-
-        /// <summary>
-        /// Reads the root-message preamble specific to this formatter
-        /// </summary>
-        public void ReadMessageStart(string element)
-        {
-            while (!_input.IsStartElement() && _input.Read())
-            {
-                continue;
-            }
-            Assert(_input.IsStartElement() && _input.LocalName == element);
-            _elements.Push(new ElementStackEntry(element, _input.Depth, _input.IsEmptyElement));
-            _input.Read();
-        }
-
-        /// <summary>
-        /// Reads the root-message close specific to this formatter, MUST be called
-        /// on the reader obtained from ReadMessageStart(string element).
-        /// </summary>
-        public override void ReadMessageEnd()
-        {
-            Assert(_elements.Count > 0);
-
-            ElementStackEntry stop = _elements.Peek();
-            while (_input.NodeType != XmlNodeType.EndElement && _input.NodeType != XmlNodeType.Element
-                   && _input.Depth > stop.Depth && _input.Read())
-            {
-                continue;
-            }
-
-            if (!stop.IsEmpty)
-            {
-                Assert(_input.NodeType == XmlNodeType.EndElement
-                       && _input.LocalName == stop.LocalName
-                       && _input.Depth == stop.Depth);
-
-                _input.Read();
-            }
-            _elements.Pop();
-        }
-
-        /// <summary>
-        /// Merge the provided builder as an element named <see cref="RootElementName"/> in the current context
-        /// </summary>
-        public override TBuilder Merge<TBuilder>(TBuilder builder, ExtensionRegistry registry)
-        {
-            return Merge(_rootElementName, builder, registry);
-        }
-
-        /// <summary>
-        /// Merge the provided builder as an element of the current context
-        /// </summary>
-        public TBuilder Merge<TBuilder>(string element, TBuilder builder) where TBuilder : IBuilderLite
-        {
-            return Merge(element, builder, ExtensionRegistry.Empty);
-        }
-
-        /// <summary>
-        /// Merge the provided builder as an element of the current context
-        /// </summary>
-        public TBuilder Merge<TBuilder>(string element, TBuilder builder, ExtensionRegistry registry)
-            where TBuilder : IBuilderLite
-        {
-            ReadMessageStart(element);
-            builder.WeakMergeFrom(this, registry);
-            ReadMessageEnd();
-            return builder;
-        }
-
-        /// <summary>
-        /// Peeks at the next field in the input stream and returns what information is available.
-        /// </summary>
-        /// <remarks>
-        /// This may be called multiple times without actually reading the field.  Only after the field
-        /// is either read, or skipped, should PeekNext return a different value.
-        /// </remarks>
-        protected override bool PeekNext(out string field)
-        {
-            ElementStackEntry stopNode;
-            if (_elements.Count == 0)
-            {
-                stopNode = new ElementStackEntry(null, _input.Depth - 1, false);
-            }
-            else
-            {
-                stopNode = _elements.Peek();
-            }
-
-            if (!stopNode.IsEmpty)
-            {
-                while (!_input.IsStartElement() && _input.Depth > stopNode.Depth && _input.Read())
-                {
-                    continue;
-                }
-
-                if (_input.IsStartElement() && _input.Depth > stopNode.Depth)
-                {
-                    field = _input.LocalName;
-                    return true;
-                }
-            }
-            field = null;
-            return false;
-        }
-
-        /// <summary>
-        /// Causes the reader to skip past this field
-        /// </summary>
-        protected override void Skip()
-        {
-            if (_input.IsStartElement())
-            {
-                if (!_input.IsEmptyElement)
-                {
-                    int depth = _input.Depth;
-                    while (_input.Depth >= depth && _input.NodeType != XmlNodeType.EndElement)
-                    {
-                        Assert(_input.Read());
-                    }
-                }
-                _input.Read();
-            }
-        }
-
-        /// <summary>
-        /// returns true if it was able to read a single value into the value reference.  The value
-        /// stored may be of type System.String, System.Int32, or an IEnumLite from the IEnumLiteMap.
-        /// </summary>
-        protected override bool ReadEnum(ref object value)
-        {
-            int number;
-            string temp;
-            if (null != (temp = _input.GetAttribute("value")) && FrameworkPortability.TryParseInt32(temp, out number))
-            {
-                Skip();
-                value = number;
-                return true;
-            }
-            return base.ReadEnum(ref value);
-        }
-
-        /// <summary>
-        /// Returns true if it was able to read a String from the input
-        /// </summary>
-        protected override bool ReadAsText(ref string value, Type type)
-        {
-            Assert(_input.NodeType == XmlNodeType.Element);
-            value = _input.ReadElementContentAsString();
-
-            return true;
-        }
-
-        /// <summary>
-        /// Merges the input stream into the provided IBuilderLite 
-        /// </summary>
-        protected override bool ReadMessage(IBuilderLite builder, ExtensionRegistry registry)
-        {
-            Assert(_input.IsStartElement());
-            ReadMessageStart(_input.LocalName);
-            builder.WeakMergeFrom(this, registry);
-            ReadMessageEnd();
-            return true;
-        }
-
-        private IEnumerable<string> NonNestedArrayItems(string field)
-        {
-            return base.ForeachArrayItem(field);
-        }
-
-        /// <summary>
-        /// Cursors through the array elements and stops at the end of the array
-        /// </summary>
-        protected override IEnumerable<string> ForeachArrayItem(string field)
-        {
-            bool isNested = (Options & XmlReaderOptions.ReadNestedArrays) != 0;
-
-            if (!isNested)
-            {
-                foreach (string item in NonNestedArrayItems(field))
-                {
-                    yield return item;
-                }
-            }
-            else
-            {
-                string found;
-                ReadMessageStart(field);
-                if (PeekNext(out found) && found == "item")
-                {
-                    foreach (string item in NonNestedArrayItems("item"))
-                    {
-                        yield return item;
-                    }
-                }
-                ReadMessageEnd();
-            }
-        }
-    }
-}

+ 0 - 280
csharp/src/ProtocolBuffers.Serialization/XmlFormatWriter.cs

@@ -1,280 +0,0 @@
-using System;
-using System.Collections;
-using System.IO;
-using System.Text;
-using System.Xml;
-using Google.ProtocolBuffers.Descriptors;
-
-namespace Google.ProtocolBuffers.Serialization
-{
-    /// <summary>
-    /// Writes a proto buffer to an XML document or fragment.  .NET 3.5 users may also
-    /// use this class to produce Json by setting the options to support Json and providing
-    /// an XmlWriter obtained from <see cref="System.Runtime.Serialization.Json.JsonReaderWriterFactory"/>.
-    /// </summary>
-    public class XmlFormatWriter : AbstractTextWriter
-    {
-        private static readonly Encoding DefaultEncoding = new UTF8Encoding(false);
-        public const string DefaultRootElementName = "root";
-
-        private readonly XmlWriter _output;
-        // The default element name used for WriteMessageStart
-        private string _rootElementName;
-        // Used to assert matching WriteMessageStart/WriteMessageEnd calls
-        private int _messageOpenCount;
-
-        private static XmlWriterSettings DefaultSettings(Encoding encoding)
-        {
-            return new XmlWriterSettings()
-                       {
-                           CheckCharacters = false,
-                           NewLineHandling = NewLineHandling.Entitize,
-                           OmitXmlDeclaration = true,
-                           Encoding = encoding,
-                       };
-        }
-
-        /// <summary>
-        /// Constructs the XmlFormatWriter to write to the given TextWriter
-        /// </summary>
-        public static XmlFormatWriter CreateInstance(TextWriter output)
-        {
-            return new XmlFormatWriter(XmlWriter.Create(output, DefaultSettings(output.Encoding)));
-        }
-
-        /// <summary>
-        /// Constructs the XmlFormatWriter to write to the given stream
-        /// </summary>
-        public static XmlFormatWriter CreateInstance(Stream output)
-        {
-            return new XmlFormatWriter(XmlWriter.Create(output, DefaultSettings(DefaultEncoding)));
-        }
-
-        /// <summary>
-        /// Constructs the XmlFormatWriter to write to the given stream
-        /// </summary>
-        public static XmlFormatWriter CreateInstance(Stream output, Encoding encoding)
-        {
-            return new XmlFormatWriter(XmlWriter.Create(output, DefaultSettings(encoding)));
-        }
-
-        /// <summary>
-        /// Constructs the XmlFormatWriter to write to the given XmlWriter
-        /// </summary>
-        public static XmlFormatWriter CreateInstance(XmlWriter output)
-        {
-            return new XmlFormatWriter(output);
-        }
-
-        protected XmlFormatWriter(XmlWriter output)
-        {
-            _output = output;
-            _messageOpenCount = 0;
-            _rootElementName = DefaultRootElementName;
-        }
-
-        /// <summary>
-        /// Gets or sets the default element name to use when using the Merge&lt;TBuilder>()
-        /// </summary>
-        public string RootElementName
-        {
-            get { return _rootElementName; }
-            set
-            {
-                ThrowHelper.ThrowIfNull(value, "RootElementName");
-                _rootElementName = value;
-            }
-        }
-
-        /// <summary>
-        /// Gets or sets the options to use while generating the XML
-        /// </summary>
-        public XmlWriterOptions Options { get; set; }
-
-        /// <summary>
-        /// Sets the options to use while generating the XML
-        /// </summary>
-        public XmlFormatWriter SetOptions(XmlWriterOptions options)
-        {
-            Options = options;
-            return this;
-        }
-
-        private bool TestOption(XmlWriterOptions option)
-        {
-            return (Options & option) != 0;
-        }
-
-        /// <summary>
-        /// Completes any pending write operations
-        /// </summary>
-        public override void Flush()
-        {
-            _output.Flush();
-            base.Flush();
-        }
-
-        /// <summary>
-        /// Used to write the root-message preamble, in xml this is open element for RootElementName,
-        /// by default "&lt;root&gt;". After this call you can call IMessageLite.MergeTo(...) and 
-        /// complete the message with a call to WriteMessageEnd().
-        /// </summary>
-        public override void WriteMessageStart()
-        {
-            WriteMessageStart(_rootElementName);
-        }
-
-        /// <summary>
-        /// Used to write the root-message preamble, in xml this is open element for elementName. 
-        /// After this call you can call IMessageLite.MergeTo(...) and  complete the message with 
-        /// a call to WriteMessageEnd().
-        /// </summary>
-        public void WriteMessageStart(string elementName)
-        {
-            if (TestOption(XmlWriterOptions.OutputJsonTypes))
-            {
-                _output.WriteStartElement("root"); // json requires this is the root-element
-                _output.WriteAttributeString("type", "object");
-            }
-            else
-            {
-                _output.WriteStartElement(elementName);
-            }
-            _messageOpenCount++;
-        }
-
-        /// <summary>
-        /// Used to complete a root-message previously started with a call to WriteMessageStart()
-        /// </summary>
-        public override void WriteMessageEnd()
-        {
-            if (_messageOpenCount <= 0)
-            {
-                throw new InvalidOperationException();
-            }
-
-            _output.WriteEndElement();
-            _output.Flush();
-            _messageOpenCount--;
-        }
-
-        /// <summary>
-        /// Writes a message as an element using the name defined in <see cref="RootElementName"/>
-        /// </summary>
-        public override void WriteMessage(IMessageLite message)
-        {
-            WriteMessage(_rootElementName, message);
-        }
-
-        /// <summary>
-        /// Writes a message as an element with the given name
-        /// </summary>
-        public void WriteMessage(string elementName, IMessageLite message)
-        {
-            WriteMessageStart(elementName);
-            message.WriteTo(this);
-            WriteMessageEnd();
-        }
-
-        /// <summary>
-        /// Writes a message
-        /// </summary>
-        protected override void WriteMessageOrGroup(string field, IMessageLite message)
-        {
-            _output.WriteStartElement(field);
-
-            if (TestOption(XmlWriterOptions.OutputJsonTypes))
-            {
-                _output.WriteAttributeString("type", "object");
-            }
-
-            message.WriteTo(this);
-            _output.WriteEndElement();
-        }
-
-        /// <summary>
-        /// Writes a String value
-        /// </summary>
-        protected override void WriteAsText(string field, string textValue, object typedValue)
-        {
-            _output.WriteStartElement(field);
-
-            if (TestOption(XmlWriterOptions.OutputJsonTypes))
-            {
-                if (typedValue is int || typedValue is uint || typedValue is long || typedValue is ulong ||
-                    typedValue is double || typedValue is float)
-                {
-                    _output.WriteAttributeString("type", "number");
-                }
-                else if (typedValue is bool)
-                {
-                    _output.WriteAttributeString("type", "boolean");
-                }
-            }
-            _output.WriteString(textValue);
-
-            //Empty strings should not be written as empty elements '<item/>', rather as '<item></item>'
-            if (_output.WriteState == WriteState.Element)
-            {
-                _output.WriteRaw("");
-            }
-
-            _output.WriteEndElement();
-        }
-
-        /// <summary>
-        /// Writes an array of field values
-        /// </summary>
-        protected override void WriteArray(FieldType fieldType, string field, IEnumerable items)
-        {
-            //see if it's empty
-            IEnumerator eitems = items.GetEnumerator();
-            try
-            {
-                if (!eitems.MoveNext())
-                {
-                    return;
-                }
-            }
-            finally
-            {
-                if (eitems is IDisposable)
-                {
-                    ((IDisposable) eitems).Dispose();
-                }
-            }
-
-            if (TestOption(XmlWriterOptions.OutputNestedArrays | XmlWriterOptions.OutputJsonTypes))
-            {
-                _output.WriteStartElement(field);
-                if (TestOption(XmlWriterOptions.OutputJsonTypes))
-                {
-                    _output.WriteAttributeString("type", "array");
-                }
-
-                base.WriteArray(fieldType, "item", items);
-                _output.WriteEndElement();
-            }
-            else
-            {
-                base.WriteArray(fieldType, field, items);
-            }
-        }
-
-        /// <summary>
-        /// Writes a System.Enum by the numeric and textual value
-        /// </summary>
-        protected override void WriteEnum(string field, int number, string name)
-        {
-            _output.WriteStartElement(field);
-
-            if (!TestOption(XmlWriterOptions.OutputJsonTypes) && TestOption(XmlWriterOptions.OutputEnumValues))
-            {
-                _output.WriteAttributeString("value", XmlConvert.ToString(number));
-            }
-
-            _output.WriteString(name);
-            _output.WriteEndElement();
-        }
-    }
-}

+ 0 - 17
csharp/src/ProtocolBuffers.Serialization/XmlReaderOptions.cs

@@ -1,17 +0,0 @@
-using System;
-
-namespace Google.ProtocolBuffers.Serialization
-{
-    /// <summary>
-    /// Options available for the xml reader output
-    /// </summary>
-    [Flags]
-    public enum XmlReaderOptions
-    {
-        /// <summary> Simple xml formatting with no attributes </summary>
-        None,
-
-        /// <summary> Requires that arrays items are nested in an &lt;item> element </summary>
-        ReadNestedArrays = 1,
-    }
-}

+ 0 - 24
csharp/src/ProtocolBuffers.Serialization/XmlWriterOptions.cs

@@ -1,24 +0,0 @@
-using System;
-
-namespace Google.ProtocolBuffers.Serialization
-{
-    /// <summary>
-    /// Options available for the xml writer output
-    /// </summary>
-    [Flags]
-    public enum XmlWriterOptions
-    {
-        /// <summary> Simple xml formatting with no attributes </summary>
-        None,
-
-        /// <summary> Writes the 'value' attribute on all enumerations with the numeric identifier </summary>
-        OutputEnumValues = 0x1,
-
-        /// <summary> Embeds array items into child &lt;item> elements </summary>
-        OutputNestedArrays = 0x4,
-
-        /// <summary> Outputs the 'type' attribute for compatibility with the <see cref="System.Runtime.Serialization.Json.JsonReaderWriterFactory">JsonReaderWriterFactory</see> </summary>
-        /// <remarks> This option must, by nessessity, also enable NestedArrayItems </remarks>
-        OutputJsonTypes = 0x8,
-    }
-}

+ 0 - 99
csharp/src/ProtocolBuffers/ProtocolBuffersLite.csproj

@@ -1,99 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>9.0.30729</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{6969BDCE-D925-43F3-94AC-A531E6DF2591}</ProjectGuid>
-    <OutputType>Library</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>Google.ProtocolBuffers</RootNamespace>
-    <AssemblyName>Google.ProtocolBuffersLite</AssemblyName>
-    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
-    <TargetFrameworkProfile>Profile92</TargetFrameworkProfile>
-    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
-    <FileAlignment>512</FileAlignment>
-    <SignAssembly>true</SignAssembly>
-    <AssemblyOriginatorKeyFile>..\..\keys\Google.ProtocolBuffers.snk</AssemblyOriginatorKeyFile>
-    <OldToolsVersion>3.5</OldToolsVersion>
-    <MinimumVisualStudioVersion>10.0</MinimumVisualStudioVersion>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
-    <OutputPath>bin\Debug</OutputPath>
-    <IntermediateOutputPath>obj\Debug\</IntermediateOutputPath>
-    <DocumentationFile>$(OutputPath)\$(AssemblyName).xml</DocumentationFile>
-    <NoWarn>1591, 1570, 1571, 1572, 1573, 1574</NoWarn>
-    <DefineConstants>DEBUG;TRACE;LITE;$(EnvironmentFlavor);$(EnvironmentTemplate)</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <NoStdLib>true</NoStdLib>
-    <GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
-    <OutputPath>bin\Release</OutputPath>
-    <IntermediateOutputPath>obj\Release\</IntermediateOutputPath>
-    <DocumentationFile>$(OutputPath)\$(AssemblyName).xml</DocumentationFile>
-    <NoWarn>1591, 1570, 1571, 1572, 1573, 1574</NoWarn>
-    <DefineConstants>TRACE;LITE;$(EnvironmentFlavor);$(EnvironmentTemplate)</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <NoStdLib>true</NoStdLib>
-    <GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="mscorlib" />
-    <Reference Include="System" />
-    <Reference Include="System.Xml" />
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="AbstractBuilderLite.cs" />
-    <Compile Include="AbstractMessageLite.cs" />
-    <Compile Include="ByteArray.cs" />
-    <Compile Include="CodedOutputStream.ComputeSize.cs" />
-    <Compile Include="Collections\Dictionaries.cs" />
-    <Compile Include="Collections\Enumerables.cs" />
-    <Compile Include="Collections\IPopsicleList.cs" />
-    <Compile Include="Collections\Lists.cs" />
-    <Compile Include="Collections\PopsicleList.cs" />
-    <Compile Include="Collections\ReadOnlyDictionary.cs" />
-    <Compile Include="Descriptors\FieldMappingAttribute.cs" />
-    <Compile Include="Descriptors\FieldType.cs" />
-    <Compile Include="Descriptors\MappedType.cs" />
-    <Compile Include="EnumLite.cs" />
-    <Compile Include="ExtendableBuilderLite.cs" />
-    <Compile Include="ExtendableMessageLite.cs" />
-    <Compile Include="FieldSet.cs" />
-    <Compile Include="FrameworkPortability.cs" />
-    <Compile Include="GeneratedBuilderLite.cs" />
-    <Compile Include="GeneratedExtensionLite.cs" />
-    <Compile Include="GeneratedMessageLite.cs" />
-    <Compile Include="ICodedInputStream.cs" />
-    <Compile Include="ICodedOutputStream.cs" />
-    <Compile Include="Properties\AssemblyInfo.cs" />
-    <Compile Include="ByteString.cs" />
-    <Compile Include="CodedInputStream.cs" />
-    <Compile Include="CodedOutputStream.cs" />
-    <Compile Include="ExtensionRegistryLite.cs" />
-    <Compile Include="IBuilderLite.cs" />
-    <Compile Include="IMessageLite.cs" />
-    <Compile Include="InvalidProtocolBufferException.cs" />
-    <Compile Include="SortedList.cs" />
-    <Compile Include="ThrowHelper.cs" />
-    <Compile Include="UninitializedMessageException.cs" />
-    <Compile Include="WireFormat.cs" />
-  </ItemGroup>
-  <Import Project="$(MSBuildExtensionsPath32)\Microsoft\Portable\$(TargetFrameworkVersion)\Microsoft.Portable.CSharp.targets" />
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
-       Other similar extension points exist, see Microsoft.Common.targets.
-  <Target Name="BeforeBuild">
-  </Target>
-  <Target Name="AfterBuild">
-  </Target>
-  -->
-</Project>

+ 0 - 336
csharp/src/ProtocolBuffersLite.Test/AbstractBuilderLiteTest.cs

@@ -1,336 +0,0 @@
-#region Copyright notice and license
-
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc.  All rights reserved.
-// http://github.com/jskeet/dotnet-protobufs/
-// Original C++/Java/Python code:
-// http://code.google.com/p/protobuf/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-#endregion
-
-using System.IO;
-using Google.ProtocolBuffers.TestProtos;
-using NUnit.Framework;
-
-namespace Google.ProtocolBuffers
-{
-    public class AbstractBuilderLiteTest
-    {
-        [Test]
-        public void TestMergeFromCodedInputStream()
-        {
-            TestAllTypesLite copy,
-                             msg = TestAllTypesLite.CreateBuilder()
-                                 .SetOptionalUint32(uint.MaxValue).Build();
-
-            copy = TestAllTypesLite.DefaultInstance;
-            Assert.AreNotEqual(msg.ToByteArray(), copy.ToByteArray());
-
-            using (MemoryStream ms = new MemoryStream(msg.ToByteArray()))
-            {
-                CodedInputStream ci = CodedInputStream.CreateInstance(ms);
-                copy = copy.ToBuilder().MergeFrom(ci).Build();
-            }
-
-            Assert.AreEqual(msg.ToByteArray(), copy.ToByteArray());
-        }
-
-        [Test]
-        public void TestIBuilderLiteWeakClear()
-        {
-            TestAllTypesLite copy, msg = TestAllTypesLite.DefaultInstance;
-
-            copy = msg.ToBuilder().SetOptionalString("Should be removed.").Build();
-            Assert.AreNotEqual(msg.ToByteArray(), copy.ToByteArray());
-
-            copy = (TestAllTypesLite) ((IBuilderLite) copy.ToBuilder()).WeakClear().WeakBuild();
-            Assert.AreEqual(msg.ToByteArray(), copy.ToByteArray());
-        }
-
-        [Test]
-        public void TestBuilderLiteMergeFromCodedInputStream()
-        {
-            TestAllTypesLite copy,
-                             msg = TestAllTypesLite.CreateBuilder()
-                                 .SetOptionalString("Should be merged.").Build();
-
-            copy = TestAllTypesLite.DefaultInstance;
-            Assert.AreNotEqual(msg.ToByteArray(), copy.ToByteArray());
-
-            copy =
-                copy.ToBuilder().MergeFrom(CodedInputStream.CreateInstance(new MemoryStream(msg.ToByteArray()))).Build();
-            Assert.AreEqual(msg.ToByteArray(), copy.ToByteArray());
-        }
-
-        [Test]
-        public void TestBuilderLiteMergeDelimitedFrom()
-        {
-            TestAllTypesLite copy,
-                             msg = TestAllTypesLite.CreateBuilder()
-                                 .SetOptionalString("Should be merged.").Build();
-
-            copy = TestAllTypesLite.DefaultInstance;
-            Assert.AreNotEqual(msg.ToByteArray(), copy.ToByteArray());
-            Stream s = new MemoryStream();
-            msg.WriteDelimitedTo(s);
-            s.Position = 0;
-            copy = copy.ToBuilder().MergeDelimitedFrom(s).Build();
-            Assert.AreEqual(msg.ToByteArray(), copy.ToByteArray());
-        }
-
-        [Test]
-        public void TestBuilderLiteMergeDelimitedFromExtensions()
-        {
-            TestAllExtensionsLite copy,
-                                  msg = TestAllExtensionsLite.CreateBuilder()
-                                      .SetExtension(UnittestLite.OptionalStringExtensionLite,
-                                                    "Should be merged.").Build();
-
-            copy = TestAllExtensionsLite.DefaultInstance;
-            Assert.AreNotEqual(msg.ToByteArray(), copy.ToByteArray());
-
-            Stream s = new MemoryStream();
-            msg.WriteDelimitedTo(s);
-            s.Position = 0;
-
-            ExtensionRegistry registry = ExtensionRegistry.CreateInstance();
-            UnittestLite.RegisterAllExtensions(registry);
-
-            copy = copy.ToBuilder().MergeDelimitedFrom(s, registry).Build();
-            Assert.AreEqual(msg.ToByteArray(), copy.ToByteArray());
-            Assert.AreEqual("Should be merged.", copy.GetExtension(UnittestLite.OptionalStringExtensionLite));
-        }
-
-        [Test]
-        public void TestBuilderLiteMergeFromStream()
-        {
-            TestAllTypesLite copy,
-                             msg = TestAllTypesLite.CreateBuilder()
-                                 .SetOptionalString("Should be merged.").Build();
-
-            copy = TestAllTypesLite.DefaultInstance;
-            Assert.AreNotEqual(msg.ToByteArray(), copy.ToByteArray());
-            Stream s = new MemoryStream();
-            msg.WriteTo(s);
-            s.Position = 0;
-            copy = copy.ToBuilder().MergeFrom(s).Build();
-            Assert.AreEqual(msg.ToByteArray(), copy.ToByteArray());
-        }
-
-        [Test]
-        public void TestBuilderLiteMergeFromStreamExtensions()
-        {
-            TestAllExtensionsLite copy,
-                                  msg = TestAllExtensionsLite.CreateBuilder()
-                                      .SetExtension(UnittestLite.OptionalStringExtensionLite,
-                                                    "Should be merged.").Build();
-
-            copy = TestAllExtensionsLite.DefaultInstance;
-            Assert.AreNotEqual(msg.ToByteArray(), copy.ToByteArray());
-
-            Stream s = new MemoryStream();
-            msg.WriteTo(s);
-            s.Position = 0;
-
-            ExtensionRegistry registry = ExtensionRegistry.CreateInstance();
-            UnittestLite.RegisterAllExtensions(registry);
-
-            copy = copy.ToBuilder().MergeFrom(s, registry).Build();
-            Assert.AreEqual(msg.ToByteArray(), copy.ToByteArray());
-            Assert.AreEqual("Should be merged.", copy.GetExtension(UnittestLite.OptionalStringExtensionLite));
-        }
-
-        [Test]
-        public void TestIBuilderLiteWeakMergeFromIMessageLite()
-        {
-            TestAllTypesLite copy,
-                             msg = TestAllTypesLite.CreateBuilder()
-                                 .SetOptionalString("Should be merged.").Build();
-
-            copy = TestAllTypesLite.DefaultInstance;
-            Assert.AreNotEqual(msg.ToByteArray(), copy.ToByteArray());
-
-            copy = (TestAllTypesLite) ((IBuilderLite) copy.ToBuilder()).WeakMergeFrom((IMessageLite) msg).WeakBuild();
-            Assert.AreEqual(msg.ToByteArray(), copy.ToByteArray());
-        }
-
-        [Test]
-        public void TestIBuilderLiteWeakMergeFromByteString()
-        {
-            TestAllTypesLite copy,
-                             msg = TestAllTypesLite.CreateBuilder()
-                                 .SetOptionalString("Should be merged.").Build();
-
-            copy = TestAllTypesLite.DefaultInstance;
-            Assert.AreNotEqual(msg.ToByteArray(), copy.ToByteArray());
-
-            copy = (TestAllTypesLite) ((IBuilderLite) copy.ToBuilder()).WeakMergeFrom(msg.ToByteString()).WeakBuild();
-            Assert.AreEqual(msg.ToByteArray(), copy.ToByteArray());
-        }
-
-        [Test]
-        public void TestIBuilderLiteWeakMergeFromByteStringExtensions()
-        {
-            TestAllExtensionsLite copy,
-                                  msg = TestAllExtensionsLite.CreateBuilder()
-                                      .SetExtension(UnittestLite.OptionalStringExtensionLite,
-                                                    "Should be merged.").Build();
-
-            copy = TestAllExtensionsLite.DefaultInstance;
-            Assert.AreNotEqual(msg.ToByteArray(), copy.ToByteArray());
-
-            copy =
-                (TestAllExtensionsLite)
-                ((IBuilderLite) copy.ToBuilder()).WeakMergeFrom(msg.ToByteString(), ExtensionRegistry.Empty).WeakBuild();
-            Assert.AreNotEqual(msg.ToByteArray(), copy.ToByteArray());
-
-            ExtensionRegistry registry = ExtensionRegistry.CreateInstance();
-            UnittestLite.RegisterAllExtensions(registry);
-
-            copy =
-                (TestAllExtensionsLite)
-                ((IBuilderLite) copy.ToBuilder()).WeakMergeFrom(msg.ToByteString(), registry).WeakBuild();
-            Assert.AreEqual(msg.ToByteArray(), copy.ToByteArray());
-            Assert.AreEqual("Should be merged.", copy.GetExtension(UnittestLite.OptionalStringExtensionLite));
-        }
-
-        [Test]
-        public void TestIBuilderLiteWeakMergeFromCodedInputStream()
-        {
-            TestAllTypesLite copy,
-                             msg = TestAllTypesLite.CreateBuilder()
-                                 .SetOptionalUint32(uint.MaxValue).Build();
-
-            copy = TestAllTypesLite.DefaultInstance;
-            Assert.AreNotEqual(msg.ToByteArray(), copy.ToByteArray());
-
-            using (MemoryStream ms = new MemoryStream(msg.ToByteArray()))
-            {
-                CodedInputStream ci = CodedInputStream.CreateInstance(ms);
-                copy = (TestAllTypesLite) ((IBuilderLite) copy.ToBuilder()).WeakMergeFrom(ci).WeakBuild();
-            }
-
-            Assert.AreEqual(msg.ToByteArray(), copy.ToByteArray());
-        }
-
-        [Test]
-        public void TestIBuilderLiteWeakBuildPartial()
-        {
-            IBuilderLite builder = TestRequiredLite.CreateBuilder();
-            Assert.IsFalse(builder.IsInitialized);
-
-            IMessageLite msg = builder.WeakBuildPartial();
-            Assert.IsFalse(msg.IsInitialized);
-
-            Assert.AreEqual(msg.ToByteArray(), TestRequiredLite.DefaultInstance.ToByteArray());
-        }
-
-        [Test]
-        public void TestIBuilderLiteWeakBuildUninitialized()
-        {
-            IBuilderLite builder = TestRequiredLite.CreateBuilder();
-            Assert.IsFalse(builder.IsInitialized);
-            Assert.Throws<UninitializedMessageException>(() => builder.WeakBuild());
-        }
-
-        [Test]
-        public void TestIBuilderLiteWeakBuild()
-        {
-            IBuilderLite builder = TestRequiredLite.CreateBuilder()
-                .SetD(0)
-                .SetEn(ExtraEnum.EXLITE_BAZ);
-            Assert.IsTrue(builder.IsInitialized);
-            builder.WeakBuild();
-        }
-
-        [Test]
-        public void TestIBuilderLiteWeakClone()
-        {
-            TestRequiredLite msg = TestRequiredLite.CreateBuilder()
-                .SetD(1).SetEn(ExtraEnum.EXLITE_BAR).Build();
-            Assert.IsTrue(msg.IsInitialized);
-
-            IMessageLite copy = ((IBuilderLite) msg.ToBuilder()).WeakClone().WeakBuild();
-            Assert.AreEqual(msg.ToByteArray(), copy.ToByteArray());
-        }
-
-        [Test]
-        public void TestIBuilderLiteWeakDefaultInstance()
-        {
-            Assert.IsTrue(ReferenceEquals(TestRequiredLite.DefaultInstance,
-                                          ((IBuilderLite) TestRequiredLite.CreateBuilder()).WeakDefaultInstanceForType));
-        }
-
-        [Test]
-        public void TestGeneratedBuilderLiteAddRange()
-        {
-            TestAllTypesLite copy,
-                             msg = TestAllTypesLite.CreateBuilder()
-                                 .SetOptionalUint32(123)
-                                 .AddRepeatedInt32(1)
-                                 .AddRepeatedInt32(2)
-                                 .AddRepeatedInt32(3)
-                                 .Build();
-
-            copy = msg.DefaultInstanceForType.ToBuilder().MergeFrom(msg).Build();
-            Assert.AreEqual(msg.ToByteArray(), copy.ToByteArray());
-        }
-
-        // ROK 5/7/2013 Issue #54: should retire all bytes in buffer (bufferSize)
-        [Test]
-        public void TestBufferRefillIssue()
-        {
-            var ms = new MemoryStream();
-            BucketOfBytes.CreateBuilder()
-                .SetValue(ByteString.CopyFrom(new byte[3000]))
-                .Build().WriteDelimitedTo(ms);
-            BucketOfBytesEx.CreateBuilder()
-                .SetValue(ByteString.CopyFrom(new byte[1000]))
-                .SetValue2(ByteString.CopyFrom(new byte[1100]))
-                .Build().WriteDelimitedTo(ms);
-            BucketOfBytes.CreateBuilder()
-                .SetValue(ByteString.CopyFrom(new byte[100]))
-                .Build().WriteDelimitedTo(ms);
-
-            ms.Position = 0;
-            var input = CodedInputStream.CreateInstance(ms);
-            var builder = BucketOfBytes.CreateBuilder();
-            input.ReadMessage(builder, ExtensionRegistry.Empty);
-            Assert.AreEqual(3005L, input.Position);
-            Assert.AreEqual(3000, builder.Value.Length);
-            input.ReadMessage(builder, ExtensionRegistry.Empty);
-            Assert.AreEqual(5114, input.Position);
-            Assert.AreEqual(1000, builder.Value.Length);
-            input.ReadMessage(builder, ExtensionRegistry.Empty);
-            Assert.AreEqual(5217L, input.Position);
-            Assert.AreEqual(input.Position, ms.Length);
-            Assert.AreEqual(100, builder.Value.Length);
-        }
-    }
-}

+ 0 - 133
csharp/src/ProtocolBuffersLite.Test/AbstractMessageLiteTest.cs

@@ -1,133 +0,0 @@
-#region Copyright notice and license
-
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc.  All rights reserved.
-// http://github.com/jskeet/dotnet-protobufs/
-// Original C++/Java/Python code:
-// http://code.google.com/p/protobuf/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-#endregion
-
-using System;
-using System.IO;
-using Google.ProtocolBuffers.TestProtos;
-using NUnit.Framework;
-
-namespace Google.ProtocolBuffers
-{
-    public class AbstractMessageLiteTest
-    {
-        [Test]
-        public void TestMessageLiteToByteString()
-        {
-            TestRequiredLite msg = TestRequiredLite.CreateBuilder()
-                .SetD(42)
-                .SetEn(ExtraEnum.EXLITE_BAZ)
-                .Build();
-
-            ByteString b = msg.ToByteString();
-            Assert.AreEqual(4, b.Length);
-            Assert.AreEqual(TestRequiredLite.DFieldNumber << 3, b[0]);
-            Assert.AreEqual(42, b[1]);
-            Assert.AreEqual(TestRequiredLite.EnFieldNumber << 3, b[2]);
-            Assert.AreEqual((int) ExtraEnum.EXLITE_BAZ, b[3]);
-        }
-
-        [Test]
-        public void TestMessageLiteToByteArray()
-        {
-            TestRequiredLite msg = TestRequiredLite.CreateBuilder()
-                .SetD(42)
-                .SetEn(ExtraEnum.EXLITE_BAZ)
-                .Build();
-
-            ByteString b = msg.ToByteString();
-            ByteString copy = ByteString.CopyFrom(msg.ToByteArray());
-            Assert.AreEqual(b, copy);
-        }
-
-        [Test]
-        public void TestMessageLiteWriteTo()
-        {
-            TestRequiredLite msg = TestRequiredLite.CreateBuilder()
-                .SetD(42)
-                .SetEn(ExtraEnum.EXLITE_BAZ)
-                .Build();
-
-            MemoryStream ms = new MemoryStream();
-            msg.WriteTo(ms);
-            Assert.AreEqual(msg.ToByteArray(), ms.ToArray());
-        }
-
-        [Test]
-        public void TestMessageLiteWriteDelimitedTo()
-        {
-            TestRequiredLite msg = TestRequiredLite.CreateBuilder()
-                .SetD(42)
-                .SetEn(ExtraEnum.EXLITE_BAZ)
-                .Build();
-
-            MemoryStream ms = new MemoryStream();
-            msg.WriteDelimitedTo(ms);
-            byte[] buffer = ms.ToArray();
-
-            Assert.AreEqual(5, buffer.Length);
-            Assert.AreEqual(4, buffer[0]);
-            byte[] msgBytes = new byte[4];
-            Array.Copy(buffer, 1, msgBytes, 0, 4);
-            Assert.AreEqual(msg.ToByteArray(), msgBytes);
-        }
-
-        [Test]
-        public void TestIMessageLiteWeakCreateBuilderForType()
-        {
-            IMessageLite msg = TestRequiredLite.DefaultInstance;
-            Assert.AreEqual(typeof(TestRequiredLite.Builder), msg.WeakCreateBuilderForType().GetType());
-        }
-
-        [Test]
-        public void TestMessageLiteWeakToBuilder()
-        {
-            IMessageLite msg = TestRequiredLite.CreateBuilder()
-                .SetD(42)
-                .SetEn(ExtraEnum.EXLITE_BAZ)
-                .Build();
-
-            IMessageLite copy = msg.WeakToBuilder().WeakBuild();
-            Assert.AreEqual(msg.ToByteArray(), copy.ToByteArray());
-        }
-
-        [Test]
-        public void TestMessageLiteWeakDefaultInstanceForType()
-        {
-            IMessageLite msg = TestRequiredLite.DefaultInstance;
-            Assert.IsTrue(Object.ReferenceEquals(TestRequiredLite.DefaultInstance, msg.WeakDefaultInstanceForType));
-        }
-    }
-}

+ 0 - 8
csharp/src/ProtocolBuffersLite.Test/App.xaml

@@ -1,8 +0,0 @@
-<Application xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
-             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
-             x:Class="ProtocolBuffers.SilverlightTest.App"
-             >
-    <Application.Resources>
-        
-    </Application.Resources>
-</Application>

+ 0 - 60
csharp/src/ProtocolBuffersLite.Test/App.xaml.cs

@@ -1,60 +0,0 @@
-using System;
-using System.Windows;
-using Microsoft.Silverlight.Testing;
-
-namespace Google.ProtocolBuffers
-{
-    public partial class App : Application
-    {
-
-        public App()
-        {
-            this.Startup += this.Application_Startup;
-            this.Exit += this.Application_Exit;
-            this.UnhandledException += this.Application_UnhandledException;
-
-            //InitializeComponent();
-        }
-
-        private void Application_Startup(object sender, StartupEventArgs e)
-        {
-            this.RootVisual = UnitTestSystem.CreateTestPage();
-        }
-
-        private void Application_Exit(object sender, EventArgs e)
-        {
-
-        }
-        private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
-        {
-            // If the app is running outside of the debugger then report the exception using
-            // the browser's exception mechanism. On IE this will display it a yellow alert 
-            // icon in the status bar and Firefox will display a script error.
-            if (!System.Diagnostics.Debugger.IsAttached)
-            {
-
-                // NOTE: This will allow the application to continue running after an exception has been thrown
-                // but not handled. 
-                // For production applications this error handling should be replaced with something that will 
-                // report the error to the website and stop the application.
-                e.Handled = true;
-                Deployment.Current.Dispatcher.BeginInvoke(
-                    new EventHandler<ApplicationUnhandledExceptionEventArgs>(ReportErrorToDOM), 
-                    new object[] { sender, e } );
-            }
-        }
-        private void ReportErrorToDOM(object sender, ApplicationUnhandledExceptionEventArgs e)
-        {
-            try
-            {
-                string errorMsg = e.ExceptionObject.Message + e.ExceptionObject.StackTrace;
-                errorMsg = errorMsg.Replace('"', '\'').Replace("\r\n", @"\n");
-
-                System.Windows.Browser.HtmlPage.Window.Eval("throw new Error(\"Unhandled Error in Silverlight 2 Application " + errorMsg + "\");");
-            }
-            catch (Exception)
-            {
-            }
-        }
-    }
-}

+ 0 - 286
csharp/src/ProtocolBuffersLite.Test/ExtendableBuilderLiteTest.cs

@@ -1,286 +0,0 @@
-#region Copyright notice and license
-
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc.  All rights reserved.
-// http://github.com/jskeet/dotnet-protobufs/
-// Original C++/Java/Python code:
-// http://code.google.com/p/protobuf/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-#endregion
-
-using System;
-using System.Collections.Generic;
-using Google.ProtocolBuffers.TestProtos;
-using NUnit.Framework;
-
-namespace Google.ProtocolBuffers
-{
-    public class ExtendableBuilderLiteTest
-    {
-        [Test]
-        public void TestHasExtensionT()
-        {
-            TestAllExtensionsLite.Builder builder = TestAllExtensionsLite.CreateBuilder()
-                .SetExtension(UnittestLite.OptionalInt32ExtensionLite, 123);
-
-            Assert.IsTrue(builder.HasExtension(UnittestLite.OptionalInt32ExtensionLite));
-        }
-
-        [Test]
-        public void TestHasExtensionTMissing()
-        {
-            TestAllExtensionsLite.Builder builder = TestAllExtensionsLite.CreateBuilder();
-            Assert.IsFalse(builder.HasExtension(UnittestLite.OptionalInt32ExtensionLite));
-        }
-
-        [Test]
-        public void TestGetExtensionCountT()
-        {
-            TestAllExtensionsLite.Builder builder = TestAllExtensionsLite.CreateBuilder()
-                .AddExtension(UnittestLite.RepeatedInt32ExtensionLite, 1)
-                .AddExtension(UnittestLite.RepeatedInt32ExtensionLite, 2)
-                .AddExtension(UnittestLite.RepeatedInt32ExtensionLite, 3);
-
-            Assert.AreEqual(3, builder.GetExtensionCount(UnittestLite.RepeatedInt32ExtensionLite));
-        }
-
-        [Test]
-        public void TestGetExtensionCountTEmpty()
-        {
-            TestAllExtensionsLite.Builder builder = TestAllExtensionsLite.CreateBuilder();
-            Assert.AreEqual(0, builder.GetExtensionCount(UnittestLite.RepeatedInt32ExtensionLite));
-        }
-
-        [Test]
-        public void TestGetExtensionTNull()
-        {
-            TestAllExtensionsLite.Builder builder = TestAllExtensionsLite.CreateBuilder();
-            string value = builder.GetExtension(UnittestLite.OptionalStringExtensionLite);
-            Assert.Null(value);
-        }
-
-        [Test]
-        public void TestGetExtensionTValue()
-        {
-            TestAllExtensionsLite.Builder builder = TestAllExtensionsLite.CreateBuilder()
-                .SetExtension(UnittestLite.OptionalInt32ExtensionLite, 3);
-
-            Assert.AreEqual(3, builder.GetExtension(UnittestLite.OptionalInt32ExtensionLite));
-        }
-
-        [Test]
-        public void TestGetExtensionTEmpty()
-        {
-            TestAllExtensionsLite.Builder builder = TestAllExtensionsLite.CreateBuilder();
-            Assert.AreEqual(0, builder.GetExtension(UnittestLite.RepeatedInt32ExtensionLite).Count);
-        }
-
-        [Test]
-        public void TestGetExtensionTList()
-        {
-            TestAllExtensionsLite.Builder builder = TestAllExtensionsLite.CreateBuilder()
-                .AddExtension(UnittestLite.RepeatedInt32ExtensionLite, 1)
-                .AddExtension(UnittestLite.RepeatedInt32ExtensionLite, 2)
-                .AddExtension(UnittestLite.RepeatedInt32ExtensionLite, 3);
-
-            IList<int> values = builder.GetExtension(UnittestLite.RepeatedInt32ExtensionLite);
-            Assert.AreEqual(3, values.Count);
-        }
-
-        [Test]
-        public void TestGetExtensionTIndex()
-        {
-            TestAllExtensionsLite.Builder builder = TestAllExtensionsLite.CreateBuilder()
-                .AddExtension(UnittestLite.RepeatedInt32ExtensionLite, 0)
-                .AddExtension(UnittestLite.RepeatedInt32ExtensionLite, 1)
-                .AddExtension(UnittestLite.RepeatedInt32ExtensionLite, 2);
-
-            for (int i = 0; i < 3; i++)
-                Assert.AreEqual(i, builder.GetExtension(UnittestLite.RepeatedInt32ExtensionLite, i));
-        }
-
-        [Test]
-        public void TestGetExtensionTIndexOutOfRange()
-        {
-            TestAllExtensionsLite.Builder builder = TestAllExtensionsLite.CreateBuilder();
-            Assert.Throws<ArgumentOutOfRangeException>(() => builder.GetExtension(UnittestLite.RepeatedInt32ExtensionLite, 0));
-        }
-
-        [Test]
-        public void TestSetExtensionTIndex()
-        {
-            TestAllExtensionsLite.Builder builder = TestAllExtensionsLite.CreateBuilder()
-                .AddExtension(UnittestLite.RepeatedInt32ExtensionLite, 0)
-                .AddExtension(UnittestLite.RepeatedInt32ExtensionLite, 1)
-                .AddExtension(UnittestLite.RepeatedInt32ExtensionLite, 2);
-
-            for (int i = 0; i < 3; i++)
-                Assert.AreEqual(i, builder.GetExtension(UnittestLite.RepeatedInt32ExtensionLite, i));
-
-            builder.SetExtension(UnittestLite.RepeatedInt32ExtensionLite, 0, 5);
-            builder.SetExtension(UnittestLite.RepeatedInt32ExtensionLite, 1, 6);
-            builder.SetExtension(UnittestLite.RepeatedInt32ExtensionLite, 2, 7);
-
-            for (int i = 0; i < 3; i++)
-                Assert.AreEqual(5 + i, builder.GetExtension(UnittestLite.RepeatedInt32ExtensionLite, i));
-        }
-
-        [Test]
-        public void TestSetExtensionTIndexOutOfRange()
-        {
-            TestAllExtensionsLite.Builder builder = TestAllExtensionsLite.CreateBuilder();
-            Assert.Throws<ArgumentOutOfRangeException>(() => builder.SetExtension(UnittestLite.RepeatedInt32ExtensionLite, 0, -1));
-        }
-
-        [Test]
-        public void TestClearExtensionTList()
-        {
-            TestAllExtensionsLite.Builder builder = TestAllExtensionsLite.CreateBuilder()
-                .AddExtension(UnittestLite.RepeatedInt32ExtensionLite, 0);
-            Assert.AreEqual(1, builder.GetExtensionCount(UnittestLite.RepeatedInt32ExtensionLite));
-
-            builder.ClearExtension(UnittestLite.RepeatedInt32ExtensionLite);
-            Assert.AreEqual(0, builder.GetExtensionCount(UnittestLite.RepeatedInt32ExtensionLite));
-        }
-
-        [Test]
-        public void TestClearExtensionTValue()
-        {
-            TestAllExtensionsLite.Builder builder = TestAllExtensionsLite.CreateBuilder()
-                .SetExtension(UnittestLite.OptionalInt32ExtensionLite, 0);
-            Assert.IsTrue(builder.HasExtension(UnittestLite.OptionalInt32ExtensionLite));
-
-            builder.ClearExtension(UnittestLite.OptionalInt32ExtensionLite);
-            Assert.IsFalse(builder.HasExtension(UnittestLite.OptionalInt32ExtensionLite));
-        }
-
-        [Test]
-        public void TestIndexedByDescriptor()
-        {
-            TestAllExtensionsLite.Builder builder = TestAllExtensionsLite.CreateBuilder();
-            Assert.IsFalse(builder.HasExtension(UnittestLite.OptionalInt32ExtensionLite));
-
-            builder[UnittestLite.OptionalInt32ExtensionLite.Descriptor] = 123;
-
-            Assert.IsTrue(builder.HasExtension(UnittestLite.OptionalInt32ExtensionLite));
-            Assert.AreEqual(123, builder.GetExtension(UnittestLite.OptionalInt32ExtensionLite));
-        }
-
-        [Test]
-        public void TestIndexedByDescriptorAndOrdinal()
-        {
-            TestAllExtensionsLite.Builder builder = TestAllExtensionsLite.CreateBuilder()
-                .AddExtension(UnittestLite.RepeatedInt32ExtensionLite, 0);
-            Assert.AreEqual(1, builder.GetExtensionCount(UnittestLite.RepeatedInt32ExtensionLite));
-
-            IFieldDescriptorLite f = UnittestLite.RepeatedInt32ExtensionLite.Descriptor;
-            builder[f, 0] = 123;
-
-            Assert.AreEqual(1, builder.GetExtensionCount(UnittestLite.RepeatedInt32ExtensionLite));
-            Assert.AreEqual(123, builder.GetExtension(UnittestLite.RepeatedInt32ExtensionLite, 0));
-        }
-
-        [Test]
-        public void TestIndexedByDescriptorAndOrdinalOutOfRange()
-        {
-            TestAllExtensionsLite.Builder builder = TestAllExtensionsLite.CreateBuilder();
-            Assert.AreEqual(0, builder.GetExtensionCount(UnittestLite.RepeatedInt32ExtensionLite));
-
-            IFieldDescriptorLite f = UnittestLite.RepeatedInt32ExtensionLite.Descriptor;
-            Assert.Throws<ArgumentOutOfRangeException>(() => builder[f, 0] = 123);
-        }
-
-        [Test]
-        public void TestClearFieldByDescriptor()
-        {
-            TestAllExtensionsLite.Builder builder = TestAllExtensionsLite.CreateBuilder()
-                .AddExtension(UnittestLite.RepeatedInt32ExtensionLite, 0);
-            Assert.AreEqual(1, builder.GetExtensionCount(UnittestLite.RepeatedInt32ExtensionLite));
-
-            IFieldDescriptorLite f = UnittestLite.RepeatedInt32ExtensionLite.Descriptor;
-            builder.ClearField(f);
-            Assert.AreEqual(0, builder.GetExtensionCount(UnittestLite.RepeatedInt32ExtensionLite));
-        }
-
-        [Test]
-        public void TestAddRepeatedFieldByDescriptor()
-        {
-            TestAllExtensionsLite.Builder builder = TestAllExtensionsLite.CreateBuilder()
-                .AddExtension(UnittestLite.RepeatedInt32ExtensionLite, 0);
-            Assert.AreEqual(1, builder.GetExtensionCount(UnittestLite.RepeatedInt32ExtensionLite));
-
-            IFieldDescriptorLite f = UnittestLite.RepeatedInt32ExtensionLite.Descriptor;
-            builder.AddRepeatedField(f, 123);
-            Assert.AreEqual(2, builder.GetExtensionCount(UnittestLite.RepeatedInt32ExtensionLite));
-            Assert.AreEqual(123, builder.GetExtension(UnittestLite.RepeatedInt32ExtensionLite, 1));
-        }
-
-        [Test]
-        public void TestMissingExtensionsLite()
-        {
-            const int optionalInt32 = 12345678;
-            TestAllExtensionsLite.Builder builder = TestAllExtensionsLite.CreateBuilder();
-            builder.SetExtension(UnittestLite.OptionalInt32ExtensionLite, optionalInt32);
-            builder.AddExtension(UnittestLite.RepeatedDoubleExtensionLite, 1.1);
-            builder.AddExtension(UnittestLite.RepeatedDoubleExtensionLite, 1.2);
-            builder.AddExtension(UnittestLite.RepeatedDoubleExtensionLite, 1.3);
-            TestAllExtensionsLite msg = builder.Build();
-
-            Assert.IsTrue(msg.HasExtension(UnittestLite.OptionalInt32ExtensionLite));
-            Assert.AreEqual(3, msg.GetExtensionCount(UnittestLite.RepeatedDoubleExtensionLite));
-
-            byte[] bits = msg.ToByteArray();
-            TestAllExtensionsLite copy = TestAllExtensionsLite.ParseFrom(bits);
-            Assert.IsFalse(copy.HasExtension(UnittestLite.OptionalInt32ExtensionLite));
-            Assert.AreEqual(0, copy.GetExtensionCount(UnittestLite.RepeatedDoubleExtensionLite));
-            Assert.AreNotEqual(msg, copy);
-
-            //The lite runtime removes all unknown fields and extensions
-            byte[] copybits = copy.ToByteArray();
-            Assert.AreEqual(0, copybits.Length);
-        }
-
-        [Test]
-        public void TestMissingFieldsLite()
-        {
-            TestAllTypesLite msg = TestAllTypesLite.CreateBuilder()
-                .SetOptionalInt32(123)
-                .SetOptionalString("123")
-                .Build();
-
-            byte[] bits = msg.ToByteArray();
-            IMessageLite copy = TestAllExtensionsLite.ParseFrom(bits);
-            Assert.AreNotEqual(msg, copy);
-
-            //The lite runtime removes all unknown fields and extensions
-            byte[] copybits = copy.ToByteArray();
-            Assert.AreEqual(0, copybits.Length);
-        }
-    }
-}

+ 0 - 378
csharp/src/ProtocolBuffersLite.Test/ExtendableMessageLiteTest.cs

@@ -1,378 +0,0 @@
-#region Copyright notice and license
-
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc.  All rights reserved.
-// http://github.com/jskeet/dotnet-protobufs/
-// Original C++/Java/Python code:
-// http://code.google.com/p/protobuf/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Text;
-using Google.ProtocolBuffers;
-using Google.ProtocolBuffers.TestProtos;
-using NUnit.Framework;
-
-namespace Google.ProtocolBuffers
-{
-    public class ExtendableMessageLiteTest
-    {
-        //The lite framework does not make this assertion
-        //[TestMethod, Ignore, ExpectedException(typeof(ArgumentException))]
-        //public void ExtensionWriterInvalidExtension()
-        //{
-        //    TestPackedExtensionsLite.CreateBuilder()[
-        //        UnittestLite.OptionalForeignMessageExtensionLite.DescriptorProtoFile] =
-        //        ForeignMessageLite.DefaultInstance;
-        //}
-
-        [Test]
-        public void ExtensionWriterTestMessages()
-        {
-            TestAllExtensionsLite.Builder b = TestAllExtensionsLite.CreateBuilder().SetExtension(
-                UnittestLite.OptionalForeignMessageExtensionLite,
-                ForeignMessageLite.CreateBuilder().SetC(123).Build());
-            TestAllExtensionsLite copy, msg = b.Build();
-
-            ExtensionRegistry registry = ExtensionRegistry.CreateInstance();
-            UnittestLite.RegisterAllExtensions(registry);
-
-            copy = TestAllExtensionsLite.ParseFrom(msg.ToByteArray(), registry);
-            Assert.AreEqual(msg.ToByteArray(), copy.ToByteArray());
-        }
-
-        [Test]
-        public void ExtensionWriterIsInitialized()
-        {
-            Assert.IsTrue(ForeignMessageLite.DefaultInstance.IsInitialized);
-            Assert.IsTrue(TestPackedExtensionsLite.CreateBuilder().IsInitialized);
-            Assert.IsTrue(TestAllExtensionsLite.CreateBuilder().SetExtension(
-                UnittestLite.OptionalForeignMessageExtensionLite, ForeignMessageLite.DefaultInstance)
-                              .IsInitialized);
-        }
-
-        [Test]
-        public void ExtensionWriterTestSetExtensionLists()
-        {
-            TestAllExtensionsLite msg, copy;
-            TestAllExtensionsLite.Builder builder = TestAllExtensionsLite.CreateBuilder()
-                .SetExtension(UnittestLite.RepeatedBoolExtensionLite, new[] {true, false})
-                .SetExtension(UnittestLite.RepeatedCordExtensionLite, new[] {"123", "456"})
-                .SetExtension(UnittestLite.RepeatedForeignEnumExtensionLite,
-                              new[] {ForeignEnumLite.FOREIGN_LITE_BAZ, ForeignEnumLite.FOREIGN_LITE_FOO})
-                ;
-
-            msg = builder.Build();
-            ExtensionRegistry registry = ExtensionRegistry.CreateInstance();
-            UnittestLite.RegisterAllExtensions(registry);
-
-            copy = TestAllExtensionsLite.ParseFrom(msg.ToByteArray(), registry);
-            Assert.AreEqual(msg.ToByteArray(), copy.ToByteArray());
-
-            Assert.AreEqual(ForeignEnumLite.FOREIGN_LITE_FOO,
-                            copy.GetExtension(UnittestLite.RepeatedForeignEnumExtensionLite, 1));
-        }
-
-        [Test]
-        public void ExtensionWriterTest()
-        {
-            TestAllExtensionsLite.Builder builder = TestAllExtensionsLite.CreateBuilder()
-                .SetExtension(UnittestLite.DefaultBoolExtensionLite, true)
-                .SetExtension(UnittestLite.DefaultBytesExtensionLite, ByteString.CopyFromUtf8("123"))
-                .SetExtension(UnittestLite.DefaultCordExtensionLite, "123")
-                .SetExtension(UnittestLite.DefaultDoubleExtensionLite, 123)
-                .SetExtension(UnittestLite.DefaultFixed32ExtensionLite, 123u)
-                .SetExtension(UnittestLite.DefaultFixed64ExtensionLite, 123u)
-                .SetExtension(UnittestLite.DefaultFloatExtensionLite, 123)
-                .SetExtension(UnittestLite.DefaultForeignEnumExtensionLite, ForeignEnumLite.FOREIGN_LITE_BAZ)
-                .SetExtension(UnittestLite.DefaultImportEnumExtensionLite, ImportEnumLite.IMPORT_LITE_BAZ)
-                .SetExtension(UnittestLite.DefaultInt32ExtensionLite, 123)
-                .SetExtension(UnittestLite.DefaultInt64ExtensionLite, 123)
-                .SetExtension(UnittestLite.DefaultNestedEnumExtensionLite,
-                              TestAllTypesLite.Types.NestedEnum.FOO)
-                .SetExtension(UnittestLite.DefaultSfixed32ExtensionLite, 123)
-                .SetExtension(UnittestLite.DefaultSfixed64ExtensionLite, 123)
-                .SetExtension(UnittestLite.DefaultSint32ExtensionLite, 123)
-                .SetExtension(UnittestLite.DefaultSint64ExtensionLite, 123)
-                .SetExtension(UnittestLite.DefaultStringExtensionLite, "123")
-                .SetExtension(UnittestLite.DefaultStringPieceExtensionLite, "123")
-                .SetExtension(UnittestLite.DefaultUint32ExtensionLite, 123u)
-                .SetExtension(UnittestLite.DefaultUint64ExtensionLite, 123u)
-                //Optional
-                .SetExtension(UnittestLite.OptionalBoolExtensionLite, true)
-                .SetExtension(UnittestLite.OptionalBytesExtensionLite, ByteString.CopyFromUtf8("123"))
-                .SetExtension(UnittestLite.OptionalCordExtensionLite, "123")
-                .SetExtension(UnittestLite.OptionalDoubleExtensionLite, 123)
-                .SetExtension(UnittestLite.OptionalFixed32ExtensionLite, 123u)
-                .SetExtension(UnittestLite.OptionalFixed64ExtensionLite, 123u)
-                .SetExtension(UnittestLite.OptionalFloatExtensionLite, 123)
-                .SetExtension(UnittestLite.OptionalForeignEnumExtensionLite, ForeignEnumLite.FOREIGN_LITE_BAZ)
-                .SetExtension(UnittestLite.OptionalImportEnumExtensionLite, ImportEnumLite.IMPORT_LITE_BAZ)
-                .SetExtension(UnittestLite.OptionalInt32ExtensionLite, 123)
-                .SetExtension(UnittestLite.OptionalInt64ExtensionLite, 123)
-                .SetExtension(UnittestLite.OptionalNestedEnumExtensionLite,
-                              TestAllTypesLite.Types.NestedEnum.FOO)
-                .SetExtension(UnittestLite.OptionalSfixed32ExtensionLite, 123)
-                .SetExtension(UnittestLite.OptionalSfixed64ExtensionLite, 123)
-                .SetExtension(UnittestLite.OptionalSint32ExtensionLite, 123)
-                .SetExtension(UnittestLite.OptionalSint64ExtensionLite, 123)
-                .SetExtension(UnittestLite.OptionalStringExtensionLite, "123")
-                .SetExtension(UnittestLite.OptionalStringPieceExtensionLite, "123")
-                .SetExtension(UnittestLite.OptionalUint32ExtensionLite, 123u)
-                .SetExtension(UnittestLite.OptionalUint64ExtensionLite, 123u)
-                //Repeated
-                .AddExtension(UnittestLite.RepeatedBoolExtensionLite, true)
-                .AddExtension(UnittestLite.RepeatedBytesExtensionLite, ByteString.CopyFromUtf8("123"))
-                .AddExtension(UnittestLite.RepeatedCordExtensionLite, "123")
-                .AddExtension(UnittestLite.RepeatedDoubleExtensionLite, 123)
-                .AddExtension(UnittestLite.RepeatedFixed32ExtensionLite, 123u)
-                .AddExtension(UnittestLite.RepeatedFixed64ExtensionLite, 123u)
-                .AddExtension(UnittestLite.RepeatedFloatExtensionLite, 123)
-                .AddExtension(UnittestLite.RepeatedForeignEnumExtensionLite, ForeignEnumLite.FOREIGN_LITE_BAZ)
-                .AddExtension(UnittestLite.RepeatedImportEnumExtensionLite, ImportEnumLite.IMPORT_LITE_BAZ)
-                .AddExtension(UnittestLite.RepeatedInt32ExtensionLite, 123)
-                .AddExtension(UnittestLite.RepeatedInt64ExtensionLite, 123)
-                .AddExtension(UnittestLite.RepeatedNestedEnumExtensionLite,
-                              TestAllTypesLite.Types.NestedEnum.FOO)
-                .AddExtension(UnittestLite.RepeatedSfixed32ExtensionLite, 123)
-                .AddExtension(UnittestLite.RepeatedSfixed64ExtensionLite, 123)
-                .AddExtension(UnittestLite.RepeatedSint32ExtensionLite, 123)
-                .AddExtension(UnittestLite.RepeatedSint64ExtensionLite, 123)
-                .AddExtension(UnittestLite.RepeatedStringExtensionLite, "123")
-                .AddExtension(UnittestLite.RepeatedStringPieceExtensionLite, "123")
-                .AddExtension(UnittestLite.RepeatedUint32ExtensionLite, 123u)
-                .AddExtension(UnittestLite.RepeatedUint64ExtensionLite, 123u)
-                ;
-            TestAllExtensionsLite msg = builder.Build();
-
-            ExtensionRegistry registry = ExtensionRegistry.CreateInstance();
-            UnittestLite.RegisterAllExtensions(registry);
-
-            TestAllExtensionsLite.Builder copyBuilder =
-                TestAllExtensionsLite.CreateBuilder().MergeFrom(msg.ToByteArray(), registry);
-            TestAllExtensionsLite copy = copyBuilder.Build();
-
-            Assert.AreEqual(msg.ToByteArray(), copy.ToByteArray());
-
-            Assert.AreEqual(true, copy.GetExtension(UnittestLite.DefaultBoolExtensionLite));
-            Assert.AreEqual(ByteString.CopyFromUtf8("123"),
-                            copy.GetExtension(UnittestLite.DefaultBytesExtensionLite));
-            Assert.AreEqual("123", copy.GetExtension(UnittestLite.DefaultCordExtensionLite));
-            Assert.AreEqual(123, copy.GetExtension(UnittestLite.DefaultDoubleExtensionLite));
-            Assert.AreEqual(123u, copy.GetExtension(UnittestLite.DefaultFixed32ExtensionLite));
-            Assert.AreEqual(123u, copy.GetExtension(UnittestLite.DefaultFixed64ExtensionLite));
-            Assert.AreEqual(123, copy.GetExtension(UnittestLite.DefaultFloatExtensionLite));
-            Assert.AreEqual(ForeignEnumLite.FOREIGN_LITE_BAZ,
-                            copy.GetExtension(UnittestLite.DefaultForeignEnumExtensionLite));
-            Assert.AreEqual(ImportEnumLite.IMPORT_LITE_BAZ,
-                            copy.GetExtension(UnittestLite.DefaultImportEnumExtensionLite));
-            Assert.AreEqual(123, copy.GetExtension(UnittestLite.DefaultInt32ExtensionLite));
-            Assert.AreEqual(123, copy.GetExtension(UnittestLite.DefaultInt64ExtensionLite));
-            Assert.AreEqual(TestAllTypesLite.Types.NestedEnum.FOO,
-                            copy.GetExtension(UnittestLite.DefaultNestedEnumExtensionLite));
-            Assert.AreEqual(123, copy.GetExtension(UnittestLite.DefaultSfixed32ExtensionLite));
-            Assert.AreEqual(123, copy.GetExtension(UnittestLite.DefaultSfixed64ExtensionLite));
-            Assert.AreEqual(123, copy.GetExtension(UnittestLite.DefaultSint32ExtensionLite));
-            Assert.AreEqual(123, copy.GetExtension(UnittestLite.DefaultSint64ExtensionLite));
-            Assert.AreEqual("123", copy.GetExtension(UnittestLite.DefaultStringExtensionLite));
-            Assert.AreEqual("123", copy.GetExtension(UnittestLite.DefaultStringPieceExtensionLite));
-            Assert.AreEqual(123u, copy.GetExtension(UnittestLite.DefaultUint32ExtensionLite));
-            Assert.AreEqual(123u, copy.GetExtension(UnittestLite.DefaultUint64ExtensionLite));
-
-            Assert.AreEqual(true, copy.GetExtension(UnittestLite.OptionalBoolExtensionLite));
-            Assert.AreEqual(ByteString.CopyFromUtf8("123"),
-                            copy.GetExtension(UnittestLite.OptionalBytesExtensionLite));
-            Assert.AreEqual("123", copy.GetExtension(UnittestLite.OptionalCordExtensionLite));
-            Assert.AreEqual(123, copy.GetExtension(UnittestLite.OptionalDoubleExtensionLite));
-            Assert.AreEqual(123u, copy.GetExtension(UnittestLite.OptionalFixed32ExtensionLite));
-            Assert.AreEqual(123u, copy.GetExtension(UnittestLite.OptionalFixed64ExtensionLite));
-            Assert.AreEqual(123, copy.GetExtension(UnittestLite.OptionalFloatExtensionLite));
-            Assert.AreEqual(ForeignEnumLite.FOREIGN_LITE_BAZ,
-                            copy.GetExtension(UnittestLite.OptionalForeignEnumExtensionLite));
-            Assert.AreEqual(ImportEnumLite.IMPORT_LITE_BAZ,
-                            copy.GetExtension(UnittestLite.OptionalImportEnumExtensionLite));
-            Assert.AreEqual(123, copy.GetExtension(UnittestLite.OptionalInt32ExtensionLite));
-            Assert.AreEqual(123, copy.GetExtension(UnittestLite.OptionalInt64ExtensionLite));
-            Assert.AreEqual(TestAllTypesLite.Types.NestedEnum.FOO,
-                            copy.GetExtension(UnittestLite.OptionalNestedEnumExtensionLite));
-            Assert.AreEqual(123, copy.GetExtension(UnittestLite.OptionalSfixed32ExtensionLite));
-            Assert.AreEqual(123, copy.GetExtension(UnittestLite.OptionalSfixed64ExtensionLite));
-            Assert.AreEqual(123, copy.GetExtension(UnittestLite.OptionalSint32ExtensionLite));
-            Assert.AreEqual(123, copy.GetExtension(UnittestLite.OptionalSint64ExtensionLite));
-            Assert.AreEqual("123", copy.GetExtension(UnittestLite.OptionalStringExtensionLite));
-            Assert.AreEqual("123", copy.GetExtension(UnittestLite.OptionalStringPieceExtensionLite));
-            Assert.AreEqual(123u, copy.GetExtension(UnittestLite.OptionalUint32ExtensionLite));
-            Assert.AreEqual(123u, copy.GetExtension(UnittestLite.OptionalUint64ExtensionLite));
-
-            Assert.AreEqual(true, copy.GetExtension(UnittestLite.RepeatedBoolExtensionLite, 0));
-            Assert.AreEqual(ByteString.CopyFromUtf8("123"),
-                            copy.GetExtension(UnittestLite.RepeatedBytesExtensionLite, 0));
-            Assert.AreEqual("123", copy.GetExtension(UnittestLite.RepeatedCordExtensionLite, 0));
-            Assert.AreEqual(123, copy.GetExtension(UnittestLite.RepeatedDoubleExtensionLite, 0));
-            Assert.AreEqual(123u, copy.GetExtension(UnittestLite.RepeatedFixed32ExtensionLite, 0));
-            Assert.AreEqual(123u, copy.GetExtension(UnittestLite.RepeatedFixed64ExtensionLite, 0));
-            Assert.AreEqual(123, copy.GetExtension(UnittestLite.RepeatedFloatExtensionLite, 0));
-            Assert.AreEqual(ForeignEnumLite.FOREIGN_LITE_BAZ,
-                            copy.GetExtension(UnittestLite.RepeatedForeignEnumExtensionLite, 0));
-            Assert.AreEqual(ImportEnumLite.IMPORT_LITE_BAZ,
-                            copy.GetExtension(UnittestLite.RepeatedImportEnumExtensionLite, 0));
-            Assert.AreEqual(123, copy.GetExtension(UnittestLite.RepeatedInt32ExtensionLite, 0));
-            Assert.AreEqual(123, copy.GetExtension(UnittestLite.RepeatedInt64ExtensionLite, 0));
-            Assert.AreEqual(TestAllTypesLite.Types.NestedEnum.FOO,
-                            copy.GetExtension(UnittestLite.RepeatedNestedEnumExtensionLite, 0));
-            Assert.AreEqual(123, copy.GetExtension(UnittestLite.RepeatedSfixed32ExtensionLite, 0));
-            Assert.AreEqual(123, copy.GetExtension(UnittestLite.RepeatedSfixed64ExtensionLite, 0));
-            Assert.AreEqual(123, copy.GetExtension(UnittestLite.RepeatedSint32ExtensionLite, 0));
-            Assert.AreEqual(123, copy.GetExtension(UnittestLite.RepeatedSint64ExtensionLite, 0));
-            Assert.AreEqual("123", copy.GetExtension(UnittestLite.RepeatedStringExtensionLite, 0));
-            Assert.AreEqual("123", copy.GetExtension(UnittestLite.RepeatedStringPieceExtensionLite, 0));
-            Assert.AreEqual(123u, copy.GetExtension(UnittestLite.RepeatedUint32ExtensionLite, 0));
-            Assert.AreEqual(123u, copy.GetExtension(UnittestLite.RepeatedUint64ExtensionLite, 0));
-        }
-
-        private TestPackedExtensionsLite BuildPackedExtensions()
-        {
-            TestPackedExtensionsLite.Builder builder = TestPackedExtensionsLite.CreateBuilder()
-                   .AddExtension(UnittestLite.PackedBoolExtensionLite, true)
-                   .AddExtension(UnittestLite.PackedDoubleExtensionLite, 123)
-                   .AddExtension(UnittestLite.PackedFixed32ExtensionLite, 123u)
-                   .AddExtension(UnittestLite.PackedFixed64ExtensionLite, 123u)
-                   .AddExtension(UnittestLite.PackedFloatExtensionLite, 123)
-                   .AddExtension(UnittestLite.PackedInt32ExtensionLite, 123)
-                   .AddExtension(UnittestLite.PackedInt64ExtensionLite, 123)
-                   .AddExtension(UnittestLite.PackedSfixed32ExtensionLite, 123)
-                   .AddExtension(UnittestLite.PackedSfixed64ExtensionLite, 123)
-                   .AddExtension(UnittestLite.PackedSint32ExtensionLite, 123)
-                   .AddExtension(UnittestLite.PackedSint64ExtensionLite, 123)
-                   .AddExtension(UnittestLite.PackedUint32ExtensionLite, 123u)
-                   .AddExtension(UnittestLite.PackedUint64ExtensionLite, 123u)
-                   .AddExtension(UnittestLite.PackedBoolExtensionLite, true)
-                   .AddExtension(UnittestLite.PackedDoubleExtensionLite, 123)
-                   .AddExtension(UnittestLite.PackedFixed32ExtensionLite, 123u)
-                   .AddExtension(UnittestLite.PackedFixed64ExtensionLite, 123u)
-                   .AddExtension(UnittestLite.PackedFloatExtensionLite, 123)
-                   .AddExtension(UnittestLite.PackedInt32ExtensionLite, 123)
-                   .AddExtension(UnittestLite.PackedInt64ExtensionLite, 123)
-                   .AddExtension(UnittestLite.PackedSfixed32ExtensionLite, 123)
-                   .AddExtension(UnittestLite.PackedSfixed64ExtensionLite, 123)
-                   .AddExtension(UnittestLite.PackedSint32ExtensionLite, 123)
-                   .AddExtension(UnittestLite.PackedSint64ExtensionLite, 123)
-                   .AddExtension(UnittestLite.PackedUint32ExtensionLite, 123u)
-                   .AddExtension(UnittestLite.PackedUint64ExtensionLite, 123u);
-
-            TestPackedExtensionsLite msg = builder.Build();
-            return msg;
-        }
-
-        private void AssertPackedExtensions(TestPackedExtensionsLite copy)
-        {
-            Assert.AreEqual(true, copy.GetExtension(UnittestLite.PackedBoolExtensionLite, 0));
-            Assert.AreEqual(123, copy.GetExtension(UnittestLite.PackedDoubleExtensionLite, 0));
-            Assert.AreEqual(123u, copy.GetExtension(UnittestLite.PackedFixed32ExtensionLite, 0));
-            Assert.AreEqual(123u, copy.GetExtension(UnittestLite.PackedFixed64ExtensionLite, 0));
-            Assert.AreEqual(123, copy.GetExtension(UnittestLite.PackedFloatExtensionLite, 0));
-            Assert.AreEqual(123, copy.GetExtension(UnittestLite.PackedInt32ExtensionLite, 0));
-            Assert.AreEqual(123, copy.GetExtension(UnittestLite.PackedInt64ExtensionLite, 0));
-            Assert.AreEqual(123, copy.GetExtension(UnittestLite.PackedSfixed32ExtensionLite, 0));
-            Assert.AreEqual(123, copy.GetExtension(UnittestLite.PackedSfixed64ExtensionLite, 0));
-            Assert.AreEqual(123, copy.GetExtension(UnittestLite.PackedSint32ExtensionLite, 0));
-            Assert.AreEqual(123, copy.GetExtension(UnittestLite.PackedSint64ExtensionLite, 0));
-            Assert.AreEqual(123u, copy.GetExtension(UnittestLite.PackedUint32ExtensionLite, 0));
-            Assert.AreEqual(123u, copy.GetExtension(UnittestLite.PackedUint64ExtensionLite, 0));
-
-            Assert.AreEqual(true, copy.GetExtension(UnittestLite.PackedBoolExtensionLite, 1));
-            Assert.AreEqual(123, copy.GetExtension(UnittestLite.PackedDoubleExtensionLite, 1));
-            Assert.AreEqual(123u, copy.GetExtension(UnittestLite.PackedFixed32ExtensionLite, 1));
-            Assert.AreEqual(123u, copy.GetExtension(UnittestLite.PackedFixed64ExtensionLite, 1));
-            Assert.AreEqual(123, copy.GetExtension(UnittestLite.PackedFloatExtensionLite, 1));
-            Assert.AreEqual(123, copy.GetExtension(UnittestLite.PackedInt32ExtensionLite, 1));
-            Assert.AreEqual(123, copy.GetExtension(UnittestLite.PackedInt64ExtensionLite, 1));
-            Assert.AreEqual(123, copy.GetExtension(UnittestLite.PackedSfixed32ExtensionLite, 1));
-            Assert.AreEqual(123, copy.GetExtension(UnittestLite.PackedSfixed64ExtensionLite, 1));
-            Assert.AreEqual(123, copy.GetExtension(UnittestLite.PackedSint32ExtensionLite, 1));
-            Assert.AreEqual(123, copy.GetExtension(UnittestLite.PackedSint64ExtensionLite, 1));
-            Assert.AreEqual(123u, copy.GetExtension(UnittestLite.PackedUint32ExtensionLite, 1));
-            Assert.AreEqual(123u, copy.GetExtension(UnittestLite.PackedUint64ExtensionLite, 1));
-        }
-
-        [Test]
-        public void ExtensionWriterTestPacked()
-        {
-            TestPackedExtensionsLite msg = BuildPackedExtensions();
-
-            ExtensionRegistry registry = ExtensionRegistry.CreateInstance();
-            UnittestLite.RegisterAllExtensions(registry);
-
-            TestPackedExtensionsLite.Builder copyBuilder =
-                TestPackedExtensionsLite.CreateBuilder().MergeFrom(msg.ToByteArray(), registry);
-            TestPackedExtensionsLite copy = copyBuilder.Build();
-
-            Assert.AreEqual(msg.ToByteArray(), copy.ToByteArray());
-
-            AssertPackedExtensions(copy);
-        }
-
-        [Test]
-        public void TestUnpackedAndPackedExtensions()
-        {
-            TestPackedExtensionsLite original = BuildPackedExtensions();
-            AssertPackedExtensions(original);
-
-            ExtensionRegistry registry = ExtensionRegistry.CreateInstance();
-            UnittestLite.RegisterAllExtensions(registry);
-            UnittestExtrasLite.RegisterAllExtensions(registry);
-
-            TestUnpackedExtensionsLite unpacked = TestUnpackedExtensionsLite.ParseFrom(original.ToByteArray(), registry);
-
-            TestPackedExtensionsLite packed = TestPackedExtensionsLite.ParseFrom(unpacked.ToByteArray(), registry);
-
-            Assert.AreEqual(original, packed);
-            Assert.AreEqual(original.ToByteArray(), packed.ToByteArray());
-            AssertPackedExtensions(packed);
-        }
-
-        [Test]
-        public void TestUnpackedFromPackedInput()
-        {
-            byte[] packedData = BuildPackedExtensions().ToByteArray();
-
-            TestUnpackedTypesLite unpacked = TestUnpackedTypesLite.ParseFrom(packedData);
-            TestPackedTypesLite packed = TestPackedTypesLite.ParseFrom(unpacked.ToByteArray());
-            Assert.AreEqual(packedData, packed.ToByteArray());
-            
-            unpacked = TestUnpackedTypesLite.ParseFrom(packed.ToByteArray());
-
-            ExtensionRegistry registry = ExtensionRegistry.CreateInstance();
-            UnittestLite.RegisterAllExtensions(registry);
-            AssertPackedExtensions(TestPackedExtensionsLite.ParseFrom(unpacked.ToByteArray(), registry));
-        }
-    }
-}

+ 0 - 185
csharp/src/ProtocolBuffersLite.Test/InteropLiteTest.cs

@@ -1,185 +0,0 @@
-#region Copyright notice and license
-
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc.  All rights reserved.
-// http://github.com/jskeet/dotnet-protobufs/
-// Original C++/Java/Python code:
-// http://code.google.com/p/protobuf/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-#endregion
-
-using System;
-using Google.ProtocolBuffers.TestProtos;
-using NUnit.Framework;
-
-namespace Google.ProtocolBuffers
-{
-    public class InteropLiteTest
-    {
-        [Test]
-        public void TestConvertFromFullMinimal()
-        {
-            TestInteropPerson person = TestInteropPerson.CreateBuilder()
-                .SetId(123)
-                .SetName("abc")
-                .Build();
-            Assert.IsTrue(person.IsInitialized);
-
-            TestInteropPersonLite copy = TestInteropPersonLite.ParseFrom(person.ToByteArray());
-
-            Assert.AreEqual(person.ToByteArray(), copy.ToByteArray());
-        }
-
-        [Test]
-        public void TestConvertFromFullComplete()
-        {
-            TestInteropPerson person = TestInteropPerson.CreateBuilder()
-                .SetId(123)
-                .SetName("abc")
-                .SetEmail("abc@123.com")
-                .AddRangeCodes(new[] {1, 2, 3})
-                .AddPhone(TestInteropPerson.Types.PhoneNumber.CreateBuilder().SetNumber("555-1234").Build())
-                .AddPhone(TestInteropPerson.Types.PhoneNumber.CreateBuilder().SetNumber("555-5678").Build())
-                .AddAddresses(
-                    TestInteropPerson.Types.Addresses.CreateBuilder().SetAddress("123 Seseme").SetCity("Wonderland").
-                        SetState("NA").SetZip(12345).Build())
-                .SetExtension(UnittestExtrasFull.EmployeeId,
-                              TestInteropEmployeeId.CreateBuilder().SetNumber("123").Build())
-                .Build();
-            Assert.IsTrue(person.IsInitialized);
-
-            ExtensionRegistry registry = ExtensionRegistry.CreateInstance();
-            UnittestExtrasLite.RegisterAllExtensions(registry);
-            byte[] fullBytes = person.ToByteArray();
-
-            TestInteropPersonLite copy = TestInteropPersonLite.ParseFrom(fullBytes, registry);
-            byte[] liteBytes = copy.ToByteArray();
-
-            Assert.AreEqual(fullBytes, liteBytes);
-        }
-
-        [Test]
-        public void TestConvertFromLiteMinimal()
-        {
-            TestInteropPersonLite person = TestInteropPersonLite.CreateBuilder()
-                .SetId(123)
-                .SetName("abc")
-                .Build();
-            Assert.IsTrue(person.IsInitialized);
-
-            TestInteropPerson copy = TestInteropPerson.ParseFrom(person.ToByteArray());
-
-            Assert.AreEqual(person.ToByteArray(), copy.ToByteArray());
-        }
-
-        [Test]
-        public void TestConvertFromLiteComplete()
-        {
-            TestInteropPersonLite person = TestInteropPersonLite.CreateBuilder()
-                .SetId(123)
-                .SetName("abc")
-                .SetEmail("abc@123.com")
-                .AddRangeCodes(new[] {1, 2, 3})
-                .AddPhone(TestInteropPersonLite.Types.PhoneNumber.CreateBuilder().SetNumber("555-1234").Build())
-                .AddPhone(TestInteropPersonLite.Types.PhoneNumber.CreateBuilder().SetNumber("555-5678").Build())
-                .AddAddresses(
-                    TestInteropPersonLite.Types.Addresses.CreateBuilder().SetAddress("123 Seseme").SetCity("Wonderland")
-                        .SetState("NA").SetZip(12345).Build())
-                .SetExtension(UnittestExtrasLite.EmployeeIdLite,
-                              TestInteropEmployeeIdLite.CreateBuilder().SetNumber("123").Build())
-                .Build();
-            Assert.IsTrue(person.IsInitialized);
-
-            ExtensionRegistry registry = ExtensionRegistry.CreateInstance();
-            UnittestExtrasFull.RegisterAllExtensions(registry);
-
-            TestInteropPerson copy = TestInteropPerson.ParseFrom(person.ToByteArray(), registry);
-
-            Assert.AreEqual(person.ToByteArray(), copy.ToByteArray());
-        }
-
-        public ByteString AllBytes
-        {
-            get
-            {
-                byte[] bytes = new byte[256];
-                for (int i = 0; i < bytes.Length; i++)
-                    bytes[i] = (byte) i;
-                return ByteString.CopyFrom(bytes);
-            }
-        }
-
-        [Test]
-        public void TestCompareStringValues()
-        {
-            TestInteropPersonLite person = TestInteropPersonLite.CreateBuilder()
-                .SetId(123)
-                .SetName("abc")
-                .SetEmail("abc@123.com")
-                .AddRangeCodes(new[] {1, 2, 3})
-                .AddPhone(TestInteropPersonLite.Types.PhoneNumber.CreateBuilder().SetNumber("555-1234").Build())
-                .AddPhone(
-                    TestInteropPersonLite.Types.PhoneNumber.CreateBuilder().SetNumber(
-                        System.Text.Encoding.UTF8.GetString(AllBytes.ToByteArray(), 0, AllBytes.Length)).Build())
-                .AddAddresses(
-                    TestInteropPersonLite.Types.Addresses.CreateBuilder().SetAddress("123 Seseme").SetCity("Wonderland")
-                        .SetState("NA").SetZip(12345).Build())
-                .SetExtension(UnittestExtrasLite.EmployeeIdLite,
-                              TestInteropEmployeeIdLite.CreateBuilder().SetNumber("123").Build())
-                .Build();
-            Assert.IsTrue(person.IsInitialized);
-
-            ExtensionRegistry registry = ExtensionRegistry.CreateInstance();
-            UnittestExtrasFull.RegisterAllExtensions(registry);
-
-            TestInteropPerson copy = TestInteropPerson.ParseFrom(person.ToByteArray(), registry);
-
-            Assert.AreEqual(person.ToByteArray(), copy.ToByteArray());
-
-            TestInteropPerson.Builder copyBuilder = TestInteropPerson.CreateBuilder();
-            TextFormat.Merge(
-                person.ToString().Replace("[protobuf_unittest_extra.employee_id_lite]",
-                                          "[protobuf_unittest_extra.employee_id]"), registry, copyBuilder);
-
-            copy = copyBuilder.Build();
-            Assert.AreEqual(person.ToByteArray(), copy.ToByteArray());
-
-            string liteText = person.ToString().TrimEnd().Replace("\r", "");
-            string fullText = copy.ToString().TrimEnd().Replace("\r", "");
-            //map the extension type
-            liteText = liteText.Replace("[protobuf_unittest_extra.employee_id_lite]",
-                                        "[protobuf_unittest_extra.employee_id]");
-            //lite version does not indent
-            while (fullText.IndexOf("\n ", StringComparison.Ordinal) >= 0)
-                fullText = fullText.Replace("\n ", "\n");
-
-            Assert.AreEqual(fullText, liteText);
-        }
-    }
-}

+ 0 - 113
csharp/src/ProtocolBuffersLite.Test/LiteTest.cs

@@ -1,113 +0,0 @@
-#region Copyright notice and license
-
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc.  All rights reserved.
-// http://github.com/jskeet/dotnet-protobufs/
-// Original C++/Java/Python code:
-// http://code.google.com/p/protobuf/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-#endregion
-
-using Google.ProtocolBuffers.TestProtos;
-using NUnit.Framework;
-
-namespace Google.ProtocolBuffers
-{
-    /// <summary>
-    /// Miscellaneous tests for message operations that apply to both
-    /// generated and dynamic messages.
-    /// </summary>
-    public class LiteTest
-    {
-        [Test]
-        public void TestLite()
-        {
-            // Since lite messages are a subset of regular messages, we can mostly
-            // assume that the functionality of lite messages is already thoroughly
-            // tested by the regular tests.  All this test really verifies is that
-            // a proto with optimize_for = LITE_RUNTIME compiles correctly when
-            // linked only against the lite library.  That is all tested at compile
-            // time, leaving not much to do in this method.  Let's just do some random
-            // stuff to make sure the lite message is actually here and usable.
-
-            TestAllTypesLite message =
-                TestAllTypesLite.CreateBuilder()
-                    .SetOptionalInt32(123)
-                    .AddRepeatedString("hello")
-                    .SetOptionalNestedMessage(
-                        TestAllTypesLite.Types.NestedMessage.CreateBuilder().SetBb(7))
-                    .Build();
-
-            ByteString data = message.ToByteString();
-
-            TestAllTypesLite message2 = TestAllTypesLite.ParseFrom(data);
-
-            Assert.AreEqual(123, message2.OptionalInt32);
-            Assert.AreEqual(1, message2.RepeatedStringCount);
-            Assert.AreEqual("hello", message2.RepeatedStringList[0]);
-            Assert.AreEqual(7, message2.OptionalNestedMessage.Bb);
-        }
-
-        [Test]
-        public void TestLiteExtensions()
-        {
-            // TODO(kenton):  Unlike other features of the lite library, extensions are
-            //   implemented completely differently from the regular library.  We
-            //   should probably test them more thoroughly.
-
-            TestAllExtensionsLite message =
-                TestAllExtensionsLite.CreateBuilder()
-                    .SetExtension(UnittestLite.OptionalInt32ExtensionLite, 123)
-                    .AddExtension(UnittestLite.RepeatedStringExtensionLite, "hello")
-                    .SetExtension(UnittestLite.OptionalNestedEnumExtensionLite,
-                                  TestAllTypesLite.Types.NestedEnum.BAZ)
-                    .SetExtension(UnittestLite.OptionalNestedMessageExtensionLite,
-                                  TestAllTypesLite.Types.NestedMessage.CreateBuilder().SetBb(7).Build())
-                    .Build();
-
-            // Test copying a message, since coping extensions actually does use a
-            // different code path between lite and regular libraries, and as of this
-            // writing, parsing hasn't been implemented yet.
-            TestAllExtensionsLite message2 = message.ToBuilder().Build();
-
-            Assert.AreEqual(123, (int) message2.GetExtension(
-                UnittestLite.OptionalInt32ExtensionLite));
-            Assert.AreEqual(1, message2.GetExtensionCount(
-                UnittestLite.RepeatedStringExtensionLite));
-            Assert.AreEqual(1, message2.GetExtension(
-                UnittestLite.RepeatedStringExtensionLite).Count);
-            Assert.AreEqual("hello", message2.GetExtension(
-                UnittestLite.RepeatedStringExtensionLite, 0));
-            Assert.AreEqual(TestAllTypesLite.Types.NestedEnum.BAZ, message2.GetExtension(
-                UnittestLite.OptionalNestedEnumExtensionLite));
-            Assert.AreEqual(7, message2.GetExtension(
-                UnittestLite.OptionalNestedMessageExtensionLite).Bb);
-        }
-    }
-}

+ 0 - 237
csharp/src/ProtocolBuffersLite.Test/MissingFieldAndExtensionTest.cs

@@ -1,237 +0,0 @@
-#region Copyright notice and license
-
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc.  All rights reserved.
-// http://github.com/jskeet/dotnet-protobufs/
-// Original C++/Java/Python code:
-// http://code.google.com/p/protobuf/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-#endregion
-
-using Google.ProtocolBuffers.TestProtos;
-using NUnit.Framework;
-
-namespace Google.ProtocolBuffers
-{
-    public class MissingFieldAndExtensionTest
-    {
-        [Test]
-        public void TestRecoverMissingExtensions()
-        {
-            const int optionalInt32 = 12345678;
-            TestAllExtensions.Builder builder = TestAllExtensions.CreateBuilder();
-            builder.SetExtension(Unittest.OptionalInt32Extension, optionalInt32);
-            builder.AddExtension(Unittest.RepeatedDoubleExtension, 1.1);
-            builder.AddExtension(Unittest.RepeatedDoubleExtension, 1.2);
-            builder.AddExtension(Unittest.RepeatedDoubleExtension, 1.3);
-            TestAllExtensions msg = builder.Build();
-
-            Assert.IsTrue(msg.HasExtension(Unittest.OptionalInt32Extension));
-            Assert.AreEqual(3, msg.GetExtensionCount(Unittest.RepeatedDoubleExtension));
-
-            byte[] bits = msg.ToByteArray();
-            TestAllExtensions copy = TestAllExtensions.ParseFrom(bits);
-            Assert.IsFalse(copy.HasExtension(Unittest.OptionalInt32Extension));
-            Assert.AreEqual(0, copy.GetExtensionCount(Unittest.RepeatedDoubleExtension));
-            Assert.AreNotEqual(msg, copy);
-
-            //Even though copy does not understand the typees they serialize correctly
-            byte[] copybits = copy.ToByteArray();
-            Assert.AreEqual(bits, copybits);
-
-            ExtensionRegistry registry = ExtensionRegistry.CreateInstance();
-            Unittest.RegisterAllExtensions(registry);
-
-            //Now we can take those copy bits and restore the full message with extensions
-            copy = TestAllExtensions.ParseFrom(copybits, registry);
-            Assert.IsTrue(copy.HasExtension(Unittest.OptionalInt32Extension));
-            Assert.AreEqual(3, copy.GetExtensionCount(Unittest.RepeatedDoubleExtension));
-
-            Assert.AreEqual(msg, copy);
-            Assert.AreEqual(bits, copy.ToByteArray());
-
-            //If we modify the object this should all continue to work as before
-            copybits = copy.ToBuilder().Build().ToByteArray();
-            Assert.AreEqual(bits, copybits);
-
-            //If we replace extension the object this should all continue to work as before
-            copybits = copy.ToBuilder()
-                .SetExtension(Unittest.OptionalInt32Extension, optionalInt32)
-                .Build().ToByteArray();
-            Assert.AreEqual(bits, copybits);
-        }
-
-        [Test]
-        public void TestRecoverMissingFields()
-        {
-            TestMissingFieldsA msga = TestMissingFieldsA.CreateBuilder()
-                .SetId(1001)
-                .SetName("Name")
-                .SetEmail("missing@field.value")
-                .Build();
-
-            //serialize to type B and verify all fields exist
-            TestMissingFieldsB msgb = TestMissingFieldsB.ParseFrom(msga.ToByteArray());
-            Assert.AreEqual(1001, msgb.Id);
-            Assert.AreEqual("Name", msgb.Name);
-            Assert.IsFalse(msgb.HasWebsite);
-            Assert.AreEqual(1, msgb.UnknownFields.FieldDictionary.Count);
-            Assert.AreEqual("missing@field.value",
-                            msgb.UnknownFields[TestMissingFieldsA.EmailFieldNumber].LengthDelimitedList[0].ToStringUtf8());
-
-            //serializes exactly the same (at least for this simple example)
-            Assert.AreEqual(msga.ToByteArray(), msgb.ToByteArray());
-            Assert.AreEqual(msga, TestMissingFieldsA.ParseFrom(msgb.ToByteArray()));
-
-            //now re-create an exact copy of A from serialized B
-            TestMissingFieldsA copya = TestMissingFieldsA.ParseFrom(msgb.ToByteArray());
-            Assert.AreEqual(msga, copya);
-            Assert.AreEqual(1001, copya.Id);
-            Assert.AreEqual("Name", copya.Name);
-            Assert.AreEqual("missing@field.value", copya.Email);
-
-            //Now we modify B... and try again
-            msgb = msgb.ToBuilder().SetWebsite("http://new.missing.field").Build();
-            //Does B still have the missing field?
-            Assert.AreEqual(1, msgb.UnknownFields.FieldDictionary.Count);
-
-            //Convert back to A and see if all fields are there?
-            copya = TestMissingFieldsA.ParseFrom(msgb.ToByteArray());
-            Assert.AreNotEqual(msga, copya);
-            Assert.AreEqual(1001, copya.Id);
-            Assert.AreEqual("Name", copya.Name);
-            Assert.AreEqual("missing@field.value", copya.Email);
-            Assert.AreEqual(1, copya.UnknownFields.FieldDictionary.Count);
-            Assert.AreEqual("http://new.missing.field",
-                            copya.UnknownFields[TestMissingFieldsB.WebsiteFieldNumber].LengthDelimitedList[0].
-                                ToStringUtf8());
-
-            //Lastly we can even still trip back to type B and see all fields:
-            TestMissingFieldsB copyb = TestMissingFieldsB.ParseFrom(copya.ToByteArray());
-            Assert.AreEqual(copya.ToByteArray().Length, copyb.ToByteArray().Length); //not exact order.
-            Assert.AreEqual(1001, copyb.Id);
-            Assert.AreEqual("Name", copyb.Name);
-            Assert.AreEqual("http://new.missing.field", copyb.Website);
-            Assert.AreEqual(1, copyb.UnknownFields.FieldDictionary.Count);
-            Assert.AreEqual("missing@field.value",
-                            copyb.UnknownFields[TestMissingFieldsA.EmailFieldNumber].LengthDelimitedList[0].ToStringUtf8
-                                ());
-        }
-
-        [Test]
-        public void TestRecoverMissingMessage()
-        {
-            TestMissingFieldsA.Types.SubA suba =
-                TestMissingFieldsA.Types.SubA.CreateBuilder().SetCount(3).AddValues("a").AddValues("b").AddValues("c").
-                    Build();
-            TestMissingFieldsA msga = TestMissingFieldsA.CreateBuilder()
-                .SetId(1001)
-                .SetName("Name")
-                .SetTestA(suba)
-                .Build();
-
-            //serialize to type B and verify all fields exist
-            TestMissingFieldsB msgb = TestMissingFieldsB.ParseFrom(msga.ToByteArray());
-            Assert.AreEqual(1001, msgb.Id);
-            Assert.AreEqual("Name", msgb.Name);
-            Assert.AreEqual(1, msgb.UnknownFields.FieldDictionary.Count);
-            Assert.AreEqual(suba.ToString(),
-                            TestMissingFieldsA.Types.SubA.ParseFrom(
-                                msgb.UnknownFields[TestMissingFieldsA.TestAFieldNumber].LengthDelimitedList[0]).ToString
-                                ());
-
-            //serializes exactly the same (at least for this simple example)
-            Assert.AreEqual(msga.ToByteArray(), msgb.ToByteArray());
-            Assert.AreEqual(msga, TestMissingFieldsA.ParseFrom(msgb.ToByteArray()));
-
-            //now re-create an exact copy of A from serialized B
-            TestMissingFieldsA copya = TestMissingFieldsA.ParseFrom(msgb.ToByteArray());
-            Assert.AreEqual(msga, copya);
-            Assert.AreEqual(1001, copya.Id);
-            Assert.AreEqual("Name", copya.Name);
-            Assert.AreEqual(suba, copya.TestA);
-
-            //Now we modify B... and try again
-            TestMissingFieldsB.Types.SubB subb =
-                TestMissingFieldsB.Types.SubB.CreateBuilder().AddValues("test-b").Build();
-            msgb = msgb.ToBuilder().SetTestB(subb).Build();
-            //Does B still have the missing field?
-            Assert.AreEqual(1, msgb.UnknownFields.FieldDictionary.Count);
-
-            //Convert back to A and see if all fields are there?
-            copya = TestMissingFieldsA.ParseFrom(msgb.ToByteArray());
-            Assert.AreNotEqual(msga, copya);
-            Assert.AreEqual(1001, copya.Id);
-            Assert.AreEqual("Name", copya.Name);
-            Assert.AreEqual(suba, copya.TestA);
-            Assert.AreEqual(1, copya.UnknownFields.FieldDictionary.Count);
-            Assert.AreEqual(subb.ToByteArray(),
-                            copya.UnknownFields[TestMissingFieldsB.TestBFieldNumber].LengthDelimitedList[0].ToByteArray());
-
-            //Lastly we can even still trip back to type B and see all fields:
-            TestMissingFieldsB copyb = TestMissingFieldsB.ParseFrom(copya.ToByteArray());
-            Assert.AreEqual(copya.ToByteArray().Length, copyb.ToByteArray().Length); //not exact order.
-            Assert.AreEqual(1001, copyb.Id);
-            Assert.AreEqual("Name", copyb.Name);
-            Assert.AreEqual(subb, copyb.TestB);
-            Assert.AreEqual(1, copyb.UnknownFields.FieldDictionary.Count);
-        }
-
-        [Test]
-        public void TestRestoreFromOtherType()
-        {
-            TestInteropPerson person = TestInteropPerson.CreateBuilder()
-                .SetId(123)
-                .SetName("abc")
-                .SetEmail("abc@123.com")
-                .AddRangeCodes(new[] {1, 2, 3})
-                .AddPhone(TestInteropPerson.Types.PhoneNumber.CreateBuilder().SetNumber("555-1234").Build())
-                .AddPhone(TestInteropPerson.Types.PhoneNumber.CreateBuilder().SetNumber("555-5678").Build())
-                .AddAddresses(
-                    TestInteropPerson.Types.Addresses.CreateBuilder().SetAddress("123 Seseme").SetCity("Wonderland").
-                        SetState("NA").SetZip(12345).Build())
-                .SetExtension(UnittestExtrasFull.EmployeeId,
-                              TestInteropEmployeeId.CreateBuilder().SetNumber("123").Build())
-                .Build();
-            Assert.IsTrue(person.IsInitialized);
-
-            TestEmptyMessage temp = TestEmptyMessage.ParseFrom(person.ToByteArray());
-            Assert.AreEqual(7, temp.UnknownFields.FieldDictionary.Count);
-            temp = temp.ToBuilder().Build();
-            Assert.AreEqual(7, temp.UnknownFields.FieldDictionary.Count);
-
-            ExtensionRegistry registry = ExtensionRegistry.CreateInstance();
-            UnittestExtrasFull.RegisterAllExtensions(registry);
-
-            TestInteropPerson copy = TestInteropPerson.ParseFrom(temp.ToByteArray(), registry);
-            Assert.AreEqual(person, copy);
-            Assert.AreEqual(person.ToByteArray(), copy.ToByteArray());
-        }
-    }
-}

+ 0 - 6
csharp/src/ProtocolBuffersLite.Test/Properties/AppManifest.xml

@@ -1,6 +0,0 @@
-<Deployment xmlns="http://schemas.microsoft.com/client/2007/deployment"
-        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
->
-    <Deployment.Parts>
-    </Deployment.Parts>
-</Deployment>

+ 0 - 7
csharp/src/ProtocolBuffersLite.Test/Properties/OutOfBrowserSettings.xml

@@ -1,7 +0,0 @@
-<OutOfBrowserSettings ShortName="ProtocolBuffers.Test" EnableGPUAcceleration="False" ShowInstallMenuItem="False">
-  <OutOfBrowserSettings.Blurb>ProtocolBuffers.Test</OutOfBrowserSettings.Blurb>
-  <OutOfBrowserSettings.WindowSettings>
-    <WindowSettings Title="ProtocolBuffers.Test" />
-  </OutOfBrowserSettings.WindowSettings>
-  <OutOfBrowserSettings.Icons />
-</OutOfBrowserSettings>

+ 0 - 113
csharp/src/ProtocolBuffersLite.Test/ProtocolBuffersLite.Test.csproj

@@ -1,113 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>9.0.30729</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{EE01ED24-3750-4567-9A23-1DB676A15610}</ProjectGuid>
-    <OutputType>Library</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>Google.ProtocolBuffers</RootNamespace>
-    <AssemblyName>Google.ProtocolBuffersLite.Test</AssemblyName>
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
-    <FileAlignment>512</FileAlignment>
-    <SignAssembly>true</SignAssembly>
-    <AssemblyOriginatorKeyFile>..\..\keys\Google.ProtocolBuffers.snk</AssemblyOriginatorKeyFile>
-    <OldToolsVersion>3.5</OldToolsVersion>
-    <TargetFrameworkProfile>
-    </TargetFrameworkProfile>
-    <NuGetPackageImportStamp>
-    </NuGetPackageImportStamp>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
-    <OutputPath>bin\Debug</OutputPath>
-    <IntermediateOutputPath>obj\Debug\</IntermediateOutputPath>
-    <DefineConstants>DEBUG;TRACE;$(EnvironmentFlavor);$(EnvironmentTemplate)</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <NoStdLib>true</NoStdLib>
-    <GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>
-    <Prefer32Bit>false</Prefer32Bit>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
-    <OutputPath>bin\Release</OutputPath>
-    <IntermediateOutputPath>obj\Release\</IntermediateOutputPath>
-    <DefineConstants>TRACE;$(EnvironmentFlavor);$(EnvironmentTemplate)</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <NoStdLib>true</NoStdLib>
-    <GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>
-    <Prefer32Bit>false</Prefer32Bit>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="mscorlib" />
-    <Reference Include="nunit.core, Version=2.6.4.14350, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
-      <HintPath>..\packages\NUnitTestAdapter.2.0.0\lib\nunit.core.dll</HintPath>
-      <Private>True</Private>
-    </Reference>
-    <Reference Include="nunit.core.interfaces, Version=2.6.4.14350, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
-      <HintPath>..\packages\NUnitTestAdapter.2.0.0\lib\nunit.core.interfaces.dll</HintPath>
-      <Private>True</Private>
-    </Reference>
-    <Reference Include="nunit.framework, Version=2.6.4.14350, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
-      <HintPath>..\packages\NUnit.2.6.4\lib\nunit.framework.dll</HintPath>
-      <Private>True</Private>
-    </Reference>
-    <Reference Include="nunit.util, Version=2.6.4.14350, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
-      <HintPath>..\packages\NUnitTestAdapter.2.0.0\lib\nunit.util.dll</HintPath>
-      <Private>True</Private>
-    </Reference>
-    <Reference Include="NUnit.VisualStudio.TestAdapter, Version=2.0.0.0, Culture=neutral, PublicKeyToken=4cb40d35494691ac, processorArchitecture=MSIL">
-      <HintPath>..\packages\NUnitTestAdapter.2.0.0\lib\NUnit.VisualStudio.TestAdapter.dll</HintPath>
-      <Private>True</Private>
-    </Reference>
-    <Reference Include="System" />
-    <Reference Include="System.Xml" />
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="..\ProtocolBuffers.Test\Properties\AssemblyInfo.cs">
-      <Link>Properties\AssemblyInfo.cs</Link>
-    </Compile>
-    <Compile Include="AbstractBuilderLiteTest.cs" />
-    <Compile Include="AbstractMessageLiteTest.cs" />
-    <Compile Include="ExtendableBuilderLiteTest.cs" />
-    <Compile Include="ExtendableMessageLiteTest.cs" />
-    <Compile Include="LiteTest.cs" />
-    <Compile Include="TestLiteByApi.cs" />
-    <Compile Include="TestProtos\UnittestExtrasLite.cs" />
-    <Compile Include="TestProtos\UnittestImportLite.cs" />
-    <Compile Include="TestProtos\UnittestImportPublicLite.cs" />
-    <Compile Include="TestProtos\UnittestLite.cs" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\ProtocolBuffers.Serialization\ProtocolBuffersLite.Serialization.csproj">
-      <Project>{E067A59D-9D0A-4A1F-92B1-38E4457241D1}</Project>
-      <Name>ProtocolBuffersLite.Serialization</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\ProtocolBuffers\ProtocolBuffersLite.csproj">
-      <Project>{6969BDCE-D925-43F3-94AC-A531E6DF2591}</Project>
-      <Name>ProtocolBuffersLite</Name>
-      <Private>True</Private>
-    </ProjectReference>
-  </ItemGroup>
-  <ItemGroup>
-    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="packages.config" />
-  </ItemGroup>
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
-       Other similar extension points exist, see Microsoft.Common.targets.
-  <Target Name="BeforeBuild">
-  </Target>
-  <Target Name="AfterBuild">
-  </Target>
-  -->
-</Project>

+ 0 - 110
csharp/src/ProtocolBuffersLite.Test/ProtocolBuffersLiteMixed.Test.csproj

@@ -1,110 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>9.0.30729</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{EEFFED24-3750-4567-9A23-1DB676A15610}</ProjectGuid>
-    <OutputType>Library</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>Google.ProtocolBuffers</RootNamespace>
-    <AssemblyName>Google.ProtocolBuffersMixedLite.Test</AssemblyName>
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
-    <FileAlignment>512</FileAlignment>
-    <SignAssembly>true</SignAssembly>
-    <AssemblyOriginatorKeyFile>..\..\keys\Google.ProtocolBuffers.snk</AssemblyOriginatorKeyFile>
-    <OldToolsVersion>3.5</OldToolsVersion>
-    <TargetFrameworkProfile>
-    </TargetFrameworkProfile>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
-    <OutputPath>bin\Debug</OutputPath>
-    <IntermediateOutputPath>obj\Debug\</IntermediateOutputPath>
-    <DefineConstants>DEBUG;TRACE;$(EnvironmentFlavor);$(EnvironmentTemplate)</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <NoStdLib>true</NoStdLib>
-    <GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>
-    <Prefer32Bit>false</Prefer32Bit>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
-    <OutputPath>bin\Release</OutputPath>
-    <IntermediateOutputPath>obj\Release\</IntermediateOutputPath>
-    <DefineConstants>TRACE;$(EnvironmentFlavor);$(EnvironmentTemplate)</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <NoStdLib>true</NoStdLib>
-    <GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>
-    <Prefer32Bit>false</Prefer32Bit>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="mscorlib" />
-    <Reference Include="nunit.core, Version=2.6.4.14350, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
-      <HintPath>..\packages\NUnitTestAdapter.2.0.0\lib\nunit.core.dll</HintPath>
-      <Private>True</Private>
-    </Reference>
-    <Reference Include="nunit.core.interfaces, Version=2.6.4.14350, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
-      <HintPath>..\packages\NUnitTestAdapter.2.0.0\lib\nunit.core.interfaces.dll</HintPath>
-      <Private>True</Private>
-    </Reference>
-    <Reference Include="nunit.framework, Version=2.6.4.14350, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
-      <HintPath>..\packages\NUnit.2.6.4\lib\nunit.framework.dll</HintPath>
-      <Private>True</Private>
-    </Reference>
-    <Reference Include="nunit.util, Version=2.6.4.14350, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
-      <HintPath>..\packages\NUnitTestAdapter.2.0.0\lib\nunit.util.dll</HintPath>
-      <Private>True</Private>
-    </Reference>
-    <Reference Include="NUnit.VisualStudio.TestAdapter, Version=2.0.0.0, Culture=neutral, PublicKeyToken=4cb40d35494691ac, processorArchitecture=MSIL">
-      <HintPath>..\packages\NUnitTestAdapter.2.0.0\lib\NUnit.VisualStudio.TestAdapter.dll</HintPath>
-      <Private>True</Private>
-    </Reference>
-    <Reference Include="System" />
-    <Reference Include="System.Xml" />
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="..\ProtocolBuffers.Test\Properties\AssemblyInfo.cs">
-      <Link>Properties\AssemblyInfo.cs</Link>
-    </Compile>
-    <Compile Include="AbstractBuilderLiteTest.cs" />
-    <Compile Include="AbstractMessageLiteTest.cs" />
-    <Compile Include="ExtendableBuilderLiteTest.cs" />
-    <Compile Include="ExtendableMessageLiteTest.cs" />
-    <Compile Include="InteropLiteTest.cs" />
-    <Compile Include="LiteTest.cs" />
-    <Compile Include="MissingFieldAndExtensionTest.cs" />
-    <Compile Include="TestLiteByApi.cs" />
-    <Compile Include="TestProtos\Unittest.cs" />
-    <Compile Include="TestProtos\UnittestExtrasFull.cs" />
-    <Compile Include="TestProtos\UnittestExtrasLite.cs" />
-    <Compile Include="TestProtos\UnittestImport.cs" />
-    <Compile Include="TestProtos\UnittestImportLite.cs" />
-    <Compile Include="TestProtos\UnittestImportPublic.cs" />
-    <Compile Include="TestProtos\UnittestImportPublicLite.cs" />
-    <Compile Include="TestProtos\UnittestLite.cs" />
-    <Compile Include="TestProtos\UnittestLiteImportsNonlite.cs" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\ProtocolBuffers\ProtocolBuffers.csproj">
-      <Project>{6908BDCE-D925-43F3-94AC-A531E6DF2591}</Project>
-      <Name>ProtocolBuffers</Name>
-    </ProjectReference>
-  </ItemGroup>
-  <ItemGroup>
-    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
-  </ItemGroup>
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
-       Other similar extension points exist, see Microsoft.Common.targets.
-  <Target Name="BeforeBuild">
-  </Target>
-  <Target Name="AfterBuild">
-  </Target>
-  -->
-</Project>

+ 0 - 120
csharp/src/ProtocolBuffersLite.Test/TestLiteByApi.cs

@@ -1,120 +0,0 @@
-#region Copyright notice and license
-
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc.  All rights reserved.
-// http://github.com/jskeet/dotnet-protobufs/
-// Original C++/Java/Python code:
-// http://code.google.com/p/protobuf/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-#endregion
-
-using Google.ProtocolBuffers.TestProtos;
-using NUnit.Framework;
-
-namespace Google.ProtocolBuffers
-{
-    public class TestLiteByApi
-    {
-        [Test]
-        public void TestAllTypesEquality()
-        {
-            TestAllTypesLite msg = TestAllTypesLite.DefaultInstance;
-            TestAllTypesLite copy = msg.ToBuilder().Build();
-            Assert.AreEqual(msg.GetHashCode(), copy.GetHashCode());
-            Assert.IsTrue(msg.Equals(copy));
-            msg = msg.ToBuilder().SetOptionalString("Hi").Build();
-            Assert.AreNotEqual(msg.GetHashCode(), copy.GetHashCode());
-            Assert.IsFalse(msg.Equals(copy));
-            copy = copy.ToBuilder().SetOptionalString("Hi").Build();
-            Assert.AreEqual(msg.GetHashCode(), copy.GetHashCode());
-            Assert.IsTrue(msg.Equals(copy));
-        }
-
-        [Test]
-        public void TestEqualityOnExtensions()
-        {
-            TestAllExtensionsLite msg = TestAllExtensionsLite.DefaultInstance;
-            TestAllExtensionsLite copy = msg.ToBuilder().Build();
-            Assert.AreEqual(msg.GetHashCode(), copy.GetHashCode());
-            Assert.IsTrue(msg.Equals(copy));
-            msg = msg.ToBuilder().SetExtension(UnittestLite.OptionalStringExtensionLite, "Hi").Build();
-            Assert.AreNotEqual(msg.GetHashCode(), copy.GetHashCode());
-            Assert.IsFalse(msg.Equals(copy));
-            copy = copy.ToBuilder().SetExtension(UnittestLite.OptionalStringExtensionLite, "Hi").Build();
-            Assert.AreEqual(msg.GetHashCode(), copy.GetHashCode());
-            Assert.IsTrue(msg.Equals(copy));
-        }
-
-        [Test]
-        public void TestAllTypesToString()
-        {
-            TestAllTypesLite msg = TestAllTypesLite.DefaultInstance;
-            TestAllTypesLite copy = msg.ToBuilder().Build();
-            Assert.AreEqual(msg.ToString(), copy.ToString());
-            Assert.AreEqual(0, msg.ToString().Length);
-            msg = msg.ToBuilder().SetOptionalInt32(-1).Build();
-            Assert.AreEqual("optional_int32: -1", msg.ToString().TrimEnd());
-            msg = msg.ToBuilder().SetOptionalString("abc123").Build();
-            Assert.AreEqual("optional_int32: -1\noptional_string: \"abc123\"",
-                            msg.ToString().Replace("\r", "").TrimEnd());
-        }
-
-        [Test]
-        public void TestAllTypesDefaultedRoundTrip()
-        {
-            TestAllTypesLite msg = TestAllTypesLite.DefaultInstance;
-            Assert.IsTrue(msg.IsInitialized);
-            TestAllTypesLite copy = TestAllTypesLite.CreateBuilder().MergeFrom(msg.ToByteArray()).Build();
-            Assert.AreEqual(msg.ToByteArray(), copy.ToByteArray());
-        }
-
-        [Test]
-        public void TestAllTypesModifiedRoundTrip()
-        {
-            TestAllTypesLite msg = TestAllTypesLite.DefaultInstance;
-            msg.ToBuilder()
-                .SetOptionalBool(true)
-                .SetOptionalCord("Hi")
-                .SetOptionalDouble(1.123)
-                .SetOptionalForeignEnum(ForeignEnumLite.FOREIGN_LITE_FOO)
-                .SetOptionalForeignMessage(ForeignMessageLite.CreateBuilder().SetC('c').Build())
-                .SetOptionalGroup(TestAllTypesLite.Types.OptionalGroup.CreateBuilder().SetA('a').Build())
-                .SetOptionalImportEnum(ImportEnumLite.IMPORT_LITE_BAR)
-                .SetOptionalInt32(32)
-                .SetOptionalInt64(64)
-                .SetOptionalNestedEnum(TestAllTypesLite.Types.NestedEnum.FOO)
-                .SetOptionalString("SetOptionalString")
-                .AddRepeatedGroup(TestAllTypesLite.Types.RepeatedGroup.CreateBuilder().SetA('a').Build())
-                .AddRepeatedGroup(TestAllTypesLite.Types.RepeatedGroup.CreateBuilder().SetA('A').Build())
-                ;
-            TestAllTypesLite copy = TestAllTypesLite.CreateBuilder().MergeFrom(msg.ToByteArray()).Build();
-            Assert.AreEqual(msg.ToByteArray(), copy.ToByteArray());
-        }
-    }
-}

+ 0 - 33878
csharp/src/ProtocolBuffersLite.Test/TestProtos/Unittest.cs

@@ -1,33878 +0,0 @@
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
-// source: google/protobuf/unittest.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 Unittest {
-
-    #region Extension registration
-    public static void RegisterAllExtensions(pb::ExtensionRegistry registry) {
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.OptionalInt32Extension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.OptionalInt64Extension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.OptionalUint32Extension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.OptionalUint64Extension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.OptionalSint32Extension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.OptionalSint64Extension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.OptionalFixed32Extension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.OptionalFixed64Extension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.OptionalSfixed32Extension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.OptionalSfixed64Extension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.OptionalFloatExtension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.OptionalDoubleExtension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.OptionalBoolExtension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.OptionalStringExtension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.OptionalBytesExtension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.OptionalGroupExtension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.OptionalNestedMessageExtension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.OptionalForeignMessageExtension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.OptionalImportMessageExtension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.OptionalNestedEnumExtension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.OptionalForeignEnumExtension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.OptionalImportEnumExtension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.OptionalStringPieceExtension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.OptionalCordExtension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.OptionalPublicImportMessageExtension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.OptionalLazyMessageExtension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.RepeatedInt32Extension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.RepeatedInt64Extension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.RepeatedUint32Extension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.RepeatedUint64Extension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.RepeatedSint32Extension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.RepeatedSint64Extension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.RepeatedFixed32Extension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.RepeatedFixed64Extension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.RepeatedSfixed32Extension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.RepeatedSfixed64Extension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.RepeatedFloatExtension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.RepeatedDoubleExtension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.RepeatedBoolExtension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.RepeatedStringExtension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.RepeatedBytesExtension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.RepeatedGroupExtension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.RepeatedNestedMessageExtension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.RepeatedForeignMessageExtension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.RepeatedImportMessageExtension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.RepeatedNestedEnumExtension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.RepeatedForeignEnumExtension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.RepeatedImportEnumExtension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.RepeatedStringPieceExtension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.RepeatedCordExtension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.RepeatedLazyMessageExtension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.DefaultInt32Extension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.DefaultInt64Extension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.DefaultUint32Extension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.DefaultUint64Extension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.DefaultSint32Extension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.DefaultSint64Extension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.DefaultFixed32Extension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.DefaultFixed64Extension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.DefaultSfixed32Extension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.DefaultSfixed64Extension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.DefaultFloatExtension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.DefaultDoubleExtension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.DefaultBoolExtension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.DefaultStringExtension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.DefaultBytesExtension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.DefaultNestedEnumExtension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.DefaultForeignEnumExtension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.DefaultImportEnumExtension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.DefaultStringPieceExtension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.DefaultCordExtension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.OneofUint32Extension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.OneofNestedMessageExtension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.OneofStringExtension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.OneofBytesExtension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.MyExtensionString);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.MyExtensionInt);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.PackedInt32Extension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.PackedInt64Extension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.PackedUint32Extension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.PackedUint64Extension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.PackedSint32Extension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.PackedSint64Extension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.PackedFixed32Extension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.PackedFixed64Extension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.PackedSfixed32Extension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.PackedSfixed64Extension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.PackedFloatExtension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.PackedDoubleExtension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.PackedBoolExtension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.PackedEnumExtension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.UnpackedInt32Extension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.UnpackedInt64Extension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.UnpackedUint32Extension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.UnpackedUint64Extension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.UnpackedSint32Extension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.UnpackedSint64Extension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.UnpackedFixed32Extension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.UnpackedFixed64Extension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.UnpackedSfixed32Extension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.UnpackedSfixed64Extension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.UnpackedFloatExtension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.UnpackedDoubleExtension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.UnpackedBoolExtension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.Unittest.UnpackedEnumExtension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.TestNestedExtension.Test);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.TestNestedExtension.NestedStringExtension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.TestRequired.Single);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.TestRequired.Multi);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.OptionalExt);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.RepeatedExt);
-    }
-    #endregion
-    #region Extensions
-    public const int OptionalInt32ExtensionFieldNumber = 1;
-    public static pb::GeneratedExtensionBase<int> OptionalInt32Extension;
-    public const int OptionalInt64ExtensionFieldNumber = 2;
-    public static pb::GeneratedExtensionBase<long> OptionalInt64Extension;
-    public const int OptionalUint32ExtensionFieldNumber = 3;
-    public static pb::GeneratedExtensionBase<uint> OptionalUint32Extension;
-    public const int OptionalUint64ExtensionFieldNumber = 4;
-    public static pb::GeneratedExtensionBase<ulong> OptionalUint64Extension;
-    public const int OptionalSint32ExtensionFieldNumber = 5;
-    public static pb::GeneratedExtensionBase<int> OptionalSint32Extension;
-    public const int OptionalSint64ExtensionFieldNumber = 6;
-    public static pb::GeneratedExtensionBase<long> OptionalSint64Extension;
-    public const int OptionalFixed32ExtensionFieldNumber = 7;
-    public static pb::GeneratedExtensionBase<uint> OptionalFixed32Extension;
-    public const int OptionalFixed64ExtensionFieldNumber = 8;
-    public static pb::GeneratedExtensionBase<ulong> OptionalFixed64Extension;
-    public const int OptionalSfixed32ExtensionFieldNumber = 9;
-    public static pb::GeneratedExtensionBase<int> OptionalSfixed32Extension;
-    public const int OptionalSfixed64ExtensionFieldNumber = 10;
-    public static pb::GeneratedExtensionBase<long> OptionalSfixed64Extension;
-    public const int OptionalFloatExtensionFieldNumber = 11;
-    public static pb::GeneratedExtensionBase<float> OptionalFloatExtension;
-    public const int OptionalDoubleExtensionFieldNumber = 12;
-    public static pb::GeneratedExtensionBase<double> OptionalDoubleExtension;
-    public const int OptionalBoolExtensionFieldNumber = 13;
-    public static pb::GeneratedExtensionBase<bool> OptionalBoolExtension;
-    public const int OptionalStringExtensionFieldNumber = 14;
-    public static pb::GeneratedExtensionBase<string> OptionalStringExtension;
-    public const int OptionalBytesExtensionFieldNumber = 15;
-    public static pb::GeneratedExtensionBase<pb::ByteString> OptionalBytesExtension;
-    public const int OptionalGroupExtensionFieldNumber = 16;
-    public static pb::GeneratedExtensionBase<global::Google.ProtocolBuffers.TestProtos.OptionalGroup_extension> OptionalGroupExtension;
-    public const int OptionalNestedMessageExtensionFieldNumber = 18;
-    public static pb::GeneratedExtensionBase<global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage> OptionalNestedMessageExtension;
-    public const int OptionalForeignMessageExtensionFieldNumber = 19;
-    public static pb::GeneratedExtensionBase<global::Google.ProtocolBuffers.TestProtos.ForeignMessage> OptionalForeignMessageExtension;
-    public const int OptionalImportMessageExtensionFieldNumber = 20;
-    public static pb::GeneratedExtensionBase<global::Google.ProtocolBuffers.TestProtos.ImportMessage> OptionalImportMessageExtension;
-    public const int OptionalNestedEnumExtensionFieldNumber = 21;
-    public static pb::GeneratedExtensionBase<global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedEnum> OptionalNestedEnumExtension;
-    public const int OptionalForeignEnumExtensionFieldNumber = 22;
-    public static pb::GeneratedExtensionBase<global::Google.ProtocolBuffers.TestProtos.ForeignEnum> OptionalForeignEnumExtension;
-    public const int OptionalImportEnumExtensionFieldNumber = 23;
-    public static pb::GeneratedExtensionBase<global::Google.ProtocolBuffers.TestProtos.ImportEnum> OptionalImportEnumExtension;
-    public const int OptionalStringPieceExtensionFieldNumber = 24;
-    public static pb::GeneratedExtensionBase<string> OptionalStringPieceExtension;
-    public const int OptionalCordExtensionFieldNumber = 25;
-    public static pb::GeneratedExtensionBase<string> OptionalCordExtension;
-    public const int OptionalPublicImportMessageExtensionFieldNumber = 26;
-    public static pb::GeneratedExtensionBase<global::Google.ProtocolBuffers.TestProtos.PublicImportMessage> OptionalPublicImportMessageExtension;
-    public const int OptionalLazyMessageExtensionFieldNumber = 27;
-    public static pb::GeneratedExtensionBase<global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage> OptionalLazyMessageExtension;
-    public const int RepeatedInt32ExtensionFieldNumber = 31;
-    public static pb::GeneratedExtensionBase<scg::IList<int>> RepeatedInt32Extension;
-    public const int RepeatedInt64ExtensionFieldNumber = 32;
-    public static pb::GeneratedExtensionBase<scg::IList<long>> RepeatedInt64Extension;
-    public const int RepeatedUint32ExtensionFieldNumber = 33;
-    public static pb::GeneratedExtensionBase<scg::IList<uint>> RepeatedUint32Extension;
-    public const int RepeatedUint64ExtensionFieldNumber = 34;
-    public static pb::GeneratedExtensionBase<scg::IList<ulong>> RepeatedUint64Extension;
-    public const int RepeatedSint32ExtensionFieldNumber = 35;
-    public static pb::GeneratedExtensionBase<scg::IList<int>> RepeatedSint32Extension;
-    public const int RepeatedSint64ExtensionFieldNumber = 36;
-    public static pb::GeneratedExtensionBase<scg::IList<long>> RepeatedSint64Extension;
-    public const int RepeatedFixed32ExtensionFieldNumber = 37;
-    public static pb::GeneratedExtensionBase<scg::IList<uint>> RepeatedFixed32Extension;
-    public const int RepeatedFixed64ExtensionFieldNumber = 38;
-    public static pb::GeneratedExtensionBase<scg::IList<ulong>> RepeatedFixed64Extension;
-    public const int RepeatedSfixed32ExtensionFieldNumber = 39;
-    public static pb::GeneratedExtensionBase<scg::IList<int>> RepeatedSfixed32Extension;
-    public const int RepeatedSfixed64ExtensionFieldNumber = 40;
-    public static pb::GeneratedExtensionBase<scg::IList<long>> RepeatedSfixed64Extension;
-    public const int RepeatedFloatExtensionFieldNumber = 41;
-    public static pb::GeneratedExtensionBase<scg::IList<float>> RepeatedFloatExtension;
-    public const int RepeatedDoubleExtensionFieldNumber = 42;
-    public static pb::GeneratedExtensionBase<scg::IList<double>> RepeatedDoubleExtension;
-    public const int RepeatedBoolExtensionFieldNumber = 43;
-    public static pb::GeneratedExtensionBase<scg::IList<bool>> RepeatedBoolExtension;
-    public const int RepeatedStringExtensionFieldNumber = 44;
-    public static pb::GeneratedExtensionBase<scg::IList<string>> RepeatedStringExtension;
-    public const int RepeatedBytesExtensionFieldNumber = 45;
-    public static pb::GeneratedExtensionBase<scg::IList<pb::ByteString>> RepeatedBytesExtension;
-    public const int RepeatedGroupExtensionFieldNumber = 46;
-    public static pb::GeneratedExtensionBase<scg::IList<global::Google.ProtocolBuffers.TestProtos.RepeatedGroup_extension>> RepeatedGroupExtension;
-    public const int RepeatedNestedMessageExtensionFieldNumber = 48;
-    public static pb::GeneratedExtensionBase<scg::IList<global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage>> RepeatedNestedMessageExtension;
-    public const int RepeatedForeignMessageExtensionFieldNumber = 49;
-    public static pb::GeneratedExtensionBase<scg::IList<global::Google.ProtocolBuffers.TestProtos.ForeignMessage>> RepeatedForeignMessageExtension;
-    public const int RepeatedImportMessageExtensionFieldNumber = 50;
-    public static pb::GeneratedExtensionBase<scg::IList<global::Google.ProtocolBuffers.TestProtos.ImportMessage>> RepeatedImportMessageExtension;
-    public const int RepeatedNestedEnumExtensionFieldNumber = 51;
-    public static pb::GeneratedExtensionBase<scg::IList<global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedEnum>> RepeatedNestedEnumExtension;
-    public const int RepeatedForeignEnumExtensionFieldNumber = 52;
-    public static pb::GeneratedExtensionBase<scg::IList<global::Google.ProtocolBuffers.TestProtos.ForeignEnum>> RepeatedForeignEnumExtension;
-    public const int RepeatedImportEnumExtensionFieldNumber = 53;
-    public static pb::GeneratedExtensionBase<scg::IList<global::Google.ProtocolBuffers.TestProtos.ImportEnum>> RepeatedImportEnumExtension;
-    public const int RepeatedStringPieceExtensionFieldNumber = 54;
-    public static pb::GeneratedExtensionBase<scg::IList<string>> RepeatedStringPieceExtension;
-    public const int RepeatedCordExtensionFieldNumber = 55;
-    public static pb::GeneratedExtensionBase<scg::IList<string>> RepeatedCordExtension;
-    public const int RepeatedLazyMessageExtensionFieldNumber = 57;
-    public static pb::GeneratedExtensionBase<scg::IList<global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage>> RepeatedLazyMessageExtension;
-    public const int DefaultInt32ExtensionFieldNumber = 61;
-    public static pb::GeneratedExtensionBase<int> DefaultInt32Extension;
-    public const int DefaultInt64ExtensionFieldNumber = 62;
-    public static pb::GeneratedExtensionBase<long> DefaultInt64Extension;
-    public const int DefaultUint32ExtensionFieldNumber = 63;
-    public static pb::GeneratedExtensionBase<uint> DefaultUint32Extension;
-    public const int DefaultUint64ExtensionFieldNumber = 64;
-    public static pb::GeneratedExtensionBase<ulong> DefaultUint64Extension;
-    public const int DefaultSint32ExtensionFieldNumber = 65;
-    public static pb::GeneratedExtensionBase<int> DefaultSint32Extension;
-    public const int DefaultSint64ExtensionFieldNumber = 66;
-    public static pb::GeneratedExtensionBase<long> DefaultSint64Extension;
-    public const int DefaultFixed32ExtensionFieldNumber = 67;
-    public static pb::GeneratedExtensionBase<uint> DefaultFixed32Extension;
-    public const int DefaultFixed64ExtensionFieldNumber = 68;
-    public static pb::GeneratedExtensionBase<ulong> DefaultFixed64Extension;
-    public const int DefaultSfixed32ExtensionFieldNumber = 69;
-    public static pb::GeneratedExtensionBase<int> DefaultSfixed32Extension;
-    public const int DefaultSfixed64ExtensionFieldNumber = 70;
-    public static pb::GeneratedExtensionBase<long> DefaultSfixed64Extension;
-    public const int DefaultFloatExtensionFieldNumber = 71;
-    public static pb::GeneratedExtensionBase<float> DefaultFloatExtension;
-    public const int DefaultDoubleExtensionFieldNumber = 72;
-    public static pb::GeneratedExtensionBase<double> DefaultDoubleExtension;
-    public const int DefaultBoolExtensionFieldNumber = 73;
-    public static pb::GeneratedExtensionBase<bool> DefaultBoolExtension;
-    public const int DefaultStringExtensionFieldNumber = 74;
-    public static pb::GeneratedExtensionBase<string> DefaultStringExtension;
-    public const int DefaultBytesExtensionFieldNumber = 75;
-    public static pb::GeneratedExtensionBase<pb::ByteString> DefaultBytesExtension;
-    public const int DefaultNestedEnumExtensionFieldNumber = 81;
-    public static pb::GeneratedExtensionBase<global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedEnum> DefaultNestedEnumExtension;
-    public const int DefaultForeignEnumExtensionFieldNumber = 82;
-    public static pb::GeneratedExtensionBase<global::Google.ProtocolBuffers.TestProtos.ForeignEnum> DefaultForeignEnumExtension;
-    public const int DefaultImportEnumExtensionFieldNumber = 83;
-    public static pb::GeneratedExtensionBase<global::Google.ProtocolBuffers.TestProtos.ImportEnum> DefaultImportEnumExtension;
-    public const int DefaultStringPieceExtensionFieldNumber = 84;
-    public static pb::GeneratedExtensionBase<string> DefaultStringPieceExtension;
-    public const int DefaultCordExtensionFieldNumber = 85;
-    public static pb::GeneratedExtensionBase<string> DefaultCordExtension;
-    public const int OneofUint32ExtensionFieldNumber = 111;
-    public static pb::GeneratedExtensionBase<uint> OneofUint32Extension;
-    public const int OneofNestedMessageExtensionFieldNumber = 112;
-    public static pb::GeneratedExtensionBase<global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage> OneofNestedMessageExtension;
-    public const int OneofStringExtensionFieldNumber = 113;
-    public static pb::GeneratedExtensionBase<string> OneofStringExtension;
-    public const int OneofBytesExtensionFieldNumber = 114;
-    public static pb::GeneratedExtensionBase<pb::ByteString> OneofBytesExtension;
-    public const int MyExtensionStringFieldNumber = 50;
-    public static pb::GeneratedExtensionBase<string> MyExtensionString;
-    public const int MyExtensionIntFieldNumber = 5;
-    public static pb::GeneratedExtensionBase<int> MyExtensionInt;
-    public const int PackedInt32ExtensionFieldNumber = 90;
-    public static pb::GeneratedExtensionBase<scg::IList<int>> PackedInt32Extension;
-    public const int PackedInt64ExtensionFieldNumber = 91;
-    public static pb::GeneratedExtensionBase<scg::IList<long>> PackedInt64Extension;
-    public const int PackedUint32ExtensionFieldNumber = 92;
-    public static pb::GeneratedExtensionBase<scg::IList<uint>> PackedUint32Extension;
-    public const int PackedUint64ExtensionFieldNumber = 93;
-    public static pb::GeneratedExtensionBase<scg::IList<ulong>> PackedUint64Extension;
-    public const int PackedSint32ExtensionFieldNumber = 94;
-    public static pb::GeneratedExtensionBase<scg::IList<int>> PackedSint32Extension;
-    public const int PackedSint64ExtensionFieldNumber = 95;
-    public static pb::GeneratedExtensionBase<scg::IList<long>> PackedSint64Extension;
-    public const int PackedFixed32ExtensionFieldNumber = 96;
-    public static pb::GeneratedExtensionBase<scg::IList<uint>> PackedFixed32Extension;
-    public const int PackedFixed64ExtensionFieldNumber = 97;
-    public static pb::GeneratedExtensionBase<scg::IList<ulong>> PackedFixed64Extension;
-    public const int PackedSfixed32ExtensionFieldNumber = 98;
-    public static pb::GeneratedExtensionBase<scg::IList<int>> PackedSfixed32Extension;
-    public const int PackedSfixed64ExtensionFieldNumber = 99;
-    public static pb::GeneratedExtensionBase<scg::IList<long>> PackedSfixed64Extension;
-    public const int PackedFloatExtensionFieldNumber = 100;
-    public static pb::GeneratedExtensionBase<scg::IList<float>> PackedFloatExtension;
-    public const int PackedDoubleExtensionFieldNumber = 101;
-    public static pb::GeneratedExtensionBase<scg::IList<double>> PackedDoubleExtension;
-    public const int PackedBoolExtensionFieldNumber = 102;
-    public static pb::GeneratedExtensionBase<scg::IList<bool>> PackedBoolExtension;
-    public const int PackedEnumExtensionFieldNumber = 103;
-    public static pb::GeneratedExtensionBase<scg::IList<global::Google.ProtocolBuffers.TestProtos.ForeignEnum>> PackedEnumExtension;
-    public const int UnpackedInt32ExtensionFieldNumber = 90;
-    public static pb::GeneratedExtensionBase<scg::IList<int>> UnpackedInt32Extension;
-    public const int UnpackedInt64ExtensionFieldNumber = 91;
-    public static pb::GeneratedExtensionBase<scg::IList<long>> UnpackedInt64Extension;
-    public const int UnpackedUint32ExtensionFieldNumber = 92;
-    public static pb::GeneratedExtensionBase<scg::IList<uint>> UnpackedUint32Extension;
-    public const int UnpackedUint64ExtensionFieldNumber = 93;
-    public static pb::GeneratedExtensionBase<scg::IList<ulong>> UnpackedUint64Extension;
-    public const int UnpackedSint32ExtensionFieldNumber = 94;
-    public static pb::GeneratedExtensionBase<scg::IList<int>> UnpackedSint32Extension;
-    public const int UnpackedSint64ExtensionFieldNumber = 95;
-    public static pb::GeneratedExtensionBase<scg::IList<long>> UnpackedSint64Extension;
-    public const int UnpackedFixed32ExtensionFieldNumber = 96;
-    public static pb::GeneratedExtensionBase<scg::IList<uint>> UnpackedFixed32Extension;
-    public const int UnpackedFixed64ExtensionFieldNumber = 97;
-    public static pb::GeneratedExtensionBase<scg::IList<ulong>> UnpackedFixed64Extension;
-    public const int UnpackedSfixed32ExtensionFieldNumber = 98;
-    public static pb::GeneratedExtensionBase<scg::IList<int>> UnpackedSfixed32Extension;
-    public const int UnpackedSfixed64ExtensionFieldNumber = 99;
-    public static pb::GeneratedExtensionBase<scg::IList<long>> UnpackedSfixed64Extension;
-    public const int UnpackedFloatExtensionFieldNumber = 100;
-    public static pb::GeneratedExtensionBase<scg::IList<float>> UnpackedFloatExtension;
-    public const int UnpackedDoubleExtensionFieldNumber = 101;
-    public static pb::GeneratedExtensionBase<scg::IList<double>> UnpackedDoubleExtension;
-    public const int UnpackedBoolExtensionFieldNumber = 102;
-    public static pb::GeneratedExtensionBase<scg::IList<bool>> UnpackedBoolExtension;
-    public const int UnpackedEnumExtensionFieldNumber = 103;
-    public static pb::GeneratedExtensionBase<scg::IList<global::Google.ProtocolBuffers.TestProtos.ForeignEnum>> UnpackedEnumExtension;
-    #endregion
-
-    #region Static variables
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestAllTypes__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestAllTypes, global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Builder> internal__static_protobuf_unittest_TestAllTypes__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_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_protobuf_unittest_TestAllTypes_NestedMessage__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestAllTypes_OptionalGroup__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.OptionalGroup, global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.OptionalGroup.Builder> internal__static_protobuf_unittest_TestAllTypes_OptionalGroup__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestAllTypes_RepeatedGroup__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.RepeatedGroup, global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.RepeatedGroup.Builder> internal__static_protobuf_unittest_TestAllTypes_RepeatedGroup__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_NestedTestAllTypes__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.NestedTestAllTypes, global::Google.ProtocolBuffers.TestProtos.NestedTestAllTypes.Builder> internal__static_protobuf_unittest_NestedTestAllTypes__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestDeprecatedFields__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestDeprecatedFields, global::Google.ProtocolBuffers.TestProtos.TestDeprecatedFields.Builder> internal__static_protobuf_unittest_TestDeprecatedFields__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_ForeignMessage__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.ForeignMessage, global::Google.ProtocolBuffers.TestProtos.ForeignMessage.Builder> internal__static_protobuf_unittest_ForeignMessage__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestReservedFields__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestReservedFields, global::Google.ProtocolBuffers.TestProtos.TestReservedFields.Builder> internal__static_protobuf_unittest_TestReservedFields__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestAllExtensions__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestAllExtensions, global::Google.ProtocolBuffers.TestProtos.TestAllExtensions.Builder> internal__static_protobuf_unittest_TestAllExtensions__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_OptionalGroup_extension__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.OptionalGroup_extension, global::Google.ProtocolBuffers.TestProtos.OptionalGroup_extension.Builder> internal__static_protobuf_unittest_OptionalGroup_extension__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_RepeatedGroup_extension__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.RepeatedGroup_extension, global::Google.ProtocolBuffers.TestProtos.RepeatedGroup_extension.Builder> internal__static_protobuf_unittest_RepeatedGroup_extension__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestNestedExtension__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestNestedExtension, global::Google.ProtocolBuffers.TestProtos.TestNestedExtension.Builder> internal__static_protobuf_unittest_TestNestedExtension__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestRequired__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestRequired, global::Google.ProtocolBuffers.TestProtos.TestRequired.Builder> internal__static_protobuf_unittest_TestRequired__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestRequiredForeign__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestRequiredForeign, global::Google.ProtocolBuffers.TestProtos.TestRequiredForeign.Builder> internal__static_protobuf_unittest_TestRequiredForeign__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestForeignNested__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestForeignNested, global::Google.ProtocolBuffers.TestProtos.TestForeignNested.Builder> internal__static_protobuf_unittest_TestForeignNested__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestEmptyMessage__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestEmptyMessage, global::Google.ProtocolBuffers.TestProtos.TestEmptyMessage.Builder> internal__static_protobuf_unittest_TestEmptyMessage__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestEmptyMessageWithExtensions__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestEmptyMessageWithExtensions, global::Google.ProtocolBuffers.TestProtos.TestEmptyMessageWithExtensions.Builder> internal__static_protobuf_unittest_TestEmptyMessageWithExtensions__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestMultipleExtensionRanges__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestMultipleExtensionRanges, global::Google.ProtocolBuffers.TestProtos.TestMultipleExtensionRanges.Builder> internal__static_protobuf_unittest_TestMultipleExtensionRanges__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestReallyLargeTagNumber__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestReallyLargeTagNumber, global::Google.ProtocolBuffers.TestProtos.TestReallyLargeTagNumber.Builder> internal__static_protobuf_unittest_TestReallyLargeTagNumber__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestRecursiveMessage__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestRecursiveMessage, global::Google.ProtocolBuffers.TestProtos.TestRecursiveMessage.Builder> internal__static_protobuf_unittest_TestRecursiveMessage__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestMutualRecursionA__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionA, global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionA.Builder> internal__static_protobuf_unittest_TestMutualRecursionA__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestMutualRecursionB__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionB, global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionB.Builder> internal__static_protobuf_unittest_TestMutualRecursionB__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestDupFieldNumber__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber, global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Builder> internal__static_protobuf_unittest_TestDupFieldNumber__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestDupFieldNumber_Foo__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Foo, global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Foo.Builder> internal__static_protobuf_unittest_TestDupFieldNumber_Foo__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestDupFieldNumber_Bar__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Bar, global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Bar.Builder> internal__static_protobuf_unittest_TestDupFieldNumber_Bar__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestEagerMessage__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestEagerMessage, global::Google.ProtocolBuffers.TestProtos.TestEagerMessage.Builder> internal__static_protobuf_unittest_TestEagerMessage__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestLazyMessage__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestLazyMessage, global::Google.ProtocolBuffers.TestProtos.TestLazyMessage.Builder> internal__static_protobuf_unittest_TestLazyMessage__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestNestedMessageHasBits__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestNestedMessageHasBits, global::Google.ProtocolBuffers.TestProtos.TestNestedMessageHasBits.Builder> internal__static_protobuf_unittest_TestNestedMessageHasBits__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestNestedMessageHasBits_NestedMessage__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestNestedMessageHasBits.Types.NestedMessage, global::Google.ProtocolBuffers.TestProtos.TestNestedMessageHasBits.Types.NestedMessage.Builder> internal__static_protobuf_unittest_TestNestedMessageHasBits_NestedMessage__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestCamelCaseFieldNames__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestCamelCaseFieldNames, global::Google.ProtocolBuffers.TestProtos.TestCamelCaseFieldNames.Builder> internal__static_protobuf_unittest_TestCamelCaseFieldNames__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestFieldOrderings__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestFieldOrderings, global::Google.ProtocolBuffers.TestProtos.TestFieldOrderings.Builder> internal__static_protobuf_unittest_TestFieldOrderings__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestFieldOrderings_NestedMessage__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestFieldOrderings.Types.NestedMessage, global::Google.ProtocolBuffers.TestProtos.TestFieldOrderings.Types.NestedMessage.Builder> internal__static_protobuf_unittest_TestFieldOrderings_NestedMessage__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestExtremeDefaultValues__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestExtremeDefaultValues, global::Google.ProtocolBuffers.TestProtos.TestExtremeDefaultValues.Builder> internal__static_protobuf_unittest_TestExtremeDefaultValues__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_SparseEnumMessage__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.SparseEnumMessage, global::Google.ProtocolBuffers.TestProtos.SparseEnumMessage.Builder> internal__static_protobuf_unittest_SparseEnumMessage__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_OneString__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.OneString, global::Google.ProtocolBuffers.TestProtos.OneString.Builder> internal__static_protobuf_unittest_OneString__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_MoreString__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.MoreString, global::Google.ProtocolBuffers.TestProtos.MoreString.Builder> internal__static_protobuf_unittest_MoreString__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_OneBytes__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.OneBytes, global::Google.ProtocolBuffers.TestProtos.OneBytes.Builder> internal__static_protobuf_unittest_OneBytes__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_MoreBytes__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.MoreBytes, global::Google.ProtocolBuffers.TestProtos.MoreBytes.Builder> internal__static_protobuf_unittest_MoreBytes__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_Int32Message__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.Int32Message, global::Google.ProtocolBuffers.TestProtos.Int32Message.Builder> internal__static_protobuf_unittest_Int32Message__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_Uint32Message__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.Uint32Message, global::Google.ProtocolBuffers.TestProtos.Uint32Message.Builder> internal__static_protobuf_unittest_Uint32Message__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_Int64Message__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.Int64Message, global::Google.ProtocolBuffers.TestProtos.Int64Message.Builder> internal__static_protobuf_unittest_Int64Message__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_Uint64Message__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.Uint64Message, global::Google.ProtocolBuffers.TestProtos.Uint64Message.Builder> internal__static_protobuf_unittest_Uint64Message__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_BoolMessage__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.BoolMessage, global::Google.ProtocolBuffers.TestProtos.BoolMessage.Builder> internal__static_protobuf_unittest_BoolMessage__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestOneof__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestOneof, global::Google.ProtocolBuffers.TestProtos.TestOneof.Builder> internal__static_protobuf_unittest_TestOneof__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestOneof_FooGroup__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestOneof.Types.FooGroup, global::Google.ProtocolBuffers.TestProtos.TestOneof.Types.FooGroup.Builder> internal__static_protobuf_unittest_TestOneof_FooGroup__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestOneofBackwardsCompatible__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestOneofBackwardsCompatible, global::Google.ProtocolBuffers.TestProtos.TestOneofBackwardsCompatible.Builder> internal__static_protobuf_unittest_TestOneofBackwardsCompatible__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestOneofBackwardsCompatible_FooGroup__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestOneofBackwardsCompatible.Types.FooGroup, global::Google.ProtocolBuffers.TestProtos.TestOneofBackwardsCompatible.Types.FooGroup.Builder> internal__static_protobuf_unittest_TestOneofBackwardsCompatible_FooGroup__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestOneof2__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestOneof2, global::Google.ProtocolBuffers.TestProtos.TestOneof2.Builder> internal__static_protobuf_unittest_TestOneof2__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestOneof2_FooGroup__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.FooGroup, global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.FooGroup.Builder> internal__static_protobuf_unittest_TestOneof2_FooGroup__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestOneof2_NestedMessage__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage, global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage.Builder> internal__static_protobuf_unittest_TestOneof2_NestedMessage__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestRequiredOneof__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestRequiredOneof, global::Google.ProtocolBuffers.TestProtos.TestRequiredOneof.Builder> internal__static_protobuf_unittest_TestRequiredOneof__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestRequiredOneof_NestedMessage__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestRequiredOneof.Types.NestedMessage, global::Google.ProtocolBuffers.TestProtos.TestRequiredOneof.Types.NestedMessage.Builder> internal__static_protobuf_unittest_TestRequiredOneof_NestedMessage__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestPackedTypes__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestPackedTypes, global::Google.ProtocolBuffers.TestProtos.TestPackedTypes.Builder> internal__static_protobuf_unittest_TestPackedTypes__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestUnpackedTypes__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestUnpackedTypes, global::Google.ProtocolBuffers.TestProtos.TestUnpackedTypes.Builder> internal__static_protobuf_unittest_TestUnpackedTypes__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestPackedExtensions__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestPackedExtensions, global::Google.ProtocolBuffers.TestProtos.TestPackedExtensions.Builder> internal__static_protobuf_unittest_TestPackedExtensions__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestUnpackedExtensions__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensions, global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensions.Builder> internal__static_protobuf_unittest_TestUnpackedExtensions__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestDynamicExtensions__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestDynamicExtensions, global::Google.ProtocolBuffers.TestProtos.TestDynamicExtensions.Builder> internal__static_protobuf_unittest_TestDynamicExtensions__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestDynamicExtensions_DynamicMessageType__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestDynamicExtensions.Types.DynamicMessageType, global::Google.ProtocolBuffers.TestProtos.TestDynamicExtensions.Types.DynamicMessageType.Builder> internal__static_protobuf_unittest_TestDynamicExtensions_DynamicMessageType__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestRepeatedScalarDifferentTagSizes__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestRepeatedScalarDifferentTagSizes, global::Google.ProtocolBuffers.TestProtos.TestRepeatedScalarDifferentTagSizes.Builder> internal__static_protobuf_unittest_TestRepeatedScalarDifferentTagSizes__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestParsingMerge__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestParsingMerge, global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Builder> internal__static_protobuf_unittest_TestParsingMerge__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestParsingMerge_RepeatedFieldsGenerator__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Types.RepeatedFieldsGenerator, global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Types.RepeatedFieldsGenerator.Builder> internal__static_protobuf_unittest_TestParsingMerge_RepeatedFieldsGenerator__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestParsingMerge_RepeatedFieldsGenerator_Group1__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Types.RepeatedFieldsGenerator.Types.Group1, global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Types.RepeatedFieldsGenerator.Types.Group1.Builder> internal__static_protobuf_unittest_TestParsingMerge_RepeatedFieldsGenerator_Group1__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestParsingMerge_RepeatedFieldsGenerator_Group2__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Types.RepeatedFieldsGenerator.Types.Group2, global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Types.RepeatedFieldsGenerator.Types.Group2.Builder> internal__static_protobuf_unittest_TestParsingMerge_RepeatedFieldsGenerator_Group2__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestParsingMerge_OptionalGroup__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Types.OptionalGroup, global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Types.OptionalGroup.Builder> internal__static_protobuf_unittest_TestParsingMerge_OptionalGroup__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestParsingMerge_RepeatedGroup__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Types.RepeatedGroup, global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Types.RepeatedGroup.Builder> internal__static_protobuf_unittest_TestParsingMerge_RepeatedGroup__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestCommentInjectionMessage__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestCommentInjectionMessage, global::Google.ProtocolBuffers.TestProtos.TestCommentInjectionMessage.Builder> internal__static_protobuf_unittest_TestCommentInjectionMessage__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_FooRequest__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.FooRequest, global::Google.ProtocolBuffers.TestProtos.FooRequest.Builder> internal__static_protobuf_unittest_FooRequest__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_FooResponse__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.FooResponse, global::Google.ProtocolBuffers.TestProtos.FooResponse.Builder> internal__static_protobuf_unittest_FooResponse__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_FooClientMessage__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.FooClientMessage, global::Google.ProtocolBuffers.TestProtos.FooClientMessage.Builder> internal__static_protobuf_unittest_FooClientMessage__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_FooServerMessage__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.FooServerMessage, global::Google.ProtocolBuffers.TestProtos.FooServerMessage.Builder> internal__static_protobuf_unittest_FooServerMessage__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_BarRequest__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.BarRequest, global::Google.ProtocolBuffers.TestProtos.BarRequest.Builder> internal__static_protobuf_unittest_BarRequest__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_BarResponse__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.BarResponse, global::Google.ProtocolBuffers.TestProtos.BarResponse.Builder> internal__static_protobuf_unittest_BarResponse__FieldAccessorTable;
-    #endregion
-    #region Descriptor
-    public static pbd::FileDescriptor Descriptor {
-      get { return descriptor; }
-    }
-    private static pbd::FileDescriptor descriptor;
-
-    static Unittest() {
-      byte[] descriptorData = global::System.Convert.FromBase64String(
-          string.Concat(
-            "Ch5nb29nbGUvcHJvdG9idWYvdW5pdHRlc3QucHJvdG8SEXByb3RvYnVmX3Vu", 
-            "aXR0ZXN0GiVnb29nbGUvcHJvdG9idWYvdW5pdHRlc3RfaW1wb3J0LnByb3Rv", 
-            "Iu0YCgxUZXN0QWxsVHlwZXMSFgoOb3B0aW9uYWxfaW50MzIYASABKAUSFgoO", 
-            "b3B0aW9uYWxfaW50NjQYAiABKAMSFwoPb3B0aW9uYWxfdWludDMyGAMgASgN", 
-            "EhcKD29wdGlvbmFsX3VpbnQ2NBgEIAEoBBIXCg9vcHRpb25hbF9zaW50MzIY", 
-            "BSABKBESFwoPb3B0aW9uYWxfc2ludDY0GAYgASgSEhgKEG9wdGlvbmFsX2Zp", 
-            "eGVkMzIYByABKAcSGAoQb3B0aW9uYWxfZml4ZWQ2NBgIIAEoBhIZChFvcHRp", 
-            "b25hbF9zZml4ZWQzMhgJIAEoDxIZChFvcHRpb25hbF9zZml4ZWQ2NBgKIAEo", 
-            "EBIWCg5vcHRpb25hbF9mbG9hdBgLIAEoAhIXCg9vcHRpb25hbF9kb3VibGUY", 
-            "DCABKAESFQoNb3B0aW9uYWxfYm9vbBgNIAEoCBIXCg9vcHRpb25hbF9zdHJp", 
-            "bmcYDiABKAkSFgoOb3B0aW9uYWxfYnl0ZXMYDyABKAwSRAoNb3B0aW9uYWxn", 
-            "cm91cBgQIAEoCjItLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxUeXBlcy5P", 
-            "cHRpb25hbEdyb3VwEk4KF29wdGlvbmFsX25lc3RlZF9tZXNzYWdlGBIgASgL", 
-            "Mi0ucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbFR5cGVzLk5lc3RlZE1lc3Nh", 
-            "Z2USQwoYb3B0aW9uYWxfZm9yZWlnbl9tZXNzYWdlGBMgASgLMiEucHJvdG9i", 
-            "dWZfdW5pdHRlc3QuRm9yZWlnbk1lc3NhZ2USSAoXb3B0aW9uYWxfaW1wb3J0", 
-            "X21lc3NhZ2UYFCABKAsyJy5wcm90b2J1Zl91bml0dGVzdF9pbXBvcnQuSW1w", 
-            "b3J0TWVzc2FnZRJIChRvcHRpb25hbF9uZXN0ZWRfZW51bRgVIAEoDjIqLnBy", 
-            "b3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxUeXBlcy5OZXN0ZWRFbnVtEj0KFW9w", 
-            "dGlvbmFsX2ZvcmVpZ25fZW51bRgWIAEoDjIeLnByb3RvYnVmX3VuaXR0ZXN0", 
-            "LkZvcmVpZ25FbnVtEkIKFG9wdGlvbmFsX2ltcG9ydF9lbnVtGBcgASgOMiQu", 
-            "cHJvdG9idWZfdW5pdHRlc3RfaW1wb3J0LkltcG9ydEVudW0SIQoVb3B0aW9u", 
-            "YWxfc3RyaW5nX3BpZWNlGBggASgJQgIIAhIZCg1vcHRpb25hbF9jb3JkGBkg", 
-            "ASgJQgIIARJVCh5vcHRpb25hbF9wdWJsaWNfaW1wb3J0X21lc3NhZ2UYGiAB", 
-            "KAsyLS5wcm90b2J1Zl91bml0dGVzdF9pbXBvcnQuUHVibGljSW1wb3J0TWVz", 
-            "c2FnZRJQChVvcHRpb25hbF9sYXp5X21lc3NhZ2UYGyABKAsyLS5wcm90b2J1", 
-            "Zl91bml0dGVzdC5UZXN0QWxsVHlwZXMuTmVzdGVkTWVzc2FnZUICKAESFgoO", 
-            "cmVwZWF0ZWRfaW50MzIYHyADKAUSFgoOcmVwZWF0ZWRfaW50NjQYICADKAMS", 
-            "FwoPcmVwZWF0ZWRfdWludDMyGCEgAygNEhcKD3JlcGVhdGVkX3VpbnQ2NBgi", 
-            "IAMoBBIXCg9yZXBlYXRlZF9zaW50MzIYIyADKBESFwoPcmVwZWF0ZWRfc2lu", 
-            "dDY0GCQgAygSEhgKEHJlcGVhdGVkX2ZpeGVkMzIYJSADKAcSGAoQcmVwZWF0", 
-            "ZWRfZml4ZWQ2NBgmIAMoBhIZChFyZXBlYXRlZF9zZml4ZWQzMhgnIAMoDxIZ", 
-            "ChFyZXBlYXRlZF9zZml4ZWQ2NBgoIAMoEBIWCg5yZXBlYXRlZF9mbG9hdBgp", 
-            "IAMoAhIXCg9yZXBlYXRlZF9kb3VibGUYKiADKAESFQoNcmVwZWF0ZWRfYm9v", 
-            "bBgrIAMoCBIXCg9yZXBlYXRlZF9zdHJpbmcYLCADKAkSFgoOcmVwZWF0ZWRf", 
-            "Ynl0ZXMYLSADKAwSRAoNcmVwZWF0ZWRncm91cBguIAMoCjItLnByb3RvYnVm", 
-            "X3VuaXR0ZXN0LlRlc3RBbGxUeXBlcy5SZXBlYXRlZEdyb3VwEk4KF3JlcGVh", 
-            "dGVkX25lc3RlZF9tZXNzYWdlGDAgAygLMi0ucHJvdG9idWZfdW5pdHRlc3Qu", 
-            "VGVzdEFsbFR5cGVzLk5lc3RlZE1lc3NhZ2USQwoYcmVwZWF0ZWRfZm9yZWln", 
-            "bl9tZXNzYWdlGDEgAygLMiEucHJvdG9idWZfdW5pdHRlc3QuRm9yZWlnbk1l", 
-            "c3NhZ2USSAoXcmVwZWF0ZWRfaW1wb3J0X21lc3NhZ2UYMiADKAsyJy5wcm90", 
-            "b2J1Zl91bml0dGVzdF9pbXBvcnQuSW1wb3J0TWVzc2FnZRJIChRyZXBlYXRl", 
-            "ZF9uZXN0ZWRfZW51bRgzIAMoDjIqLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RB", 
-            "bGxUeXBlcy5OZXN0ZWRFbnVtEj0KFXJlcGVhdGVkX2ZvcmVpZ25fZW51bRg0", 
-            "IAMoDjIeLnByb3RvYnVmX3VuaXR0ZXN0LkZvcmVpZ25FbnVtEkIKFHJlcGVh", 
-            "dGVkX2ltcG9ydF9lbnVtGDUgAygOMiQucHJvdG9idWZfdW5pdHRlc3RfaW1w", 
-            "b3J0LkltcG9ydEVudW0SIQoVcmVwZWF0ZWRfc3RyaW5nX3BpZWNlGDYgAygJ", 
-            "QgIIAhIZCg1yZXBlYXRlZF9jb3JkGDcgAygJQgIIARJQChVyZXBlYXRlZF9s", 
-            "YXp5X21lc3NhZ2UYOSADKAsyLS5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxs", 
-            "VHlwZXMuTmVzdGVkTWVzc2FnZUICKAESGQoNZGVmYXVsdF9pbnQzMhg9IAEo", 
-            "BToCNDESGQoNZGVmYXVsdF9pbnQ2NBg+IAEoAzoCNDISGgoOZGVmYXVsdF91", 
-            "aW50MzIYPyABKA06AjQzEhoKDmRlZmF1bHRfdWludDY0GEAgASgEOgI0NBIb", 
-            "Cg5kZWZhdWx0X3NpbnQzMhhBIAEoEToDLTQ1EhoKDmRlZmF1bHRfc2ludDY0", 
-            "GEIgASgSOgI0NhIbCg9kZWZhdWx0X2ZpeGVkMzIYQyABKAc6AjQ3EhsKD2Rl", 
-            "ZmF1bHRfZml4ZWQ2NBhEIAEoBjoCNDgSHAoQZGVmYXVsdF9zZml4ZWQzMhhF", 
-            "IAEoDzoCNDkSHQoQZGVmYXVsdF9zZml4ZWQ2NBhGIAEoEDoDLTUwEhsKDWRl", 
-            "ZmF1bHRfZmxvYXQYRyABKAI6BDUxLjUSHQoOZGVmYXVsdF9kb3VibGUYSCAB", 
-            "KAE6BTUyMDAwEhoKDGRlZmF1bHRfYm9vbBhJIAEoCDoEdHJ1ZRIdCg5kZWZh", 
-            "dWx0X3N0cmluZxhKIAEoCToFaGVsbG8SHAoNZGVmYXVsdF9ieXRlcxhLIAEo", 
-            "DDoFd29ybGQSTAoTZGVmYXVsdF9uZXN0ZWRfZW51bRhRIAEoDjIqLnByb3Rv", 
-            "YnVmX3VuaXR0ZXN0LlRlc3RBbGxUeXBlcy5OZXN0ZWRFbnVtOgNCQVISSQoU", 
-            "ZGVmYXVsdF9mb3JlaWduX2VudW0YUiABKA4yHi5wcm90b2J1Zl91bml0dGVz", 
-            "dC5Gb3JlaWduRW51bToLRk9SRUlHTl9CQVISTQoTZGVmYXVsdF9pbXBvcnRf", 
-            "ZW51bRhTIAEoDjIkLnByb3RvYnVmX3VuaXR0ZXN0X2ltcG9ydC5JbXBvcnRF", 
-            "bnVtOgpJTVBPUlRfQkFSEiUKFGRlZmF1bHRfc3RyaW5nX3BpZWNlGFQgASgJ", 
-            "OgNhYmNCAggCEh0KDGRlZmF1bHRfY29yZBhVIAEoCToDMTIzQgIIARIWCgxv", 
-            "bmVvZl91aW50MzIYbyABKA1IABJNChRvbmVvZl9uZXN0ZWRfbWVzc2FnZRhw", 
-            "IAEoCzItLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxUeXBlcy5OZXN0ZWRN", 
-            "ZXNzYWdlSAASFgoMb25lb2Zfc3RyaW5nGHEgASgJSAASFQoLb25lb2ZfYnl0", 
-            "ZXMYciABKAxIABobCg1OZXN0ZWRNZXNzYWdlEgoKAmJiGAEgASgFGhoKDU9w", 
-            "dGlvbmFsR3JvdXASCQoBYRgRIAEoBRoaCg1SZXBlYXRlZEdyb3VwEgkKAWEY", 
-            "LyABKAUiOQoKTmVzdGVkRW51bRIHCgNGT08QARIHCgNCQVIQAhIHCgNCQVoQ", 
-            "AxIQCgNORUcQ////////////AUINCgtvbmVvZl9maWVsZCK7AQoSTmVzdGVk", 
-            "VGVzdEFsbFR5cGVzEjQKBWNoaWxkGAEgASgLMiUucHJvdG9idWZfdW5pdHRl", 
-            "c3QuTmVzdGVkVGVzdEFsbFR5cGVzEjAKB3BheWxvYWQYAiABKAsyHy5wcm90", 
-            "b2J1Zl91bml0dGVzdC5UZXN0QWxsVHlwZXMSPQoOcmVwZWF0ZWRfY2hpbGQY", 
-            "AyADKAsyJS5wcm90b2J1Zl91bml0dGVzdC5OZXN0ZWRUZXN0QWxsVHlwZXMi", 
-            "NAoUVGVzdERlcHJlY2F0ZWRGaWVsZHMSHAoQZGVwcmVjYXRlZF9pbnQzMhgB", 
-            "IAEoBUICGAEiGwoORm9yZWlnbk1lc3NhZ2USCQoBYxgBIAEoBSIwChJUZXN0", 
-            "UmVzZXJ2ZWRGaWVsZHNKBAgCEANKBAgPEBBKBAgJEAxSA2JhclIDYmF6Ih0K", 
-            "EVRlc3RBbGxFeHRlbnNpb25zKggIARCAgICAAiIkChdPcHRpb25hbEdyb3Vw", 
-            "X2V4dGVuc2lvbhIJCgFhGBEgASgFIiQKF1JlcGVhdGVkR3JvdXBfZXh0ZW5z", 
-            "aW9uEgkKAWEYLyABKAUimAEKE1Rlc3ROZXN0ZWRFeHRlbnNpb24yOQoEdGVz", 
-            "dBIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGOoHIAEo", 
-            "CToEdGVzdDJGChduZXN0ZWRfc3RyaW5nX2V4dGVuc2lvbhIkLnByb3RvYnVm", 
-            "X3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGOsHIAEoCSLVBQoMVGVzdFJl", 
-            "cXVpcmVkEgkKAWEYASACKAUSDgoGZHVtbXkyGAIgASgFEgkKAWIYAyACKAUS", 
-            "DgoGZHVtbXk0GAQgASgFEg4KBmR1bW15NRgFIAEoBRIOCgZkdW1teTYYBiAB", 
-            "KAUSDgoGZHVtbXk3GAcgASgFEg4KBmR1bW15OBgIIAEoBRIOCgZkdW1teTkY", 
-            "CSABKAUSDwoHZHVtbXkxMBgKIAEoBRIPCgdkdW1teTExGAsgASgFEg8KB2R1", 
-            "bW15MTIYDCABKAUSDwoHZHVtbXkxMxgNIAEoBRIPCgdkdW1teTE0GA4gASgF", 
-            "Eg8KB2R1bW15MTUYDyABKAUSDwoHZHVtbXkxNhgQIAEoBRIPCgdkdW1teTE3", 
-            "GBEgASgFEg8KB2R1bW15MTgYEiABKAUSDwoHZHVtbXkxORgTIAEoBRIPCgdk", 
-            "dW1teTIwGBQgASgFEg8KB2R1bW15MjEYFSABKAUSDwoHZHVtbXkyMhgWIAEo", 
-            "BRIPCgdkdW1teTIzGBcgASgFEg8KB2R1bW15MjQYGCABKAUSDwoHZHVtbXky", 
-            "NRgZIAEoBRIPCgdkdW1teTI2GBogASgFEg8KB2R1bW15MjcYGyABKAUSDwoH", 
-            "ZHVtbXkyOBgcIAEoBRIPCgdkdW1teTI5GB0gASgFEg8KB2R1bW15MzAYHiAB", 
-            "KAUSDwoHZHVtbXkzMRgfIAEoBRIPCgdkdW1teTMyGCAgASgFEgkKAWMYISAC", 
-            "KAUyVgoGc2luZ2xlEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVu", 
-            "c2lvbnMY6AcgASgLMh8ucHJvdG9idWZfdW5pdHRlc3QuVGVzdFJlcXVpcmVk", 
-            "MlUKBW11bHRpEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lv", 
-            "bnMY6QcgAygLMh8ucHJvdG9idWZfdW5pdHRlc3QuVGVzdFJlcXVpcmVkIpoB", 
-            "ChNUZXN0UmVxdWlyZWRGb3JlaWduEjkKEG9wdGlvbmFsX21lc3NhZ2UYASAB", 
-            "KAsyHy5wcm90b2J1Zl91bml0dGVzdC5UZXN0UmVxdWlyZWQSOQoQcmVwZWF0", 
-            "ZWRfbWVzc2FnZRgCIAMoCzIfLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RSZXF1", 
-            "aXJlZBINCgVkdW1teRgDIAEoBSJaChFUZXN0Rm9yZWlnbk5lc3RlZBJFCg5m", 
-            "b3JlaWduX25lc3RlZBgBIAEoCzItLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RB", 
-            "bGxUeXBlcy5OZXN0ZWRNZXNzYWdlIhIKEFRlc3RFbXB0eU1lc3NhZ2UiKgoe", 
-            "VGVzdEVtcHR5TWVzc2FnZVdpdGhFeHRlbnNpb25zKggIARCAgICAAiI3ChtU", 
-            "ZXN0TXVsdGlwbGVFeHRlbnNpb25SYW5nZXMqBAgqECsqBgivIBCUISoKCICA", 
-            "BBCAgICAAiI0ChhUZXN0UmVhbGx5TGFyZ2VUYWdOdW1iZXISCQoBYRgBIAEo", 
-            "BRINCgJiYhj///9/IAEoBSJVChRUZXN0UmVjdXJzaXZlTWVzc2FnZRIyCgFh", 
-            "GAEgASgLMicucHJvdG9idWZfdW5pdHRlc3QuVGVzdFJlY3Vyc2l2ZU1lc3Nh", 
-            "Z2USCQoBaRgCIAEoBSJLChRUZXN0TXV0dWFsUmVjdXJzaW9uQRIzCgJiYhgB", 
-            "IAEoCzInLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RNdXR1YWxSZWN1cnNpb25C", 
-            "ImIKFFRlc3RNdXR1YWxSZWN1cnNpb25CEjIKAWEYASABKAsyJy5wcm90b2J1", 
-            "Zl91bml0dGVzdC5UZXN0TXV0dWFsUmVjdXJzaW9uQRIWCg5vcHRpb25hbF9p", 
-            "bnQzMhgCIAEoBSKzAQoSVGVzdER1cEZpZWxkTnVtYmVyEgkKAWEYASABKAUS", 
-            "NgoDZm9vGAIgASgKMikucHJvdG9idWZfdW5pdHRlc3QuVGVzdER1cEZpZWxk", 
-            "TnVtYmVyLkZvbxI2CgNiYXIYAyABKAoyKS5wcm90b2J1Zl91bml0dGVzdC5U", 
-            "ZXN0RHVwRmllbGROdW1iZXIuQmFyGhAKA0ZvbxIJCgFhGAEgASgFGhAKA0Jh", 
-            "chIJCgFhGAEgASgFIkwKEFRlc3RFYWdlck1lc3NhZ2USOAoLc3ViX21lc3Nh", 
-            "Z2UYASABKAsyHy5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsVHlwZXNCAigA", 
-            "IksKD1Rlc3RMYXp5TWVzc2FnZRI4CgtzdWJfbWVzc2FnZRgBIAEoCzIfLnBy", 
-            "b3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxUeXBlc0ICKAEigAIKGFRlc3ROZXN0", 
-            "ZWRNZXNzYWdlSGFzQml0cxJaChdvcHRpb25hbF9uZXN0ZWRfbWVzc2FnZRgB", 
-            "IAEoCzI5LnByb3RvYnVmX3VuaXR0ZXN0LlRlc3ROZXN0ZWRNZXNzYWdlSGFz", 
-            "Qml0cy5OZXN0ZWRNZXNzYWdlGocBCg1OZXN0ZWRNZXNzYWdlEiQKHG5lc3Rl", 
-            "ZG1lc3NhZ2VfcmVwZWF0ZWRfaW50MzIYASADKAUSUAolbmVzdGVkbWVzc2Fn", 
-            "ZV9yZXBlYXRlZF9mb3JlaWdubWVzc2FnZRgCIAMoCzIhLnByb3RvYnVmX3Vu", 
-            "aXR0ZXN0LkZvcmVpZ25NZXNzYWdlIuUDChdUZXN0Q2FtZWxDYXNlRmllbGRO", 
-            "YW1lcxIWCg5QcmltaXRpdmVGaWVsZBgBIAEoBRITCgtTdHJpbmdGaWVsZBgC", 
-            "IAEoCRIxCglFbnVtRmllbGQYAyABKA4yHi5wcm90b2J1Zl91bml0dGVzdC5G", 
-            "b3JlaWduRW51bRI3CgxNZXNzYWdlRmllbGQYBCABKAsyIS5wcm90b2J1Zl91", 
-            "bml0dGVzdC5Gb3JlaWduTWVzc2FnZRIcChBTdHJpbmdQaWVjZUZpZWxkGAUg", 
-            "ASgJQgIIAhIVCglDb3JkRmllbGQYBiABKAlCAggBEh4KFlJlcGVhdGVkUHJp", 
-            "bWl0aXZlRmllbGQYByADKAUSGwoTUmVwZWF0ZWRTdHJpbmdGaWVsZBgIIAMo", 
-            "CRI5ChFSZXBlYXRlZEVudW1GaWVsZBgJIAMoDjIeLnByb3RvYnVmX3VuaXR0", 
-            "ZXN0LkZvcmVpZ25FbnVtEj8KFFJlcGVhdGVkTWVzc2FnZUZpZWxkGAogAygL", 
-            "MiEucHJvdG9idWZfdW5pdHRlc3QuRm9yZWlnbk1lc3NhZ2USJAoYUmVwZWF0", 
-            "ZWRTdHJpbmdQaWVjZUZpZWxkGAsgAygJQgIIAhIdChFSZXBlYXRlZENvcmRG", 
-            "aWVsZBgMIAMoCUICCAEi1QEKElRlc3RGaWVsZE9yZGVyaW5ncxIRCglteV9z", 
-            "dHJpbmcYCyABKAkSDgoGbXlfaW50GAEgASgDEhAKCG15X2Zsb2F0GGUgASgC", 
-            "ElUKF29wdGlvbmFsX25lc3RlZF9tZXNzYWdlGMgBIAEoCzIzLnByb3RvYnVm", 
-            "X3VuaXR0ZXN0LlRlc3RGaWVsZE9yZGVyaW5ncy5OZXN0ZWRNZXNzYWdlGicK", 
-            "DU5lc3RlZE1lc3NhZ2USCgoCb28YAiABKAMSCgoCYmIYASABKAUqBAgCEAsq", 
-            "BAgMEGUitgcKGFRlc3RFeHRyZW1lRGVmYXVsdFZhbHVlcxI/Cg1lc2NhcGVk", 
-            "X2J5dGVzGAEgASgMOihcMDAwXDAwMVwwMDdcMDEwXDAxNFxuXHJcdFwwMTNc", 
-            "XFwnXCJcMzc2EiAKDGxhcmdlX3VpbnQzMhgCIAEoDToKNDI5NDk2NzI5NRIq", 
-            "CgxsYXJnZV91aW50NjQYAyABKAQ6FDE4NDQ2NzQ0MDczNzA5NTUxNjE1EiAK", 
-            "C3NtYWxsX2ludDMyGAQgASgFOgstMjE0NzQ4MzY0NxIpCgtzbWFsbF9pbnQ2", 
-            "NBgFIAEoAzoULTkyMjMzNzIwMzY4NTQ3NzU4MDcSJwoScmVhbGx5X3NtYWxs", 
-            "X2ludDMyGBUgASgFOgstMjE0NzQ4MzY0OBIwChJyZWFsbHlfc21hbGxfaW50", 
-            "NjQYFiABKAM6FC05MjIzMzcyMDM2ODU0Nzc1ODA4EhgKC3V0Zjhfc3RyaW5n", 
-            "GAYgASgJOgPhiLQSFQoKemVyb19mbG9hdBgHIAEoAjoBMBIUCglvbmVfZmxv", 
-            "YXQYCCABKAI6ATESGAoLc21hbGxfZmxvYXQYCSABKAI6AzEuNRIeChJuZWdh", 
-            "dGl2ZV9vbmVfZmxvYXQYCiABKAI6Ai0xEhwKDm5lZ2F0aXZlX2Zsb2F0GAsg", 
-            "ASgCOgQtMS41EhoKC2xhcmdlX2Zsb2F0GAwgASgCOgUyZSswOBIkChRzbWFs", 
-            "bF9uZWdhdGl2ZV9mbG9hdBgNIAEoAjoGLThlLTI4EhcKCmluZl9kb3VibGUY", 
-            "DiABKAE6A2luZhIcCg5uZWdfaW5mX2RvdWJsZRgPIAEoAToELWluZhIXCgpu", 
-            "YW5fZG91YmxlGBAgASgBOgNuYW4SFgoJaW5mX2Zsb2F0GBEgASgCOgNpbmYS", 
-            "GwoNbmVnX2luZl9mbG9hdBgSIAEoAjoELWluZhIWCgluYW5fZmxvYXQYEyAB", 
-            "KAI6A25hbhIrCgxjcHBfdHJpZ3JhcGgYFCABKAk6FT8gPyA/PyA/PyA/Pz8g", 
-            "Pz8vID8/LRIgChBzdHJpbmdfd2l0aF96ZXJvGBcgASgJOgZoZWwAbG8SIgoP", 
-            "Ynl0ZXNfd2l0aF96ZXJvGBggASgMOgl3b3JcMDAwbGQSKAoWc3RyaW5nX3Bp", 
-            "ZWNlX3dpdGhfemVybxgZIAEoCToEYWIAY0ICCAISIAoOY29yZF93aXRoX3pl", 
-            "cm8YGiABKAk6BDEyADNCAggBEiYKEnJlcGxhY2VtZW50X3N0cmluZxgbIAEo", 
-            "CToKJHt1bmtub3dufSJLChFTcGFyc2VFbnVtTWVzc2FnZRI2CgtzcGFyc2Vf", 
-            "ZW51bRgBIAEoDjIhLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RTcGFyc2VFbnVt", 
-            "IhkKCU9uZVN0cmluZxIMCgRkYXRhGAEgASgJIhoKCk1vcmVTdHJpbmcSDAoE", 
-            "ZGF0YRgBIAMoCSIYCghPbmVCeXRlcxIMCgRkYXRhGAEgASgMIhkKCU1vcmVC", 
-            "eXRlcxIMCgRkYXRhGAEgAygMIhwKDEludDMyTWVzc2FnZRIMCgRkYXRhGAEg", 
-            "ASgFIh0KDVVpbnQzMk1lc3NhZ2USDAoEZGF0YRgBIAEoDSIcCgxJbnQ2NE1l", 
-            "c3NhZ2USDAoEZGF0YRgBIAEoAyIdCg1VaW50NjRNZXNzYWdlEgwKBGRhdGEY", 
-            "ASABKAQiGwoLQm9vbE1lc3NhZ2USDAoEZGF0YRgBIAEoCCLQAQoJVGVzdE9u", 
-            "ZW9mEhEKB2Zvb19pbnQYASABKAVIABIUCgpmb29fc3RyaW5nGAIgASgJSAAS", 
-            "NgoLZm9vX21lc3NhZ2UYAyABKAsyHy5wcm90b2J1Zl91bml0dGVzdC5UZXN0", 
-            "QWxsVHlwZXNIABI5Cghmb29ncm91cBgEIAEoCjIlLnByb3RvYnVmX3VuaXR0", 
-            "ZXN0LlRlc3RPbmVvZi5Gb29Hcm91cEgAGiAKCEZvb0dyb3VwEgkKAWEYBSAB", 
-            "KAUSCQoBYhgGIAEoCUIFCgNmb28i5wEKHFRlc3RPbmVvZkJhY2t3YXJkc0Nv", 
-            "bXBhdGlibGUSDwoHZm9vX2ludBgBIAEoBRISCgpmb29fc3RyaW5nGAIgASgJ", 
-            "EjQKC2Zvb19tZXNzYWdlGAMgASgLMh8ucHJvdG9idWZfdW5pdHRlc3QuVGVz", 
-            "dEFsbFR5cGVzEkoKCGZvb2dyb3VwGAQgASgKMjgucHJvdG9idWZfdW5pdHRl", 
-            "c3QuVGVzdE9uZW9mQmFja3dhcmRzQ29tcGF0aWJsZS5Gb29Hcm91cBogCghG", 
-            "b29Hcm91cBIJCgFhGAUgASgFEgkKAWIYBiABKAkingYKClRlc3RPbmVvZjIS", 
-            "EQoHZm9vX2ludBgBIAEoBUgAEhQKCmZvb19zdHJpbmcYAiABKAlIABIWCghm", 
-            "b29fY29yZBgDIAEoCUICCAFIABIeChBmb29fc3RyaW5nX3BpZWNlGAQgASgJ", 
-            "QgIIAkgAEhMKCWZvb19ieXRlcxgFIAEoDEgAEjwKCGZvb19lbnVtGAYgASgO", 
-            "MigucHJvdG9idWZfdW5pdHRlc3QuVGVzdE9uZW9mMi5OZXN0ZWRFbnVtSAAS", 
-            "QgoLZm9vX21lc3NhZ2UYByABKAsyKy5wcm90b2J1Zl91bml0dGVzdC5UZXN0", 
-            "T25lb2YyLk5lc3RlZE1lc3NhZ2VIABI6Cghmb29ncm91cBgIIAEoCjImLnBy", 
-            "b3RvYnVmX3VuaXR0ZXN0LlRlc3RPbmVvZjIuRm9vR3JvdXBIABJLChBmb29f", 
-            "bGF6eV9tZXNzYWdlGAsgASgLMisucHJvdG9idWZfdW5pdHRlc3QuVGVzdE9u", 
-            "ZW9mMi5OZXN0ZWRNZXNzYWdlQgIoAUgAEhQKB2Jhcl9pbnQYDCABKAU6ATVI", 
-            "ARIcCgpiYXJfc3RyaW5nGA0gASgJOgZTVFJJTkdIARIcCghiYXJfY29yZBgO", 
-            "IAEoCToEQ09SREICCAFIARImChBiYXJfc3RyaW5nX3BpZWNlGA8gASgJOgZT", 
-            "UElFQ0VCAggCSAESGgoJYmFyX2J5dGVzGBAgASgMOgVCWVRFU0gBEkEKCGJh", 
-            "cl9lbnVtGBEgASgOMigucHJvdG9idWZfdW5pdHRlc3QuVGVzdE9uZW9mMi5O", 
-            "ZXN0ZWRFbnVtOgNCQVJIARIPCgdiYXpfaW50GBIgASgFEhcKCmJhel9zdHJp", 
-            "bmcYEyABKAk6A0JBWhogCghGb29Hcm91cBIJCgFhGAkgASgFEgkKAWIYCiAB", 
-            "KAkaMwoNTmVzdGVkTWVzc2FnZRIPCgdxdXhfaW50GAEgASgDEhEKCWNvcmdl", 
-            "X2ludBgCIAMoBSInCgpOZXN0ZWRFbnVtEgcKA0ZPTxABEgcKA0JBUhACEgcK", 
-            "A0JBWhADQgUKA2Zvb0IFCgNiYXIiuAEKEVRlc3RSZXF1aXJlZE9uZW9mEhEK", 
-            "B2Zvb19pbnQYASABKAVIABIUCgpmb29fc3RyaW5nGAIgASgJSAASSQoLZm9v", 
-            "X21lc3NhZ2UYAyABKAsyMi5wcm90b2J1Zl91bml0dGVzdC5UZXN0UmVxdWly", 
-            "ZWRPbmVvZi5OZXN0ZWRNZXNzYWdlSAAaKAoNTmVzdGVkTWVzc2FnZRIXCg9y", 
-            "ZXF1aXJlZF9kb3VibGUYASACKAFCBQoDZm9vIqoDCg9UZXN0UGFja2VkVHlw", 
-            "ZXMSGAoMcGFja2VkX2ludDMyGFogAygFQgIQARIYCgxwYWNrZWRfaW50NjQY", 
-            "WyADKANCAhABEhkKDXBhY2tlZF91aW50MzIYXCADKA1CAhABEhkKDXBhY2tl", 
-            "ZF91aW50NjQYXSADKARCAhABEhkKDXBhY2tlZF9zaW50MzIYXiADKBFCAhAB", 
-            "EhkKDXBhY2tlZF9zaW50NjQYXyADKBJCAhABEhoKDnBhY2tlZF9maXhlZDMy", 
-            "GGAgAygHQgIQARIaCg5wYWNrZWRfZml4ZWQ2NBhhIAMoBkICEAESGwoPcGFj", 
-            "a2VkX3NmaXhlZDMyGGIgAygPQgIQARIbCg9wYWNrZWRfc2ZpeGVkNjQYYyAD", 
-            "KBBCAhABEhgKDHBhY2tlZF9mbG9hdBhkIAMoAkICEAESGQoNcGFja2VkX2Rv", 
-            "dWJsZRhlIAMoAUICEAESFwoLcGFja2VkX2Jvb2wYZiADKAhCAhABEjcKC3Bh", 
-            "Y2tlZF9lbnVtGGcgAygOMh4ucHJvdG9idWZfdW5pdHRlc3QuRm9yZWlnbkVu", 
-            "dW1CAhABIsgDChFUZXN0VW5wYWNrZWRUeXBlcxIaCg51bnBhY2tlZF9pbnQz", 
-            "MhhaIAMoBUICEAASGgoOdW5wYWNrZWRfaW50NjQYWyADKANCAhAAEhsKD3Vu", 
-            "cGFja2VkX3VpbnQzMhhcIAMoDUICEAASGwoPdW5wYWNrZWRfdWludDY0GF0g", 
-            "AygEQgIQABIbCg91bnBhY2tlZF9zaW50MzIYXiADKBFCAhAAEhsKD3VucGFj", 
-            "a2VkX3NpbnQ2NBhfIAMoEkICEAASHAoQdW5wYWNrZWRfZml4ZWQzMhhgIAMo", 
-            "B0ICEAASHAoQdW5wYWNrZWRfZml4ZWQ2NBhhIAMoBkICEAASHQoRdW5wYWNr", 
-            "ZWRfc2ZpeGVkMzIYYiADKA9CAhAAEh0KEXVucGFja2VkX3NmaXhlZDY0GGMg", 
-            "AygQQgIQABIaCg51bnBhY2tlZF9mbG9hdBhkIAMoAkICEAASGwoPdW5wYWNr", 
-            "ZWRfZG91YmxlGGUgAygBQgIQABIZCg11bnBhY2tlZF9ib29sGGYgAygIQgIQ", 
-            "ABI5Cg11bnBhY2tlZF9lbnVtGGcgAygOMh4ucHJvdG9idWZfdW5pdHRlc3Qu", 
-            "Rm9yZWlnbkVudW1CAhAAIiAKFFRlc3RQYWNrZWRFeHRlbnNpb25zKggIARCA", 
-            "gICAAiIiChZUZXN0VW5wYWNrZWRFeHRlbnNpb25zKggIARCAgICAAiKZBAoV", 
-            "VGVzdER5bmFtaWNFeHRlbnNpb25zEhkKEHNjYWxhcl9leHRlbnNpb24Y0A8g", 
-            "ASgHEjcKDmVudW1fZXh0ZW5zaW9uGNEPIAEoDjIeLnByb3RvYnVmX3VuaXR0", 
-            "ZXN0LkZvcmVpZ25FbnVtElkKFmR5bmFtaWNfZW51bV9leHRlbnNpb24Y0g8g", 
-            "ASgOMjgucHJvdG9idWZfdW5pdHRlc3QuVGVzdER5bmFtaWNFeHRlbnNpb25z", 
-            "LkR5bmFtaWNFbnVtVHlwZRI9ChFtZXNzYWdlX2V4dGVuc2lvbhjTDyABKAsy", 
-            "IS5wcm90b2J1Zl91bml0dGVzdC5Gb3JlaWduTWVzc2FnZRJfChlkeW5hbWlj", 
-            "X21lc3NhZ2VfZXh0ZW5zaW9uGNQPIAEoCzI7LnByb3RvYnVmX3VuaXR0ZXN0", 
-            "LlRlc3REeW5hbWljRXh0ZW5zaW9ucy5EeW5hbWljTWVzc2FnZVR5cGUSGwoS", 
-            "cmVwZWF0ZWRfZXh0ZW5zaW9uGNUPIAMoCRIdChBwYWNrZWRfZXh0ZW5zaW9u", 
-            "GNYPIAMoEUICEAEaLAoSRHluYW1pY01lc3NhZ2VUeXBlEhYKDWR5bmFtaWNf", 
-            "ZmllbGQYtBAgASgFIkcKD0R5bmFtaWNFbnVtVHlwZRIQCgtEWU5BTUlDX0ZP", 
-            "TxCYERIQCgtEWU5BTUlDX0JBUhCZERIQCgtEWU5BTUlDX0JBWhCaESLAAQoj", 
-            "VGVzdFJlcGVhdGVkU2NhbGFyRGlmZmVyZW50VGFnU2l6ZXMSGAoQcmVwZWF0", 
-            "ZWRfZml4ZWQzMhgMIAMoBxIWCg5yZXBlYXRlZF9pbnQzMhgNIAMoBRIZChBy", 
-            "ZXBlYXRlZF9maXhlZDY0GP4PIAMoBhIXCg5yZXBlYXRlZF9pbnQ2NBj/DyAD", 
-            "KAMSGAoOcmVwZWF0ZWRfZmxvYXQY/v8PIAMoAhIZCg9yZXBlYXRlZF91aW50", 
-            "NjQY//8PIAMoBCL3CQoQVGVzdFBhcnNpbmdNZXJnZRI7ChJyZXF1aXJlZF9h", 
-            "bGxfdHlwZXMYASACKAsyHy5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsVHlw", 
-            "ZXMSOwoSb3B0aW9uYWxfYWxsX3R5cGVzGAIgASgLMh8ucHJvdG9idWZfdW5p", 
-            "dHRlc3QuVGVzdEFsbFR5cGVzEjsKEnJlcGVhdGVkX2FsbF90eXBlcxgDIAMo", 
-            "CzIfLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxUeXBlcxJICg1vcHRpb25h", 
-            "bGdyb3VwGAogASgKMjEucHJvdG9idWZfdW5pdHRlc3QuVGVzdFBhcnNpbmdN", 
-            "ZXJnZS5PcHRpb25hbEdyb3VwEkgKDXJlcGVhdGVkZ3JvdXAYFCADKAoyMS5w", 
-            "cm90b2J1Zl91bml0dGVzdC5UZXN0UGFyc2luZ01lcmdlLlJlcGVhdGVkR3Jv", 
-            "dXAaqgQKF1JlcGVhdGVkRmllbGRzR2VuZXJhdG9yEi8KBmZpZWxkMRgBIAMo", 
-            "CzIfLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxUeXBlcxIvCgZmaWVsZDIY", 
-            "AiADKAsyHy5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsVHlwZXMSLwoGZmll", 
-            "bGQzGAMgAygLMh8ucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbFR5cGVzElIK", 
-            "Bmdyb3VwMRgKIAMoCjJCLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RQYXJzaW5n", 
-            "TWVyZ2UuUmVwZWF0ZWRGaWVsZHNHZW5lcmF0b3IuR3JvdXAxElIKBmdyb3Vw", 
-            "MhgUIAMoCjJCLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RQYXJzaW5nTWVyZ2Uu", 
-            "UmVwZWF0ZWRGaWVsZHNHZW5lcmF0b3IuR3JvdXAyEi4KBGV4dDEY6AcgAygL", 
-            "Mh8ucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbFR5cGVzEi4KBGV4dDIY6Qcg", 
-            "AygLMh8ucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbFR5cGVzGjkKBkdyb3Vw", 
-            "MRIvCgZmaWVsZDEYCyABKAsyHy5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxs", 
-            "VHlwZXMaOQoGR3JvdXAyEi8KBmZpZWxkMRgVIAEoCzIfLnByb3RvYnVmX3Vu", 
-            "aXR0ZXN0LlRlc3RBbGxUeXBlcxpSCg1PcHRpb25hbEdyb3VwEkEKGG9wdGlv", 
-            "bmFsX2dyb3VwX2FsbF90eXBlcxgLIAEoCzIfLnByb3RvYnVmX3VuaXR0ZXN0", 
-            "LlRlc3RBbGxUeXBlcxpSCg1SZXBlYXRlZEdyb3VwEkEKGHJlcGVhdGVkX2dy", 
-            "b3VwX2FsbF90eXBlcxgVIAEoCzIfLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RB", 
-            "bGxUeXBlcyoJCOgHEICAgIACMlsKDG9wdGlvbmFsX2V4dBIjLnByb3RvYnVm", 
-            "X3VuaXR0ZXN0LlRlc3RQYXJzaW5nTWVyZ2UY6AcgASgLMh8ucHJvdG9idWZf", 
-            "dW5pdHRlc3QuVGVzdEFsbFR5cGVzMlsKDHJlcGVhdGVkX2V4dBIjLnByb3Rv", 
-            "YnVmX3VuaXR0ZXN0LlRlc3RQYXJzaW5nTWVyZ2UY6QcgAygLMh8ucHJvdG9i", 
-            "dWZfdW5pdHRlc3QuVGVzdEFsbFR5cGVzIkQKG1Rlc3RDb21tZW50SW5qZWN0", 
-            "aW9uTWVzc2FnZRIlCgFhGAEgASgJOhoqLyA8LSBOZWl0aGVyIHNob3VsZCB0", 
-            "aGlzLiIMCgpGb29SZXF1ZXN0Ig0KC0Zvb1Jlc3BvbnNlIhIKEEZvb0NsaWVu", 
-            "dE1lc3NhZ2UiEgoQRm9vU2VydmVyTWVzc2FnZSIMCgpCYXJSZXF1ZXN0Ig0K", 
-            "C0JhclJlc3BvbnNlKkAKC0ZvcmVpZ25FbnVtEg8KC0ZPUkVJR05fRk9PEAQS", 
-            "DwoLRk9SRUlHTl9CQVIQBRIPCgtGT1JFSUdOX0JBWhAGKksKFFRlc3RFbnVt", 
-            "V2l0aER1cFZhbHVlEggKBEZPTzEQARIICgRCQVIxEAISBwoDQkFaEAMSCAoE", 
-            "Rk9PMhABEggKBEJBUjIQAhoCEAEqiQEKDlRlc3RTcGFyc2VFbnVtEgwKCFNQ", 
-            "QVJTRV9BEHsSDgoIU1BBUlNFX0IQpucDEg8KCFNQQVJTRV9DELKxgAYSFQoI", 
-            "U1BBUlNFX0QQ8f//////////ARIVCghTUEFSU0VfRRC03vz///////8BEgwK", 
-            "CFNQQVJTRV9GEAASDAoIU1BBUlNFX0cQAjKZAQoLVGVzdFNlcnZpY2USRAoD", 
-            "Rm9vEh0ucHJvdG9idWZfdW5pdHRlc3QuRm9vUmVxdWVzdBoeLnByb3RvYnVm", 
-            "X3VuaXR0ZXN0LkZvb1Jlc3BvbnNlEkQKA0JhchIdLnByb3RvYnVmX3VuaXR0", 
-            "ZXN0LkJhclJlcXVlc3QaHi5wcm90b2J1Zl91bml0dGVzdC5CYXJSZXNwb25z", 
-            "ZTpGChhvcHRpb25hbF9pbnQzMl9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0", 
-            "dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgBIAEoBTpGChhvcHRpb25hbF9pbnQ2", 
-            "NF9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5z", 
-            "aW9ucxgCIAEoAzpHChlvcHRpb25hbF91aW50MzJfZXh0ZW5zaW9uEiQucHJv", 
-            "dG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYAyABKA06RwoZb3B0", 
-            "aW9uYWxfdWludDY0X2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRl", 
-            "c3RBbGxFeHRlbnNpb25zGAQgASgEOkcKGW9wdGlvbmFsX3NpbnQzMl9leHRl", 
-            "bnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgF", 
-            "IAEoETpHChlvcHRpb25hbF9zaW50NjRfZXh0ZW5zaW9uEiQucHJvdG9idWZf", 
-            "dW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYBiABKBI6SAoab3B0aW9uYWxf", 
-            "Zml4ZWQzMl9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxs", 
-            "RXh0ZW5zaW9ucxgHIAEoBzpIChpvcHRpb25hbF9maXhlZDY0X2V4dGVuc2lv", 
-            "bhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGAggASgG", 
-            "OkkKG29wdGlvbmFsX3NmaXhlZDMyX2V4dGVuc2lvbhIkLnByb3RvYnVmX3Vu", 
-            "aXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGAkgASgPOkkKG29wdGlvbmFsX3Nm", 
-            "aXhlZDY0X2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxF", 
-            "eHRlbnNpb25zGAogASgQOkYKGG9wdGlvbmFsX2Zsb2F0X2V4dGVuc2lvbhIk", 
-            "LnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGAsgASgCOkcK", 
-            "GW9wdGlvbmFsX2RvdWJsZV9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVz", 
-            "dC5UZXN0QWxsRXh0ZW5zaW9ucxgMIAEoATpFChdvcHRpb25hbF9ib29sX2V4", 
-            "dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25z", 
-            "GA0gASgIOkcKGW9wdGlvbmFsX3N0cmluZ19leHRlbnNpb24SJC5wcm90b2J1", 
-            "Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgOIAEoCTpGChhvcHRpb25h", 
-            "bF9ieXRlc19leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxs", 
-            "RXh0ZW5zaW9ucxgPIAEoDDpxChdvcHRpb25hbGdyb3VwX2V4dGVuc2lvbhIk", 
-            "LnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGBAgASgKMiou", 
-            "cHJvdG9idWZfdW5pdHRlc3QuT3B0aW9uYWxHcm91cF9leHRlbnNpb246fgoh", 
-            "b3B0aW9uYWxfbmVzdGVkX21lc3NhZ2VfZXh0ZW5zaW9uEiQucHJvdG9idWZf", 
-            "dW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYEiABKAsyLS5wcm90b2J1Zl91", 
-            "bml0dGVzdC5UZXN0QWxsVHlwZXMuTmVzdGVkTWVzc2FnZTpzCiJvcHRpb25h", 
-            "bF9mb3JlaWduX21lc3NhZ2VfZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRl", 
-            "c3QuVGVzdEFsbEV4dGVuc2lvbnMYEyABKAsyIS5wcm90b2J1Zl91bml0dGVz", 
-            "dC5Gb3JlaWduTWVzc2FnZTp4CiFvcHRpb25hbF9pbXBvcnRfbWVzc2FnZV9l", 
-            "eHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9u", 
-            "cxgUIAEoCzInLnByb3RvYnVmX3VuaXR0ZXN0X2ltcG9ydC5JbXBvcnRNZXNz", 
-            "YWdlOngKHm9wdGlvbmFsX25lc3RlZF9lbnVtX2V4dGVuc2lvbhIkLnByb3Rv", 
-            "YnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGBUgASgOMioucHJvdG9i", 
-            "dWZfdW5pdHRlc3QuVGVzdEFsbFR5cGVzLk5lc3RlZEVudW06bQofb3B0aW9u", 
-            "YWxfZm9yZWlnbl9lbnVtX2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0", 
-            "LlRlc3RBbGxFeHRlbnNpb25zGBYgASgOMh4ucHJvdG9idWZfdW5pdHRlc3Qu", 
-            "Rm9yZWlnbkVudW06cgoeb3B0aW9uYWxfaW1wb3J0X2VudW1fZXh0ZW5zaW9u", 
-            "EiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYFyABKA4y", 
-            "JC5wcm90b2J1Zl91bml0dGVzdF9pbXBvcnQuSW1wb3J0RW51bTpRCh9vcHRp", 
-            "b25hbF9zdHJpbmdfcGllY2VfZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRl", 
-            "c3QuVGVzdEFsbEV4dGVuc2lvbnMYGCABKAlCAggCOkkKF29wdGlvbmFsX2Nv", 
-            "cmRfZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVu", 
-            "c2lvbnMYGSABKAlCAggBOoUBCihvcHRpb25hbF9wdWJsaWNfaW1wb3J0X21l", 
-            "c3NhZ2VfZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4", 
-            "dGVuc2lvbnMYGiABKAsyLS5wcm90b2J1Zl91bml0dGVzdF9pbXBvcnQuUHVi", 
-            "bGljSW1wb3J0TWVzc2FnZTqAAQofb3B0aW9uYWxfbGF6eV9tZXNzYWdlX2V4", 
-            "dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25z", 
-            "GBsgASgLMi0ucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbFR5cGVzLk5lc3Rl", 
-            "ZE1lc3NhZ2VCAigBOkYKGHJlcGVhdGVkX2ludDMyX2V4dGVuc2lvbhIkLnBy", 
-            "b3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGB8gAygFOkYKGHJl", 
-            "cGVhdGVkX2ludDY0X2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRl", 
-            "c3RBbGxFeHRlbnNpb25zGCAgAygDOkcKGXJlcGVhdGVkX3VpbnQzMl9leHRl", 
-            "bnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgh", 
-            "IAMoDTpHChlyZXBlYXRlZF91aW50NjRfZXh0ZW5zaW9uEiQucHJvdG9idWZf", 
-            "dW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYIiADKAQ6RwoZcmVwZWF0ZWRf", 
-            "c2ludDMyX2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxF", 
-            "eHRlbnNpb25zGCMgAygROkcKGXJlcGVhdGVkX3NpbnQ2NF9leHRlbnNpb24S", 
-            "JC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgkIAMoEjpI", 
-            "ChpyZXBlYXRlZF9maXhlZDMyX2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0", 
-            "ZXN0LlRlc3RBbGxFeHRlbnNpb25zGCUgAygHOkgKGnJlcGVhdGVkX2ZpeGVk", 
-            "NjRfZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVu", 
-            "c2lvbnMYJiADKAY6SQobcmVwZWF0ZWRfc2ZpeGVkMzJfZXh0ZW5zaW9uEiQu", 
-            "cHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYJyADKA86SQob", 
-            "cmVwZWF0ZWRfc2ZpeGVkNjRfZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRl", 
-            "c3QuVGVzdEFsbEV4dGVuc2lvbnMYKCADKBA6RgoYcmVwZWF0ZWRfZmxvYXRf", 
-            "ZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lv", 
-            "bnMYKSADKAI6RwoZcmVwZWF0ZWRfZG91YmxlX2V4dGVuc2lvbhIkLnByb3Rv", 
-            "YnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGCogAygBOkUKF3JlcGVh", 
-            "dGVkX2Jvb2xfZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFs", 
-            "bEV4dGVuc2lvbnMYKyADKAg6RwoZcmVwZWF0ZWRfc3RyaW5nX2V4dGVuc2lv", 
-            "bhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGCwgAygJ", 
-            "OkYKGHJlcGVhdGVkX2J5dGVzX2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0", 
-            "ZXN0LlRlc3RBbGxFeHRlbnNpb25zGC0gAygMOnEKF3JlcGVhdGVkZ3JvdXBf", 
-            "ZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lv", 
-            "bnMYLiADKAoyKi5wcm90b2J1Zl91bml0dGVzdC5SZXBlYXRlZEdyb3VwX2V4", 
-            "dGVuc2lvbjp+CiFyZXBlYXRlZF9uZXN0ZWRfbWVzc2FnZV9leHRlbnNpb24S", 
-            "JC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgwIAMoCzIt", 
-            "LnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxUeXBlcy5OZXN0ZWRNZXNzYWdl", 
-            "OnMKInJlcGVhdGVkX2ZvcmVpZ25fbWVzc2FnZV9leHRlbnNpb24SJC5wcm90", 
-            "b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgxIAMoCzIhLnByb3Rv", 
-            "YnVmX3VuaXR0ZXN0LkZvcmVpZ25NZXNzYWdlOngKIXJlcGVhdGVkX2ltcG9y", 
-            "dF9tZXNzYWdlX2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RB", 
-            "bGxFeHRlbnNpb25zGDIgAygLMicucHJvdG9idWZfdW5pdHRlc3RfaW1wb3J0", 
-            "LkltcG9ydE1lc3NhZ2U6eAoecmVwZWF0ZWRfbmVzdGVkX2VudW1fZXh0ZW5z", 
-            "aW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYMyAD", 
-            "KA4yKi5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsVHlwZXMuTmVzdGVkRW51", 
-            "bTptCh9yZXBlYXRlZF9mb3JlaWduX2VudW1fZXh0ZW5zaW9uEiQucHJvdG9i", 
-            "dWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYNCADKA4yHi5wcm90b2J1", 
-            "Zl91bml0dGVzdC5Gb3JlaWduRW51bTpyCh5yZXBlYXRlZF9pbXBvcnRfZW51", 
-            "bV9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5z", 
-            "aW9ucxg1IAMoDjIkLnByb3RvYnVmX3VuaXR0ZXN0X2ltcG9ydC5JbXBvcnRF", 
-            "bnVtOlEKH3JlcGVhdGVkX3N0cmluZ19waWVjZV9leHRlbnNpb24SJC5wcm90", 
-            "b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxg2IAMoCUICCAI6SQoX", 
-            "cmVwZWF0ZWRfY29yZF9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5U", 
-            "ZXN0QWxsRXh0ZW5zaW9ucxg3IAMoCUICCAE6gAEKH3JlcGVhdGVkX2xhenlf", 
-            "bWVzc2FnZV9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxs", 
-            "RXh0ZW5zaW9ucxg5IAMoCzItLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxU", 
-            "eXBlcy5OZXN0ZWRNZXNzYWdlQgIoATpJChdkZWZhdWx0X2ludDMyX2V4dGVu", 
-            "c2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGD0g", 
-            "ASgFOgI0MTpJChdkZWZhdWx0X2ludDY0X2V4dGVuc2lvbhIkLnByb3RvYnVm", 
-            "X3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGD4gASgDOgI0MjpKChhkZWZh", 
-            "dWx0X3VpbnQzMl9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0", 
-            "QWxsRXh0ZW5zaW9ucxg/IAEoDToCNDM6SgoYZGVmYXVsdF91aW50NjRfZXh0", 
-            "ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMY", 
-            "QCABKAQ6AjQ0OksKGGRlZmF1bHRfc2ludDMyX2V4dGVuc2lvbhIkLnByb3Rv", 
-            "YnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGEEgASgROgMtNDU6SgoY", 
-            "ZGVmYXVsdF9zaW50NjRfZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3Qu", 
-            "VGVzdEFsbEV4dGVuc2lvbnMYQiABKBI6AjQ2OksKGWRlZmF1bHRfZml4ZWQz", 
-            "Ml9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5z", 
-            "aW9ucxhDIAEoBzoCNDc6SwoZZGVmYXVsdF9maXhlZDY0X2V4dGVuc2lvbhIk", 
-            "LnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGEQgASgGOgI0", 
-            "ODpMChpkZWZhdWx0X3NmaXhlZDMyX2V4dGVuc2lvbhIkLnByb3RvYnVmX3Vu", 
-            "aXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGEUgASgPOgI0OTpNChpkZWZhdWx0", 
-            "X3NmaXhlZDY0X2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RB", 
-            "bGxFeHRlbnNpb25zGEYgASgQOgMtNTA6SwoXZGVmYXVsdF9mbG9hdF9leHRl", 
-            "bnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxhH", 
-            "IAEoAjoENTEuNTpNChhkZWZhdWx0X2RvdWJsZV9leHRlbnNpb24SJC5wcm90", 
-            "b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxhIIAEoAToFNTIwMDA6", 
-            "SgoWZGVmYXVsdF9ib29sX2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0", 
-            "LlRlc3RBbGxFeHRlbnNpb25zGEkgASgIOgR0cnVlOk0KGGRlZmF1bHRfc3Ry", 
-            "aW5nX2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRl", 
-            "bnNpb25zGEogASgJOgVoZWxsbzpMChdkZWZhdWx0X2J5dGVzX2V4dGVuc2lv", 
-            "bhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGEsgASgM", 
-            "OgV3b3JsZDp8Ch1kZWZhdWx0X25lc3RlZF9lbnVtX2V4dGVuc2lvbhIkLnBy", 
-            "b3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGFEgASgOMioucHJv", 
-            "dG9idWZfdW5pdHRlc3QuVGVzdEFsbFR5cGVzLk5lc3RlZEVudW06A0JBUjp5", 
-            "Ch5kZWZhdWx0X2ZvcmVpZ25fZW51bV9leHRlbnNpb24SJC5wcm90b2J1Zl91", 
-            "bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxhSIAEoDjIeLnByb3RvYnVmX3Vu", 
-            "aXR0ZXN0LkZvcmVpZ25FbnVtOgtGT1JFSUdOX0JBUjp9Ch1kZWZhdWx0X2lt", 
-            "cG9ydF9lbnVtX2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RB", 
-            "bGxFeHRlbnNpb25zGFMgASgOMiQucHJvdG9idWZfdW5pdHRlc3RfaW1wb3J0", 
-            "LkltcG9ydEVudW06CklNUE9SVF9CQVI6VQoeZGVmYXVsdF9zdHJpbmdfcGll", 
-            "Y2VfZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVu", 
-            "c2lvbnMYVCABKAk6A2FiY0ICCAI6TQoWZGVmYXVsdF9jb3JkX2V4dGVuc2lv", 
-            "bhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGFUgASgJ", 
-            "OgMxMjNCAggBOkQKFm9uZW9mX3VpbnQzMl9leHRlbnNpb24SJC5wcm90b2J1", 
-            "Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxhvIAEoDTp7Ch5vbmVvZl9u", 
-            "ZXN0ZWRfbWVzc2FnZV9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5U", 
-            "ZXN0QWxsRXh0ZW5zaW9ucxhwIAEoCzItLnByb3RvYnVmX3VuaXR0ZXN0LlRl", 
-            "c3RBbGxUeXBlcy5OZXN0ZWRNZXNzYWdlOkQKFm9uZW9mX3N0cmluZ19leHRl", 
-            "bnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxhx", 
-            "IAEoCTpDChVvbmVvZl9ieXRlc19leHRlbnNpb24SJC5wcm90b2J1Zl91bml0", 
-            "dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxhyIAEoDDpCChNteV9leHRlbnNpb25f", 
-            "c3RyaW5nEiUucHJvdG9idWZfdW5pdHRlc3QuVGVzdEZpZWxkT3JkZXJpbmdz", 
-            "GDIgASgJOj8KEG15X2V4dGVuc2lvbl9pbnQSJS5wcm90b2J1Zl91bml0dGVz", 
-            "dC5UZXN0RmllbGRPcmRlcmluZ3MYBSABKAU6SwoWcGFja2VkX2ludDMyX2V4", 
-            "dGVuc2lvbhInLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RQYWNrZWRFeHRlbnNp", 
-            "b25zGFogAygFQgIQATpLChZwYWNrZWRfaW50NjRfZXh0ZW5zaW9uEicucHJv", 
-            "dG9idWZfdW5pdHRlc3QuVGVzdFBhY2tlZEV4dGVuc2lvbnMYWyADKANCAhAB", 
-            "OkwKF3BhY2tlZF91aW50MzJfZXh0ZW5zaW9uEicucHJvdG9idWZfdW5pdHRl", 
-            "c3QuVGVzdFBhY2tlZEV4dGVuc2lvbnMYXCADKA1CAhABOkwKF3BhY2tlZF91", 
-            "aW50NjRfZXh0ZW5zaW9uEicucHJvdG9idWZfdW5pdHRlc3QuVGVzdFBhY2tl", 
-            "ZEV4dGVuc2lvbnMYXSADKARCAhABOkwKF3BhY2tlZF9zaW50MzJfZXh0ZW5z", 
-            "aW9uEicucHJvdG9idWZfdW5pdHRlc3QuVGVzdFBhY2tlZEV4dGVuc2lvbnMY", 
-            "XiADKBFCAhABOkwKF3BhY2tlZF9zaW50NjRfZXh0ZW5zaW9uEicucHJvdG9i", 
-            "dWZfdW5pdHRlc3QuVGVzdFBhY2tlZEV4dGVuc2lvbnMYXyADKBJCAhABOk0K", 
-            "GHBhY2tlZF9maXhlZDMyX2V4dGVuc2lvbhInLnByb3RvYnVmX3VuaXR0ZXN0", 
-            "LlRlc3RQYWNrZWRFeHRlbnNpb25zGGAgAygHQgIQATpNChhwYWNrZWRfZml4", 
-            "ZWQ2NF9leHRlbnNpb24SJy5wcm90b2J1Zl91bml0dGVzdC5UZXN0UGFja2Vk", 
-            "RXh0ZW5zaW9ucxhhIAMoBkICEAE6TgoZcGFja2VkX3NmaXhlZDMyX2V4dGVu", 
-            "c2lvbhInLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RQYWNrZWRFeHRlbnNpb25z", 
-            "GGIgAygPQgIQATpOChlwYWNrZWRfc2ZpeGVkNjRfZXh0ZW5zaW9uEicucHJv", 
-            "dG9idWZfdW5pdHRlc3QuVGVzdFBhY2tlZEV4dGVuc2lvbnMYYyADKBBCAhAB", 
-            "OksKFnBhY2tlZF9mbG9hdF9leHRlbnNpb24SJy5wcm90b2J1Zl91bml0dGVz", 
-            "dC5UZXN0UGFja2VkRXh0ZW5zaW9ucxhkIAMoAkICEAE6TAoXcGFja2VkX2Rv", 
-            "dWJsZV9leHRlbnNpb24SJy5wcm90b2J1Zl91bml0dGVzdC5UZXN0UGFja2Vk", 
-            "RXh0ZW5zaW9ucxhlIAMoAUICEAE6SgoVcGFja2VkX2Jvb2xfZXh0ZW5zaW9u", 
-            "EicucHJvdG9idWZfdW5pdHRlc3QuVGVzdFBhY2tlZEV4dGVuc2lvbnMYZiAD", 
-            "KAhCAhABOmoKFXBhY2tlZF9lbnVtX2V4dGVuc2lvbhInLnByb3RvYnVmX3Vu", 
-            "aXR0ZXN0LlRlc3RQYWNrZWRFeHRlbnNpb25zGGcgAygOMh4ucHJvdG9idWZf", 
-            "dW5pdHRlc3QuRm9yZWlnbkVudW1CAhABOk8KGHVucGFja2VkX2ludDMyX2V4", 
-            "dGVuc2lvbhIpLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RVbnBhY2tlZEV4dGVu", 
-            "c2lvbnMYWiADKAVCAhAAOk8KGHVucGFja2VkX2ludDY0X2V4dGVuc2lvbhIp", 
-            "LnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RVbnBhY2tlZEV4dGVuc2lvbnMYWyAD", 
-            "KANCAhAAOlAKGXVucGFja2VkX3VpbnQzMl9leHRlbnNpb24SKS5wcm90b2J1", 
-            "Zl91bml0dGVzdC5UZXN0VW5wYWNrZWRFeHRlbnNpb25zGFwgAygNQgIQADpQ", 
-            "Chl1bnBhY2tlZF91aW50NjRfZXh0ZW5zaW9uEikucHJvdG9idWZfdW5pdHRl", 
-            "c3QuVGVzdFVucGFja2VkRXh0ZW5zaW9ucxhdIAMoBEICEAA6UAoZdW5wYWNr", 
-            "ZWRfc2ludDMyX2V4dGVuc2lvbhIpLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RV", 
-            "bnBhY2tlZEV4dGVuc2lvbnMYXiADKBFCAhAAOlAKGXVucGFja2VkX3NpbnQ2", 
-            "NF9leHRlbnNpb24SKS5wcm90b2J1Zl91bml0dGVzdC5UZXN0VW5wYWNrZWRF", 
-            "eHRlbnNpb25zGF8gAygSQgIQADpRChp1bnBhY2tlZF9maXhlZDMyX2V4dGVu", 
-            "c2lvbhIpLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RVbnBhY2tlZEV4dGVuc2lv", 
-            "bnMYYCADKAdCAhAAOlEKGnVucGFja2VkX2ZpeGVkNjRfZXh0ZW5zaW9uEiku", 
-            "cHJvdG9idWZfdW5pdHRlc3QuVGVzdFVucGFja2VkRXh0ZW5zaW9ucxhhIAMo", 
-            "BkICEAA6UgobdW5wYWNrZWRfc2ZpeGVkMzJfZXh0ZW5zaW9uEikucHJvdG9i", 
-            "dWZfdW5pdHRlc3QuVGVzdFVucGFja2VkRXh0ZW5zaW9ucxhiIAMoD0ICEAA6", 
-            "UgobdW5wYWNrZWRfc2ZpeGVkNjRfZXh0ZW5zaW9uEikucHJvdG9idWZfdW5p", 
-            "dHRlc3QuVGVzdFVucGFja2VkRXh0ZW5zaW9ucxhjIAMoEEICEAA6TwoYdW5w", 
-            "YWNrZWRfZmxvYXRfZXh0ZW5zaW9uEikucHJvdG9idWZfdW5pdHRlc3QuVGVz", 
-            "dFVucGFja2VkRXh0ZW5zaW9ucxhkIAMoAkICEAA6UAoZdW5wYWNrZWRfZG91", 
-            "YmxlX2V4dGVuc2lvbhIpLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RVbnBhY2tl", 
-            "ZEV4dGVuc2lvbnMYZSADKAFCAhAAOk4KF3VucGFja2VkX2Jvb2xfZXh0ZW5z", 
-            "aW9uEikucHJvdG9idWZfdW5pdHRlc3QuVGVzdFVucGFja2VkRXh0ZW5zaW9u", 
-            "cxhmIAMoCEICEAA6bgoXdW5wYWNrZWRfZW51bV9leHRlbnNpb24SKS5wcm90", 
-            "b2J1Zl91bml0dGVzdC5UZXN0VW5wYWNrZWRFeHRlbnNpb25zGGcgAygOMh4u", 
-            "cHJvdG9idWZfdW5pdHRlc3QuRm9yZWlnbkVudW1CAhAAQkFCDVVuaXR0ZXN0", 
-            "UHJvdG9IAYABAYgBAZABAfgBAaoCIUdvb2dsZS5Qcm90b2NvbEJ1ZmZlcnMu", 
-          "VGVzdFByb3Rvcw=="));
-      pbd::FileDescriptor.InternalDescriptorAssigner assigner = delegate(pbd::FileDescriptor root) {
-        descriptor = root;
-        internal__static_protobuf_unittest_TestAllTypes__Descriptor = Descriptor.MessageTypes[0];
-        internal__static_protobuf_unittest_TestAllTypes__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestAllTypes, global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Builder>(internal__static_protobuf_unittest_TestAllTypes__Descriptor,
-                new string[] { "OptionalInt32", "OptionalInt64", "OptionalUint32", "OptionalUint64", "OptionalSint32", "OptionalSint64", "OptionalFixed32", "OptionalFixed64", "OptionalSfixed32", "OptionalSfixed64", "OptionalFloat", "OptionalDouble", "OptionalBool", "OptionalString", "OptionalBytes", "OptionalGroup", "OptionalNestedMessage", "OptionalForeignMessage", "OptionalImportMessage", "OptionalNestedEnum", "OptionalForeignEnum", "OptionalImportEnum", "OptionalStringPiece", "OptionalCord", "OptionalPublicImportMessage", "OptionalLazyMessage", "RepeatedInt32", "RepeatedInt64", "RepeatedUint32", "RepeatedUint64", "RepeatedSint32", "RepeatedSint64", "RepeatedFixed32", "RepeatedFixed64", "RepeatedSfixed32", "RepeatedSfixed64", "RepeatedFloat", "RepeatedDouble", "RepeatedBool", "RepeatedString", "RepeatedBytes", "RepeatedGroup", "RepeatedNestedMessage", "RepeatedForeignMessage", "RepeatedImportMessage", "RepeatedNestedEnum", "RepeatedForeignEnum", "RepeatedImportEnum", "RepeatedStringPiece", "RepeatedCord", "RepeatedLazyMessage", "DefaultInt32", "DefaultInt64", "DefaultUint32", "DefaultUint64", "DefaultSint32", "DefaultSint64", "DefaultFixed32", "DefaultFixed64", "DefaultSfixed32", "DefaultSfixed64", "DefaultFloat", "DefaultDouble", "DefaultBool", "DefaultString", "DefaultBytes", "DefaultNestedEnum", "DefaultForeignEnum", "DefaultImportEnum", "DefaultStringPiece", "DefaultCord", "OneofUint32", "OneofNestedMessage", "OneofString", "OneofBytes", "OneofField", });
-        internal__static_protobuf_unittest_TestAllTypes_NestedMessage__Descriptor = internal__static_protobuf_unittest_TestAllTypes__Descriptor.NestedTypes[0];
-        internal__static_protobuf_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_protobuf_unittest_TestAllTypes_NestedMessage__Descriptor,
-                new string[] { "Bb", });
-        internal__static_protobuf_unittest_TestAllTypes_OptionalGroup__Descriptor = internal__static_protobuf_unittest_TestAllTypes__Descriptor.NestedTypes[1];
-        internal__static_protobuf_unittest_TestAllTypes_OptionalGroup__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.OptionalGroup, global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.OptionalGroup.Builder>(internal__static_protobuf_unittest_TestAllTypes_OptionalGroup__Descriptor,
-                new string[] { "A", });
-        internal__static_protobuf_unittest_TestAllTypes_RepeatedGroup__Descriptor = internal__static_protobuf_unittest_TestAllTypes__Descriptor.NestedTypes[2];
-        internal__static_protobuf_unittest_TestAllTypes_RepeatedGroup__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.RepeatedGroup, global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.RepeatedGroup.Builder>(internal__static_protobuf_unittest_TestAllTypes_RepeatedGroup__Descriptor,
-                new string[] { "A", });
-        internal__static_protobuf_unittest_NestedTestAllTypes__Descriptor = Descriptor.MessageTypes[1];
-        internal__static_protobuf_unittest_NestedTestAllTypes__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.NestedTestAllTypes, global::Google.ProtocolBuffers.TestProtos.NestedTestAllTypes.Builder>(internal__static_protobuf_unittest_NestedTestAllTypes__Descriptor,
-                new string[] { "Child", "Payload", "RepeatedChild", });
-        internal__static_protobuf_unittest_TestDeprecatedFields__Descriptor = Descriptor.MessageTypes[2];
-        internal__static_protobuf_unittest_TestDeprecatedFields__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestDeprecatedFields, global::Google.ProtocolBuffers.TestProtos.TestDeprecatedFields.Builder>(internal__static_protobuf_unittest_TestDeprecatedFields__Descriptor,
-                new string[] { "DeprecatedInt32", });
-        internal__static_protobuf_unittest_ForeignMessage__Descriptor = Descriptor.MessageTypes[3];
-        internal__static_protobuf_unittest_ForeignMessage__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.ForeignMessage, global::Google.ProtocolBuffers.TestProtos.ForeignMessage.Builder>(internal__static_protobuf_unittest_ForeignMessage__Descriptor,
-                new string[] { "C", });
-        internal__static_protobuf_unittest_TestReservedFields__Descriptor = Descriptor.MessageTypes[4];
-        internal__static_protobuf_unittest_TestReservedFields__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestReservedFields, global::Google.ProtocolBuffers.TestProtos.TestReservedFields.Builder>(internal__static_protobuf_unittest_TestReservedFields__Descriptor,
-                new string[] { });
-        internal__static_protobuf_unittest_TestAllExtensions__Descriptor = Descriptor.MessageTypes[5];
-        internal__static_protobuf_unittest_TestAllExtensions__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestAllExtensions, global::Google.ProtocolBuffers.TestProtos.TestAllExtensions.Builder>(internal__static_protobuf_unittest_TestAllExtensions__Descriptor,
-                new string[] { });
-        internal__static_protobuf_unittest_OptionalGroup_extension__Descriptor = Descriptor.MessageTypes[6];
-        internal__static_protobuf_unittest_OptionalGroup_extension__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.OptionalGroup_extension, global::Google.ProtocolBuffers.TestProtos.OptionalGroup_extension.Builder>(internal__static_protobuf_unittest_OptionalGroup_extension__Descriptor,
-                new string[] { "A", });
-        internal__static_protobuf_unittest_RepeatedGroup_extension__Descriptor = Descriptor.MessageTypes[7];
-        internal__static_protobuf_unittest_RepeatedGroup_extension__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.RepeatedGroup_extension, global::Google.ProtocolBuffers.TestProtos.RepeatedGroup_extension.Builder>(internal__static_protobuf_unittest_RepeatedGroup_extension__Descriptor,
-                new string[] { "A", });
-        internal__static_protobuf_unittest_TestNestedExtension__Descriptor = Descriptor.MessageTypes[8];
-        internal__static_protobuf_unittest_TestNestedExtension__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestNestedExtension, global::Google.ProtocolBuffers.TestProtos.TestNestedExtension.Builder>(internal__static_protobuf_unittest_TestNestedExtension__Descriptor,
-                new string[] { });
-        global::Google.ProtocolBuffers.TestProtos.TestNestedExtension.Test = pb::GeneratedSingleExtension<string>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.TestNestedExtension.Descriptor.Extensions[0]);
-        global::Google.ProtocolBuffers.TestProtos.TestNestedExtension.NestedStringExtension = pb::GeneratedSingleExtension<string>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.TestNestedExtension.Descriptor.Extensions[1]);
-        internal__static_protobuf_unittest_TestRequired__Descriptor = Descriptor.MessageTypes[9];
-        internal__static_protobuf_unittest_TestRequired__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestRequired, global::Google.ProtocolBuffers.TestProtos.TestRequired.Builder>(internal__static_protobuf_unittest_TestRequired__Descriptor,
-                new string[] { "A", "Dummy2", "B", "Dummy4", "Dummy5", "Dummy6", "Dummy7", "Dummy8", "Dummy9", "Dummy10", "Dummy11", "Dummy12", "Dummy13", "Dummy14", "Dummy15", "Dummy16", "Dummy17", "Dummy18", "Dummy19", "Dummy20", "Dummy21", "Dummy22", "Dummy23", "Dummy24", "Dummy25", "Dummy26", "Dummy27", "Dummy28", "Dummy29", "Dummy30", "Dummy31", "Dummy32", "C", });
-        global::Google.ProtocolBuffers.TestProtos.TestRequired.Single = pb::GeneratedSingleExtension<global::Google.ProtocolBuffers.TestProtos.TestRequired>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.TestRequired.Descriptor.Extensions[0]);
-        global::Google.ProtocolBuffers.TestProtos.TestRequired.Multi = pb::GeneratedRepeatExtension<global::Google.ProtocolBuffers.TestProtos.TestRequired>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.TestRequired.Descriptor.Extensions[1]);
-        internal__static_protobuf_unittest_TestRequiredForeign__Descriptor = Descriptor.MessageTypes[10];
-        internal__static_protobuf_unittest_TestRequiredForeign__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestRequiredForeign, global::Google.ProtocolBuffers.TestProtos.TestRequiredForeign.Builder>(internal__static_protobuf_unittest_TestRequiredForeign__Descriptor,
-                new string[] { "OptionalMessage", "RepeatedMessage", "Dummy", });
-        internal__static_protobuf_unittest_TestForeignNested__Descriptor = Descriptor.MessageTypes[11];
-        internal__static_protobuf_unittest_TestForeignNested__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestForeignNested, global::Google.ProtocolBuffers.TestProtos.TestForeignNested.Builder>(internal__static_protobuf_unittest_TestForeignNested__Descriptor,
-                new string[] { "ForeignNested", });
-        internal__static_protobuf_unittest_TestEmptyMessage__Descriptor = Descriptor.MessageTypes[12];
-        internal__static_protobuf_unittest_TestEmptyMessage__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestEmptyMessage, global::Google.ProtocolBuffers.TestProtos.TestEmptyMessage.Builder>(internal__static_protobuf_unittest_TestEmptyMessage__Descriptor,
-                new string[] { });
-        internal__static_protobuf_unittest_TestEmptyMessageWithExtensions__Descriptor = Descriptor.MessageTypes[13];
-        internal__static_protobuf_unittest_TestEmptyMessageWithExtensions__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestEmptyMessageWithExtensions, global::Google.ProtocolBuffers.TestProtos.TestEmptyMessageWithExtensions.Builder>(internal__static_protobuf_unittest_TestEmptyMessageWithExtensions__Descriptor,
-                new string[] { });
-        internal__static_protobuf_unittest_TestMultipleExtensionRanges__Descriptor = Descriptor.MessageTypes[14];
-        internal__static_protobuf_unittest_TestMultipleExtensionRanges__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestMultipleExtensionRanges, global::Google.ProtocolBuffers.TestProtos.TestMultipleExtensionRanges.Builder>(internal__static_protobuf_unittest_TestMultipleExtensionRanges__Descriptor,
-                new string[] { });
-        internal__static_protobuf_unittest_TestReallyLargeTagNumber__Descriptor = Descriptor.MessageTypes[15];
-        internal__static_protobuf_unittest_TestReallyLargeTagNumber__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestReallyLargeTagNumber, global::Google.ProtocolBuffers.TestProtos.TestReallyLargeTagNumber.Builder>(internal__static_protobuf_unittest_TestReallyLargeTagNumber__Descriptor,
-                new string[] { "A", "Bb", });
-        internal__static_protobuf_unittest_TestRecursiveMessage__Descriptor = Descriptor.MessageTypes[16];
-        internal__static_protobuf_unittest_TestRecursiveMessage__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestRecursiveMessage, global::Google.ProtocolBuffers.TestProtos.TestRecursiveMessage.Builder>(internal__static_protobuf_unittest_TestRecursiveMessage__Descriptor,
-                new string[] { "A", "I", });
-        internal__static_protobuf_unittest_TestMutualRecursionA__Descriptor = Descriptor.MessageTypes[17];
-        internal__static_protobuf_unittest_TestMutualRecursionA__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionA, global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionA.Builder>(internal__static_protobuf_unittest_TestMutualRecursionA__Descriptor,
-                new string[] { "Bb", });
-        internal__static_protobuf_unittest_TestMutualRecursionB__Descriptor = Descriptor.MessageTypes[18];
-        internal__static_protobuf_unittest_TestMutualRecursionB__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionB, global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionB.Builder>(internal__static_protobuf_unittest_TestMutualRecursionB__Descriptor,
-                new string[] { "A", "OptionalInt32", });
-        internal__static_protobuf_unittest_TestDupFieldNumber__Descriptor = Descriptor.MessageTypes[19];
-        internal__static_protobuf_unittest_TestDupFieldNumber__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber, global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Builder>(internal__static_protobuf_unittest_TestDupFieldNumber__Descriptor,
-                new string[] { "A", "Foo", "Bar", });
-        internal__static_protobuf_unittest_TestDupFieldNumber_Foo__Descriptor = internal__static_protobuf_unittest_TestDupFieldNumber__Descriptor.NestedTypes[0];
-        internal__static_protobuf_unittest_TestDupFieldNumber_Foo__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Foo, global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Foo.Builder>(internal__static_protobuf_unittest_TestDupFieldNumber_Foo__Descriptor,
-                new string[] { "A", });
-        internal__static_protobuf_unittest_TestDupFieldNumber_Bar__Descriptor = internal__static_protobuf_unittest_TestDupFieldNumber__Descriptor.NestedTypes[1];
-        internal__static_protobuf_unittest_TestDupFieldNumber_Bar__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Bar, global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Bar.Builder>(internal__static_protobuf_unittest_TestDupFieldNumber_Bar__Descriptor,
-                new string[] { "A", });
-        internal__static_protobuf_unittest_TestEagerMessage__Descriptor = Descriptor.MessageTypes[20];
-        internal__static_protobuf_unittest_TestEagerMessage__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestEagerMessage, global::Google.ProtocolBuffers.TestProtos.TestEagerMessage.Builder>(internal__static_protobuf_unittest_TestEagerMessage__Descriptor,
-                new string[] { "SubMessage", });
-        internal__static_protobuf_unittest_TestLazyMessage__Descriptor = Descriptor.MessageTypes[21];
-        internal__static_protobuf_unittest_TestLazyMessage__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestLazyMessage, global::Google.ProtocolBuffers.TestProtos.TestLazyMessage.Builder>(internal__static_protobuf_unittest_TestLazyMessage__Descriptor,
-                new string[] { "SubMessage", });
-        internal__static_protobuf_unittest_TestNestedMessageHasBits__Descriptor = Descriptor.MessageTypes[22];
-        internal__static_protobuf_unittest_TestNestedMessageHasBits__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestNestedMessageHasBits, global::Google.ProtocolBuffers.TestProtos.TestNestedMessageHasBits.Builder>(internal__static_protobuf_unittest_TestNestedMessageHasBits__Descriptor,
-                new string[] { "OptionalNestedMessage", });
-        internal__static_protobuf_unittest_TestNestedMessageHasBits_NestedMessage__Descriptor = internal__static_protobuf_unittest_TestNestedMessageHasBits__Descriptor.NestedTypes[0];
-        internal__static_protobuf_unittest_TestNestedMessageHasBits_NestedMessage__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestNestedMessageHasBits.Types.NestedMessage, global::Google.ProtocolBuffers.TestProtos.TestNestedMessageHasBits.Types.NestedMessage.Builder>(internal__static_protobuf_unittest_TestNestedMessageHasBits_NestedMessage__Descriptor,
-                new string[] { "NestedmessageRepeatedInt32", "NestedmessageRepeatedForeignmessage", });
-        internal__static_protobuf_unittest_TestCamelCaseFieldNames__Descriptor = Descriptor.MessageTypes[23];
-        internal__static_protobuf_unittest_TestCamelCaseFieldNames__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestCamelCaseFieldNames, global::Google.ProtocolBuffers.TestProtos.TestCamelCaseFieldNames.Builder>(internal__static_protobuf_unittest_TestCamelCaseFieldNames__Descriptor,
-                new string[] { "PrimitiveField", "StringField", "EnumField", "MessageField", "StringPieceField", "CordField", "RepeatedPrimitiveField", "RepeatedStringField", "RepeatedEnumField", "RepeatedMessageField", "RepeatedStringPieceField", "RepeatedCordField", });
-        internal__static_protobuf_unittest_TestFieldOrderings__Descriptor = Descriptor.MessageTypes[24];
-        internal__static_protobuf_unittest_TestFieldOrderings__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestFieldOrderings, global::Google.ProtocolBuffers.TestProtos.TestFieldOrderings.Builder>(internal__static_protobuf_unittest_TestFieldOrderings__Descriptor,
-                new string[] { "MyString", "MyInt", "MyFloat", "OptionalNestedMessage", });
-        internal__static_protobuf_unittest_TestFieldOrderings_NestedMessage__Descriptor = internal__static_protobuf_unittest_TestFieldOrderings__Descriptor.NestedTypes[0];
-        internal__static_protobuf_unittest_TestFieldOrderings_NestedMessage__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestFieldOrderings.Types.NestedMessage, global::Google.ProtocolBuffers.TestProtos.TestFieldOrderings.Types.NestedMessage.Builder>(internal__static_protobuf_unittest_TestFieldOrderings_NestedMessage__Descriptor,
-                new string[] { "Oo", "Bb", });
-        internal__static_protobuf_unittest_TestExtremeDefaultValues__Descriptor = Descriptor.MessageTypes[25];
-        internal__static_protobuf_unittest_TestExtremeDefaultValues__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestExtremeDefaultValues, global::Google.ProtocolBuffers.TestProtos.TestExtremeDefaultValues.Builder>(internal__static_protobuf_unittest_TestExtremeDefaultValues__Descriptor,
-                new string[] { "EscapedBytes", "LargeUint32", "LargeUint64", "SmallInt32", "SmallInt64", "ReallySmallInt32", "ReallySmallInt64", "Utf8String", "ZeroFloat", "OneFloat", "SmallFloat", "NegativeOneFloat", "NegativeFloat", "LargeFloat", "SmallNegativeFloat", "InfDouble", "NegInfDouble", "NanDouble", "InfFloat", "NegInfFloat", "NanFloat", "CppTrigraph", "StringWithZero", "BytesWithZero", "StringPieceWithZero", "CordWithZero", "ReplacementString", });
-        internal__static_protobuf_unittest_SparseEnumMessage__Descriptor = Descriptor.MessageTypes[26];
-        internal__static_protobuf_unittest_SparseEnumMessage__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.SparseEnumMessage, global::Google.ProtocolBuffers.TestProtos.SparseEnumMessage.Builder>(internal__static_protobuf_unittest_SparseEnumMessage__Descriptor,
-                new string[] { "SparseEnum", });
-        internal__static_protobuf_unittest_OneString__Descriptor = Descriptor.MessageTypes[27];
-        internal__static_protobuf_unittest_OneString__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.OneString, global::Google.ProtocolBuffers.TestProtos.OneString.Builder>(internal__static_protobuf_unittest_OneString__Descriptor,
-                new string[] { "Data", });
-        internal__static_protobuf_unittest_MoreString__Descriptor = Descriptor.MessageTypes[28];
-        internal__static_protobuf_unittest_MoreString__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.MoreString, global::Google.ProtocolBuffers.TestProtos.MoreString.Builder>(internal__static_protobuf_unittest_MoreString__Descriptor,
-                new string[] { "Data", });
-        internal__static_protobuf_unittest_OneBytes__Descriptor = Descriptor.MessageTypes[29];
-        internal__static_protobuf_unittest_OneBytes__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.OneBytes, global::Google.ProtocolBuffers.TestProtos.OneBytes.Builder>(internal__static_protobuf_unittest_OneBytes__Descriptor,
-                new string[] { "Data", });
-        internal__static_protobuf_unittest_MoreBytes__Descriptor = Descriptor.MessageTypes[30];
-        internal__static_protobuf_unittest_MoreBytes__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.MoreBytes, global::Google.ProtocolBuffers.TestProtos.MoreBytes.Builder>(internal__static_protobuf_unittest_MoreBytes__Descriptor,
-                new string[] { "Data", });
-        internal__static_protobuf_unittest_Int32Message__Descriptor = Descriptor.MessageTypes[31];
-        internal__static_protobuf_unittest_Int32Message__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.Int32Message, global::Google.ProtocolBuffers.TestProtos.Int32Message.Builder>(internal__static_protobuf_unittest_Int32Message__Descriptor,
-                new string[] { "Data", });
-        internal__static_protobuf_unittest_Uint32Message__Descriptor = Descriptor.MessageTypes[32];
-        internal__static_protobuf_unittest_Uint32Message__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.Uint32Message, global::Google.ProtocolBuffers.TestProtos.Uint32Message.Builder>(internal__static_protobuf_unittest_Uint32Message__Descriptor,
-                new string[] { "Data", });
-        internal__static_protobuf_unittest_Int64Message__Descriptor = Descriptor.MessageTypes[33];
-        internal__static_protobuf_unittest_Int64Message__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.Int64Message, global::Google.ProtocolBuffers.TestProtos.Int64Message.Builder>(internal__static_protobuf_unittest_Int64Message__Descriptor,
-                new string[] { "Data", });
-        internal__static_protobuf_unittest_Uint64Message__Descriptor = Descriptor.MessageTypes[34];
-        internal__static_protobuf_unittest_Uint64Message__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.Uint64Message, global::Google.ProtocolBuffers.TestProtos.Uint64Message.Builder>(internal__static_protobuf_unittest_Uint64Message__Descriptor,
-                new string[] { "Data", });
-        internal__static_protobuf_unittest_BoolMessage__Descriptor = Descriptor.MessageTypes[35];
-        internal__static_protobuf_unittest_BoolMessage__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.BoolMessage, global::Google.ProtocolBuffers.TestProtos.BoolMessage.Builder>(internal__static_protobuf_unittest_BoolMessage__Descriptor,
-                new string[] { "Data", });
-        internal__static_protobuf_unittest_TestOneof__Descriptor = Descriptor.MessageTypes[36];
-        internal__static_protobuf_unittest_TestOneof__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestOneof, global::Google.ProtocolBuffers.TestProtos.TestOneof.Builder>(internal__static_protobuf_unittest_TestOneof__Descriptor,
-                new string[] { "FooInt", "FooString", "FooMessage", "FooGroup", "Foo", });
-        internal__static_protobuf_unittest_TestOneof_FooGroup__Descriptor = internal__static_protobuf_unittest_TestOneof__Descriptor.NestedTypes[0];
-        internal__static_protobuf_unittest_TestOneof_FooGroup__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestOneof.Types.FooGroup, global::Google.ProtocolBuffers.TestProtos.TestOneof.Types.FooGroup.Builder>(internal__static_protobuf_unittest_TestOneof_FooGroup__Descriptor,
-                new string[] { "A", "B", });
-        internal__static_protobuf_unittest_TestOneofBackwardsCompatible__Descriptor = Descriptor.MessageTypes[37];
-        internal__static_protobuf_unittest_TestOneofBackwardsCompatible__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestOneofBackwardsCompatible, global::Google.ProtocolBuffers.TestProtos.TestOneofBackwardsCompatible.Builder>(internal__static_protobuf_unittest_TestOneofBackwardsCompatible__Descriptor,
-                new string[] { "FooInt", "FooString", "FooMessage", "FooGroup", });
-        internal__static_protobuf_unittest_TestOneofBackwardsCompatible_FooGroup__Descriptor = internal__static_protobuf_unittest_TestOneofBackwardsCompatible__Descriptor.NestedTypes[0];
-        internal__static_protobuf_unittest_TestOneofBackwardsCompatible_FooGroup__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestOneofBackwardsCompatible.Types.FooGroup, global::Google.ProtocolBuffers.TestProtos.TestOneofBackwardsCompatible.Types.FooGroup.Builder>(internal__static_protobuf_unittest_TestOneofBackwardsCompatible_FooGroup__Descriptor,
-                new string[] { "A", "B", });
-        internal__static_protobuf_unittest_TestOneof2__Descriptor = Descriptor.MessageTypes[38];
-        internal__static_protobuf_unittest_TestOneof2__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestOneof2, global::Google.ProtocolBuffers.TestProtos.TestOneof2.Builder>(internal__static_protobuf_unittest_TestOneof2__Descriptor,
-                new string[] { "FooInt", "FooString", "FooCord", "FooStringPiece", "FooBytes", "FooEnum", "FooMessage", "FooGroup", "FooLazyMessage", "BarInt", "BarString", "BarCord", "BarStringPiece", "BarBytes", "BarEnum", "BazInt", "BazString", "Foo", "Bar", });
-        internal__static_protobuf_unittest_TestOneof2_FooGroup__Descriptor = internal__static_protobuf_unittest_TestOneof2__Descriptor.NestedTypes[0];
-        internal__static_protobuf_unittest_TestOneof2_FooGroup__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.FooGroup, global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.FooGroup.Builder>(internal__static_protobuf_unittest_TestOneof2_FooGroup__Descriptor,
-                new string[] { "A", "B", });
-        internal__static_protobuf_unittest_TestOneof2_NestedMessage__Descriptor = internal__static_protobuf_unittest_TestOneof2__Descriptor.NestedTypes[1];
-        internal__static_protobuf_unittest_TestOneof2_NestedMessage__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage, global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage.Builder>(internal__static_protobuf_unittest_TestOneof2_NestedMessage__Descriptor,
-                new string[] { "QuxInt", "CorgeInt", });
-        internal__static_protobuf_unittest_TestRequiredOneof__Descriptor = Descriptor.MessageTypes[39];
-        internal__static_protobuf_unittest_TestRequiredOneof__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestRequiredOneof, global::Google.ProtocolBuffers.TestProtos.TestRequiredOneof.Builder>(internal__static_protobuf_unittest_TestRequiredOneof__Descriptor,
-                new string[] { "FooInt", "FooString", "FooMessage", "Foo", });
-        internal__static_protobuf_unittest_TestRequiredOneof_NestedMessage__Descriptor = internal__static_protobuf_unittest_TestRequiredOneof__Descriptor.NestedTypes[0];
-        internal__static_protobuf_unittest_TestRequiredOneof_NestedMessage__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestRequiredOneof.Types.NestedMessage, global::Google.ProtocolBuffers.TestProtos.TestRequiredOneof.Types.NestedMessage.Builder>(internal__static_protobuf_unittest_TestRequiredOneof_NestedMessage__Descriptor,
-                new string[] { "RequiredDouble", });
-        internal__static_protobuf_unittest_TestPackedTypes__Descriptor = Descriptor.MessageTypes[40];
-        internal__static_protobuf_unittest_TestPackedTypes__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestPackedTypes, global::Google.ProtocolBuffers.TestProtos.TestPackedTypes.Builder>(internal__static_protobuf_unittest_TestPackedTypes__Descriptor,
-                new string[] { "PackedInt32", "PackedInt64", "PackedUint32", "PackedUint64", "PackedSint32", "PackedSint64", "PackedFixed32", "PackedFixed64", "PackedSfixed32", "PackedSfixed64", "PackedFloat", "PackedDouble", "PackedBool", "PackedEnum", });
-        internal__static_protobuf_unittest_TestUnpackedTypes__Descriptor = Descriptor.MessageTypes[41];
-        internal__static_protobuf_unittest_TestUnpackedTypes__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestUnpackedTypes, global::Google.ProtocolBuffers.TestProtos.TestUnpackedTypes.Builder>(internal__static_protobuf_unittest_TestUnpackedTypes__Descriptor,
-                new string[] { "UnpackedInt32", "UnpackedInt64", "UnpackedUint32", "UnpackedUint64", "UnpackedSint32", "UnpackedSint64", "UnpackedFixed32", "UnpackedFixed64", "UnpackedSfixed32", "UnpackedSfixed64", "UnpackedFloat", "UnpackedDouble", "UnpackedBool", "UnpackedEnum", });
-        internal__static_protobuf_unittest_TestPackedExtensions__Descriptor = Descriptor.MessageTypes[42];
-        internal__static_protobuf_unittest_TestPackedExtensions__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestPackedExtensions, global::Google.ProtocolBuffers.TestProtos.TestPackedExtensions.Builder>(internal__static_protobuf_unittest_TestPackedExtensions__Descriptor,
-                new string[] { });
-        internal__static_protobuf_unittest_TestUnpackedExtensions__Descriptor = Descriptor.MessageTypes[43];
-        internal__static_protobuf_unittest_TestUnpackedExtensions__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensions, global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensions.Builder>(internal__static_protobuf_unittest_TestUnpackedExtensions__Descriptor,
-                new string[] { });
-        internal__static_protobuf_unittest_TestDynamicExtensions__Descriptor = Descriptor.MessageTypes[44];
-        internal__static_protobuf_unittest_TestDynamicExtensions__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestDynamicExtensions, global::Google.ProtocolBuffers.TestProtos.TestDynamicExtensions.Builder>(internal__static_protobuf_unittest_TestDynamicExtensions__Descriptor,
-                new string[] { "ScalarExtension", "EnumExtension", "DynamicEnumExtension", "MessageExtension", "DynamicMessageExtension", "RepeatedExtension", "PackedExtension", });
-        internal__static_protobuf_unittest_TestDynamicExtensions_DynamicMessageType__Descriptor = internal__static_protobuf_unittest_TestDynamicExtensions__Descriptor.NestedTypes[0];
-        internal__static_protobuf_unittest_TestDynamicExtensions_DynamicMessageType__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestDynamicExtensions.Types.DynamicMessageType, global::Google.ProtocolBuffers.TestProtos.TestDynamicExtensions.Types.DynamicMessageType.Builder>(internal__static_protobuf_unittest_TestDynamicExtensions_DynamicMessageType__Descriptor,
-                new string[] { "DynamicField", });
-        internal__static_protobuf_unittest_TestRepeatedScalarDifferentTagSizes__Descriptor = Descriptor.MessageTypes[45];
-        internal__static_protobuf_unittest_TestRepeatedScalarDifferentTagSizes__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestRepeatedScalarDifferentTagSizes, global::Google.ProtocolBuffers.TestProtos.TestRepeatedScalarDifferentTagSizes.Builder>(internal__static_protobuf_unittest_TestRepeatedScalarDifferentTagSizes__Descriptor,
-                new string[] { "RepeatedFixed32", "RepeatedInt32", "RepeatedFixed64", "RepeatedInt64", "RepeatedFloat", "RepeatedUint64", });
-        internal__static_protobuf_unittest_TestParsingMerge__Descriptor = Descriptor.MessageTypes[46];
-        internal__static_protobuf_unittest_TestParsingMerge__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestParsingMerge, global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Builder>(internal__static_protobuf_unittest_TestParsingMerge__Descriptor,
-                new string[] { "RequiredAllTypes", "OptionalAllTypes", "RepeatedAllTypes", "OptionalGroup", "RepeatedGroup", });
-        internal__static_protobuf_unittest_TestParsingMerge_RepeatedFieldsGenerator__Descriptor = internal__static_protobuf_unittest_TestParsingMerge__Descriptor.NestedTypes[0];
-        internal__static_protobuf_unittest_TestParsingMerge_RepeatedFieldsGenerator__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Types.RepeatedFieldsGenerator, global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Types.RepeatedFieldsGenerator.Builder>(internal__static_protobuf_unittest_TestParsingMerge_RepeatedFieldsGenerator__Descriptor,
-                new string[] { "Field1", "Field2", "Field3", "Group1", "Group2", "Ext1", "Ext2", });
-        internal__static_protobuf_unittest_TestParsingMerge_RepeatedFieldsGenerator_Group1__Descriptor = internal__static_protobuf_unittest_TestParsingMerge_RepeatedFieldsGenerator__Descriptor.NestedTypes[0];
-        internal__static_protobuf_unittest_TestParsingMerge_RepeatedFieldsGenerator_Group1__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Types.RepeatedFieldsGenerator.Types.Group1, global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Types.RepeatedFieldsGenerator.Types.Group1.Builder>(internal__static_protobuf_unittest_TestParsingMerge_RepeatedFieldsGenerator_Group1__Descriptor,
-                new string[] { "Field1", });
-        internal__static_protobuf_unittest_TestParsingMerge_RepeatedFieldsGenerator_Group2__Descriptor = internal__static_protobuf_unittest_TestParsingMerge_RepeatedFieldsGenerator__Descriptor.NestedTypes[1];
-        internal__static_protobuf_unittest_TestParsingMerge_RepeatedFieldsGenerator_Group2__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Types.RepeatedFieldsGenerator.Types.Group2, global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Types.RepeatedFieldsGenerator.Types.Group2.Builder>(internal__static_protobuf_unittest_TestParsingMerge_RepeatedFieldsGenerator_Group2__Descriptor,
-                new string[] { "Field1", });
-        internal__static_protobuf_unittest_TestParsingMerge_OptionalGroup__Descriptor = internal__static_protobuf_unittest_TestParsingMerge__Descriptor.NestedTypes[1];
-        internal__static_protobuf_unittest_TestParsingMerge_OptionalGroup__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Types.OptionalGroup, global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Types.OptionalGroup.Builder>(internal__static_protobuf_unittest_TestParsingMerge_OptionalGroup__Descriptor,
-                new string[] { "OptionalGroupAllTypes", });
-        internal__static_protobuf_unittest_TestParsingMerge_RepeatedGroup__Descriptor = internal__static_protobuf_unittest_TestParsingMerge__Descriptor.NestedTypes[2];
-        internal__static_protobuf_unittest_TestParsingMerge_RepeatedGroup__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Types.RepeatedGroup, global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Types.RepeatedGroup.Builder>(internal__static_protobuf_unittest_TestParsingMerge_RepeatedGroup__Descriptor,
-                new string[] { "RepeatedGroupAllTypes", });
-        global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.OptionalExt = pb::GeneratedSingleExtension<global::Google.ProtocolBuffers.TestProtos.TestAllTypes>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Descriptor.Extensions[0]);
-        global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.RepeatedExt = pb::GeneratedRepeatExtension<global::Google.ProtocolBuffers.TestProtos.TestAllTypes>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Descriptor.Extensions[1]);
-        internal__static_protobuf_unittest_TestCommentInjectionMessage__Descriptor = Descriptor.MessageTypes[47];
-        internal__static_protobuf_unittest_TestCommentInjectionMessage__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestCommentInjectionMessage, global::Google.ProtocolBuffers.TestProtos.TestCommentInjectionMessage.Builder>(internal__static_protobuf_unittest_TestCommentInjectionMessage__Descriptor,
-                new string[] { "A", });
-        internal__static_protobuf_unittest_FooRequest__Descriptor = Descriptor.MessageTypes[48];
-        internal__static_protobuf_unittest_FooRequest__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.FooRequest, global::Google.ProtocolBuffers.TestProtos.FooRequest.Builder>(internal__static_protobuf_unittest_FooRequest__Descriptor,
-                new string[] { });
-        internal__static_protobuf_unittest_FooResponse__Descriptor = Descriptor.MessageTypes[49];
-        internal__static_protobuf_unittest_FooResponse__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.FooResponse, global::Google.ProtocolBuffers.TestProtos.FooResponse.Builder>(internal__static_protobuf_unittest_FooResponse__Descriptor,
-                new string[] { });
-        internal__static_protobuf_unittest_FooClientMessage__Descriptor = Descriptor.MessageTypes[50];
-        internal__static_protobuf_unittest_FooClientMessage__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.FooClientMessage, global::Google.ProtocolBuffers.TestProtos.FooClientMessage.Builder>(internal__static_protobuf_unittest_FooClientMessage__Descriptor,
-                new string[] { });
-        internal__static_protobuf_unittest_FooServerMessage__Descriptor = Descriptor.MessageTypes[51];
-        internal__static_protobuf_unittest_FooServerMessage__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.FooServerMessage, global::Google.ProtocolBuffers.TestProtos.FooServerMessage.Builder>(internal__static_protobuf_unittest_FooServerMessage__Descriptor,
-                new string[] { });
-        internal__static_protobuf_unittest_BarRequest__Descriptor = Descriptor.MessageTypes[52];
-        internal__static_protobuf_unittest_BarRequest__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.BarRequest, global::Google.ProtocolBuffers.TestProtos.BarRequest.Builder>(internal__static_protobuf_unittest_BarRequest__Descriptor,
-                new string[] { });
-        internal__static_protobuf_unittest_BarResponse__Descriptor = Descriptor.MessageTypes[53];
-        internal__static_protobuf_unittest_BarResponse__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.BarResponse, global::Google.ProtocolBuffers.TestProtos.BarResponse.Builder>(internal__static_protobuf_unittest_BarResponse__Descriptor,
-                new string[] { });
-        global::Google.ProtocolBuffers.TestProtos.Unittest.OptionalInt32Extension = pb::GeneratedSingleExtension<int>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[0]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.OptionalInt64Extension = pb::GeneratedSingleExtension<long>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[1]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.OptionalUint32Extension = pb::GeneratedSingleExtension<uint>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[2]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.OptionalUint64Extension = pb::GeneratedSingleExtension<ulong>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[3]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.OptionalSint32Extension = pb::GeneratedSingleExtension<int>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[4]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.OptionalSint64Extension = pb::GeneratedSingleExtension<long>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[5]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.OptionalFixed32Extension = pb::GeneratedSingleExtension<uint>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[6]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.OptionalFixed64Extension = pb::GeneratedSingleExtension<ulong>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[7]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.OptionalSfixed32Extension = pb::GeneratedSingleExtension<int>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[8]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.OptionalSfixed64Extension = pb::GeneratedSingleExtension<long>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[9]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.OptionalFloatExtension = pb::GeneratedSingleExtension<float>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[10]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.OptionalDoubleExtension = pb::GeneratedSingleExtension<double>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[11]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.OptionalBoolExtension = pb::GeneratedSingleExtension<bool>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[12]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.OptionalStringExtension = pb::GeneratedSingleExtension<string>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[13]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.OptionalBytesExtension = pb::GeneratedSingleExtension<pb::ByteString>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[14]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.OptionalGroupExtension = pb::GeneratedSingleExtension<global::Google.ProtocolBuffers.TestProtos.OptionalGroup_extension>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[15]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.OptionalNestedMessageExtension = pb::GeneratedSingleExtension<global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[16]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.OptionalForeignMessageExtension = pb::GeneratedSingleExtension<global::Google.ProtocolBuffers.TestProtos.ForeignMessage>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[17]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.OptionalImportMessageExtension = pb::GeneratedSingleExtension<global::Google.ProtocolBuffers.TestProtos.ImportMessage>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[18]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.OptionalNestedEnumExtension = pb::GeneratedSingleExtension<global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedEnum>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[19]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.OptionalForeignEnumExtension = pb::GeneratedSingleExtension<global::Google.ProtocolBuffers.TestProtos.ForeignEnum>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[20]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.OptionalImportEnumExtension = pb::GeneratedSingleExtension<global::Google.ProtocolBuffers.TestProtos.ImportEnum>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[21]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.OptionalStringPieceExtension = pb::GeneratedSingleExtension<string>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[22]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.OptionalCordExtension = pb::GeneratedSingleExtension<string>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[23]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.OptionalPublicImportMessageExtension = pb::GeneratedSingleExtension<global::Google.ProtocolBuffers.TestProtos.PublicImportMessage>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[24]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.OptionalLazyMessageExtension = pb::GeneratedSingleExtension<global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[25]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.RepeatedInt32Extension = pb::GeneratedRepeatExtension<int>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[26]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.RepeatedInt64Extension = pb::GeneratedRepeatExtension<long>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[27]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.RepeatedUint32Extension = pb::GeneratedRepeatExtension<uint>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[28]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.RepeatedUint64Extension = pb::GeneratedRepeatExtension<ulong>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[29]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.RepeatedSint32Extension = pb::GeneratedRepeatExtension<int>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[30]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.RepeatedSint64Extension = pb::GeneratedRepeatExtension<long>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[31]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.RepeatedFixed32Extension = pb::GeneratedRepeatExtension<uint>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[32]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.RepeatedFixed64Extension = pb::GeneratedRepeatExtension<ulong>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[33]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.RepeatedSfixed32Extension = pb::GeneratedRepeatExtension<int>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[34]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.RepeatedSfixed64Extension = pb::GeneratedRepeatExtension<long>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[35]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.RepeatedFloatExtension = pb::GeneratedRepeatExtension<float>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[36]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.RepeatedDoubleExtension = pb::GeneratedRepeatExtension<double>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[37]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.RepeatedBoolExtension = pb::GeneratedRepeatExtension<bool>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[38]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.RepeatedStringExtension = pb::GeneratedRepeatExtension<string>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[39]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.RepeatedBytesExtension = pb::GeneratedRepeatExtension<pb::ByteString>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[40]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.RepeatedGroupExtension = pb::GeneratedRepeatExtension<global::Google.ProtocolBuffers.TestProtos.RepeatedGroup_extension>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[41]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.RepeatedNestedMessageExtension = pb::GeneratedRepeatExtension<global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[42]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.RepeatedForeignMessageExtension = pb::GeneratedRepeatExtension<global::Google.ProtocolBuffers.TestProtos.ForeignMessage>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[43]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.RepeatedImportMessageExtension = pb::GeneratedRepeatExtension<global::Google.ProtocolBuffers.TestProtos.ImportMessage>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[44]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.RepeatedNestedEnumExtension = pb::GeneratedRepeatExtension<global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedEnum>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[45]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.RepeatedForeignEnumExtension = pb::GeneratedRepeatExtension<global::Google.ProtocolBuffers.TestProtos.ForeignEnum>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[46]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.RepeatedImportEnumExtension = pb::GeneratedRepeatExtension<global::Google.ProtocolBuffers.TestProtos.ImportEnum>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[47]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.RepeatedStringPieceExtension = pb::GeneratedRepeatExtension<string>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[48]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.RepeatedCordExtension = pb::GeneratedRepeatExtension<string>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[49]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.RepeatedLazyMessageExtension = pb::GeneratedRepeatExtension<global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[50]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.DefaultInt32Extension = pb::GeneratedSingleExtension<int>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[51]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.DefaultInt64Extension = pb::GeneratedSingleExtension<long>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[52]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.DefaultUint32Extension = pb::GeneratedSingleExtension<uint>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[53]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.DefaultUint64Extension = pb::GeneratedSingleExtension<ulong>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[54]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.DefaultSint32Extension = pb::GeneratedSingleExtension<int>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[55]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.DefaultSint64Extension = pb::GeneratedSingleExtension<long>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[56]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.DefaultFixed32Extension = pb::GeneratedSingleExtension<uint>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[57]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.DefaultFixed64Extension = pb::GeneratedSingleExtension<ulong>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[58]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.DefaultSfixed32Extension = pb::GeneratedSingleExtension<int>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[59]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.DefaultSfixed64Extension = pb::GeneratedSingleExtension<long>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[60]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.DefaultFloatExtension = pb::GeneratedSingleExtension<float>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[61]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.DefaultDoubleExtension = pb::GeneratedSingleExtension<double>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[62]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.DefaultBoolExtension = pb::GeneratedSingleExtension<bool>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[63]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.DefaultStringExtension = pb::GeneratedSingleExtension<string>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[64]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.DefaultBytesExtension = pb::GeneratedSingleExtension<pb::ByteString>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[65]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.DefaultNestedEnumExtension = pb::GeneratedSingleExtension<global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedEnum>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[66]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.DefaultForeignEnumExtension = pb::GeneratedSingleExtension<global::Google.ProtocolBuffers.TestProtos.ForeignEnum>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[67]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.DefaultImportEnumExtension = pb::GeneratedSingleExtension<global::Google.ProtocolBuffers.TestProtos.ImportEnum>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[68]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.DefaultStringPieceExtension = pb::GeneratedSingleExtension<string>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[69]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.DefaultCordExtension = pb::GeneratedSingleExtension<string>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[70]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.OneofUint32Extension = pb::GeneratedSingleExtension<uint>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[71]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.OneofNestedMessageExtension = pb::GeneratedSingleExtension<global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[72]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.OneofStringExtension = pb::GeneratedSingleExtension<string>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[73]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.OneofBytesExtension = pb::GeneratedSingleExtension<pb::ByteString>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[74]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.MyExtensionString = pb::GeneratedSingleExtension<string>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[75]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.MyExtensionInt = pb::GeneratedSingleExtension<int>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[76]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.PackedInt32Extension = pb::GeneratedRepeatExtension<int>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[77]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.PackedInt64Extension = pb::GeneratedRepeatExtension<long>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[78]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.PackedUint32Extension = pb::GeneratedRepeatExtension<uint>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[79]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.PackedUint64Extension = pb::GeneratedRepeatExtension<ulong>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[80]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.PackedSint32Extension = pb::GeneratedRepeatExtension<int>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[81]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.PackedSint64Extension = pb::GeneratedRepeatExtension<long>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[82]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.PackedFixed32Extension = pb::GeneratedRepeatExtension<uint>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[83]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.PackedFixed64Extension = pb::GeneratedRepeatExtension<ulong>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[84]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.PackedSfixed32Extension = pb::GeneratedRepeatExtension<int>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[85]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.PackedSfixed64Extension = pb::GeneratedRepeatExtension<long>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[86]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.PackedFloatExtension = pb::GeneratedRepeatExtension<float>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[87]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.PackedDoubleExtension = pb::GeneratedRepeatExtension<double>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[88]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.PackedBoolExtension = pb::GeneratedRepeatExtension<bool>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[89]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.PackedEnumExtension = pb::GeneratedRepeatExtension<global::Google.ProtocolBuffers.TestProtos.ForeignEnum>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[90]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.UnpackedInt32Extension = pb::GeneratedRepeatExtension<int>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[91]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.UnpackedInt64Extension = pb::GeneratedRepeatExtension<long>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[92]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.UnpackedUint32Extension = pb::GeneratedRepeatExtension<uint>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[93]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.UnpackedUint64Extension = pb::GeneratedRepeatExtension<ulong>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[94]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.UnpackedSint32Extension = pb::GeneratedRepeatExtension<int>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[95]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.UnpackedSint64Extension = pb::GeneratedRepeatExtension<long>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[96]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.UnpackedFixed32Extension = pb::GeneratedRepeatExtension<uint>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[97]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.UnpackedFixed64Extension = pb::GeneratedRepeatExtension<ulong>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[98]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.UnpackedSfixed32Extension = pb::GeneratedRepeatExtension<int>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[99]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.UnpackedSfixed64Extension = pb::GeneratedRepeatExtension<long>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[100]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.UnpackedFloatExtension = pb::GeneratedRepeatExtension<float>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[101]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.UnpackedDoubleExtension = pb::GeneratedRepeatExtension<double>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[102]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.UnpackedBoolExtension = pb::GeneratedRepeatExtension<bool>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[103]);
-        global::Google.ProtocolBuffers.TestProtos.Unittest.UnpackedEnumExtension = pb::GeneratedRepeatExtension<global::Google.ProtocolBuffers.TestProtos.ForeignEnum>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor.Extensions[104]);
-        pb::ExtensionRegistry registry = pb::ExtensionRegistry.CreateInstance();
-        RegisterAllExtensions(registry);
-        global::Google.ProtocolBuffers.TestProtos.UnittestImport.RegisterAllExtensions(registry);
-        return registry;
-      };
-      pbd::FileDescriptor.InternalBuildGeneratedFileFrom(descriptorData,
-          new pbd::FileDescriptor[] {
-          global::Google.ProtocolBuffers.TestProtos.UnittestImport.Descriptor, 
-          }, assigner);
-    }
-    #endregion
-
-  }
-  #region Enums
-  public enum ForeignEnum {
-    FOREIGN_FOO = 4,
-    FOREIGN_BAR = 5,
-    FOREIGN_BAZ = 6,
-  }
-
-  public enum TestEnumWithDupValue {
-    FOO1 = 1,
-    BAR1 = 2,
-    BAZ = 3,
-    FOO2 = 1,
-    BAR2 = 2,
-  }
-
-  public enum TestSparseEnum {
-    SPARSE_A = 123,
-    SPARSE_B = 62374,
-    SPARSE_C = 12589234,
-    SPARSE_D = -15,
-    SPARSE_E = -53452,
-    SPARSE_F = 0,
-    SPARSE_G = 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[] { "default_bool", "default_bytes", "default_cord", "default_double", "default_fixed32", "default_fixed64", "default_float", "default_foreign_enum", "default_import_enum", "default_int32", "default_int64", "default_nested_enum", "default_sfixed32", "default_sfixed64", "default_sint32", "default_sint64", "default_string", "default_string_piece", "default_uint32", "default_uint64", "oneof_bytes", "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_import_enum", "optional_import_message", "optional_int32", "optional_int64", "optional_lazy_message", "optional_nested_enum", "optional_nested_message", "optional_public_import_message", "optional_sfixed32", "optional_sfixed64", "optional_sint32", "optional_sint64", "optional_string", "optional_string_piece", "optional_uint32", "optional_uint64", "optionalgroup", "repeated_bool", "repeated_bytes", "repeated_cord", "repeated_double", "repeated_fixed32", "repeated_fixed64", "repeated_float", "repeated_foreign_enum", "repeated_foreign_message", "repeated_import_enum", "repeated_import_message", "repeated_int32", "repeated_int64", "repeated_lazy_message", "repeated_nested_enum", "repeated_nested_message", "repeated_sfixed32", "repeated_sfixed64", "repeated_sint32", "repeated_sint64", "repeated_string", "repeated_string_piece", "repeated_uint32", "repeated_uint64", "repeatedgroup" };
-    private static readonly uint[] _testAllTypesFieldTags = new uint[] { 584, 602, 682, 577, 541, 545, 573, 656, 664, 488, 496, 648, 557, 561, 520, 528, 594, 674, 504, 512, 914, 898, 906, 888, 104, 122, 202, 97, 61, 65, 93, 176, 154, 184, 162, 8, 16, 218, 168, 146, 210, 77, 81, 40, 48, 114, 194, 24, 32, 131, 344, 362, 442, 337, 301, 305, 333, 416, 394, 424, 402, 248, 256, 458, 408, 386, 317, 321, 280, 288, 354, 434, 264, 272, 371 };
-    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.Unittest.internal__static_protobuf_unittest_TestAllTypes__Descriptor; }
-    }
-
-    protected override pb::FieldAccess.FieldAccessorTable<TestAllTypes, TestAllTypes.Builder> InternalFieldAccessors {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestAllTypes__FieldAccessorTable; }
-    }
-
-    #region Nested types
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public static partial class Types {
-      public enum NestedEnum {
-        FOO = 1,
-        BAR = 2,
-        BAZ = 3,
-        NEG = -1,
-      }
-
-      [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.Unittest.internal__static_protobuf_unittest_TestAllTypes_NestedMessage__Descriptor; }
-        }
-
-        protected override pb::FieldAccess.FieldAccessorTable<NestedMessage, NestedMessage.Builder> InternalFieldAccessors {
-          get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_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.Unittest.Descriptor, null);
-        }
-      }
-
-      [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-      public sealed partial class OptionalGroup : pb::GeneratedMessage<OptionalGroup, OptionalGroup.Builder> {
-        private OptionalGroup() { }
-        private static readonly OptionalGroup defaultInstance = new OptionalGroup().MakeReadOnly();
-        private static readonly string[] _optionalGroupFieldNames = new string[] { "a" };
-        private static readonly uint[] _optionalGroupFieldTags = new uint[] { 136 };
-        public static OptionalGroup DefaultInstance {
-          get { return defaultInstance; }
-        }
-
-        public override OptionalGroup DefaultInstanceForType {
-          get { return DefaultInstance; }
-        }
-
-        protected override OptionalGroup ThisMessage {
-          get { return this; }
-        }
-
-        public static pbd::MessageDescriptor Descriptor {
-          get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestAllTypes_OptionalGroup__Descriptor; }
-        }
-
-        protected override pb::FieldAccess.FieldAccessorTable<OptionalGroup, OptionalGroup.Builder> InternalFieldAccessors {
-          get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestAllTypes_OptionalGroup__FieldAccessorTable; }
-        }
-
-        public const int AFieldNumber = 17;
-        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 = _optionalGroupFieldNames;
-          if (hasA) {
-            output.WriteInt32(17, 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(17, A);
-          }
-          size += UnknownFields.SerializedSize;
-          memoizedSerializedSize = size;
-          return size;
-        }
-        public static OptionalGroup ParseFrom(pb::ByteString data) {
-          return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-        }
-        public static OptionalGroup ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-        }
-        public static OptionalGroup ParseFrom(byte[] data) {
-          return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-        }
-        public static OptionalGroup ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-        }
-        public static OptionalGroup ParseFrom(global::System.IO.Stream input) {
-          return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-        }
-        public static OptionalGroup ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-        }
-        public static OptionalGroup ParseDelimitedFrom(global::System.IO.Stream input) {
-          return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-        }
-        public static OptionalGroup ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-          return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-        }
-        public static OptionalGroup ParseFrom(pb::ICodedInputStream input) {
-          return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-        }
-        public static OptionalGroup ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-        }
-        private OptionalGroup 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(OptionalGroup prototype) {
-          return new Builder(prototype);
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-        public sealed partial class Builder : pb::GeneratedBuilder<OptionalGroup, Builder> {
-          protected override Builder ThisBuilder {
-            get { return this; }
-          }
-          public Builder() {
-            result = DefaultInstance;
-            resultIsReadOnly = true;
-          }
-          internal Builder(OptionalGroup cloneFrom) {
-            result = cloneFrom;
-            resultIsReadOnly = true;
-          }
-
-          private bool resultIsReadOnly;
-          private OptionalGroup result;
-
-          private OptionalGroup PrepareBuilder() {
-            if (resultIsReadOnly) {
-              OptionalGroup original = result;
-              result = new OptionalGroup();
-              resultIsReadOnly = false;
-              MergeFrom(original);
-            }
-            return result;
-          }
-
-          public override bool IsInitialized {
-            get { return result.IsInitialized; }
-          }
-
-          protected override OptionalGroup 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.OptionalGroup.Descriptor; }
-          }
-
-          public override OptionalGroup DefaultInstanceForType {
-            get { return global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.OptionalGroup.DefaultInstance; }
-          }
-
-          public override OptionalGroup BuildPartial() {
-            if (resultIsReadOnly) {
-              return result;
-            }
-            resultIsReadOnly = true;
-            return result.MakeReadOnly();
-          }
-
-          public override Builder MergeFrom(pb::IMessage other) {
-            if (other is OptionalGroup) {
-              return MergeFrom((OptionalGroup) other);
-            } else {
-              base.MergeFrom(other);
-              return this;
-            }
-          }
-
-          public override Builder MergeFrom(OptionalGroup other) {
-            if (other == global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.OptionalGroup.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(_optionalGroupFieldNames, field_name, global::System.StringComparer.Ordinal);
-                if(field_ordinal >= 0)
-                  tag = _optionalGroupFieldTags[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 136: {
-                  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 OptionalGroup() {
-          object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor, null);
-        }
-      }
-
-      [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-      public sealed partial class RepeatedGroup : pb::GeneratedMessage<RepeatedGroup, RepeatedGroup.Builder> {
-        private RepeatedGroup() { }
-        private static readonly RepeatedGroup defaultInstance = new RepeatedGroup().MakeReadOnly();
-        private static readonly string[] _repeatedGroupFieldNames = new string[] { "a" };
-        private static readonly uint[] _repeatedGroupFieldTags = new uint[] { 376 };
-        public static RepeatedGroup DefaultInstance {
-          get { return defaultInstance; }
-        }
-
-        public override RepeatedGroup DefaultInstanceForType {
-          get { return DefaultInstance; }
-        }
-
-        protected override RepeatedGroup ThisMessage {
-          get { return this; }
-        }
-
-        public static pbd::MessageDescriptor Descriptor {
-          get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestAllTypes_RepeatedGroup__Descriptor; }
-        }
-
-        protected override pb::FieldAccess.FieldAccessorTable<RepeatedGroup, RepeatedGroup.Builder> InternalFieldAccessors {
-          get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestAllTypes_RepeatedGroup__FieldAccessorTable; }
-        }
-
-        public const int AFieldNumber = 47;
-        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 = _repeatedGroupFieldNames;
-          if (hasA) {
-            output.WriteInt32(47, 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(47, A);
-          }
-          size += UnknownFields.SerializedSize;
-          memoizedSerializedSize = size;
-          return size;
-        }
-        public static RepeatedGroup ParseFrom(pb::ByteString data) {
-          return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-        }
-        public static RepeatedGroup ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-        }
-        public static RepeatedGroup ParseFrom(byte[] data) {
-          return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-        }
-        public static RepeatedGroup ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-        }
-        public static RepeatedGroup ParseFrom(global::System.IO.Stream input) {
-          return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-        }
-        public static RepeatedGroup ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-        }
-        public static RepeatedGroup ParseDelimitedFrom(global::System.IO.Stream input) {
-          return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-        }
-        public static RepeatedGroup ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-          return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-        }
-        public static RepeatedGroup ParseFrom(pb::ICodedInputStream input) {
-          return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-        }
-        public static RepeatedGroup ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-        }
-        private RepeatedGroup 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(RepeatedGroup prototype) {
-          return new Builder(prototype);
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-        public sealed partial class Builder : pb::GeneratedBuilder<RepeatedGroup, Builder> {
-          protected override Builder ThisBuilder {
-            get { return this; }
-          }
-          public Builder() {
-            result = DefaultInstance;
-            resultIsReadOnly = true;
-          }
-          internal Builder(RepeatedGroup cloneFrom) {
-            result = cloneFrom;
-            resultIsReadOnly = true;
-          }
-
-          private bool resultIsReadOnly;
-          private RepeatedGroup result;
-
-          private RepeatedGroup PrepareBuilder() {
-            if (resultIsReadOnly) {
-              RepeatedGroup original = result;
-              result = new RepeatedGroup();
-              resultIsReadOnly = false;
-              MergeFrom(original);
-            }
-            return result;
-          }
-
-          public override bool IsInitialized {
-            get { return result.IsInitialized; }
-          }
-
-          protected override RepeatedGroup 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.RepeatedGroup.Descriptor; }
-          }
-
-          public override RepeatedGroup DefaultInstanceForType {
-            get { return global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.RepeatedGroup.DefaultInstance; }
-          }
-
-          public override RepeatedGroup BuildPartial() {
-            if (resultIsReadOnly) {
-              return result;
-            }
-            resultIsReadOnly = true;
-            return result.MakeReadOnly();
-          }
-
-          public override Builder MergeFrom(pb::IMessage other) {
-            if (other is RepeatedGroup) {
-              return MergeFrom((RepeatedGroup) other);
-            } else {
-              base.MergeFrom(other);
-              return this;
-            }
-          }
-
-          public override Builder MergeFrom(RepeatedGroup other) {
-            if (other == global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.RepeatedGroup.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(_repeatedGroupFieldNames, field_name, global::System.StringComparer.Ordinal);
-                if(field_ordinal >= 0)
-                  tag = _repeatedGroupFieldTags[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 376: {
-                  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 RepeatedGroup() {
-          object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor, null);
-        }
-      }
-
-    }
-    #endregion
-
-    private object oneofField_;
-    public enum OneofFieldOneofCase {
-      OneofUint32 = 111,
-      OneofNestedMessage = 112,
-      OneofString = 113,
-      OneofBytes = 114,
-      None = 0,
-    }
-    private OneofFieldOneofCase oneofFieldCase_ = OneofFieldOneofCase.None;
-    public OneofFieldOneofCase OneofFieldCase {
-      get { return oneofFieldCase_; }
-    }
-
-    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; }
-    }
-    public uint OptionalUint32 {
-      get { return optionalUint32_; }
-    }
-
-    public const int OptionalUint64FieldNumber = 4;
-    private bool hasOptionalUint64;
-    private ulong optionalUint64_;
-    public bool HasOptionalUint64 {
-      get { return hasOptionalUint64; }
-    }
-    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; }
-    }
-    public uint OptionalFixed32 {
-      get { return optionalFixed32_; }
-    }
-
-    public const int OptionalFixed64FieldNumber = 8;
-    private bool hasOptionalFixed64;
-    private ulong optionalFixed64_;
-    public bool HasOptionalFixed64 {
-      get { return hasOptionalFixed64; }
-    }
-    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 OptionalGroupFieldNumber = 16;
-    private bool hasOptionalGroup;
-    private global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.OptionalGroup optionalGroup_;
-    public bool HasOptionalGroup {
-      get { return hasOptionalGroup; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.OptionalGroup OptionalGroup {
-      get { return optionalGroup_ ?? global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.OptionalGroup.DefaultInstance; }
-    }
-
-    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 OptionalImportMessageFieldNumber = 20;
-    private bool hasOptionalImportMessage;
-    private global::Google.ProtocolBuffers.TestProtos.ImportMessage optionalImportMessage_;
-    public bool HasOptionalImportMessage {
-      get { return hasOptionalImportMessage; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.ImportMessage OptionalImportMessage {
-      get { return optionalImportMessage_ ?? global::Google.ProtocolBuffers.TestProtos.ImportMessage.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 OptionalImportEnumFieldNumber = 23;
-    private bool hasOptionalImportEnum;
-    private global::Google.ProtocolBuffers.TestProtos.ImportEnum optionalImportEnum_ = global::Google.ProtocolBuffers.TestProtos.ImportEnum.IMPORT_FOO;
-    public bool HasOptionalImportEnum {
-      get { return hasOptionalImportEnum; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.ImportEnum OptionalImportEnum {
-      get { return optionalImportEnum_; }
-    }
-
-    public const int OptionalStringPieceFieldNumber = 24;
-    private bool hasOptionalStringPiece;
-    private string optionalStringPiece_ = "";
-    public bool HasOptionalStringPiece {
-      get { return hasOptionalStringPiece; }
-    }
-    public string OptionalStringPiece {
-      get { return optionalStringPiece_; }
-    }
-
-    public const int OptionalCordFieldNumber = 25;
-    private bool hasOptionalCord;
-    private string optionalCord_ = "";
-    public bool HasOptionalCord {
-      get { return hasOptionalCord; }
-    }
-    public string OptionalCord {
-      get { return optionalCord_; }
-    }
-
-    public const int OptionalPublicImportMessageFieldNumber = 26;
-    private bool hasOptionalPublicImportMessage;
-    private global::Google.ProtocolBuffers.TestProtos.PublicImportMessage optionalPublicImportMessage_;
-    public bool HasOptionalPublicImportMessage {
-      get { return hasOptionalPublicImportMessage; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.PublicImportMessage OptionalPublicImportMessage {
-      get { return optionalPublicImportMessage_ ?? global::Google.ProtocolBuffers.TestProtos.PublicImportMessage.DefaultInstance; }
-    }
-
-    public const int OptionalLazyMessageFieldNumber = 27;
-    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>();
-    public scg::IList<uint> RepeatedUint32List {
-      get { return pbc::Lists.AsReadOnly(repeatedUint32_); }
-    }
-    public int RepeatedUint32Count {
-      get { return repeatedUint32_.Count; }
-    }
-    public uint GetRepeatedUint32(int index) {
-      return repeatedUint32_[index];
-    }
-
-    public const int RepeatedUint64FieldNumber = 34;
-    private pbc::PopsicleList<ulong> repeatedUint64_ = new pbc::PopsicleList<ulong>();
-    public scg::IList<ulong> RepeatedUint64List {
-      get { return pbc::Lists.AsReadOnly(repeatedUint64_); }
-    }
-    public int RepeatedUint64Count {
-      get { return repeatedUint64_.Count; }
-    }
-    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>();
-    public scg::IList<uint> RepeatedFixed32List {
-      get { return pbc::Lists.AsReadOnly(repeatedFixed32_); }
-    }
-    public int RepeatedFixed32Count {
-      get { return repeatedFixed32_.Count; }
-    }
-    public uint GetRepeatedFixed32(int index) {
-      return repeatedFixed32_[index];
-    }
-
-    public const int RepeatedFixed64FieldNumber = 38;
-    private pbc::PopsicleList<ulong> repeatedFixed64_ = new pbc::PopsicleList<ulong>();
-    public scg::IList<ulong> RepeatedFixed64List {
-      get { return pbc::Lists.AsReadOnly(repeatedFixed64_); }
-    }
-    public int RepeatedFixed64Count {
-      get { return repeatedFixed64_.Count; }
-    }
-    public ulong GetRepeatedFixed64(int index) {
-      return repeatedFixed64_[index];
-    }
-
-    public const int RepeatedSfixed32FieldNumber = 39;
-    private pbc::PopsicleList<int> repeatedSfixed32_ = new pbc::PopsicleList<int>();
-    public scg::IList<int> RepeatedSfixed32List {
-      get { return pbc::Lists.AsReadOnly(repeatedSfixed32_); }
-    }
-    public int RepeatedSfixed32Count {
-      get { return repeatedSfixed32_.Count; }
-    }
-    public int GetRepeatedSfixed32(int index) {
-      return repeatedSfixed32_[index];
-    }
-
-    public const int RepeatedSfixed64FieldNumber = 40;
-    private pbc::PopsicleList<long> repeatedSfixed64_ = new pbc::PopsicleList<long>();
-    public scg::IList<long> RepeatedSfixed64List {
-      get { return pbc::Lists.AsReadOnly(repeatedSfixed64_); }
-    }
-    public int RepeatedSfixed64Count {
-      get { return repeatedSfixed64_.Count; }
-    }
-    public long GetRepeatedSfixed64(int index) {
-      return repeatedSfixed64_[index];
-    }
-
-    public const int RepeatedFloatFieldNumber = 41;
-    private pbc::PopsicleList<float> repeatedFloat_ = new pbc::PopsicleList<float>();
-    public scg::IList<float> RepeatedFloatList {
-      get { return pbc::Lists.AsReadOnly(repeatedFloat_); }
-    }
-    public int RepeatedFloatCount {
-      get { return repeatedFloat_.Count; }
-    }
-    public float GetRepeatedFloat(int index) {
-      return repeatedFloat_[index];
-    }
-
-    public const int RepeatedDoubleFieldNumber = 42;
-    private pbc::PopsicleList<double> repeatedDouble_ = new pbc::PopsicleList<double>();
-    public scg::IList<double> RepeatedDoubleList {
-      get { return pbc::Lists.AsReadOnly(repeatedDouble_); }
-    }
-    public int RepeatedDoubleCount {
-      get { return repeatedDouble_.Count; }
-    }
-    public double GetRepeatedDouble(int index) {
-      return repeatedDouble_[index];
-    }
-
-    public const int RepeatedBoolFieldNumber = 43;
-    private pbc::PopsicleList<bool> repeatedBool_ = new pbc::PopsicleList<bool>();
-    public scg::IList<bool> RepeatedBoolList {
-      get { return pbc::Lists.AsReadOnly(repeatedBool_); }
-    }
-    public int RepeatedBoolCount {
-      get { return repeatedBool_.Count; }
-    }
-    public bool GetRepeatedBool(int index) {
-      return repeatedBool_[index];
-    }
-
-    public const int RepeatedStringFieldNumber = 44;
-    private pbc::PopsicleList<string> repeatedString_ = new pbc::PopsicleList<string>();
-    public scg::IList<string> RepeatedStringList {
-      get { return pbc::Lists.AsReadOnly(repeatedString_); }
-    }
-    public int RepeatedStringCount {
-      get { return repeatedString_.Count; }
-    }
-    public string GetRepeatedString(int index) {
-      return repeatedString_[index];
-    }
-
-    public const int RepeatedBytesFieldNumber = 45;
-    private pbc::PopsicleList<pb::ByteString> repeatedBytes_ = new pbc::PopsicleList<pb::ByteString>();
-    public scg::IList<pb::ByteString> RepeatedBytesList {
-      get { return pbc::Lists.AsReadOnly(repeatedBytes_); }
-    }
-    public int RepeatedBytesCount {
-      get { return repeatedBytes_.Count; }
-    }
-    public pb::ByteString GetRepeatedBytes(int index) {
-      return repeatedBytes_[index];
-    }
-
-    public const int RepeatedGroupFieldNumber = 46;
-    private pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.RepeatedGroup> repeatedGroup_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.RepeatedGroup>();
-    public scg::IList<global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.RepeatedGroup> RepeatedGroupList {
-      get { return repeatedGroup_; }
-    }
-    public int RepeatedGroupCount {
-      get { return repeatedGroup_.Count; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.RepeatedGroup GetRepeatedGroup(int index) {
-      return repeatedGroup_[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 RepeatedImportMessageFieldNumber = 50;
-    private pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.ImportMessage> repeatedImportMessage_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.ImportMessage>();
-    public scg::IList<global::Google.ProtocolBuffers.TestProtos.ImportMessage> RepeatedImportMessageList {
-      get { return repeatedImportMessage_; }
-    }
-    public int RepeatedImportMessageCount {
-      get { return repeatedImportMessage_.Count; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.ImportMessage GetRepeatedImportMessage(int index) {
-      return repeatedImportMessage_[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 RepeatedImportEnumFieldNumber = 53;
-    private pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.ImportEnum> repeatedImportEnum_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.ImportEnum>();
-    public scg::IList<global::Google.ProtocolBuffers.TestProtos.ImportEnum> RepeatedImportEnumList {
-      get { return pbc::Lists.AsReadOnly(repeatedImportEnum_); }
-    }
-    public int RepeatedImportEnumCount {
-      get { return repeatedImportEnum_.Count; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.ImportEnum GetRepeatedImportEnum(int index) {
-      return repeatedImportEnum_[index];
-    }
-
-    public const int RepeatedStringPieceFieldNumber = 54;
-    private pbc::PopsicleList<string> repeatedStringPiece_ = new pbc::PopsicleList<string>();
-    public scg::IList<string> RepeatedStringPieceList {
-      get { return pbc::Lists.AsReadOnly(repeatedStringPiece_); }
-    }
-    public int RepeatedStringPieceCount {
-      get { return repeatedStringPiece_.Count; }
-    }
-    public string GetRepeatedStringPiece(int index) {
-      return repeatedStringPiece_[index];
-    }
-
-    public const int RepeatedCordFieldNumber = 55;
-    private pbc::PopsicleList<string> repeatedCord_ = new pbc::PopsicleList<string>();
-    public scg::IList<string> RepeatedCordList {
-      get { return pbc::Lists.AsReadOnly(repeatedCord_); }
-    }
-    public int RepeatedCordCount {
-      get { return repeatedCord_.Count; }
-    }
-    public string GetRepeatedCord(int index) {
-      return repeatedCord_[index];
-    }
-
-    public const int 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 DefaultInt32FieldNumber = 61;
-    private bool hasDefaultInt32;
-    private int defaultInt32_ = 41;
-    public bool HasDefaultInt32 {
-      get { return hasDefaultInt32; }
-    }
-    public int DefaultInt32 {
-      get { return defaultInt32_; }
-    }
-
-    public const int DefaultInt64FieldNumber = 62;
-    private bool hasDefaultInt64;
-    private long defaultInt64_ = 42L;
-    public bool HasDefaultInt64 {
-      get { return hasDefaultInt64; }
-    }
-    public long DefaultInt64 {
-      get { return defaultInt64_; }
-    }
-
-    public const int DefaultUint32FieldNumber = 63;
-    private bool hasDefaultUint32;
-    private uint defaultUint32_ = 43;
-    public bool HasDefaultUint32 {
-      get { return hasDefaultUint32; }
-    }
-    public uint DefaultUint32 {
-      get { return defaultUint32_; }
-    }
-
-    public const int DefaultUint64FieldNumber = 64;
-    private bool hasDefaultUint64;
-    private ulong defaultUint64_ = 44UL;
-    public bool HasDefaultUint64 {
-      get { return hasDefaultUint64; }
-    }
-    public ulong DefaultUint64 {
-      get { return defaultUint64_; }
-    }
-
-    public const int DefaultSint32FieldNumber = 65;
-    private bool hasDefaultSint32;
-    private int defaultSint32_ = -45;
-    public bool HasDefaultSint32 {
-      get { return hasDefaultSint32; }
-    }
-    public int DefaultSint32 {
-      get { return defaultSint32_; }
-    }
-
-    public const int DefaultSint64FieldNumber = 66;
-    private bool hasDefaultSint64;
-    private long defaultSint64_ = 46L;
-    public bool HasDefaultSint64 {
-      get { return hasDefaultSint64; }
-    }
-    public long DefaultSint64 {
-      get { return defaultSint64_; }
-    }
-
-    public const int DefaultFixed32FieldNumber = 67;
-    private bool hasDefaultFixed32;
-    private uint defaultFixed32_ = 47;
-    public bool HasDefaultFixed32 {
-      get { return hasDefaultFixed32; }
-    }
-    public uint DefaultFixed32 {
-      get { return defaultFixed32_; }
-    }
-
-    public const int DefaultFixed64FieldNumber = 68;
-    private bool hasDefaultFixed64;
-    private ulong defaultFixed64_ = 48UL;
-    public bool HasDefaultFixed64 {
-      get { return hasDefaultFixed64; }
-    }
-    public ulong DefaultFixed64 {
-      get { return defaultFixed64_; }
-    }
-
-    public const int DefaultSfixed32FieldNumber = 69;
-    private bool hasDefaultSfixed32;
-    private int defaultSfixed32_ = 49;
-    public bool HasDefaultSfixed32 {
-      get { return hasDefaultSfixed32; }
-    }
-    public int DefaultSfixed32 {
-      get { return defaultSfixed32_; }
-    }
-
-    public const int DefaultSfixed64FieldNumber = 70;
-    private bool hasDefaultSfixed64;
-    private long defaultSfixed64_ = -50L;
-    public bool HasDefaultSfixed64 {
-      get { return hasDefaultSfixed64; }
-    }
-    public long DefaultSfixed64 {
-      get { return defaultSfixed64_; }
-    }
-
-    public const int DefaultFloatFieldNumber = 71;
-    private bool hasDefaultFloat;
-    private float defaultFloat_ = 51.5F;
-    public bool HasDefaultFloat {
-      get { return hasDefaultFloat; }
-    }
-    public float DefaultFloat {
-      get { return defaultFloat_; }
-    }
-
-    public const int DefaultDoubleFieldNumber = 72;
-    private bool hasDefaultDouble;
-    private double defaultDouble_ = 52000D;
-    public bool HasDefaultDouble {
-      get { return hasDefaultDouble; }
-    }
-    public double DefaultDouble {
-      get { return defaultDouble_; }
-    }
-
-    public const int DefaultBoolFieldNumber = 73;
-    private bool hasDefaultBool;
-    private bool defaultBool_ = true;
-    public bool HasDefaultBool {
-      get { return hasDefaultBool; }
-    }
-    public bool DefaultBool {
-      get { return defaultBool_; }
-    }
-
-    public const int DefaultStringFieldNumber = 74;
-    private bool hasDefaultString;
-    private string defaultString_ = "hello";
-    public bool HasDefaultString {
-      get { return hasDefaultString; }
-    }
-    public string DefaultString {
-      get { return defaultString_; }
-    }
-
-    public const int DefaultBytesFieldNumber = 75;
-    private bool hasDefaultBytes;
-    private pb::ByteString defaultBytes_ = (pb::ByteString) global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Descriptor.Fields[65].DefaultValue;
-    public bool HasDefaultBytes {
-      get { return hasDefaultBytes; }
-    }
-    public pb::ByteString DefaultBytes {
-      get { return defaultBytes_; }
-    }
-
-    public const int DefaultNestedEnumFieldNumber = 81;
-    private bool hasDefaultNestedEnum;
-    private global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedEnum defaultNestedEnum_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedEnum.BAR;
-    public bool HasDefaultNestedEnum {
-      get { return hasDefaultNestedEnum; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedEnum DefaultNestedEnum {
-      get { return defaultNestedEnum_; }
-    }
-
-    public const int DefaultForeignEnumFieldNumber = 82;
-    private bool hasDefaultForeignEnum;
-    private global::Google.ProtocolBuffers.TestProtos.ForeignEnum defaultForeignEnum_ = global::Google.ProtocolBuffers.TestProtos.ForeignEnum.FOREIGN_BAR;
-    public bool HasDefaultForeignEnum {
-      get { return hasDefaultForeignEnum; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.ForeignEnum DefaultForeignEnum {
-      get { return defaultForeignEnum_; }
-    }
-
-    public const int DefaultImportEnumFieldNumber = 83;
-    private bool hasDefaultImportEnum;
-    private global::Google.ProtocolBuffers.TestProtos.ImportEnum defaultImportEnum_ = global::Google.ProtocolBuffers.TestProtos.ImportEnum.IMPORT_BAR;
-    public bool HasDefaultImportEnum {
-      get { return hasDefaultImportEnum; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.ImportEnum DefaultImportEnum {
-      get { return defaultImportEnum_; }
-    }
-
-    public const int DefaultStringPieceFieldNumber = 84;
-    private bool hasDefaultStringPiece;
-    private string defaultStringPiece_ = "abc";
-    public bool HasDefaultStringPiece {
-      get { return hasDefaultStringPiece; }
-    }
-    public string DefaultStringPiece {
-      get { return defaultStringPiece_; }
-    }
-
-    public const int DefaultCordFieldNumber = 85;
-    private bool hasDefaultCord;
-    private string defaultCord_ = "123";
-    public bool HasDefaultCord {
-      get { return hasDefaultCord; }
-    }
-    public string DefaultCord {
-      get { return defaultCord_; }
-    }
-
-    public const int OneofUint32FieldNumber = 111;
-    public bool HasOneofUint32 {
-      get { return oneofFieldCase_ == OneofFieldOneofCase.OneofUint32; }
-    }
-    public uint OneofUint32 {
-      get { return oneofFieldCase_ == OneofFieldOneofCase.OneofUint32 ? (uint) oneofField_ : 0; }
-    }
-
-    public const int OneofNestedMessageFieldNumber = 112;
-    public bool HasOneofNestedMessage {
-      get { return oneofFieldCase_ == OneofFieldOneofCase.OneofNestedMessage; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage OneofNestedMessage {
-      get { return oneofFieldCase_ == OneofFieldOneofCase.OneofNestedMessage ? (global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage) oneofField_ : global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage.DefaultInstance; }
-    }
-
-    public const int OneofStringFieldNumber = 113;
-    public bool HasOneofString {
-      get { return oneofFieldCase_ == OneofFieldOneofCase.OneofString; }
-    }
-    public string OneofString {
-      get { return oneofFieldCase_ == OneofFieldOneofCase.OneofString ? (string) oneofField_ : ""; }
-    }
-
-    public const int OneofBytesFieldNumber = 114;
-    public bool HasOneofBytes {
-      get { return oneofFieldCase_ == OneofFieldOneofCase.OneofBytes; }
-    }
-    public pb::ByteString OneofBytes {
-      get { return oneofFieldCase_ == OneofFieldOneofCase.OneofBytes ? (pb::ByteString) oneofField_ : pb::ByteString.Empty; }
-    }
-
-    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[35], OptionalInt32);
-      }
-      if (hasOptionalInt64) {
-        output.WriteInt64(2, field_names[36], OptionalInt64);
-      }
-      if (hasOptionalUint32) {
-        output.WriteUInt32(3, field_names[47], OptionalUint32);
-      }
-      if (hasOptionalUint64) {
-        output.WriteUInt64(4, field_names[48], OptionalUint64);
-      }
-      if (hasOptionalSint32) {
-        output.WriteSInt32(5, field_names[43], OptionalSint32);
-      }
-      if (hasOptionalSint64) {
-        output.WriteSInt64(6, field_names[44], OptionalSint64);
-      }
-      if (hasOptionalFixed32) {
-        output.WriteFixed32(7, field_names[28], OptionalFixed32);
-      }
-      if (hasOptionalFixed64) {
-        output.WriteFixed64(8, field_names[29], OptionalFixed64);
-      }
-      if (hasOptionalSfixed32) {
-        output.WriteSFixed32(9, field_names[41], OptionalSfixed32);
-      }
-      if (hasOptionalSfixed64) {
-        output.WriteSFixed64(10, field_names[42], OptionalSfixed64);
-      }
-      if (hasOptionalFloat) {
-        output.WriteFloat(11, field_names[30], OptionalFloat);
-      }
-      if (hasOptionalDouble) {
-        output.WriteDouble(12, field_names[27], OptionalDouble);
-      }
-      if (hasOptionalBool) {
-        output.WriteBool(13, field_names[24], OptionalBool);
-      }
-      if (hasOptionalString) {
-        output.WriteString(14, field_names[45], OptionalString);
-      }
-      if (hasOptionalBytes) {
-        output.WriteBytes(15, field_names[25], OptionalBytes);
-      }
-      if (hasOptionalGroup) {
-        output.WriteGroup(16, field_names[49], OptionalGroup);
-      }
-      if (hasOptionalNestedMessage) {
-        output.WriteMessage(18, field_names[39], OptionalNestedMessage);
-      }
-      if (hasOptionalForeignMessage) {
-        output.WriteMessage(19, field_names[32], OptionalForeignMessage);
-      }
-      if (hasOptionalImportMessage) {
-        output.WriteMessage(20, field_names[34], OptionalImportMessage);
-      }
-      if (hasOptionalNestedEnum) {
-        output.WriteEnum(21, field_names[38], (int) OptionalNestedEnum, OptionalNestedEnum);
-      }
-      if (hasOptionalForeignEnum) {
-        output.WriteEnum(22, field_names[31], (int) OptionalForeignEnum, OptionalForeignEnum);
-      }
-      if (hasOptionalImportEnum) {
-        output.WriteEnum(23, field_names[33], (int) OptionalImportEnum, OptionalImportEnum);
-      }
-      if (hasOptionalStringPiece) {
-        output.WriteString(24, field_names[46], OptionalStringPiece);
-      }
-      if (hasOptionalCord) {
-        output.WriteString(25, field_names[26], OptionalCord);
-      }
-      if (hasOptionalPublicImportMessage) {
-        output.WriteMessage(26, field_names[40], OptionalPublicImportMessage);
-      }
-      if (hasOptionalLazyMessage) {
-        output.WriteMessage(27, field_names[37], OptionalLazyMessage);
-      }
-      if (repeatedInt32_.Count > 0) {
-        output.WriteInt32Array(31, field_names[61], repeatedInt32_);
-      }
-      if (repeatedInt64_.Count > 0) {
-        output.WriteInt64Array(32, field_names[62], repeatedInt64_);
-      }
-      if (repeatedUint32_.Count > 0) {
-        output.WriteUInt32Array(33, field_names[72], repeatedUint32_);
-      }
-      if (repeatedUint64_.Count > 0) {
-        output.WriteUInt64Array(34, field_names[73], repeatedUint64_);
-      }
-      if (repeatedSint32_.Count > 0) {
-        output.WriteSInt32Array(35, field_names[68], repeatedSint32_);
-      }
-      if (repeatedSint64_.Count > 0) {
-        output.WriteSInt64Array(36, field_names[69], repeatedSint64_);
-      }
-      if (repeatedFixed32_.Count > 0) {
-        output.WriteFixed32Array(37, field_names[54], repeatedFixed32_);
-      }
-      if (repeatedFixed64_.Count > 0) {
-        output.WriteFixed64Array(38, field_names[55], repeatedFixed64_);
-      }
-      if (repeatedSfixed32_.Count > 0) {
-        output.WriteSFixed32Array(39, field_names[66], repeatedSfixed32_);
-      }
-      if (repeatedSfixed64_.Count > 0) {
-        output.WriteSFixed64Array(40, field_names[67], repeatedSfixed64_);
-      }
-      if (repeatedFloat_.Count > 0) {
-        output.WriteFloatArray(41, field_names[56], repeatedFloat_);
-      }
-      if (repeatedDouble_.Count > 0) {
-        output.WriteDoubleArray(42, field_names[53], repeatedDouble_);
-      }
-      if (repeatedBool_.Count > 0) {
-        output.WriteBoolArray(43, field_names[50], repeatedBool_);
-      }
-      if (repeatedString_.Count > 0) {
-        output.WriteStringArray(44, field_names[70], repeatedString_);
-      }
-      if (repeatedBytes_.Count > 0) {
-        output.WriteBytesArray(45, field_names[51], repeatedBytes_);
-      }
-      if (repeatedGroup_.Count > 0) {
-        output.WriteGroupArray(46, field_names[74], repeatedGroup_);
-      }
-      if (repeatedNestedMessage_.Count > 0) {
-        output.WriteMessageArray(48, field_names[65], repeatedNestedMessage_);
-      }
-      if (repeatedForeignMessage_.Count > 0) {
-        output.WriteMessageArray(49, field_names[58], repeatedForeignMessage_);
-      }
-      if (repeatedImportMessage_.Count > 0) {
-        output.WriteMessageArray(50, field_names[60], repeatedImportMessage_);
-      }
-      if (repeatedNestedEnum_.Count > 0) {
-        output.WriteEnumArray(51, field_names[64], repeatedNestedEnum_);
-      }
-      if (repeatedForeignEnum_.Count > 0) {
-        output.WriteEnumArray(52, field_names[57], repeatedForeignEnum_);
-      }
-      if (repeatedImportEnum_.Count > 0) {
-        output.WriteEnumArray(53, field_names[59], repeatedImportEnum_);
-      }
-      if (repeatedStringPiece_.Count > 0) {
-        output.WriteStringArray(54, field_names[71], repeatedStringPiece_);
-      }
-      if (repeatedCord_.Count > 0) {
-        output.WriteStringArray(55, field_names[52], repeatedCord_);
-      }
-      if (repeatedLazyMessage_.Count > 0) {
-        output.WriteMessageArray(57, field_names[63], repeatedLazyMessage_);
-      }
-      if (hasDefaultInt32) {
-        output.WriteInt32(61, field_names[9], DefaultInt32);
-      }
-      if (hasDefaultInt64) {
-        output.WriteInt64(62, field_names[10], DefaultInt64);
-      }
-      if (hasDefaultUint32) {
-        output.WriteUInt32(63, field_names[18], DefaultUint32);
-      }
-      if (hasDefaultUint64) {
-        output.WriteUInt64(64, field_names[19], DefaultUint64);
-      }
-      if (hasDefaultSint32) {
-        output.WriteSInt32(65, field_names[14], DefaultSint32);
-      }
-      if (hasDefaultSint64) {
-        output.WriteSInt64(66, field_names[15], DefaultSint64);
-      }
-      if (hasDefaultFixed32) {
-        output.WriteFixed32(67, field_names[4], DefaultFixed32);
-      }
-      if (hasDefaultFixed64) {
-        output.WriteFixed64(68, field_names[5], DefaultFixed64);
-      }
-      if (hasDefaultSfixed32) {
-        output.WriteSFixed32(69, field_names[12], DefaultSfixed32);
-      }
-      if (hasDefaultSfixed64) {
-        output.WriteSFixed64(70, field_names[13], DefaultSfixed64);
-      }
-      if (hasDefaultFloat) {
-        output.WriteFloat(71, field_names[6], DefaultFloat);
-      }
-      if (hasDefaultDouble) {
-        output.WriteDouble(72, field_names[3], DefaultDouble);
-      }
-      if (hasDefaultBool) {
-        output.WriteBool(73, field_names[0], DefaultBool);
-      }
-      if (hasDefaultString) {
-        output.WriteString(74, field_names[16], DefaultString);
-      }
-      if (hasDefaultBytes) {
-        output.WriteBytes(75, field_names[1], DefaultBytes);
-      }
-      if (hasDefaultNestedEnum) {
-        output.WriteEnum(81, field_names[11], (int) DefaultNestedEnum, DefaultNestedEnum);
-      }
-      if (hasDefaultForeignEnum) {
-        output.WriteEnum(82, field_names[7], (int) DefaultForeignEnum, DefaultForeignEnum);
-      }
-      if (hasDefaultImportEnum) {
-        output.WriteEnum(83, field_names[8], (int) DefaultImportEnum, DefaultImportEnum);
-      }
-      if (hasDefaultStringPiece) {
-        output.WriteString(84, field_names[17], DefaultStringPiece);
-      }
-      if (hasDefaultCord) {
-        output.WriteString(85, field_names[2], DefaultCord);
-      }
-      if (oneofFieldCase_ == OneofFieldOneofCase.OneofUint32) {
-        output.WriteUInt32(111, field_names[23], OneofUint32);
-      }
-      if (oneofFieldCase_ == OneofFieldOneofCase.OneofNestedMessage) {
-        output.WriteMessage(112, field_names[21], OneofNestedMessage);
-      }
-      if (oneofFieldCase_ == OneofFieldOneofCase.OneofString) {
-        output.WriteString(113, field_names[22], OneofString);
-      }
-      if (oneofFieldCase_ == OneofFieldOneofCase.OneofBytes) {
-        output.WriteBytes(114, field_names[20], OneofBytes);
-      }
-      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 (hasOptionalGroup) {
-        size += pb::CodedOutputStream.ComputeGroupSize(16, OptionalGroup);
-      }
-      if (hasOptionalNestedMessage) {
-        size += pb::CodedOutputStream.ComputeMessageSize(18, OptionalNestedMessage);
-      }
-      if (hasOptionalForeignMessage) {
-        size += pb::CodedOutputStream.ComputeMessageSize(19, OptionalForeignMessage);
-      }
-      if (hasOptionalImportMessage) {
-        size += pb::CodedOutputStream.ComputeMessageSize(20, OptionalImportMessage);
-      }
-      if (hasOptionalNestedEnum) {
-        size += pb::CodedOutputStream.ComputeEnumSize(21, (int) OptionalNestedEnum);
-      }
-      if (hasOptionalForeignEnum) {
-        size += pb::CodedOutputStream.ComputeEnumSize(22, (int) OptionalForeignEnum);
-      }
-      if (hasOptionalImportEnum) {
-        size += pb::CodedOutputStream.ComputeEnumSize(23, (int) OptionalImportEnum);
-      }
-      if (hasOptionalStringPiece) {
-        size += pb::CodedOutputStream.ComputeStringSize(24, OptionalStringPiece);
-      }
-      if (hasOptionalCord) {
-        size += pb::CodedOutputStream.ComputeStringSize(25, OptionalCord);
-      }
-      if (hasOptionalPublicImportMessage) {
-        size += pb::CodedOutputStream.ComputeMessageSize(26, OptionalPublicImportMessage);
-      }
-      if (hasOptionalLazyMessage) {
-        size += pb::CodedOutputStream.ComputeMessageSize(27, 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.RepeatedGroup element in RepeatedGroupList) {
-        size += pb::CodedOutputStream.ComputeGroupSize(46, element);
-      }
-      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.ImportMessage element in RepeatedImportMessageList) {
-        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;
-        if (repeatedImportEnum_.Count > 0) {
-          foreach (global::Google.ProtocolBuffers.TestProtos.ImportEnum element in repeatedImportEnum_) {
-            dataSize += pb::CodedOutputStream.ComputeEnumSizeNoTag((int) element);
-          }
-          size += dataSize;
-          size += 2 * repeatedImportEnum_.Count;
-        }
-      }
-      {
-        int dataSize = 0;
-        foreach (string element in RepeatedStringPieceList) {
-          dataSize += pb::CodedOutputStream.ComputeStringSizeNoTag(element);
-        }
-        size += dataSize;
-        size += 2 * repeatedStringPiece_.Count;
-      }
-      {
-        int dataSize = 0;
-        foreach (string element in RepeatedCordList) {
-          dataSize += pb::CodedOutputStream.ComputeStringSizeNoTag(element);
-        }
-        size += dataSize;
-        size += 2 * repeatedCord_.Count;
-      }
-      foreach (global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage element in RepeatedLazyMessageList) {
-        size += pb::CodedOutputStream.ComputeMessageSize(57, element);
-      }
-      if (hasDefaultInt32) {
-        size += pb::CodedOutputStream.ComputeInt32Size(61, DefaultInt32);
-      }
-      if (hasDefaultInt64) {
-        size += pb::CodedOutputStream.ComputeInt64Size(62, DefaultInt64);
-      }
-      if (hasDefaultUint32) {
-        size += pb::CodedOutputStream.ComputeUInt32Size(63, DefaultUint32);
-      }
-      if (hasDefaultUint64) {
-        size += pb::CodedOutputStream.ComputeUInt64Size(64, DefaultUint64);
-      }
-      if (hasDefaultSint32) {
-        size += pb::CodedOutputStream.ComputeSInt32Size(65, DefaultSint32);
-      }
-      if (hasDefaultSint64) {
-        size += pb::CodedOutputStream.ComputeSInt64Size(66, DefaultSint64);
-      }
-      if (hasDefaultFixed32) {
-        size += pb::CodedOutputStream.ComputeFixed32Size(67, DefaultFixed32);
-      }
-      if (hasDefaultFixed64) {
-        size += pb::CodedOutputStream.ComputeFixed64Size(68, DefaultFixed64);
-      }
-      if (hasDefaultSfixed32) {
-        size += pb::CodedOutputStream.ComputeSFixed32Size(69, DefaultSfixed32);
-      }
-      if (hasDefaultSfixed64) {
-        size += pb::CodedOutputStream.ComputeSFixed64Size(70, DefaultSfixed64);
-      }
-      if (hasDefaultFloat) {
-        size += pb::CodedOutputStream.ComputeFloatSize(71, DefaultFloat);
-      }
-      if (hasDefaultDouble) {
-        size += pb::CodedOutputStream.ComputeDoubleSize(72, DefaultDouble);
-      }
-      if (hasDefaultBool) {
-        size += pb::CodedOutputStream.ComputeBoolSize(73, DefaultBool);
-      }
-      if (hasDefaultString) {
-        size += pb::CodedOutputStream.ComputeStringSize(74, DefaultString);
-      }
-      if (hasDefaultBytes) {
-        size += pb::CodedOutputStream.ComputeBytesSize(75, DefaultBytes);
-      }
-      if (hasDefaultNestedEnum) {
-        size += pb::CodedOutputStream.ComputeEnumSize(81, (int) DefaultNestedEnum);
-      }
-      if (hasDefaultForeignEnum) {
-        size += pb::CodedOutputStream.ComputeEnumSize(82, (int) DefaultForeignEnum);
-      }
-      if (hasDefaultImportEnum) {
-        size += pb::CodedOutputStream.ComputeEnumSize(83, (int) DefaultImportEnum);
-      }
-      if (hasDefaultStringPiece) {
-        size += pb::CodedOutputStream.ComputeStringSize(84, DefaultStringPiece);
-      }
-      if (hasDefaultCord) {
-        size += pb::CodedOutputStream.ComputeStringSize(85, DefaultCord);
-      }
-      if (oneofFieldCase_ == OneofFieldOneofCase.OneofUint32) {
-        size += pb::CodedOutputStream.ComputeUInt32Size(111, OneofUint32);
-      }
-      if (oneofFieldCase_ == OneofFieldOneofCase.OneofNestedMessage) {
-        size += pb::CodedOutputStream.ComputeMessageSize(112, OneofNestedMessage);
-      }
-      if (oneofFieldCase_ == OneofFieldOneofCase.OneofString) {
-        size += pb::CodedOutputStream.ComputeStringSize(113, OneofString);
-      }
-      if (oneofFieldCase_ == OneofFieldOneofCase.OneofBytes) {
-        size += pb::CodedOutputStream.ComputeBytesSize(114, OneofBytes);
-      }
-      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();
-      repeatedGroup_.MakeReadOnly();
-      repeatedNestedMessage_.MakeReadOnly();
-      repeatedForeignMessage_.MakeReadOnly();
-      repeatedImportMessage_.MakeReadOnly();
-      repeatedNestedEnum_.MakeReadOnly();
-      repeatedForeignEnum_.MakeReadOnly();
-      repeatedImportEnum_.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.HasOptionalGroup) {
-          MergeOptionalGroup(other.OptionalGroup);
-        }
-        if (other.HasOptionalNestedMessage) {
-          MergeOptionalNestedMessage(other.OptionalNestedMessage);
-        }
-        if (other.HasOptionalForeignMessage) {
-          MergeOptionalForeignMessage(other.OptionalForeignMessage);
-        }
-        if (other.HasOptionalImportMessage) {
-          MergeOptionalImportMessage(other.OptionalImportMessage);
-        }
-        if (other.HasOptionalNestedEnum) {
-          OptionalNestedEnum = other.OptionalNestedEnum;
-        }
-        if (other.HasOptionalForeignEnum) {
-          OptionalForeignEnum = other.OptionalForeignEnum;
-        }
-        if (other.HasOptionalImportEnum) {
-          OptionalImportEnum = other.OptionalImportEnum;
-        }
-        if (other.HasOptionalStringPiece) {
-          OptionalStringPiece = other.OptionalStringPiece;
-        }
-        if (other.HasOptionalCord) {
-          OptionalCord = other.OptionalCord;
-        }
-        if (other.HasOptionalPublicImportMessage) {
-          MergeOptionalPublicImportMessage(other.OptionalPublicImportMessage);
-        }
-        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.repeatedGroup_.Count != 0) {
-          result.repeatedGroup_.Add(other.repeatedGroup_);
-        }
-        if (other.repeatedNestedMessage_.Count != 0) {
-          result.repeatedNestedMessage_.Add(other.repeatedNestedMessage_);
-        }
-        if (other.repeatedForeignMessage_.Count != 0) {
-          result.repeatedForeignMessage_.Add(other.repeatedForeignMessage_);
-        }
-        if (other.repeatedImportMessage_.Count != 0) {
-          result.repeatedImportMessage_.Add(other.repeatedImportMessage_);
-        }
-        if (other.repeatedNestedEnum_.Count != 0) {
-          result.repeatedNestedEnum_.Add(other.repeatedNestedEnum_);
-        }
-        if (other.repeatedForeignEnum_.Count != 0) {
-          result.repeatedForeignEnum_.Add(other.repeatedForeignEnum_);
-        }
-        if (other.repeatedImportEnum_.Count != 0) {
-          result.repeatedImportEnum_.Add(other.repeatedImportEnum_);
-        }
-        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.HasDefaultInt32) {
-          DefaultInt32 = other.DefaultInt32;
-        }
-        if (other.HasDefaultInt64) {
-          DefaultInt64 = other.DefaultInt64;
-        }
-        if (other.HasDefaultUint32) {
-          DefaultUint32 = other.DefaultUint32;
-        }
-        if (other.HasDefaultUint64) {
-          DefaultUint64 = other.DefaultUint64;
-        }
-        if (other.HasDefaultSint32) {
-          DefaultSint32 = other.DefaultSint32;
-        }
-        if (other.HasDefaultSint64) {
-          DefaultSint64 = other.DefaultSint64;
-        }
-        if (other.HasDefaultFixed32) {
-          DefaultFixed32 = other.DefaultFixed32;
-        }
-        if (other.HasDefaultFixed64) {
-          DefaultFixed64 = other.DefaultFixed64;
-        }
-        if (other.HasDefaultSfixed32) {
-          DefaultSfixed32 = other.DefaultSfixed32;
-        }
-        if (other.HasDefaultSfixed64) {
-          DefaultSfixed64 = other.DefaultSfixed64;
-        }
-        if (other.HasDefaultFloat) {
-          DefaultFloat = other.DefaultFloat;
-        }
-        if (other.HasDefaultDouble) {
-          DefaultDouble = other.DefaultDouble;
-        }
-        if (other.HasDefaultBool) {
-          DefaultBool = other.DefaultBool;
-        }
-        if (other.HasDefaultString) {
-          DefaultString = other.DefaultString;
-        }
-        if (other.HasDefaultBytes) {
-          DefaultBytes = other.DefaultBytes;
-        }
-        if (other.HasDefaultNestedEnum) {
-          DefaultNestedEnum = other.DefaultNestedEnum;
-        }
-        if (other.HasDefaultForeignEnum) {
-          DefaultForeignEnum = other.DefaultForeignEnum;
-        }
-        if (other.HasDefaultImportEnum) {
-          DefaultImportEnum = other.DefaultImportEnum;
-        }
-        if (other.HasDefaultStringPiece) {
-          DefaultStringPiece = other.DefaultStringPiece;
-        }
-        if (other.HasDefaultCord) {
-          DefaultCord = other.DefaultCord;
-        }
-        switch (other.OneofFieldCase) {
-          case OneofFieldOneofCase.OneofUint32: {
-            SetOneofUint32(other.OneofUint32);
-            break;
-          }
-          case OneofFieldOneofCase.OneofNestedMessage: {
-            MergeOneofNestedMessage(other.OneofNestedMessage);
-            break;
-          }
-          case OneofFieldOneofCase.OneofString: {
-            SetOneofString(other.OneofString);
-            break;
-          }
-          case OneofFieldOneofCase.OneofBytes: {
-            SetOneofBytes(other.OneofBytes);
-            break;
-          }
-          case OneofFieldOneofCase.None: { break; }
-        }
-        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 131: {
-              global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.OptionalGroup.Builder subBuilder = global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.OptionalGroup.CreateBuilder();
-              if (result.hasOptionalGroup) {
-                subBuilder.MergeFrom(OptionalGroup);
-              }
-              input.ReadGroup(16, subBuilder, extensionRegistry);
-              OptionalGroup = subBuilder.BuildPartial();
-              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.ImportMessage.Builder subBuilder = global::Google.ProtocolBuffers.TestProtos.ImportMessage.CreateBuilder();
-              if (result.hasOptionalImportMessage) {
-                subBuilder.MergeFrom(OptionalImportMessage);
-              }
-              input.ReadMessage(subBuilder, extensionRegistry);
-              OptionalImportMessage = 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 184: {
-              object unknown;
-              if(input.ReadEnum(ref result.optionalImportEnum_, out unknown)) {
-                result.hasOptionalImportEnum = true;
-              } else if(unknown is int) {
-                if (unknownFields == null) {
-                  unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-                }
-                unknownFields.MergeVarintField(23, (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 210: {
-              global::Google.ProtocolBuffers.TestProtos.PublicImportMessage.Builder subBuilder = global::Google.ProtocolBuffers.TestProtos.PublicImportMessage.CreateBuilder();
-              if (result.hasOptionalPublicImportMessage) {
-                subBuilder.MergeFrom(OptionalPublicImportMessage);
-              }
-              input.ReadMessage(subBuilder, extensionRegistry);
-              OptionalPublicImportMessage = subBuilder.BuildPartial();
-              break;
-            }
-            case 218: {
-              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 371: {
-              input.ReadGroupArray(tag, field_name, result.repeatedGroup_, global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.RepeatedGroup.DefaultInstance, extensionRegistry);
-              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.repeatedImportMessage_, global::Google.ProtocolBuffers.TestProtos.ImportMessage.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 426:
-            case 424: {
-              scg::ICollection<object> unknownItems;
-              input.ReadEnumArray<global::Google.ProtocolBuffers.TestProtos.ImportEnum>(tag, field_name, result.repeatedImportEnum_, 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(53, (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 488: {
-              result.hasDefaultInt32 = input.ReadInt32(ref result.defaultInt32_);
-              break;
-            }
-            case 496: {
-              result.hasDefaultInt64 = input.ReadInt64(ref result.defaultInt64_);
-              break;
-            }
-            case 504: {
-              result.hasDefaultUint32 = input.ReadUInt32(ref result.defaultUint32_);
-              break;
-            }
-            case 512: {
-              result.hasDefaultUint64 = input.ReadUInt64(ref result.defaultUint64_);
-              break;
-            }
-            case 520: {
-              result.hasDefaultSint32 = input.ReadSInt32(ref result.defaultSint32_);
-              break;
-            }
-            case 528: {
-              result.hasDefaultSint64 = input.ReadSInt64(ref result.defaultSint64_);
-              break;
-            }
-            case 541: {
-              result.hasDefaultFixed32 = input.ReadFixed32(ref result.defaultFixed32_);
-              break;
-            }
-            case 545: {
-              result.hasDefaultFixed64 = input.ReadFixed64(ref result.defaultFixed64_);
-              break;
-            }
-            case 557: {
-              result.hasDefaultSfixed32 = input.ReadSFixed32(ref result.defaultSfixed32_);
-              break;
-            }
-            case 561: {
-              result.hasDefaultSfixed64 = input.ReadSFixed64(ref result.defaultSfixed64_);
-              break;
-            }
-            case 573: {
-              result.hasDefaultFloat = input.ReadFloat(ref result.defaultFloat_);
-              break;
-            }
-            case 577: {
-              result.hasDefaultDouble = input.ReadDouble(ref result.defaultDouble_);
-              break;
-            }
-            case 584: {
-              result.hasDefaultBool = input.ReadBool(ref result.defaultBool_);
-              break;
-            }
-            case 594: {
-              result.hasDefaultString = input.ReadString(ref result.defaultString_);
-              break;
-            }
-            case 602: {
-              result.hasDefaultBytes = input.ReadBytes(ref result.defaultBytes_);
-              break;
-            }
-            case 648: {
-              object unknown;
-              if(input.ReadEnum(ref result.defaultNestedEnum_, out unknown)) {
-                result.hasDefaultNestedEnum = true;
-              } else if(unknown is int) {
-                if (unknownFields == null) {
-                  unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-                }
-                unknownFields.MergeVarintField(81, (ulong)(int)unknown);
-              }
-              break;
-            }
-            case 656: {
-              object unknown;
-              if(input.ReadEnum(ref result.defaultForeignEnum_, out unknown)) {
-                result.hasDefaultForeignEnum = true;
-              } else if(unknown is int) {
-                if (unknownFields == null) {
-                  unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-                }
-                unknownFields.MergeVarintField(82, (ulong)(int)unknown);
-              }
-              break;
-            }
-            case 664: {
-              object unknown;
-              if(input.ReadEnum(ref result.defaultImportEnum_, out unknown)) {
-                result.hasDefaultImportEnum = true;
-              } else if(unknown is int) {
-                if (unknownFields == null) {
-                  unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-                }
-                unknownFields.MergeVarintField(83, (ulong)(int)unknown);
-              }
-              break;
-            }
-            case 674: {
-              result.hasDefaultStringPiece = input.ReadString(ref result.defaultStringPiece_);
-              break;
-            }
-            case 682: {
-              result.hasDefaultCord = input.ReadString(ref result.defaultCord_);
-              break;
-            }
-            case 888: {
-              uint value = 0;
-              if (input.ReadUInt32(ref value)) {
-                result.oneofField_ = value;
-                result.oneofFieldCase_ = OneofFieldOneofCase.OneofUint32;
-              }
-              break;
-            }
-            case 898: {
-              global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage.Builder subBuilder = global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage.CreateBuilder();
-              if (result.oneofFieldCase_ == OneofFieldOneofCase.OneofNestedMessage) {
-                subBuilder.MergeFrom(OneofNestedMessage);
-              }
-              input.ReadMessage(subBuilder, extensionRegistry);
-              result.oneofField_ = subBuilder.BuildPartial();
-              result.oneofFieldCase_ = OneofFieldOneofCase.OneofNestedMessage;
-              break;
-            }
-            case 906: {
-              string value = "";
-              if (input.ReadString(ref value)) {
-                result.oneofField_ = value;
-                result.oneofFieldCase_ = OneofFieldOneofCase.OneofString;
-              }
-              break;
-            }
-            case 914: {
-              pb::ByteString value = pb::ByteString.Empty;
-              if (input.ReadBytes(ref value)) {
-                result.oneofField_ = value;
-                result.oneofFieldCase_ = OneofFieldOneofCase.OneofBytes;
-              }
-              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; }
-      }
-      public uint OptionalUint32 {
-        get { return result.OptionalUint32; }
-        set { SetOptionalUint32(value); }
-      }
-      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; }
-      }
-      public ulong OptionalUint64 {
-        get { return result.OptionalUint64; }
-        set { SetOptionalUint64(value); }
-      }
-      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; }
-      }
-      public uint OptionalFixed32 {
-        get { return result.OptionalFixed32; }
-        set { SetOptionalFixed32(value); }
-      }
-      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; }
-      }
-      public ulong OptionalFixed64 {
-        get { return result.OptionalFixed64; }
-        set { SetOptionalFixed64(value); }
-      }
-      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 HasOptionalGroup {
-       get { return result.hasOptionalGroup; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.OptionalGroup OptionalGroup {
-        get { return result.OptionalGroup; }
-        set { SetOptionalGroup(value); }
-      }
-      public Builder SetOptionalGroup(global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.OptionalGroup value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasOptionalGroup = true;
-        result.optionalGroup_ = value;
-        return this;
-      }
-      public Builder SetOptionalGroup(global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.OptionalGroup.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.hasOptionalGroup = true;
-        result.optionalGroup_ = builderForValue.Build();
-        return this;
-      }
-      public Builder MergeOptionalGroup(global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.OptionalGroup value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        if (result.hasOptionalGroup &&
-            result.optionalGroup_ != global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.OptionalGroup.DefaultInstance) {
-            result.optionalGroup_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.OptionalGroup.CreateBuilder(result.optionalGroup_).MergeFrom(value).BuildPartial();
-        } else {
-          result.optionalGroup_ = value;
-        }
-        result.hasOptionalGroup = true;
-        return this;
-      }
-      public Builder ClearOptionalGroup() {
-        PrepareBuilder();
-        result.hasOptionalGroup = false;
-        result.optionalGroup_ = null;
-        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 HasOptionalImportMessage {
-       get { return result.hasOptionalImportMessage; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.ImportMessage OptionalImportMessage {
-        get { return result.OptionalImportMessage; }
-        set { SetOptionalImportMessage(value); }
-      }
-      public Builder SetOptionalImportMessage(global::Google.ProtocolBuffers.TestProtos.ImportMessage value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasOptionalImportMessage = true;
-        result.optionalImportMessage_ = value;
-        return this;
-      }
-      public Builder SetOptionalImportMessage(global::Google.ProtocolBuffers.TestProtos.ImportMessage.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.hasOptionalImportMessage = true;
-        result.optionalImportMessage_ = builderForValue.Build();
-        return this;
-      }
-      public Builder MergeOptionalImportMessage(global::Google.ProtocolBuffers.TestProtos.ImportMessage value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        if (result.hasOptionalImportMessage &&
-            result.optionalImportMessage_ != global::Google.ProtocolBuffers.TestProtos.ImportMessage.DefaultInstance) {
-            result.optionalImportMessage_ = global::Google.ProtocolBuffers.TestProtos.ImportMessage.CreateBuilder(result.optionalImportMessage_).MergeFrom(value).BuildPartial();
-        } else {
-          result.optionalImportMessage_ = value;
-        }
-        result.hasOptionalImportMessage = true;
-        return this;
-      }
-      public Builder ClearOptionalImportMessage() {
-        PrepareBuilder();
-        result.hasOptionalImportMessage = false;
-        result.optionalImportMessage_ = 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 HasOptionalImportEnum {
-        get { return result.hasOptionalImportEnum; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.ImportEnum OptionalImportEnum {
-        get { return result.OptionalImportEnum; }
-        set { SetOptionalImportEnum(value); }
-      }
-      public Builder SetOptionalImportEnum(global::Google.ProtocolBuffers.TestProtos.ImportEnum value) {
-        PrepareBuilder();
-        result.hasOptionalImportEnum = true;
-        result.optionalImportEnum_ = value;
-        return this;
-      }
-      public Builder ClearOptionalImportEnum() {
-        PrepareBuilder();
-        result.hasOptionalImportEnum = false;
-        result.optionalImportEnum_ = global::Google.ProtocolBuffers.TestProtos.ImportEnum.IMPORT_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 HasOptionalPublicImportMessage {
-       get { return result.hasOptionalPublicImportMessage; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.PublicImportMessage OptionalPublicImportMessage {
-        get { return result.OptionalPublicImportMessage; }
-        set { SetOptionalPublicImportMessage(value); }
-      }
-      public Builder SetOptionalPublicImportMessage(global::Google.ProtocolBuffers.TestProtos.PublicImportMessage value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasOptionalPublicImportMessage = true;
-        result.optionalPublicImportMessage_ = value;
-        return this;
-      }
-      public Builder SetOptionalPublicImportMessage(global::Google.ProtocolBuffers.TestProtos.PublicImportMessage.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.hasOptionalPublicImportMessage = true;
-        result.optionalPublicImportMessage_ = builderForValue.Build();
-        return this;
-      }
-      public Builder MergeOptionalPublicImportMessage(global::Google.ProtocolBuffers.TestProtos.PublicImportMessage value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        if (result.hasOptionalPublicImportMessage &&
-            result.optionalPublicImportMessage_ != global::Google.ProtocolBuffers.TestProtos.PublicImportMessage.DefaultInstance) {
-            result.optionalPublicImportMessage_ = global::Google.ProtocolBuffers.TestProtos.PublicImportMessage.CreateBuilder(result.optionalPublicImportMessage_).MergeFrom(value).BuildPartial();
-        } else {
-          result.optionalPublicImportMessage_ = value;
-        }
-        result.hasOptionalPublicImportMessage = true;
-        return this;
-      }
-      public Builder ClearOptionalPublicImportMessage() {
-        PrepareBuilder();
-        result.hasOptionalPublicImportMessage = false;
-        result.optionalPublicImportMessage_ = null;
-        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;
-      }
-
-      public pbc::IPopsicleList<uint> RepeatedUint32List {
-        get { return PrepareBuilder().repeatedUint32_; }
-      }
-      public int RepeatedUint32Count {
-        get { return result.RepeatedUint32Count; }
-      }
-      public uint GetRepeatedUint32(int index) {
-        return result.GetRepeatedUint32(index);
-      }
-      public Builder SetRepeatedUint32(int index, uint value) {
-        PrepareBuilder();
-        result.repeatedUint32_[index] = value;
-        return this;
-      }
-      public Builder AddRepeatedUint32(uint value) {
-        PrepareBuilder();
-        result.repeatedUint32_.Add(value);
-        return this;
-      }
-      public Builder AddRangeRepeatedUint32(scg::IEnumerable<uint> values) {
-        PrepareBuilder();
-        result.repeatedUint32_.Add(values);
-        return this;
-      }
-      public Builder ClearRepeatedUint32() {
-        PrepareBuilder();
-        result.repeatedUint32_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<ulong> RepeatedUint64List {
-        get { return PrepareBuilder().repeatedUint64_; }
-      }
-      public int RepeatedUint64Count {
-        get { return result.RepeatedUint64Count; }
-      }
-      public ulong GetRepeatedUint64(int index) {
-        return result.GetRepeatedUint64(index);
-      }
-      public Builder SetRepeatedUint64(int index, ulong value) {
-        PrepareBuilder();
-        result.repeatedUint64_[index] = value;
-        return this;
-      }
-      public Builder AddRepeatedUint64(ulong value) {
-        PrepareBuilder();
-        result.repeatedUint64_.Add(value);
-        return this;
-      }
-      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;
-      }
-
-      public pbc::IPopsicleList<uint> RepeatedFixed32List {
-        get { return PrepareBuilder().repeatedFixed32_; }
-      }
-      public int RepeatedFixed32Count {
-        get { return result.RepeatedFixed32Count; }
-      }
-      public uint GetRepeatedFixed32(int index) {
-        return result.GetRepeatedFixed32(index);
-      }
-      public Builder SetRepeatedFixed32(int index, uint value) {
-        PrepareBuilder();
-        result.repeatedFixed32_[index] = value;
-        return this;
-      }
-      public Builder AddRepeatedFixed32(uint value) {
-        PrepareBuilder();
-        result.repeatedFixed32_.Add(value);
-        return this;
-      }
-      public Builder AddRangeRepeatedFixed32(scg::IEnumerable<uint> values) {
-        PrepareBuilder();
-        result.repeatedFixed32_.Add(values);
-        return this;
-      }
-      public Builder ClearRepeatedFixed32() {
-        PrepareBuilder();
-        result.repeatedFixed32_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<ulong> RepeatedFixed64List {
-        get { return PrepareBuilder().repeatedFixed64_; }
-      }
-      public int RepeatedFixed64Count {
-        get { return result.RepeatedFixed64Count; }
-      }
-      public ulong GetRepeatedFixed64(int index) {
-        return result.GetRepeatedFixed64(index);
-      }
-      public Builder SetRepeatedFixed64(int index, ulong value) {
-        PrepareBuilder();
-        result.repeatedFixed64_[index] = value;
-        return this;
-      }
-      public Builder AddRepeatedFixed64(ulong value) {
-        PrepareBuilder();
-        result.repeatedFixed64_.Add(value);
-        return this;
-      }
-      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.RepeatedGroup> RepeatedGroupList {
-        get { return PrepareBuilder().repeatedGroup_; }
-      }
-      public int RepeatedGroupCount {
-        get { return result.RepeatedGroupCount; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.RepeatedGroup GetRepeatedGroup(int index) {
-        return result.GetRepeatedGroup(index);
-      }
-      public Builder SetRepeatedGroup(int index, global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.RepeatedGroup value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.repeatedGroup_[index] = value;
-        return this;
-      }
-      public Builder SetRepeatedGroup(int index, global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.RepeatedGroup.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.repeatedGroup_[index] = builderForValue.Build();
-        return this;
-      }
-      public Builder AddRepeatedGroup(global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.RepeatedGroup value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.repeatedGroup_.Add(value);
-        return this;
-      }
-      public Builder AddRepeatedGroup(global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.RepeatedGroup.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.repeatedGroup_.Add(builderForValue.Build());
-        return this;
-      }
-      public Builder AddRangeRepeatedGroup(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.RepeatedGroup> values) {
-        PrepareBuilder();
-        result.repeatedGroup_.Add(values);
-        return this;
-      }
-      public Builder ClearRepeatedGroup() {
-        PrepareBuilder();
-        result.repeatedGroup_.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.ImportMessage> RepeatedImportMessageList {
-        get { return PrepareBuilder().repeatedImportMessage_; }
-      }
-      public int RepeatedImportMessageCount {
-        get { return result.RepeatedImportMessageCount; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.ImportMessage GetRepeatedImportMessage(int index) {
-        return result.GetRepeatedImportMessage(index);
-      }
-      public Builder SetRepeatedImportMessage(int index, global::Google.ProtocolBuffers.TestProtos.ImportMessage value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.repeatedImportMessage_[index] = value;
-        return this;
-      }
-      public Builder SetRepeatedImportMessage(int index, global::Google.ProtocolBuffers.TestProtos.ImportMessage.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.repeatedImportMessage_[index] = builderForValue.Build();
-        return this;
-      }
-      public Builder AddRepeatedImportMessage(global::Google.ProtocolBuffers.TestProtos.ImportMessage value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.repeatedImportMessage_.Add(value);
-        return this;
-      }
-      public Builder AddRepeatedImportMessage(global::Google.ProtocolBuffers.TestProtos.ImportMessage.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.repeatedImportMessage_.Add(builderForValue.Build());
-        return this;
-      }
-      public Builder AddRangeRepeatedImportMessage(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.ImportMessage> values) {
-        PrepareBuilder();
-        result.repeatedImportMessage_.Add(values);
-        return this;
-      }
-      public Builder ClearRepeatedImportMessage() {
-        PrepareBuilder();
-        result.repeatedImportMessage_.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<global::Google.ProtocolBuffers.TestProtos.ImportEnum> RepeatedImportEnumList {
-        get { return PrepareBuilder().repeatedImportEnum_; }
-      }
-      public int RepeatedImportEnumCount {
-        get { return result.RepeatedImportEnumCount; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.ImportEnum GetRepeatedImportEnum(int index) {
-        return result.GetRepeatedImportEnum(index);
-      }
-      public Builder SetRepeatedImportEnum(int index, global::Google.ProtocolBuffers.TestProtos.ImportEnum value) {
-        PrepareBuilder();
-        result.repeatedImportEnum_[index] = value;
-        return this;
-      }
-      public Builder AddRepeatedImportEnum(global::Google.ProtocolBuffers.TestProtos.ImportEnum value) {
-        PrepareBuilder();
-        result.repeatedImportEnum_.Add(value);
-        return this;
-      }
-      public Builder AddRangeRepeatedImportEnum(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.ImportEnum> values) {
-        PrepareBuilder();
-        result.repeatedImportEnum_.Add(values);
-        return this;
-      }
-      public Builder ClearRepeatedImportEnum() {
-        PrepareBuilder();
-        result.repeatedImportEnum_.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 HasDefaultInt32 {
-        get { return result.hasDefaultInt32; }
-      }
-      public int DefaultInt32 {
-        get { return result.DefaultInt32; }
-        set { SetDefaultInt32(value); }
-      }
-      public Builder SetDefaultInt32(int value) {
-        PrepareBuilder();
-        result.hasDefaultInt32 = true;
-        result.defaultInt32_ = value;
-        return this;
-      }
-      public Builder ClearDefaultInt32() {
-        PrepareBuilder();
-        result.hasDefaultInt32 = false;
-        result.defaultInt32_ = 41;
-        return this;
-      }
-
-      public bool HasDefaultInt64 {
-        get { return result.hasDefaultInt64; }
-      }
-      public long DefaultInt64 {
-        get { return result.DefaultInt64; }
-        set { SetDefaultInt64(value); }
-      }
-      public Builder SetDefaultInt64(long value) {
-        PrepareBuilder();
-        result.hasDefaultInt64 = true;
-        result.defaultInt64_ = value;
-        return this;
-      }
-      public Builder ClearDefaultInt64() {
-        PrepareBuilder();
-        result.hasDefaultInt64 = false;
-        result.defaultInt64_ = 42L;
-        return this;
-      }
-
-      public bool HasDefaultUint32 {
-        get { return result.hasDefaultUint32; }
-      }
-      public uint DefaultUint32 {
-        get { return result.DefaultUint32; }
-        set { SetDefaultUint32(value); }
-      }
-      public Builder SetDefaultUint32(uint value) {
-        PrepareBuilder();
-        result.hasDefaultUint32 = true;
-        result.defaultUint32_ = value;
-        return this;
-      }
-      public Builder ClearDefaultUint32() {
-        PrepareBuilder();
-        result.hasDefaultUint32 = false;
-        result.defaultUint32_ = 43;
-        return this;
-      }
-
-      public bool HasDefaultUint64 {
-        get { return result.hasDefaultUint64; }
-      }
-      public ulong DefaultUint64 {
-        get { return result.DefaultUint64; }
-        set { SetDefaultUint64(value); }
-      }
-      public Builder SetDefaultUint64(ulong value) {
-        PrepareBuilder();
-        result.hasDefaultUint64 = true;
-        result.defaultUint64_ = value;
-        return this;
-      }
-      public Builder ClearDefaultUint64() {
-        PrepareBuilder();
-        result.hasDefaultUint64 = false;
-        result.defaultUint64_ = 44UL;
-        return this;
-      }
-
-      public bool HasDefaultSint32 {
-        get { return result.hasDefaultSint32; }
-      }
-      public int DefaultSint32 {
-        get { return result.DefaultSint32; }
-        set { SetDefaultSint32(value); }
-      }
-      public Builder SetDefaultSint32(int value) {
-        PrepareBuilder();
-        result.hasDefaultSint32 = true;
-        result.defaultSint32_ = value;
-        return this;
-      }
-      public Builder ClearDefaultSint32() {
-        PrepareBuilder();
-        result.hasDefaultSint32 = false;
-        result.defaultSint32_ = -45;
-        return this;
-      }
-
-      public bool HasDefaultSint64 {
-        get { return result.hasDefaultSint64; }
-      }
-      public long DefaultSint64 {
-        get { return result.DefaultSint64; }
-        set { SetDefaultSint64(value); }
-      }
-      public Builder SetDefaultSint64(long value) {
-        PrepareBuilder();
-        result.hasDefaultSint64 = true;
-        result.defaultSint64_ = value;
-        return this;
-      }
-      public Builder ClearDefaultSint64() {
-        PrepareBuilder();
-        result.hasDefaultSint64 = false;
-        result.defaultSint64_ = 46L;
-        return this;
-      }
-
-      public bool HasDefaultFixed32 {
-        get { return result.hasDefaultFixed32; }
-      }
-      public uint DefaultFixed32 {
-        get { return result.DefaultFixed32; }
-        set { SetDefaultFixed32(value); }
-      }
-      public Builder SetDefaultFixed32(uint value) {
-        PrepareBuilder();
-        result.hasDefaultFixed32 = true;
-        result.defaultFixed32_ = value;
-        return this;
-      }
-      public Builder ClearDefaultFixed32() {
-        PrepareBuilder();
-        result.hasDefaultFixed32 = false;
-        result.defaultFixed32_ = 47;
-        return this;
-      }
-
-      public bool HasDefaultFixed64 {
-        get { return result.hasDefaultFixed64; }
-      }
-      public ulong DefaultFixed64 {
-        get { return result.DefaultFixed64; }
-        set { SetDefaultFixed64(value); }
-      }
-      public Builder SetDefaultFixed64(ulong value) {
-        PrepareBuilder();
-        result.hasDefaultFixed64 = true;
-        result.defaultFixed64_ = value;
-        return this;
-      }
-      public Builder ClearDefaultFixed64() {
-        PrepareBuilder();
-        result.hasDefaultFixed64 = false;
-        result.defaultFixed64_ = 48UL;
-        return this;
-      }
-
-      public bool HasDefaultSfixed32 {
-        get { return result.hasDefaultSfixed32; }
-      }
-      public int DefaultSfixed32 {
-        get { return result.DefaultSfixed32; }
-        set { SetDefaultSfixed32(value); }
-      }
-      public Builder SetDefaultSfixed32(int value) {
-        PrepareBuilder();
-        result.hasDefaultSfixed32 = true;
-        result.defaultSfixed32_ = value;
-        return this;
-      }
-      public Builder ClearDefaultSfixed32() {
-        PrepareBuilder();
-        result.hasDefaultSfixed32 = false;
-        result.defaultSfixed32_ = 49;
-        return this;
-      }
-
-      public bool HasDefaultSfixed64 {
-        get { return result.hasDefaultSfixed64; }
-      }
-      public long DefaultSfixed64 {
-        get { return result.DefaultSfixed64; }
-        set { SetDefaultSfixed64(value); }
-      }
-      public Builder SetDefaultSfixed64(long value) {
-        PrepareBuilder();
-        result.hasDefaultSfixed64 = true;
-        result.defaultSfixed64_ = value;
-        return this;
-      }
-      public Builder ClearDefaultSfixed64() {
-        PrepareBuilder();
-        result.hasDefaultSfixed64 = false;
-        result.defaultSfixed64_ = -50L;
-        return this;
-      }
-
-      public bool HasDefaultFloat {
-        get { return result.hasDefaultFloat; }
-      }
-      public float DefaultFloat {
-        get { return result.DefaultFloat; }
-        set { SetDefaultFloat(value); }
-      }
-      public Builder SetDefaultFloat(float value) {
-        PrepareBuilder();
-        result.hasDefaultFloat = true;
-        result.defaultFloat_ = value;
-        return this;
-      }
-      public Builder ClearDefaultFloat() {
-        PrepareBuilder();
-        result.hasDefaultFloat = false;
-        result.defaultFloat_ = 51.5F;
-        return this;
-      }
-
-      public bool HasDefaultDouble {
-        get { return result.hasDefaultDouble; }
-      }
-      public double DefaultDouble {
-        get { return result.DefaultDouble; }
-        set { SetDefaultDouble(value); }
-      }
-      public Builder SetDefaultDouble(double value) {
-        PrepareBuilder();
-        result.hasDefaultDouble = true;
-        result.defaultDouble_ = value;
-        return this;
-      }
-      public Builder ClearDefaultDouble() {
-        PrepareBuilder();
-        result.hasDefaultDouble = false;
-        result.defaultDouble_ = 52000D;
-        return this;
-      }
-
-      public bool HasDefaultBool {
-        get { return result.hasDefaultBool; }
-      }
-      public bool DefaultBool {
-        get { return result.DefaultBool; }
-        set { SetDefaultBool(value); }
-      }
-      public Builder SetDefaultBool(bool value) {
-        PrepareBuilder();
-        result.hasDefaultBool = true;
-        result.defaultBool_ = value;
-        return this;
-      }
-      public Builder ClearDefaultBool() {
-        PrepareBuilder();
-        result.hasDefaultBool = false;
-        result.defaultBool_ = true;
-        return this;
-      }
-
-      public bool HasDefaultString {
-        get { return result.hasDefaultString; }
-      }
-      public string DefaultString {
-        get { return result.DefaultString; }
-        set { SetDefaultString(value); }
-      }
-      public Builder SetDefaultString(string value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasDefaultString = true;
-        result.defaultString_ = value;
-        return this;
-      }
-      public Builder ClearDefaultString() {
-        PrepareBuilder();
-        result.hasDefaultString = false;
-        result.defaultString_ = "hello";
-        return this;
-      }
-
-      public bool HasDefaultBytes {
-        get { return result.hasDefaultBytes; }
-      }
-      public pb::ByteString DefaultBytes {
-        get { return result.DefaultBytes; }
-        set { SetDefaultBytes(value); }
-      }
-      public Builder SetDefaultBytes(pb::ByteString value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasDefaultBytes = true;
-        result.defaultBytes_ = value;
-        return this;
-      }
-      public Builder ClearDefaultBytes() {
-        PrepareBuilder();
-        result.hasDefaultBytes = false;
-        result.defaultBytes_ = (pb::ByteString) global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Descriptor.Fields[65].DefaultValue;
-        return this;
-      }
-
-      public bool HasDefaultNestedEnum {
-        get { return result.hasDefaultNestedEnum; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedEnum DefaultNestedEnum {
-        get { return result.DefaultNestedEnum; }
-        set { SetDefaultNestedEnum(value); }
-      }
-      public Builder SetDefaultNestedEnum(global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedEnum value) {
-        PrepareBuilder();
-        result.hasDefaultNestedEnum = true;
-        result.defaultNestedEnum_ = value;
-        return this;
-      }
-      public Builder ClearDefaultNestedEnum() {
-        PrepareBuilder();
-        result.hasDefaultNestedEnum = false;
-        result.defaultNestedEnum_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedEnum.BAR;
-        return this;
-      }
-
-      public bool HasDefaultForeignEnum {
-        get { return result.hasDefaultForeignEnum; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.ForeignEnum DefaultForeignEnum {
-        get { return result.DefaultForeignEnum; }
-        set { SetDefaultForeignEnum(value); }
-      }
-      public Builder SetDefaultForeignEnum(global::Google.ProtocolBuffers.TestProtos.ForeignEnum value) {
-        PrepareBuilder();
-        result.hasDefaultForeignEnum = true;
-        result.defaultForeignEnum_ = value;
-        return this;
-      }
-      public Builder ClearDefaultForeignEnum() {
-        PrepareBuilder();
-        result.hasDefaultForeignEnum = false;
-        result.defaultForeignEnum_ = global::Google.ProtocolBuffers.TestProtos.ForeignEnum.FOREIGN_BAR;
-        return this;
-      }
-
-      public bool HasDefaultImportEnum {
-        get { return result.hasDefaultImportEnum; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.ImportEnum DefaultImportEnum {
-        get { return result.DefaultImportEnum; }
-        set { SetDefaultImportEnum(value); }
-      }
-      public Builder SetDefaultImportEnum(global::Google.ProtocolBuffers.TestProtos.ImportEnum value) {
-        PrepareBuilder();
-        result.hasDefaultImportEnum = true;
-        result.defaultImportEnum_ = value;
-        return this;
-      }
-      public Builder ClearDefaultImportEnum() {
-        PrepareBuilder();
-        result.hasDefaultImportEnum = false;
-        result.defaultImportEnum_ = global::Google.ProtocolBuffers.TestProtos.ImportEnum.IMPORT_BAR;
-        return this;
-      }
-
-      public bool HasDefaultStringPiece {
-        get { return result.hasDefaultStringPiece; }
-      }
-      public string DefaultStringPiece {
-        get { return result.DefaultStringPiece; }
-        set { SetDefaultStringPiece(value); }
-      }
-      public Builder SetDefaultStringPiece(string value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasDefaultStringPiece = true;
-        result.defaultStringPiece_ = value;
-        return this;
-      }
-      public Builder ClearDefaultStringPiece() {
-        PrepareBuilder();
-        result.hasDefaultStringPiece = false;
-        result.defaultStringPiece_ = "abc";
-        return this;
-      }
-
-      public bool HasDefaultCord {
-        get { return result.hasDefaultCord; }
-      }
-      public string DefaultCord {
-        get { return result.DefaultCord; }
-        set { SetDefaultCord(value); }
-      }
-      public Builder SetDefaultCord(string value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasDefaultCord = true;
-        result.defaultCord_ = value;
-        return this;
-      }
-      public Builder ClearDefaultCord() {
-        PrepareBuilder();
-        result.hasDefaultCord = false;
-        result.defaultCord_ = "123";
-        return this;
-      }
-
-      public bool HasOneofUint32 {
-        get { return result.oneofFieldCase_ == OneofFieldOneofCase.OneofUint32; }
-      }
-      public uint OneofUint32 {
-        get { return result.oneofFieldCase_ == OneofFieldOneofCase.OneofUint32 ? (uint) result.oneofField_ : 0; }
-        set { SetOneofUint32(value); }
-      }
-      public Builder SetOneofUint32(uint value) {
-        PrepareBuilder();
-        result.oneofField_ = value;
-        result.oneofFieldCase_ = OneofFieldOneofCase.OneofUint32;
-        return this;
-      }
-      public Builder ClearOneofUint32() {
-        PrepareBuilder();
-        if (result.oneofFieldCase_ == OneofFieldOneofCase.OneofUint32) {
-          result.oneofFieldCase_ = OneofFieldOneofCase.None;
-        }
-        return this;
-      }
-
-      public bool HasOneofNestedMessage {
-        get { return result.oneofFieldCase_ == OneofFieldOneofCase.OneofNestedMessage; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage OneofNestedMessage {
-        get { return result.oneofFieldCase_ == OneofFieldOneofCase.OneofNestedMessage ? (global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage) result.oneofField_ : global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage.DefaultInstance; }
-        set { SetOneofNestedMessage(value); }
-      }
-      public Builder SetOneofNestedMessage(global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.oneofFieldCase_ = OneofFieldOneofCase.OneofNestedMessage;
-        result.oneofField_ = value;
-        return this;
-      }
-      public Builder SetOneofNestedMessage(global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.oneofFieldCase_ = OneofFieldOneofCase.OneofNestedMessage;
-        result.oneofField_ = builderForValue.Build();
-        return this;
-      }
-      public Builder MergeOneofNestedMessage(global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        if (result.oneofFieldCase_ == OneofFieldOneofCase.OneofNestedMessage &&
-            result.OneofNestedMessage != global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage.DefaultInstance) {
-          result.oneofField_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage.CreateBuilder(result.OneofNestedMessage).MergeFrom(value).BuildPartial();
-        } else {
-          result.oneofField_ = value;
-        }
-        result.oneofFieldCase_ = OneofFieldOneofCase.OneofNestedMessage;
-        return this;
-      }
-      public Builder ClearOneofNestedMessage() {
-        if (result.oneofFieldCase_ == OneofFieldOneofCase.OneofNestedMessage) {
-          PrepareBuilder();
-          result.oneofFieldCase_ = OneofFieldOneofCase.None;
-          result.oneofField_ = null;
-        }
-        return this;
-      }
-
-      public bool HasOneofString {
-        get { return result.oneofFieldCase_ == OneofFieldOneofCase.OneofString; }
-      }
-      public string OneofString {
-        get { return result.oneofFieldCase_ == OneofFieldOneofCase.OneofString ? (string) result.oneofField_ : ""; }
-        set { SetOneofString(value); }
-      }
-      public Builder SetOneofString(string value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.oneofField_ = value;
-        result.oneofFieldCase_ = OneofFieldOneofCase.OneofString;
-        return this;
-      }
-      public Builder ClearOneofString() {
-        PrepareBuilder();
-        if (result.oneofFieldCase_ == OneofFieldOneofCase.OneofString) {
-          result.oneofFieldCase_ = OneofFieldOneofCase.None;
-        }
-        return this;
-      }
-
-      public bool HasOneofBytes {
-        get { return result.oneofFieldCase_ == OneofFieldOneofCase.OneofBytes; }
-      }
-      public pb::ByteString OneofBytes {
-        get { return result.oneofFieldCase_ == OneofFieldOneofCase.OneofBytes ? (pb::ByteString) result.oneofField_ : pb::ByteString.Empty; }
-        set { SetOneofBytes(value); }
-      }
-      public Builder SetOneofBytes(pb::ByteString value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.oneofField_ = value;
-        result.oneofFieldCase_ = OneofFieldOneofCase.OneofBytes;
-        return this;
-      }
-      public Builder ClearOneofBytes() {
-        PrepareBuilder();
-        if (result.oneofFieldCase_ == OneofFieldOneofCase.OneofBytes) {
-          result.oneofFieldCase_ = OneofFieldOneofCase.None;
-        }
-        return this;
-      }
-
-      public OneofFieldOneofCase OneofFieldCase {
-        get { return result.oneofFieldCase_; }
-      }
-      public Builder ClearOneofField() {
-        PrepareBuilder();
-        result.oneofField_ = null;
-        result.oneofFieldCase_ = OneofFieldOneofCase.None;
-        return this;
-      }
-    }
-    static TestAllTypes() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class NestedTestAllTypes : pb::GeneratedMessage<NestedTestAllTypes, NestedTestAllTypes.Builder> {
-    private NestedTestAllTypes() { }
-    private static readonly NestedTestAllTypes defaultInstance = new NestedTestAllTypes().MakeReadOnly();
-    private static readonly string[] _nestedTestAllTypesFieldNames = new string[] { "child", "payload", "repeated_child" };
-    private static readonly uint[] _nestedTestAllTypesFieldTags = new uint[] { 10, 18, 26 };
-    public static NestedTestAllTypes DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override NestedTestAllTypes DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override NestedTestAllTypes ThisMessage {
-      get { return this; }
-    }
-
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_NestedTestAllTypes__Descriptor; }
-    }
-
-    protected override pb::FieldAccess.FieldAccessorTable<NestedTestAllTypes, NestedTestAllTypes.Builder> InternalFieldAccessors {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_NestedTestAllTypes__FieldAccessorTable; }
-    }
-
-    public const int ChildFieldNumber = 1;
-    private bool hasChild;
-    private global::Google.ProtocolBuffers.TestProtos.NestedTestAllTypes child_;
-    public bool HasChild {
-      get { return hasChild; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.NestedTestAllTypes Child {
-      get { return child_ ?? global::Google.ProtocolBuffers.TestProtos.NestedTestAllTypes.DefaultInstance; }
-    }
-
-    public const int PayloadFieldNumber = 2;
-    private bool hasPayload;
-    private global::Google.ProtocolBuffers.TestProtos.TestAllTypes payload_;
-    public bool HasPayload {
-      get { return hasPayload; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.TestAllTypes Payload {
-      get { return payload_ ?? global::Google.ProtocolBuffers.TestProtos.TestAllTypes.DefaultInstance; }
-    }
-
-    public const int RepeatedChildFieldNumber = 3;
-    private pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.NestedTestAllTypes> repeatedChild_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.NestedTestAllTypes>();
-    public scg::IList<global::Google.ProtocolBuffers.TestProtos.NestedTestAllTypes> RepeatedChildList {
-      get { return repeatedChild_; }
-    }
-    public int RepeatedChildCount {
-      get { return repeatedChild_.Count; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.NestedTestAllTypes GetRepeatedChild(int index) {
-      return repeatedChild_[index];
-    }
-
-    public override bool IsInitialized {
-      get {
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _nestedTestAllTypesFieldNames;
-      if (hasChild) {
-        output.WriteMessage(1, field_names[0], Child);
-      }
-      if (hasPayload) {
-        output.WriteMessage(2, field_names[1], Payload);
-      }
-      if (repeatedChild_.Count > 0) {
-        output.WriteMessageArray(3, field_names[2], repeatedChild_);
-      }
-      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);
-      }
-      if (hasPayload) {
-        size += pb::CodedOutputStream.ComputeMessageSize(2, Payload);
-      }
-      foreach (global::Google.ProtocolBuffers.TestProtos.NestedTestAllTypes element in RepeatedChildList) {
-        size += pb::CodedOutputStream.ComputeMessageSize(3, element);
-      }
-      size += UnknownFields.SerializedSize;
-      memoizedSerializedSize = size;
-      return size;
-    }
-    public static NestedTestAllTypes ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static NestedTestAllTypes ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static NestedTestAllTypes ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static NestedTestAllTypes ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static NestedTestAllTypes ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static NestedTestAllTypes ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static NestedTestAllTypes ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static NestedTestAllTypes ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static NestedTestAllTypes ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static NestedTestAllTypes ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private NestedTestAllTypes MakeReadOnly() {
-      repeatedChild_.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(NestedTestAllTypes prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilder<NestedTestAllTypes, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(NestedTestAllTypes cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private NestedTestAllTypes result;
-
-      private NestedTestAllTypes PrepareBuilder() {
-        if (resultIsReadOnly) {
-          NestedTestAllTypes original = result;
-          result = new NestedTestAllTypes();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override NestedTestAllTypes 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.NestedTestAllTypes.Descriptor; }
-      }
-
-      public override NestedTestAllTypes DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.NestedTestAllTypes.DefaultInstance; }
-      }
-
-      public override NestedTestAllTypes BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is NestedTestAllTypes) {
-          return MergeFrom((NestedTestAllTypes) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(NestedTestAllTypes other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.NestedTestAllTypes.DefaultInstance) return this;
-        PrepareBuilder();
-        if (other.HasChild) {
-          MergeChild(other.Child);
-        }
-        if (other.HasPayload) {
-          MergePayload(other.Payload);
-        }
-        if (other.repeatedChild_.Count != 0) {
-          result.repeatedChild_.Add(other.repeatedChild_);
-        }
-        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(_nestedTestAllTypesFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _nestedTestAllTypesFieldTags[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.NestedTestAllTypes.Builder subBuilder = global::Google.ProtocolBuffers.TestProtos.NestedTestAllTypes.CreateBuilder();
-              if (result.hasChild) {
-                subBuilder.MergeFrom(Child);
-              }
-              input.ReadMessage(subBuilder, extensionRegistry);
-              Child = subBuilder.BuildPartial();
-              break;
-            }
-            case 18: {
-              global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Builder subBuilder = global::Google.ProtocolBuffers.TestProtos.TestAllTypes.CreateBuilder();
-              if (result.hasPayload) {
-                subBuilder.MergeFrom(Payload);
-              }
-              input.ReadMessage(subBuilder, extensionRegistry);
-              Payload = subBuilder.BuildPartial();
-              break;
-            }
-            case 26: {
-              input.ReadMessageArray(tag, field_name, result.repeatedChild_, global::Google.ProtocolBuffers.TestProtos.NestedTestAllTypes.DefaultInstance, extensionRegistry);
-              break;
-            }
-          }
-        }
-
-        if (unknownFields != null) {
-          this.UnknownFields = unknownFields.Build();
-        }
-        return this;
-      }
-
-
-      public bool HasChild {
-       get { return result.hasChild; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.NestedTestAllTypes Child {
-        get { return result.Child; }
-        set { SetChild(value); }
-      }
-      public Builder SetChild(global::Google.ProtocolBuffers.TestProtos.NestedTestAllTypes value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasChild = true;
-        result.child_ = value;
-        return this;
-      }
-      public Builder SetChild(global::Google.ProtocolBuffers.TestProtos.NestedTestAllTypes.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.hasChild = true;
-        result.child_ = builderForValue.Build();
-        return this;
-      }
-      public Builder MergeChild(global::Google.ProtocolBuffers.TestProtos.NestedTestAllTypes value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        if (result.hasChild &&
-            result.child_ != global::Google.ProtocolBuffers.TestProtos.NestedTestAllTypes.DefaultInstance) {
-            result.child_ = global::Google.ProtocolBuffers.TestProtos.NestedTestAllTypes.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 bool HasPayload {
-       get { return result.hasPayload; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.TestAllTypes Payload {
-        get { return result.Payload; }
-        set { SetPayload(value); }
-      }
-      public Builder SetPayload(global::Google.ProtocolBuffers.TestProtos.TestAllTypes value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasPayload = true;
-        result.payload_ = value;
-        return this;
-      }
-      public Builder SetPayload(global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.hasPayload = true;
-        result.payload_ = builderForValue.Build();
-        return this;
-      }
-      public Builder MergePayload(global::Google.ProtocolBuffers.TestProtos.TestAllTypes value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        if (result.hasPayload &&
-            result.payload_ != global::Google.ProtocolBuffers.TestProtos.TestAllTypes.DefaultInstance) {
-            result.payload_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypes.CreateBuilder(result.payload_).MergeFrom(value).BuildPartial();
-        } else {
-          result.payload_ = value;
-        }
-        result.hasPayload = true;
-        return this;
-      }
-      public Builder ClearPayload() {
-        PrepareBuilder();
-        result.hasPayload = false;
-        result.payload_ = null;
-        return this;
-      }
-
-      public pbc::IPopsicleList<global::Google.ProtocolBuffers.TestProtos.NestedTestAllTypes> RepeatedChildList {
-        get { return PrepareBuilder().repeatedChild_; }
-      }
-      public int RepeatedChildCount {
-        get { return result.RepeatedChildCount; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.NestedTestAllTypes GetRepeatedChild(int index) {
-        return result.GetRepeatedChild(index);
-      }
-      public Builder SetRepeatedChild(int index, global::Google.ProtocolBuffers.TestProtos.NestedTestAllTypes value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.repeatedChild_[index] = value;
-        return this;
-      }
-      public Builder SetRepeatedChild(int index, global::Google.ProtocolBuffers.TestProtos.NestedTestAllTypes.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.repeatedChild_[index] = builderForValue.Build();
-        return this;
-      }
-      public Builder AddRepeatedChild(global::Google.ProtocolBuffers.TestProtos.NestedTestAllTypes value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.repeatedChild_.Add(value);
-        return this;
-      }
-      public Builder AddRepeatedChild(global::Google.ProtocolBuffers.TestProtos.NestedTestAllTypes.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.repeatedChild_.Add(builderForValue.Build());
-        return this;
-      }
-      public Builder AddRangeRepeatedChild(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.NestedTestAllTypes> values) {
-        PrepareBuilder();
-        result.repeatedChild_.Add(values);
-        return this;
-      }
-      public Builder ClearRepeatedChild() {
-        PrepareBuilder();
-        result.repeatedChild_.Clear();
-        return this;
-      }
-    }
-    static NestedTestAllTypes() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class TestDeprecatedFields : pb::GeneratedMessage<TestDeprecatedFields, TestDeprecatedFields.Builder> {
-    private TestDeprecatedFields() { }
-    private static readonly TestDeprecatedFields defaultInstance = new TestDeprecatedFields().MakeReadOnly();
-    private static readonly string[] _testDeprecatedFieldsFieldNames = new string[] { "deprecated_int32" };
-    private static readonly uint[] _testDeprecatedFieldsFieldTags = new uint[] { 8 };
-    public static TestDeprecatedFields DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override TestDeprecatedFields DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override TestDeprecatedFields ThisMessage {
-      get { return this; }
-    }
-
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestDeprecatedFields__Descriptor; }
-    }
-
-    protected override pb::FieldAccess.FieldAccessorTable<TestDeprecatedFields, TestDeprecatedFields.Builder> InternalFieldAccessors {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestDeprecatedFields__FieldAccessorTable; }
-    }
-
-    public const int DeprecatedInt32FieldNumber = 1;
-    private bool hasDeprecatedInt32;
-    private int deprecatedInt32_;
-    [global::System.ObsoleteAttribute()]
-    public bool HasDeprecatedInt32 {
-      get { return hasDeprecatedInt32; }
-    }
-    [global::System.ObsoleteAttribute()]
-    public int DeprecatedInt32 {
-      get { return deprecatedInt32_; }
-    }
-
-    public override bool IsInitialized {
-      get {
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _testDeprecatedFieldsFieldNames;
-      if (hasDeprecatedInt32) {
-        output.WriteInt32(1, field_names[0], DeprecatedInt32);
-      }
-      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 (hasDeprecatedInt32) {
-        size += pb::CodedOutputStream.ComputeInt32Size(1, DeprecatedInt32);
-      }
-      size += UnknownFields.SerializedSize;
-      memoizedSerializedSize = size;
-      return size;
-    }
-    public static TestDeprecatedFields ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestDeprecatedFields ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestDeprecatedFields ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestDeprecatedFields ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestDeprecatedFields ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestDeprecatedFields ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static TestDeprecatedFields ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static TestDeprecatedFields ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static TestDeprecatedFields ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestDeprecatedFields ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private TestDeprecatedFields 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(TestDeprecatedFields prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilder<TestDeprecatedFields, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(TestDeprecatedFields cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private TestDeprecatedFields result;
-
-      private TestDeprecatedFields PrepareBuilder() {
-        if (resultIsReadOnly) {
-          TestDeprecatedFields original = result;
-          result = new TestDeprecatedFields();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override TestDeprecatedFields 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.TestDeprecatedFields.Descriptor; }
-      }
-
-      public override TestDeprecatedFields DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.TestDeprecatedFields.DefaultInstance; }
-      }
-
-      public override TestDeprecatedFields BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is TestDeprecatedFields) {
-          return MergeFrom((TestDeprecatedFields) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(TestDeprecatedFields other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.TestDeprecatedFields.DefaultInstance) return this;
-        PrepareBuilder();
-        if (other.HasDeprecatedInt32) {
-          DeprecatedInt32 = other.DeprecatedInt32;
-        }
-        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(_testDeprecatedFieldsFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _testDeprecatedFieldsFieldTags[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.hasDeprecatedInt32 = input.ReadInt32(ref result.deprecatedInt32_);
-              break;
-            }
-          }
-        }
-
-        if (unknownFields != null) {
-          this.UnknownFields = unknownFields.Build();
-        }
-        return this;
-      }
-
-
-      [global::System.ObsoleteAttribute()]
-      public bool HasDeprecatedInt32 {
-        get { return result.hasDeprecatedInt32; }
-      }
-      [global::System.ObsoleteAttribute()]
-      public int DeprecatedInt32 {
-        get { return result.DeprecatedInt32; }
-        set { SetDeprecatedInt32(value); }
-      }
-      [global::System.ObsoleteAttribute()]
-      public Builder SetDeprecatedInt32(int value) {
-        PrepareBuilder();
-        result.hasDeprecatedInt32 = true;
-        result.deprecatedInt32_ = value;
-        return this;
-      }
-      [global::System.ObsoleteAttribute()]
-      public Builder ClearDeprecatedInt32() {
-        PrepareBuilder();
-        result.hasDeprecatedInt32 = false;
-        result.deprecatedInt32_ = 0;
-        return this;
-      }
-    }
-    static TestDeprecatedFields() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.Unittest.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.Unittest.internal__static_protobuf_unittest_ForeignMessage__Descriptor; }
-    }
-
-    protected override pb::FieldAccess.FieldAccessorTable<ForeignMessage, ForeignMessage.Builder> InternalFieldAccessors {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_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.Unittest.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class TestReservedFields : pb::GeneratedMessage<TestReservedFields, TestReservedFields.Builder> {
-    private TestReservedFields() { }
-    private static readonly TestReservedFields defaultInstance = new TestReservedFields().MakeReadOnly();
-    private static readonly string[] _testReservedFieldsFieldNames = new string[] {  };
-    private static readonly uint[] _testReservedFieldsFieldTags = new uint[] {  };
-    public static TestReservedFields DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override TestReservedFields DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override TestReservedFields ThisMessage {
-      get { return this; }
-    }
-
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestReservedFields__Descriptor; }
-    }
-
-    protected override pb::FieldAccess.FieldAccessorTable<TestReservedFields, TestReservedFields.Builder> InternalFieldAccessors {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestReservedFields__FieldAccessorTable; }
-    }
-
-    public override bool IsInitialized {
-      get {
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _testReservedFieldsFieldNames;
-      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 TestReservedFields ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestReservedFields ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestReservedFields ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestReservedFields ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestReservedFields ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestReservedFields ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static TestReservedFields ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static TestReservedFields ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static TestReservedFields ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestReservedFields ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private TestReservedFields 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(TestReservedFields prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilder<TestReservedFields, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(TestReservedFields cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private TestReservedFields result;
-
-      private TestReservedFields PrepareBuilder() {
-        if (resultIsReadOnly) {
-          TestReservedFields original = result;
-          result = new TestReservedFields();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override TestReservedFields 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.TestReservedFields.Descriptor; }
-      }
-
-      public override TestReservedFields DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.TestReservedFields.DefaultInstance; }
-      }
-
-      public override TestReservedFields BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is TestReservedFields) {
-          return MergeFrom((TestReservedFields) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(TestReservedFields other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.TestReservedFields.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(_testReservedFieldsFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _testReservedFieldsFieldTags[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 TestReservedFields() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class TestAllExtensions : pb::ExtendableMessage<TestAllExtensions, TestAllExtensions.Builder> {
-    private TestAllExtensions() { }
-    private static readonly TestAllExtensions defaultInstance = new TestAllExtensions().MakeReadOnly();
-    private static readonly string[] _testAllExtensionsFieldNames = new string[] {  };
-    private static readonly uint[] _testAllExtensionsFieldTags = new uint[] {  };
-    public static TestAllExtensions DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override TestAllExtensions DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override TestAllExtensions ThisMessage {
-      get { return this; }
-    }
-
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestAllExtensions__Descriptor; }
-    }
-
-    protected override pb::FieldAccess.FieldAccessorTable<TestAllExtensions, TestAllExtensions.Builder> InternalFieldAccessors {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestAllExtensions__FieldAccessorTable; }
-    }
-
-    public override bool IsInitialized {
-      get {
-        if (!ExtensionsAreInitialized) return false;
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _testAllExtensionsFieldNames;
-      pb::ExtendableMessage<TestAllExtensions, TestAllExtensions.Builder>.ExtensionWriter extensionWriter = CreateExtensionWriter(this);
-      extensionWriter.WriteUntil(536870912, output);
-      UnknownFields.WriteTo(output);
-    }
-
-    private int memoizedSerializedSize = -1;
-    public override int SerializedSize {
-      get {
-        int size = memoizedSerializedSize;
-        if (size != -1) return size;
-        return CalcSerializedSize();
-      }
-    }
-
-    private int CalcSerializedSize() {
-      int size = memoizedSerializedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      size += ExtensionsSerializedSize;
-      size += UnknownFields.SerializedSize;
-      memoizedSerializedSize = size;
-      return size;
-    }
-    public static TestAllExtensions ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestAllExtensions ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestAllExtensions ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestAllExtensions ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestAllExtensions ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestAllExtensions ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static TestAllExtensions ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static TestAllExtensions ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static TestAllExtensions ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestAllExtensions ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private TestAllExtensions 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(TestAllExtensions prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::ExtendableBuilder<TestAllExtensions, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(TestAllExtensions cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private TestAllExtensions result;
-
-      private TestAllExtensions PrepareBuilder() {
-        if (resultIsReadOnly) {
-          TestAllExtensions original = result;
-          result = new TestAllExtensions();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override TestAllExtensions 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.TestAllExtensions.Descriptor; }
-      }
-
-      public override TestAllExtensions DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.TestAllExtensions.DefaultInstance; }
-      }
-
-      public override TestAllExtensions BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is TestAllExtensions) {
-          return MergeFrom((TestAllExtensions) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(TestAllExtensions other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.TestAllExtensions.DefaultInstance) return this;
-        PrepareBuilder();
-          this.MergeExtensionFields(other);
-        this.MergeUnknownFields(other.UnknownFields);
-        return this;
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input) {
-        return MergeFrom(input, pb::ExtensionRegistry.Empty);
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-        PrepareBuilder();
-        pb::UnknownFieldSet.Builder unknownFields = null;
-        uint tag;
-        string field_name;
-        while (input.ReadTag(out tag, out field_name)) {
-          if(tag == 0 && field_name != null) {
-            int field_ordinal = global::System.Array.BinarySearch(_testAllExtensionsFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _testAllExtensionsFieldTags[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 TestAllExtensions() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class OptionalGroup_extension : pb::GeneratedMessage<OptionalGroup_extension, OptionalGroup_extension.Builder> {
-    private OptionalGroup_extension() { }
-    private static readonly OptionalGroup_extension defaultInstance = new OptionalGroup_extension().MakeReadOnly();
-    private static readonly string[] _optionalGroupExtensionFieldNames = new string[] { "a" };
-    private static readonly uint[] _optionalGroupExtensionFieldTags = new uint[] { 136 };
-    public static OptionalGroup_extension DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override OptionalGroup_extension DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override OptionalGroup_extension ThisMessage {
-      get { return this; }
-    }
-
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_OptionalGroup_extension__Descriptor; }
-    }
-
-    protected override pb::FieldAccess.FieldAccessorTable<OptionalGroup_extension, OptionalGroup_extension.Builder> InternalFieldAccessors {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_OptionalGroup_extension__FieldAccessorTable; }
-    }
-
-    public const int AFieldNumber = 17;
-    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 = _optionalGroupExtensionFieldNames;
-      if (hasA) {
-        output.WriteInt32(17, 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(17, A);
-      }
-      size += UnknownFields.SerializedSize;
-      memoizedSerializedSize = size;
-      return size;
-    }
-    public static OptionalGroup_extension ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static OptionalGroup_extension ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static OptionalGroup_extension ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static OptionalGroup_extension ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static OptionalGroup_extension ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static OptionalGroup_extension ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static OptionalGroup_extension ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static OptionalGroup_extension ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static OptionalGroup_extension ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static OptionalGroup_extension ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private OptionalGroup_extension 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(OptionalGroup_extension prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilder<OptionalGroup_extension, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(OptionalGroup_extension cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private OptionalGroup_extension result;
-
-      private OptionalGroup_extension PrepareBuilder() {
-        if (resultIsReadOnly) {
-          OptionalGroup_extension original = result;
-          result = new OptionalGroup_extension();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override OptionalGroup_extension 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.OptionalGroup_extension.Descriptor; }
-      }
-
-      public override OptionalGroup_extension DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.OptionalGroup_extension.DefaultInstance; }
-      }
-
-      public override OptionalGroup_extension BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is OptionalGroup_extension) {
-          return MergeFrom((OptionalGroup_extension) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(OptionalGroup_extension other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.OptionalGroup_extension.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(_optionalGroupExtensionFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _optionalGroupExtensionFieldTags[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 136: {
-              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 OptionalGroup_extension() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class RepeatedGroup_extension : pb::GeneratedMessage<RepeatedGroup_extension, RepeatedGroup_extension.Builder> {
-    private RepeatedGroup_extension() { }
-    private static readonly RepeatedGroup_extension defaultInstance = new RepeatedGroup_extension().MakeReadOnly();
-    private static readonly string[] _repeatedGroupExtensionFieldNames = new string[] { "a" };
-    private static readonly uint[] _repeatedGroupExtensionFieldTags = new uint[] { 376 };
-    public static RepeatedGroup_extension DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override RepeatedGroup_extension DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override RepeatedGroup_extension ThisMessage {
-      get { return this; }
-    }
-
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_RepeatedGroup_extension__Descriptor; }
-    }
-
-    protected override pb::FieldAccess.FieldAccessorTable<RepeatedGroup_extension, RepeatedGroup_extension.Builder> InternalFieldAccessors {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_RepeatedGroup_extension__FieldAccessorTable; }
-    }
-
-    public const int AFieldNumber = 47;
-    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 = _repeatedGroupExtensionFieldNames;
-      if (hasA) {
-        output.WriteInt32(47, 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(47, A);
-      }
-      size += UnknownFields.SerializedSize;
-      memoizedSerializedSize = size;
-      return size;
-    }
-    public static RepeatedGroup_extension ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static RepeatedGroup_extension ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static RepeatedGroup_extension ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static RepeatedGroup_extension ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static RepeatedGroup_extension ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static RepeatedGroup_extension ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static RepeatedGroup_extension ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static RepeatedGroup_extension ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static RepeatedGroup_extension ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static RepeatedGroup_extension ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private RepeatedGroup_extension 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(RepeatedGroup_extension prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilder<RepeatedGroup_extension, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(RepeatedGroup_extension cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private RepeatedGroup_extension result;
-
-      private RepeatedGroup_extension PrepareBuilder() {
-        if (resultIsReadOnly) {
-          RepeatedGroup_extension original = result;
-          result = new RepeatedGroup_extension();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override RepeatedGroup_extension 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.RepeatedGroup_extension.Descriptor; }
-      }
-
-      public override RepeatedGroup_extension DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.RepeatedGroup_extension.DefaultInstance; }
-      }
-
-      public override RepeatedGroup_extension BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is RepeatedGroup_extension) {
-          return MergeFrom((RepeatedGroup_extension) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(RepeatedGroup_extension other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.RepeatedGroup_extension.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(_repeatedGroupExtensionFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _repeatedGroupExtensionFieldTags[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 376: {
-              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 RepeatedGroup_extension() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class TestNestedExtension : pb::GeneratedMessage<TestNestedExtension, TestNestedExtension.Builder> {
-    private TestNestedExtension() { }
-    private static readonly TestNestedExtension defaultInstance = new TestNestedExtension().MakeReadOnly();
-    private static readonly string[] _testNestedExtensionFieldNames = new string[] {  };
-    private static readonly uint[] _testNestedExtensionFieldTags = new uint[] {  };
-    public static TestNestedExtension DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override TestNestedExtension DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override TestNestedExtension ThisMessage {
-      get { return this; }
-    }
-
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestNestedExtension__Descriptor; }
-    }
-
-    protected override pb::FieldAccess.FieldAccessorTable<TestNestedExtension, TestNestedExtension.Builder> InternalFieldAccessors {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestNestedExtension__FieldAccessorTable; }
-    }
-
-    public const int TestFieldNumber = 1002;
-    public static pb::GeneratedExtensionBase<string> Test;
-    public const int NestedStringExtensionFieldNumber = 1003;
-    public static pb::GeneratedExtensionBase<string> NestedStringExtension;
-    public override bool IsInitialized {
-      get {
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _testNestedExtensionFieldNames;
-      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 TestNestedExtension ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestNestedExtension ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestNestedExtension ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestNestedExtension ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestNestedExtension ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestNestedExtension ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static TestNestedExtension ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static TestNestedExtension ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static TestNestedExtension ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestNestedExtension ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private TestNestedExtension 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(TestNestedExtension prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilder<TestNestedExtension, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(TestNestedExtension cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private TestNestedExtension result;
-
-      private TestNestedExtension PrepareBuilder() {
-        if (resultIsReadOnly) {
-          TestNestedExtension original = result;
-          result = new TestNestedExtension();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override TestNestedExtension 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.TestNestedExtension.Descriptor; }
-      }
-
-      public override TestNestedExtension DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.TestNestedExtension.DefaultInstance; }
-      }
-
-      public override TestNestedExtension BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is TestNestedExtension) {
-          return MergeFrom((TestNestedExtension) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(TestNestedExtension other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.TestNestedExtension.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(_testNestedExtensionFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _testNestedExtensionFieldTags[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 TestNestedExtension() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class TestRequired : pb::GeneratedMessage<TestRequired, TestRequired.Builder> {
-    private TestRequired() { }
-    private static readonly TestRequired defaultInstance = new TestRequired().MakeReadOnly();
-    private static readonly string[] _testRequiredFieldNames = new string[] { "a", "b", "c", "dummy10", "dummy11", "dummy12", "dummy13", "dummy14", "dummy15", "dummy16", "dummy17", "dummy18", "dummy19", "dummy2", "dummy20", "dummy21", "dummy22", "dummy23", "dummy24", "dummy25", "dummy26", "dummy27", "dummy28", "dummy29", "dummy30", "dummy31", "dummy32", "dummy4", "dummy5", "dummy6", "dummy7", "dummy8", "dummy9" };
-    private static readonly uint[] _testRequiredFieldTags = new uint[] { 8, 24, 264, 80, 88, 96, 104, 112, 120, 128, 136, 144, 152, 16, 160, 168, 176, 184, 192, 200, 208, 216, 224, 232, 240, 248, 256, 32, 40, 48, 56, 64, 72 };
-    public static TestRequired DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override TestRequired DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override TestRequired ThisMessage {
-      get { return this; }
-    }
-
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestRequired__Descriptor; }
-    }
-
-    protected override pb::FieldAccess.FieldAccessorTable<TestRequired, TestRequired.Builder> InternalFieldAccessors {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestRequired__FieldAccessorTable; }
-    }
-
-    public const int SingleFieldNumber = 1000;
-    public static pb::GeneratedExtensionBase<global::Google.ProtocolBuffers.TestProtos.TestRequired> Single;
-    public const int MultiFieldNumber = 1001;
-    public static pb::GeneratedExtensionBase<scg::IList<global::Google.ProtocolBuffers.TestProtos.TestRequired>> Multi;
-    public const int AFieldNumber = 1;
-    private bool hasA;
-    private int a_;
-    public bool HasA {
-      get { return hasA; }
-    }
-    public int A {
-      get { return a_; }
-    }
-
-    public const int Dummy2FieldNumber = 2;
-    private bool hasDummy2;
-    private int dummy2_;
-    public bool HasDummy2 {
-      get { return hasDummy2; }
-    }
-    public int Dummy2 {
-      get { return dummy2_; }
-    }
-
-    public const int BFieldNumber = 3;
-    private bool hasB;
-    private int b_;
-    public bool HasB {
-      get { return hasB; }
-    }
-    public int B {
-      get { return b_; }
-    }
-
-    public const int Dummy4FieldNumber = 4;
-    private bool hasDummy4;
-    private int dummy4_;
-    public bool HasDummy4 {
-      get { return hasDummy4; }
-    }
-    public int Dummy4 {
-      get { return dummy4_; }
-    }
-
-    public const int Dummy5FieldNumber = 5;
-    private bool hasDummy5;
-    private int dummy5_;
-    public bool HasDummy5 {
-      get { return hasDummy5; }
-    }
-    public int Dummy5 {
-      get { return dummy5_; }
-    }
-
-    public const int Dummy6FieldNumber = 6;
-    private bool hasDummy6;
-    private int dummy6_;
-    public bool HasDummy6 {
-      get { return hasDummy6; }
-    }
-    public int Dummy6 {
-      get { return dummy6_; }
-    }
-
-    public const int Dummy7FieldNumber = 7;
-    private bool hasDummy7;
-    private int dummy7_;
-    public bool HasDummy7 {
-      get { return hasDummy7; }
-    }
-    public int Dummy7 {
-      get { return dummy7_; }
-    }
-
-    public const int Dummy8FieldNumber = 8;
-    private bool hasDummy8;
-    private int dummy8_;
-    public bool HasDummy8 {
-      get { return hasDummy8; }
-    }
-    public int Dummy8 {
-      get { return dummy8_; }
-    }
-
-    public const int Dummy9FieldNumber = 9;
-    private bool hasDummy9;
-    private int dummy9_;
-    public bool HasDummy9 {
-      get { return hasDummy9; }
-    }
-    public int Dummy9 {
-      get { return dummy9_; }
-    }
-
-    public const int Dummy10FieldNumber = 10;
-    private bool hasDummy10;
-    private int dummy10_;
-    public bool HasDummy10 {
-      get { return hasDummy10; }
-    }
-    public int Dummy10 {
-      get { return dummy10_; }
-    }
-
-    public const int Dummy11FieldNumber = 11;
-    private bool hasDummy11;
-    private int dummy11_;
-    public bool HasDummy11 {
-      get { return hasDummy11; }
-    }
-    public int Dummy11 {
-      get { return dummy11_; }
-    }
-
-    public const int Dummy12FieldNumber = 12;
-    private bool hasDummy12;
-    private int dummy12_;
-    public bool HasDummy12 {
-      get { return hasDummy12; }
-    }
-    public int Dummy12 {
-      get { return dummy12_; }
-    }
-
-    public const int Dummy13FieldNumber = 13;
-    private bool hasDummy13;
-    private int dummy13_;
-    public bool HasDummy13 {
-      get { return hasDummy13; }
-    }
-    public int Dummy13 {
-      get { return dummy13_; }
-    }
-
-    public const int Dummy14FieldNumber = 14;
-    private bool hasDummy14;
-    private int dummy14_;
-    public bool HasDummy14 {
-      get { return hasDummy14; }
-    }
-    public int Dummy14 {
-      get { return dummy14_; }
-    }
-
-    public const int Dummy15FieldNumber = 15;
-    private bool hasDummy15;
-    private int dummy15_;
-    public bool HasDummy15 {
-      get { return hasDummy15; }
-    }
-    public int Dummy15 {
-      get { return dummy15_; }
-    }
-
-    public const int Dummy16FieldNumber = 16;
-    private bool hasDummy16;
-    private int dummy16_;
-    public bool HasDummy16 {
-      get { return hasDummy16; }
-    }
-    public int Dummy16 {
-      get { return dummy16_; }
-    }
-
-    public const int Dummy17FieldNumber = 17;
-    private bool hasDummy17;
-    private int dummy17_;
-    public bool HasDummy17 {
-      get { return hasDummy17; }
-    }
-    public int Dummy17 {
-      get { return dummy17_; }
-    }
-
-    public const int Dummy18FieldNumber = 18;
-    private bool hasDummy18;
-    private int dummy18_;
-    public bool HasDummy18 {
-      get { return hasDummy18; }
-    }
-    public int Dummy18 {
-      get { return dummy18_; }
-    }
-
-    public const int Dummy19FieldNumber = 19;
-    private bool hasDummy19;
-    private int dummy19_;
-    public bool HasDummy19 {
-      get { return hasDummy19; }
-    }
-    public int Dummy19 {
-      get { return dummy19_; }
-    }
-
-    public const int Dummy20FieldNumber = 20;
-    private bool hasDummy20;
-    private int dummy20_;
-    public bool HasDummy20 {
-      get { return hasDummy20; }
-    }
-    public int Dummy20 {
-      get { return dummy20_; }
-    }
-
-    public const int Dummy21FieldNumber = 21;
-    private bool hasDummy21;
-    private int dummy21_;
-    public bool HasDummy21 {
-      get { return hasDummy21; }
-    }
-    public int Dummy21 {
-      get { return dummy21_; }
-    }
-
-    public const int Dummy22FieldNumber = 22;
-    private bool hasDummy22;
-    private int dummy22_;
-    public bool HasDummy22 {
-      get { return hasDummy22; }
-    }
-    public int Dummy22 {
-      get { return dummy22_; }
-    }
-
-    public const int Dummy23FieldNumber = 23;
-    private bool hasDummy23;
-    private int dummy23_;
-    public bool HasDummy23 {
-      get { return hasDummy23; }
-    }
-    public int Dummy23 {
-      get { return dummy23_; }
-    }
-
-    public const int Dummy24FieldNumber = 24;
-    private bool hasDummy24;
-    private int dummy24_;
-    public bool HasDummy24 {
-      get { return hasDummy24; }
-    }
-    public int Dummy24 {
-      get { return dummy24_; }
-    }
-
-    public const int Dummy25FieldNumber = 25;
-    private bool hasDummy25;
-    private int dummy25_;
-    public bool HasDummy25 {
-      get { return hasDummy25; }
-    }
-    public int Dummy25 {
-      get { return dummy25_; }
-    }
-
-    public const int Dummy26FieldNumber = 26;
-    private bool hasDummy26;
-    private int dummy26_;
-    public bool HasDummy26 {
-      get { return hasDummy26; }
-    }
-    public int Dummy26 {
-      get { return dummy26_; }
-    }
-
-    public const int Dummy27FieldNumber = 27;
-    private bool hasDummy27;
-    private int dummy27_;
-    public bool HasDummy27 {
-      get { return hasDummy27; }
-    }
-    public int Dummy27 {
-      get { return dummy27_; }
-    }
-
-    public const int Dummy28FieldNumber = 28;
-    private bool hasDummy28;
-    private int dummy28_;
-    public bool HasDummy28 {
-      get { return hasDummy28; }
-    }
-    public int Dummy28 {
-      get { return dummy28_; }
-    }
-
-    public const int Dummy29FieldNumber = 29;
-    private bool hasDummy29;
-    private int dummy29_;
-    public bool HasDummy29 {
-      get { return hasDummy29; }
-    }
-    public int Dummy29 {
-      get { return dummy29_; }
-    }
-
-    public const int Dummy30FieldNumber = 30;
-    private bool hasDummy30;
-    private int dummy30_;
-    public bool HasDummy30 {
-      get { return hasDummy30; }
-    }
-    public int Dummy30 {
-      get { return dummy30_; }
-    }
-
-    public const int Dummy31FieldNumber = 31;
-    private bool hasDummy31;
-    private int dummy31_;
-    public bool HasDummy31 {
-      get { return hasDummy31; }
-    }
-    public int Dummy31 {
-      get { return dummy31_; }
-    }
-
-    public const int Dummy32FieldNumber = 32;
-    private bool hasDummy32;
-    private int dummy32_;
-    public bool HasDummy32 {
-      get { return hasDummy32; }
-    }
-    public int Dummy32 {
-      get { return dummy32_; }
-    }
-
-    public const int CFieldNumber = 33;
-    private bool hasC;
-    private int c_;
-    public bool HasC {
-      get { return hasC; }
-    }
-    public int C {
-      get { return c_; }
-    }
-
-    public override bool IsInitialized {
-      get {
-        if (!hasA) return false;
-        if (!hasB) return false;
-        if (!hasC) return false;
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _testRequiredFieldNames;
-      if (hasA) {
-        output.WriteInt32(1, field_names[0], A);
-      }
-      if (hasDummy2) {
-        output.WriteInt32(2, field_names[13], Dummy2);
-      }
-      if (hasB) {
-        output.WriteInt32(3, field_names[1], B);
-      }
-      if (hasDummy4) {
-        output.WriteInt32(4, field_names[27], Dummy4);
-      }
-      if (hasDummy5) {
-        output.WriteInt32(5, field_names[28], Dummy5);
-      }
-      if (hasDummy6) {
-        output.WriteInt32(6, field_names[29], Dummy6);
-      }
-      if (hasDummy7) {
-        output.WriteInt32(7, field_names[30], Dummy7);
-      }
-      if (hasDummy8) {
-        output.WriteInt32(8, field_names[31], Dummy8);
-      }
-      if (hasDummy9) {
-        output.WriteInt32(9, field_names[32], Dummy9);
-      }
-      if (hasDummy10) {
-        output.WriteInt32(10, field_names[3], Dummy10);
-      }
-      if (hasDummy11) {
-        output.WriteInt32(11, field_names[4], Dummy11);
-      }
-      if (hasDummy12) {
-        output.WriteInt32(12, field_names[5], Dummy12);
-      }
-      if (hasDummy13) {
-        output.WriteInt32(13, field_names[6], Dummy13);
-      }
-      if (hasDummy14) {
-        output.WriteInt32(14, field_names[7], Dummy14);
-      }
-      if (hasDummy15) {
-        output.WriteInt32(15, field_names[8], Dummy15);
-      }
-      if (hasDummy16) {
-        output.WriteInt32(16, field_names[9], Dummy16);
-      }
-      if (hasDummy17) {
-        output.WriteInt32(17, field_names[10], Dummy17);
-      }
-      if (hasDummy18) {
-        output.WriteInt32(18, field_names[11], Dummy18);
-      }
-      if (hasDummy19) {
-        output.WriteInt32(19, field_names[12], Dummy19);
-      }
-      if (hasDummy20) {
-        output.WriteInt32(20, field_names[14], Dummy20);
-      }
-      if (hasDummy21) {
-        output.WriteInt32(21, field_names[15], Dummy21);
-      }
-      if (hasDummy22) {
-        output.WriteInt32(22, field_names[16], Dummy22);
-      }
-      if (hasDummy23) {
-        output.WriteInt32(23, field_names[17], Dummy23);
-      }
-      if (hasDummy24) {
-        output.WriteInt32(24, field_names[18], Dummy24);
-      }
-      if (hasDummy25) {
-        output.WriteInt32(25, field_names[19], Dummy25);
-      }
-      if (hasDummy26) {
-        output.WriteInt32(26, field_names[20], Dummy26);
-      }
-      if (hasDummy27) {
-        output.WriteInt32(27, field_names[21], Dummy27);
-      }
-      if (hasDummy28) {
-        output.WriteInt32(28, field_names[22], Dummy28);
-      }
-      if (hasDummy29) {
-        output.WriteInt32(29, field_names[23], Dummy29);
-      }
-      if (hasDummy30) {
-        output.WriteInt32(30, field_names[24], Dummy30);
-      }
-      if (hasDummy31) {
-        output.WriteInt32(31, field_names[25], Dummy31);
-      }
-      if (hasDummy32) {
-        output.WriteInt32(32, field_names[26], Dummy32);
-      }
-      if (hasC) {
-        output.WriteInt32(33, field_names[2], 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 (hasA) {
-        size += pb::CodedOutputStream.ComputeInt32Size(1, A);
-      }
-      if (hasDummy2) {
-        size += pb::CodedOutputStream.ComputeInt32Size(2, Dummy2);
-      }
-      if (hasB) {
-        size += pb::CodedOutputStream.ComputeInt32Size(3, B);
-      }
-      if (hasDummy4) {
-        size += pb::CodedOutputStream.ComputeInt32Size(4, Dummy4);
-      }
-      if (hasDummy5) {
-        size += pb::CodedOutputStream.ComputeInt32Size(5, Dummy5);
-      }
-      if (hasDummy6) {
-        size += pb::CodedOutputStream.ComputeInt32Size(6, Dummy6);
-      }
-      if (hasDummy7) {
-        size += pb::CodedOutputStream.ComputeInt32Size(7, Dummy7);
-      }
-      if (hasDummy8) {
-        size += pb::CodedOutputStream.ComputeInt32Size(8, Dummy8);
-      }
-      if (hasDummy9) {
-        size += pb::CodedOutputStream.ComputeInt32Size(9, Dummy9);
-      }
-      if (hasDummy10) {
-        size += pb::CodedOutputStream.ComputeInt32Size(10, Dummy10);
-      }
-      if (hasDummy11) {
-        size += pb::CodedOutputStream.ComputeInt32Size(11, Dummy11);
-      }
-      if (hasDummy12) {
-        size += pb::CodedOutputStream.ComputeInt32Size(12, Dummy12);
-      }
-      if (hasDummy13) {
-        size += pb::CodedOutputStream.ComputeInt32Size(13, Dummy13);
-      }
-      if (hasDummy14) {
-        size += pb::CodedOutputStream.ComputeInt32Size(14, Dummy14);
-      }
-      if (hasDummy15) {
-        size += pb::CodedOutputStream.ComputeInt32Size(15, Dummy15);
-      }
-      if (hasDummy16) {
-        size += pb::CodedOutputStream.ComputeInt32Size(16, Dummy16);
-      }
-      if (hasDummy17) {
-        size += pb::CodedOutputStream.ComputeInt32Size(17, Dummy17);
-      }
-      if (hasDummy18) {
-        size += pb::CodedOutputStream.ComputeInt32Size(18, Dummy18);
-      }
-      if (hasDummy19) {
-        size += pb::CodedOutputStream.ComputeInt32Size(19, Dummy19);
-      }
-      if (hasDummy20) {
-        size += pb::CodedOutputStream.ComputeInt32Size(20, Dummy20);
-      }
-      if (hasDummy21) {
-        size += pb::CodedOutputStream.ComputeInt32Size(21, Dummy21);
-      }
-      if (hasDummy22) {
-        size += pb::CodedOutputStream.ComputeInt32Size(22, Dummy22);
-      }
-      if (hasDummy23) {
-        size += pb::CodedOutputStream.ComputeInt32Size(23, Dummy23);
-      }
-      if (hasDummy24) {
-        size += pb::CodedOutputStream.ComputeInt32Size(24, Dummy24);
-      }
-      if (hasDummy25) {
-        size += pb::CodedOutputStream.ComputeInt32Size(25, Dummy25);
-      }
-      if (hasDummy26) {
-        size += pb::CodedOutputStream.ComputeInt32Size(26, Dummy26);
-      }
-      if (hasDummy27) {
-        size += pb::CodedOutputStream.ComputeInt32Size(27, Dummy27);
-      }
-      if (hasDummy28) {
-        size += pb::CodedOutputStream.ComputeInt32Size(28, Dummy28);
-      }
-      if (hasDummy29) {
-        size += pb::CodedOutputStream.ComputeInt32Size(29, Dummy29);
-      }
-      if (hasDummy30) {
-        size += pb::CodedOutputStream.ComputeInt32Size(30, Dummy30);
-      }
-      if (hasDummy31) {
-        size += pb::CodedOutputStream.ComputeInt32Size(31, Dummy31);
-      }
-      if (hasDummy32) {
-        size += pb::CodedOutputStream.ComputeInt32Size(32, Dummy32);
-      }
-      if (hasC) {
-        size += pb::CodedOutputStream.ComputeInt32Size(33, C);
-      }
-      size += UnknownFields.SerializedSize;
-      memoizedSerializedSize = size;
-      return size;
-    }
-    public static TestRequired ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestRequired ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestRequired ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestRequired ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestRequired ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestRequired ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static TestRequired ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static TestRequired ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static TestRequired ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestRequired ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private TestRequired 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(TestRequired prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilder<TestRequired, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(TestRequired cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private TestRequired result;
-
-      private TestRequired PrepareBuilder() {
-        if (resultIsReadOnly) {
-          TestRequired original = result;
-          result = new TestRequired();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override TestRequired 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.TestRequired.Descriptor; }
-      }
-
-      public override TestRequired DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.TestRequired.DefaultInstance; }
-      }
-
-      public override TestRequired BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is TestRequired) {
-          return MergeFrom((TestRequired) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(TestRequired other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.TestRequired.DefaultInstance) return this;
-        PrepareBuilder();
-        if (other.HasA) {
-          A = other.A;
-        }
-        if (other.HasDummy2) {
-          Dummy2 = other.Dummy2;
-        }
-        if (other.HasB) {
-          B = other.B;
-        }
-        if (other.HasDummy4) {
-          Dummy4 = other.Dummy4;
-        }
-        if (other.HasDummy5) {
-          Dummy5 = other.Dummy5;
-        }
-        if (other.HasDummy6) {
-          Dummy6 = other.Dummy6;
-        }
-        if (other.HasDummy7) {
-          Dummy7 = other.Dummy7;
-        }
-        if (other.HasDummy8) {
-          Dummy8 = other.Dummy8;
-        }
-        if (other.HasDummy9) {
-          Dummy9 = other.Dummy9;
-        }
-        if (other.HasDummy10) {
-          Dummy10 = other.Dummy10;
-        }
-        if (other.HasDummy11) {
-          Dummy11 = other.Dummy11;
-        }
-        if (other.HasDummy12) {
-          Dummy12 = other.Dummy12;
-        }
-        if (other.HasDummy13) {
-          Dummy13 = other.Dummy13;
-        }
-        if (other.HasDummy14) {
-          Dummy14 = other.Dummy14;
-        }
-        if (other.HasDummy15) {
-          Dummy15 = other.Dummy15;
-        }
-        if (other.HasDummy16) {
-          Dummy16 = other.Dummy16;
-        }
-        if (other.HasDummy17) {
-          Dummy17 = other.Dummy17;
-        }
-        if (other.HasDummy18) {
-          Dummy18 = other.Dummy18;
-        }
-        if (other.HasDummy19) {
-          Dummy19 = other.Dummy19;
-        }
-        if (other.HasDummy20) {
-          Dummy20 = other.Dummy20;
-        }
-        if (other.HasDummy21) {
-          Dummy21 = other.Dummy21;
-        }
-        if (other.HasDummy22) {
-          Dummy22 = other.Dummy22;
-        }
-        if (other.HasDummy23) {
-          Dummy23 = other.Dummy23;
-        }
-        if (other.HasDummy24) {
-          Dummy24 = other.Dummy24;
-        }
-        if (other.HasDummy25) {
-          Dummy25 = other.Dummy25;
-        }
-        if (other.HasDummy26) {
-          Dummy26 = other.Dummy26;
-        }
-        if (other.HasDummy27) {
-          Dummy27 = other.Dummy27;
-        }
-        if (other.HasDummy28) {
-          Dummy28 = other.Dummy28;
-        }
-        if (other.HasDummy29) {
-          Dummy29 = other.Dummy29;
-        }
-        if (other.HasDummy30) {
-          Dummy30 = other.Dummy30;
-        }
-        if (other.HasDummy31) {
-          Dummy31 = other.Dummy31;
-        }
-        if (other.HasDummy32) {
-          Dummy32 = other.Dummy32;
-        }
-        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(_testRequiredFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _testRequiredFieldTags[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;
-            }
-            case 16: {
-              result.hasDummy2 = input.ReadInt32(ref result.dummy2_);
-              break;
-            }
-            case 24: {
-              result.hasB = input.ReadInt32(ref result.b_);
-              break;
-            }
-            case 32: {
-              result.hasDummy4 = input.ReadInt32(ref result.dummy4_);
-              break;
-            }
-            case 40: {
-              result.hasDummy5 = input.ReadInt32(ref result.dummy5_);
-              break;
-            }
-            case 48: {
-              result.hasDummy6 = input.ReadInt32(ref result.dummy6_);
-              break;
-            }
-            case 56: {
-              result.hasDummy7 = input.ReadInt32(ref result.dummy7_);
-              break;
-            }
-            case 64: {
-              result.hasDummy8 = input.ReadInt32(ref result.dummy8_);
-              break;
-            }
-            case 72: {
-              result.hasDummy9 = input.ReadInt32(ref result.dummy9_);
-              break;
-            }
-            case 80: {
-              result.hasDummy10 = input.ReadInt32(ref result.dummy10_);
-              break;
-            }
-            case 88: {
-              result.hasDummy11 = input.ReadInt32(ref result.dummy11_);
-              break;
-            }
-            case 96: {
-              result.hasDummy12 = input.ReadInt32(ref result.dummy12_);
-              break;
-            }
-            case 104: {
-              result.hasDummy13 = input.ReadInt32(ref result.dummy13_);
-              break;
-            }
-            case 112: {
-              result.hasDummy14 = input.ReadInt32(ref result.dummy14_);
-              break;
-            }
-            case 120: {
-              result.hasDummy15 = input.ReadInt32(ref result.dummy15_);
-              break;
-            }
-            case 128: {
-              result.hasDummy16 = input.ReadInt32(ref result.dummy16_);
-              break;
-            }
-            case 136: {
-              result.hasDummy17 = input.ReadInt32(ref result.dummy17_);
-              break;
-            }
-            case 144: {
-              result.hasDummy18 = input.ReadInt32(ref result.dummy18_);
-              break;
-            }
-            case 152: {
-              result.hasDummy19 = input.ReadInt32(ref result.dummy19_);
-              break;
-            }
-            case 160: {
-              result.hasDummy20 = input.ReadInt32(ref result.dummy20_);
-              break;
-            }
-            case 168: {
-              result.hasDummy21 = input.ReadInt32(ref result.dummy21_);
-              break;
-            }
-            case 176: {
-              result.hasDummy22 = input.ReadInt32(ref result.dummy22_);
-              break;
-            }
-            case 184: {
-              result.hasDummy23 = input.ReadInt32(ref result.dummy23_);
-              break;
-            }
-            case 192: {
-              result.hasDummy24 = input.ReadInt32(ref result.dummy24_);
-              break;
-            }
-            case 200: {
-              result.hasDummy25 = input.ReadInt32(ref result.dummy25_);
-              break;
-            }
-            case 208: {
-              result.hasDummy26 = input.ReadInt32(ref result.dummy26_);
-              break;
-            }
-            case 216: {
-              result.hasDummy27 = input.ReadInt32(ref result.dummy27_);
-              break;
-            }
-            case 224: {
-              result.hasDummy28 = input.ReadInt32(ref result.dummy28_);
-              break;
-            }
-            case 232: {
-              result.hasDummy29 = input.ReadInt32(ref result.dummy29_);
-              break;
-            }
-            case 240: {
-              result.hasDummy30 = input.ReadInt32(ref result.dummy30_);
-              break;
-            }
-            case 248: {
-              result.hasDummy31 = input.ReadInt32(ref result.dummy31_);
-              break;
-            }
-            case 256: {
-              result.hasDummy32 = input.ReadInt32(ref result.dummy32_);
-              break;
-            }
-            case 264: {
-              result.hasC = input.ReadInt32(ref result.c_);
-              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;
-      }
-
-      public bool HasDummy2 {
-        get { return result.hasDummy2; }
-      }
-      public int Dummy2 {
-        get { return result.Dummy2; }
-        set { SetDummy2(value); }
-      }
-      public Builder SetDummy2(int value) {
-        PrepareBuilder();
-        result.hasDummy2 = true;
-        result.dummy2_ = value;
-        return this;
-      }
-      public Builder ClearDummy2() {
-        PrepareBuilder();
-        result.hasDummy2 = false;
-        result.dummy2_ = 0;
-        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;
-      }
-
-      public bool HasDummy4 {
-        get { return result.hasDummy4; }
-      }
-      public int Dummy4 {
-        get { return result.Dummy4; }
-        set { SetDummy4(value); }
-      }
-      public Builder SetDummy4(int value) {
-        PrepareBuilder();
-        result.hasDummy4 = true;
-        result.dummy4_ = value;
-        return this;
-      }
-      public Builder ClearDummy4() {
-        PrepareBuilder();
-        result.hasDummy4 = false;
-        result.dummy4_ = 0;
-        return this;
-      }
-
-      public bool HasDummy5 {
-        get { return result.hasDummy5; }
-      }
-      public int Dummy5 {
-        get { return result.Dummy5; }
-        set { SetDummy5(value); }
-      }
-      public Builder SetDummy5(int value) {
-        PrepareBuilder();
-        result.hasDummy5 = true;
-        result.dummy5_ = value;
-        return this;
-      }
-      public Builder ClearDummy5() {
-        PrepareBuilder();
-        result.hasDummy5 = false;
-        result.dummy5_ = 0;
-        return this;
-      }
-
-      public bool HasDummy6 {
-        get { return result.hasDummy6; }
-      }
-      public int Dummy6 {
-        get { return result.Dummy6; }
-        set { SetDummy6(value); }
-      }
-      public Builder SetDummy6(int value) {
-        PrepareBuilder();
-        result.hasDummy6 = true;
-        result.dummy6_ = value;
-        return this;
-      }
-      public Builder ClearDummy6() {
-        PrepareBuilder();
-        result.hasDummy6 = false;
-        result.dummy6_ = 0;
-        return this;
-      }
-
-      public bool HasDummy7 {
-        get { return result.hasDummy7; }
-      }
-      public int Dummy7 {
-        get { return result.Dummy7; }
-        set { SetDummy7(value); }
-      }
-      public Builder SetDummy7(int value) {
-        PrepareBuilder();
-        result.hasDummy7 = true;
-        result.dummy7_ = value;
-        return this;
-      }
-      public Builder ClearDummy7() {
-        PrepareBuilder();
-        result.hasDummy7 = false;
-        result.dummy7_ = 0;
-        return this;
-      }
-
-      public bool HasDummy8 {
-        get { return result.hasDummy8; }
-      }
-      public int Dummy8 {
-        get { return result.Dummy8; }
-        set { SetDummy8(value); }
-      }
-      public Builder SetDummy8(int value) {
-        PrepareBuilder();
-        result.hasDummy8 = true;
-        result.dummy8_ = value;
-        return this;
-      }
-      public Builder ClearDummy8() {
-        PrepareBuilder();
-        result.hasDummy8 = false;
-        result.dummy8_ = 0;
-        return this;
-      }
-
-      public bool HasDummy9 {
-        get { return result.hasDummy9; }
-      }
-      public int Dummy9 {
-        get { return result.Dummy9; }
-        set { SetDummy9(value); }
-      }
-      public Builder SetDummy9(int value) {
-        PrepareBuilder();
-        result.hasDummy9 = true;
-        result.dummy9_ = value;
-        return this;
-      }
-      public Builder ClearDummy9() {
-        PrepareBuilder();
-        result.hasDummy9 = false;
-        result.dummy9_ = 0;
-        return this;
-      }
-
-      public bool HasDummy10 {
-        get { return result.hasDummy10; }
-      }
-      public int Dummy10 {
-        get { return result.Dummy10; }
-        set { SetDummy10(value); }
-      }
-      public Builder SetDummy10(int value) {
-        PrepareBuilder();
-        result.hasDummy10 = true;
-        result.dummy10_ = value;
-        return this;
-      }
-      public Builder ClearDummy10() {
-        PrepareBuilder();
-        result.hasDummy10 = false;
-        result.dummy10_ = 0;
-        return this;
-      }
-
-      public bool HasDummy11 {
-        get { return result.hasDummy11; }
-      }
-      public int Dummy11 {
-        get { return result.Dummy11; }
-        set { SetDummy11(value); }
-      }
-      public Builder SetDummy11(int value) {
-        PrepareBuilder();
-        result.hasDummy11 = true;
-        result.dummy11_ = value;
-        return this;
-      }
-      public Builder ClearDummy11() {
-        PrepareBuilder();
-        result.hasDummy11 = false;
-        result.dummy11_ = 0;
-        return this;
-      }
-
-      public bool HasDummy12 {
-        get { return result.hasDummy12; }
-      }
-      public int Dummy12 {
-        get { return result.Dummy12; }
-        set { SetDummy12(value); }
-      }
-      public Builder SetDummy12(int value) {
-        PrepareBuilder();
-        result.hasDummy12 = true;
-        result.dummy12_ = value;
-        return this;
-      }
-      public Builder ClearDummy12() {
-        PrepareBuilder();
-        result.hasDummy12 = false;
-        result.dummy12_ = 0;
-        return this;
-      }
-
-      public bool HasDummy13 {
-        get { return result.hasDummy13; }
-      }
-      public int Dummy13 {
-        get { return result.Dummy13; }
-        set { SetDummy13(value); }
-      }
-      public Builder SetDummy13(int value) {
-        PrepareBuilder();
-        result.hasDummy13 = true;
-        result.dummy13_ = value;
-        return this;
-      }
-      public Builder ClearDummy13() {
-        PrepareBuilder();
-        result.hasDummy13 = false;
-        result.dummy13_ = 0;
-        return this;
-      }
-
-      public bool HasDummy14 {
-        get { return result.hasDummy14; }
-      }
-      public int Dummy14 {
-        get { return result.Dummy14; }
-        set { SetDummy14(value); }
-      }
-      public Builder SetDummy14(int value) {
-        PrepareBuilder();
-        result.hasDummy14 = true;
-        result.dummy14_ = value;
-        return this;
-      }
-      public Builder ClearDummy14() {
-        PrepareBuilder();
-        result.hasDummy14 = false;
-        result.dummy14_ = 0;
-        return this;
-      }
-
-      public bool HasDummy15 {
-        get { return result.hasDummy15; }
-      }
-      public int Dummy15 {
-        get { return result.Dummy15; }
-        set { SetDummy15(value); }
-      }
-      public Builder SetDummy15(int value) {
-        PrepareBuilder();
-        result.hasDummy15 = true;
-        result.dummy15_ = value;
-        return this;
-      }
-      public Builder ClearDummy15() {
-        PrepareBuilder();
-        result.hasDummy15 = false;
-        result.dummy15_ = 0;
-        return this;
-      }
-
-      public bool HasDummy16 {
-        get { return result.hasDummy16; }
-      }
-      public int Dummy16 {
-        get { return result.Dummy16; }
-        set { SetDummy16(value); }
-      }
-      public Builder SetDummy16(int value) {
-        PrepareBuilder();
-        result.hasDummy16 = true;
-        result.dummy16_ = value;
-        return this;
-      }
-      public Builder ClearDummy16() {
-        PrepareBuilder();
-        result.hasDummy16 = false;
-        result.dummy16_ = 0;
-        return this;
-      }
-
-      public bool HasDummy17 {
-        get { return result.hasDummy17; }
-      }
-      public int Dummy17 {
-        get { return result.Dummy17; }
-        set { SetDummy17(value); }
-      }
-      public Builder SetDummy17(int value) {
-        PrepareBuilder();
-        result.hasDummy17 = true;
-        result.dummy17_ = value;
-        return this;
-      }
-      public Builder ClearDummy17() {
-        PrepareBuilder();
-        result.hasDummy17 = false;
-        result.dummy17_ = 0;
-        return this;
-      }
-
-      public bool HasDummy18 {
-        get { return result.hasDummy18; }
-      }
-      public int Dummy18 {
-        get { return result.Dummy18; }
-        set { SetDummy18(value); }
-      }
-      public Builder SetDummy18(int value) {
-        PrepareBuilder();
-        result.hasDummy18 = true;
-        result.dummy18_ = value;
-        return this;
-      }
-      public Builder ClearDummy18() {
-        PrepareBuilder();
-        result.hasDummy18 = false;
-        result.dummy18_ = 0;
-        return this;
-      }
-
-      public bool HasDummy19 {
-        get { return result.hasDummy19; }
-      }
-      public int Dummy19 {
-        get { return result.Dummy19; }
-        set { SetDummy19(value); }
-      }
-      public Builder SetDummy19(int value) {
-        PrepareBuilder();
-        result.hasDummy19 = true;
-        result.dummy19_ = value;
-        return this;
-      }
-      public Builder ClearDummy19() {
-        PrepareBuilder();
-        result.hasDummy19 = false;
-        result.dummy19_ = 0;
-        return this;
-      }
-
-      public bool HasDummy20 {
-        get { return result.hasDummy20; }
-      }
-      public int Dummy20 {
-        get { return result.Dummy20; }
-        set { SetDummy20(value); }
-      }
-      public Builder SetDummy20(int value) {
-        PrepareBuilder();
-        result.hasDummy20 = true;
-        result.dummy20_ = value;
-        return this;
-      }
-      public Builder ClearDummy20() {
-        PrepareBuilder();
-        result.hasDummy20 = false;
-        result.dummy20_ = 0;
-        return this;
-      }
-
-      public bool HasDummy21 {
-        get { return result.hasDummy21; }
-      }
-      public int Dummy21 {
-        get { return result.Dummy21; }
-        set { SetDummy21(value); }
-      }
-      public Builder SetDummy21(int value) {
-        PrepareBuilder();
-        result.hasDummy21 = true;
-        result.dummy21_ = value;
-        return this;
-      }
-      public Builder ClearDummy21() {
-        PrepareBuilder();
-        result.hasDummy21 = false;
-        result.dummy21_ = 0;
-        return this;
-      }
-
-      public bool HasDummy22 {
-        get { return result.hasDummy22; }
-      }
-      public int Dummy22 {
-        get { return result.Dummy22; }
-        set { SetDummy22(value); }
-      }
-      public Builder SetDummy22(int value) {
-        PrepareBuilder();
-        result.hasDummy22 = true;
-        result.dummy22_ = value;
-        return this;
-      }
-      public Builder ClearDummy22() {
-        PrepareBuilder();
-        result.hasDummy22 = false;
-        result.dummy22_ = 0;
-        return this;
-      }
-
-      public bool HasDummy23 {
-        get { return result.hasDummy23; }
-      }
-      public int Dummy23 {
-        get { return result.Dummy23; }
-        set { SetDummy23(value); }
-      }
-      public Builder SetDummy23(int value) {
-        PrepareBuilder();
-        result.hasDummy23 = true;
-        result.dummy23_ = value;
-        return this;
-      }
-      public Builder ClearDummy23() {
-        PrepareBuilder();
-        result.hasDummy23 = false;
-        result.dummy23_ = 0;
-        return this;
-      }
-
-      public bool HasDummy24 {
-        get { return result.hasDummy24; }
-      }
-      public int Dummy24 {
-        get { return result.Dummy24; }
-        set { SetDummy24(value); }
-      }
-      public Builder SetDummy24(int value) {
-        PrepareBuilder();
-        result.hasDummy24 = true;
-        result.dummy24_ = value;
-        return this;
-      }
-      public Builder ClearDummy24() {
-        PrepareBuilder();
-        result.hasDummy24 = false;
-        result.dummy24_ = 0;
-        return this;
-      }
-
-      public bool HasDummy25 {
-        get { return result.hasDummy25; }
-      }
-      public int Dummy25 {
-        get { return result.Dummy25; }
-        set { SetDummy25(value); }
-      }
-      public Builder SetDummy25(int value) {
-        PrepareBuilder();
-        result.hasDummy25 = true;
-        result.dummy25_ = value;
-        return this;
-      }
-      public Builder ClearDummy25() {
-        PrepareBuilder();
-        result.hasDummy25 = false;
-        result.dummy25_ = 0;
-        return this;
-      }
-
-      public bool HasDummy26 {
-        get { return result.hasDummy26; }
-      }
-      public int Dummy26 {
-        get { return result.Dummy26; }
-        set { SetDummy26(value); }
-      }
-      public Builder SetDummy26(int value) {
-        PrepareBuilder();
-        result.hasDummy26 = true;
-        result.dummy26_ = value;
-        return this;
-      }
-      public Builder ClearDummy26() {
-        PrepareBuilder();
-        result.hasDummy26 = false;
-        result.dummy26_ = 0;
-        return this;
-      }
-
-      public bool HasDummy27 {
-        get { return result.hasDummy27; }
-      }
-      public int Dummy27 {
-        get { return result.Dummy27; }
-        set { SetDummy27(value); }
-      }
-      public Builder SetDummy27(int value) {
-        PrepareBuilder();
-        result.hasDummy27 = true;
-        result.dummy27_ = value;
-        return this;
-      }
-      public Builder ClearDummy27() {
-        PrepareBuilder();
-        result.hasDummy27 = false;
-        result.dummy27_ = 0;
-        return this;
-      }
-
-      public bool HasDummy28 {
-        get { return result.hasDummy28; }
-      }
-      public int Dummy28 {
-        get { return result.Dummy28; }
-        set { SetDummy28(value); }
-      }
-      public Builder SetDummy28(int value) {
-        PrepareBuilder();
-        result.hasDummy28 = true;
-        result.dummy28_ = value;
-        return this;
-      }
-      public Builder ClearDummy28() {
-        PrepareBuilder();
-        result.hasDummy28 = false;
-        result.dummy28_ = 0;
-        return this;
-      }
-
-      public bool HasDummy29 {
-        get { return result.hasDummy29; }
-      }
-      public int Dummy29 {
-        get { return result.Dummy29; }
-        set { SetDummy29(value); }
-      }
-      public Builder SetDummy29(int value) {
-        PrepareBuilder();
-        result.hasDummy29 = true;
-        result.dummy29_ = value;
-        return this;
-      }
-      public Builder ClearDummy29() {
-        PrepareBuilder();
-        result.hasDummy29 = false;
-        result.dummy29_ = 0;
-        return this;
-      }
-
-      public bool HasDummy30 {
-        get { return result.hasDummy30; }
-      }
-      public int Dummy30 {
-        get { return result.Dummy30; }
-        set { SetDummy30(value); }
-      }
-      public Builder SetDummy30(int value) {
-        PrepareBuilder();
-        result.hasDummy30 = true;
-        result.dummy30_ = value;
-        return this;
-      }
-      public Builder ClearDummy30() {
-        PrepareBuilder();
-        result.hasDummy30 = false;
-        result.dummy30_ = 0;
-        return this;
-      }
-
-      public bool HasDummy31 {
-        get { return result.hasDummy31; }
-      }
-      public int Dummy31 {
-        get { return result.Dummy31; }
-        set { SetDummy31(value); }
-      }
-      public Builder SetDummy31(int value) {
-        PrepareBuilder();
-        result.hasDummy31 = true;
-        result.dummy31_ = value;
-        return this;
-      }
-      public Builder ClearDummy31() {
-        PrepareBuilder();
-        result.hasDummy31 = false;
-        result.dummy31_ = 0;
-        return this;
-      }
-
-      public bool HasDummy32 {
-        get { return result.hasDummy32; }
-      }
-      public int Dummy32 {
-        get { return result.Dummy32; }
-        set { SetDummy32(value); }
-      }
-      public Builder SetDummy32(int value) {
-        PrepareBuilder();
-        result.hasDummy32 = true;
-        result.dummy32_ = value;
-        return this;
-      }
-      public Builder ClearDummy32() {
-        PrepareBuilder();
-        result.hasDummy32 = false;
-        result.dummy32_ = 0;
-        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 TestRequired() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class TestRequiredForeign : pb::GeneratedMessage<TestRequiredForeign, TestRequiredForeign.Builder> {
-    private TestRequiredForeign() { }
-    private static readonly TestRequiredForeign defaultInstance = new TestRequiredForeign().MakeReadOnly();
-    private static readonly string[] _testRequiredForeignFieldNames = new string[] { "dummy", "optional_message", "repeated_message" };
-    private static readonly uint[] _testRequiredForeignFieldTags = new uint[] { 24, 10, 18 };
-    public static TestRequiredForeign DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override TestRequiredForeign DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override TestRequiredForeign ThisMessage {
-      get { return this; }
-    }
-
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestRequiredForeign__Descriptor; }
-    }
-
-    protected override pb::FieldAccess.FieldAccessorTable<TestRequiredForeign, TestRequiredForeign.Builder> InternalFieldAccessors {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestRequiredForeign__FieldAccessorTable; }
-    }
-
-    public const int OptionalMessageFieldNumber = 1;
-    private bool hasOptionalMessage;
-    private global::Google.ProtocolBuffers.TestProtos.TestRequired optionalMessage_;
-    public bool HasOptionalMessage {
-      get { return hasOptionalMessage; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.TestRequired OptionalMessage {
-      get { return optionalMessage_ ?? global::Google.ProtocolBuffers.TestProtos.TestRequired.DefaultInstance; }
-    }
-
-    public const int RepeatedMessageFieldNumber = 2;
-    private pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.TestRequired> repeatedMessage_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.TestRequired>();
-    public scg::IList<global::Google.ProtocolBuffers.TestProtos.TestRequired> RepeatedMessageList {
-      get { return repeatedMessage_; }
-    }
-    public int RepeatedMessageCount {
-      get { return repeatedMessage_.Count; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.TestRequired GetRepeatedMessage(int index) {
-      return repeatedMessage_[index];
-    }
-
-    public const int DummyFieldNumber = 3;
-    private bool hasDummy;
-    private int dummy_;
-    public bool HasDummy {
-      get { return hasDummy; }
-    }
-    public int Dummy {
-      get { return dummy_; }
-    }
-
-    public override bool IsInitialized {
-      get {
-        if (HasOptionalMessage) {
-          if (!OptionalMessage.IsInitialized) return false;
-        }
-        foreach (global::Google.ProtocolBuffers.TestProtos.TestRequired element in RepeatedMessageList) {
-          if (!element.IsInitialized) return false;
-        }
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _testRequiredForeignFieldNames;
-      if (hasOptionalMessage) {
-        output.WriteMessage(1, field_names[1], OptionalMessage);
-      }
-      if (repeatedMessage_.Count > 0) {
-        output.WriteMessageArray(2, field_names[2], repeatedMessage_);
-      }
-      if (hasDummy) {
-        output.WriteInt32(3, field_names[0], Dummy);
-      }
-      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 (hasOptionalMessage) {
-        size += pb::CodedOutputStream.ComputeMessageSize(1, OptionalMessage);
-      }
-      foreach (global::Google.ProtocolBuffers.TestProtos.TestRequired element in RepeatedMessageList) {
-        size += pb::CodedOutputStream.ComputeMessageSize(2, element);
-      }
-      if (hasDummy) {
-        size += pb::CodedOutputStream.ComputeInt32Size(3, Dummy);
-      }
-      size += UnknownFields.SerializedSize;
-      memoizedSerializedSize = size;
-      return size;
-    }
-    public static TestRequiredForeign ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestRequiredForeign ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestRequiredForeign ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestRequiredForeign ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestRequiredForeign ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestRequiredForeign ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static TestRequiredForeign ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static TestRequiredForeign ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static TestRequiredForeign ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestRequiredForeign ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private TestRequiredForeign MakeReadOnly() {
-      repeatedMessage_.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(TestRequiredForeign prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilder<TestRequiredForeign, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(TestRequiredForeign cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private TestRequiredForeign result;
-
-      private TestRequiredForeign PrepareBuilder() {
-        if (resultIsReadOnly) {
-          TestRequiredForeign original = result;
-          result = new TestRequiredForeign();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override TestRequiredForeign 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.TestRequiredForeign.Descriptor; }
-      }
-
-      public override TestRequiredForeign DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.TestRequiredForeign.DefaultInstance; }
-      }
-
-      public override TestRequiredForeign BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is TestRequiredForeign) {
-          return MergeFrom((TestRequiredForeign) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(TestRequiredForeign other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.TestRequiredForeign.DefaultInstance) return this;
-        PrepareBuilder();
-        if (other.HasOptionalMessage) {
-          MergeOptionalMessage(other.OptionalMessage);
-        }
-        if (other.repeatedMessage_.Count != 0) {
-          result.repeatedMessage_.Add(other.repeatedMessage_);
-        }
-        if (other.HasDummy) {
-          Dummy = other.Dummy;
-        }
-        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(_testRequiredForeignFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _testRequiredForeignFieldTags[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.hasOptionalMessage) {
-                subBuilder.MergeFrom(OptionalMessage);
-              }
-              input.ReadMessage(subBuilder, extensionRegistry);
-              OptionalMessage = subBuilder.BuildPartial();
-              break;
-            }
-            case 18: {
-              input.ReadMessageArray(tag, field_name, result.repeatedMessage_, global::Google.ProtocolBuffers.TestProtos.TestRequired.DefaultInstance, extensionRegistry);
-              break;
-            }
-            case 24: {
-              result.hasDummy = input.ReadInt32(ref result.dummy_);
-              break;
-            }
-          }
-        }
-
-        if (unknownFields != null) {
-          this.UnknownFields = unknownFields.Build();
-        }
-        return this;
-      }
-
-
-      public bool HasOptionalMessage {
-       get { return result.hasOptionalMessage; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.TestRequired OptionalMessage {
-        get { return result.OptionalMessage; }
-        set { SetOptionalMessage(value); }
-      }
-      public Builder SetOptionalMessage(global::Google.ProtocolBuffers.TestProtos.TestRequired value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasOptionalMessage = true;
-        result.optionalMessage_ = value;
-        return this;
-      }
-      public Builder SetOptionalMessage(global::Google.ProtocolBuffers.TestProtos.TestRequired.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.hasOptionalMessage = true;
-        result.optionalMessage_ = builderForValue.Build();
-        return this;
-      }
-      public Builder MergeOptionalMessage(global::Google.ProtocolBuffers.TestProtos.TestRequired value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        if (result.hasOptionalMessage &&
-            result.optionalMessage_ != global::Google.ProtocolBuffers.TestProtos.TestRequired.DefaultInstance) {
-            result.optionalMessage_ = global::Google.ProtocolBuffers.TestProtos.TestRequired.CreateBuilder(result.optionalMessage_).MergeFrom(value).BuildPartial();
-        } else {
-          result.optionalMessage_ = value;
-        }
-        result.hasOptionalMessage = true;
-        return this;
-      }
-      public Builder ClearOptionalMessage() {
-        PrepareBuilder();
-        result.hasOptionalMessage = false;
-        result.optionalMessage_ = null;
-        return this;
-      }
-
-      public pbc::IPopsicleList<global::Google.ProtocolBuffers.TestProtos.TestRequired> RepeatedMessageList {
-        get { return PrepareBuilder().repeatedMessage_; }
-      }
-      public int RepeatedMessageCount {
-        get { return result.RepeatedMessageCount; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.TestRequired GetRepeatedMessage(int index) {
-        return result.GetRepeatedMessage(index);
-      }
-      public Builder SetRepeatedMessage(int index, global::Google.ProtocolBuffers.TestProtos.TestRequired value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.repeatedMessage_[index] = value;
-        return this;
-      }
-      public Builder SetRepeatedMessage(int index, global::Google.ProtocolBuffers.TestProtos.TestRequired.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.repeatedMessage_[index] = builderForValue.Build();
-        return this;
-      }
-      public Builder AddRepeatedMessage(global::Google.ProtocolBuffers.TestProtos.TestRequired value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.repeatedMessage_.Add(value);
-        return this;
-      }
-      public Builder AddRepeatedMessage(global::Google.ProtocolBuffers.TestProtos.TestRequired.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.repeatedMessage_.Add(builderForValue.Build());
-        return this;
-      }
-      public Builder AddRangeRepeatedMessage(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.TestRequired> values) {
-        PrepareBuilder();
-        result.repeatedMessage_.Add(values);
-        return this;
-      }
-      public Builder ClearRepeatedMessage() {
-        PrepareBuilder();
-        result.repeatedMessage_.Clear();
-        return this;
-      }
-
-      public bool HasDummy {
-        get { return result.hasDummy; }
-      }
-      public int Dummy {
-        get { return result.Dummy; }
-        set { SetDummy(value); }
-      }
-      public Builder SetDummy(int value) {
-        PrepareBuilder();
-        result.hasDummy = true;
-        result.dummy_ = value;
-        return this;
-      }
-      public Builder ClearDummy() {
-        PrepareBuilder();
-        result.hasDummy = false;
-        result.dummy_ = 0;
-        return this;
-      }
-    }
-    static TestRequiredForeign() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class TestForeignNested : pb::GeneratedMessage<TestForeignNested, TestForeignNested.Builder> {
-    private TestForeignNested() { }
-    private static readonly TestForeignNested defaultInstance = new TestForeignNested().MakeReadOnly();
-    private static readonly string[] _testForeignNestedFieldNames = new string[] { "foreign_nested" };
-    private static readonly uint[] _testForeignNestedFieldTags = new uint[] { 10 };
-    public static TestForeignNested DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override TestForeignNested DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override TestForeignNested ThisMessage {
-      get { return this; }
-    }
-
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestForeignNested__Descriptor; }
-    }
-
-    protected override pb::FieldAccess.FieldAccessorTable<TestForeignNested, TestForeignNested.Builder> InternalFieldAccessors {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestForeignNested__FieldAccessorTable; }
-    }
-
-    public const int ForeignNestedFieldNumber = 1;
-    private bool hasForeignNested;
-    private global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage foreignNested_;
-    public bool HasForeignNested {
-      get { return hasForeignNested; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage ForeignNested {
-      get { return foreignNested_ ?? global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage.DefaultInstance; }
-    }
-
-    public override bool IsInitialized {
-      get {
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _testForeignNestedFieldNames;
-      if (hasForeignNested) {
-        output.WriteMessage(1, field_names[0], ForeignNested);
-      }
-      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 (hasForeignNested) {
-        size += pb::CodedOutputStream.ComputeMessageSize(1, ForeignNested);
-      }
-      size += UnknownFields.SerializedSize;
-      memoizedSerializedSize = size;
-      return size;
-    }
-    public static TestForeignNested ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestForeignNested ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestForeignNested ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestForeignNested ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestForeignNested ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestForeignNested ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static TestForeignNested ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static TestForeignNested ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static TestForeignNested ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestForeignNested ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private TestForeignNested 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(TestForeignNested prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilder<TestForeignNested, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(TestForeignNested cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private TestForeignNested result;
-
-      private TestForeignNested PrepareBuilder() {
-        if (resultIsReadOnly) {
-          TestForeignNested original = result;
-          result = new TestForeignNested();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override TestForeignNested 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.TestForeignNested.Descriptor; }
-      }
-
-      public override TestForeignNested DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.TestForeignNested.DefaultInstance; }
-      }
-
-      public override TestForeignNested BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is TestForeignNested) {
-          return MergeFrom((TestForeignNested) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(TestForeignNested other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.TestForeignNested.DefaultInstance) return this;
-        PrepareBuilder();
-        if (other.HasForeignNested) {
-          MergeForeignNested(other.ForeignNested);
-        }
-        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(_testForeignNestedFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _testForeignNestedFieldTags[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.TestAllTypes.Types.NestedMessage.Builder subBuilder = global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage.CreateBuilder();
-              if (result.hasForeignNested) {
-                subBuilder.MergeFrom(ForeignNested);
-              }
-              input.ReadMessage(subBuilder, extensionRegistry);
-              ForeignNested = subBuilder.BuildPartial();
-              break;
-            }
-          }
-        }
-
-        if (unknownFields != null) {
-          this.UnknownFields = unknownFields.Build();
-        }
-        return this;
-      }
-
-
-      public bool HasForeignNested {
-       get { return result.hasForeignNested; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage ForeignNested {
-        get { return result.ForeignNested; }
-        set { SetForeignNested(value); }
-      }
-      public Builder SetForeignNested(global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasForeignNested = true;
-        result.foreignNested_ = value;
-        return this;
-      }
-      public Builder SetForeignNested(global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.hasForeignNested = true;
-        result.foreignNested_ = builderForValue.Build();
-        return this;
-      }
-      public Builder MergeForeignNested(global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        if (result.hasForeignNested &&
-            result.foreignNested_ != global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage.DefaultInstance) {
-            result.foreignNested_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage.CreateBuilder(result.foreignNested_).MergeFrom(value).BuildPartial();
-        } else {
-          result.foreignNested_ = value;
-        }
-        result.hasForeignNested = true;
-        return this;
-      }
-      public Builder ClearForeignNested() {
-        PrepareBuilder();
-        result.hasForeignNested = false;
-        result.foreignNested_ = null;
-        return this;
-      }
-    }
-    static TestForeignNested() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class TestEmptyMessage : pb::GeneratedMessage<TestEmptyMessage, TestEmptyMessage.Builder> {
-    private TestEmptyMessage() { }
-    private static readonly TestEmptyMessage defaultInstance = new TestEmptyMessage().MakeReadOnly();
-    private static readonly string[] _testEmptyMessageFieldNames = new string[] {  };
-    private static readonly uint[] _testEmptyMessageFieldTags = new uint[] {  };
-    public static TestEmptyMessage DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override TestEmptyMessage DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override TestEmptyMessage ThisMessage {
-      get { return this; }
-    }
-
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestEmptyMessage__Descriptor; }
-    }
-
-    protected override pb::FieldAccess.FieldAccessorTable<TestEmptyMessage, TestEmptyMessage.Builder> InternalFieldAccessors {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestEmptyMessage__FieldAccessorTable; }
-    }
-
-    public override bool IsInitialized {
-      get {
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _testEmptyMessageFieldNames;
-      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 TestEmptyMessage ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestEmptyMessage ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestEmptyMessage ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestEmptyMessage ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestEmptyMessage ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestEmptyMessage ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static TestEmptyMessage ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static TestEmptyMessage ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static TestEmptyMessage ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestEmptyMessage ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private TestEmptyMessage 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(TestEmptyMessage prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilder<TestEmptyMessage, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(TestEmptyMessage cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private TestEmptyMessage result;
-
-      private TestEmptyMessage PrepareBuilder() {
-        if (resultIsReadOnly) {
-          TestEmptyMessage original = result;
-          result = new TestEmptyMessage();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override TestEmptyMessage 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.TestEmptyMessage.Descriptor; }
-      }
-
-      public override TestEmptyMessage DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.TestEmptyMessage.DefaultInstance; }
-      }
-
-      public override TestEmptyMessage BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is TestEmptyMessage) {
-          return MergeFrom((TestEmptyMessage) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(TestEmptyMessage other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.TestEmptyMessage.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(_testEmptyMessageFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _testEmptyMessageFieldTags[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 TestEmptyMessage() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class TestEmptyMessageWithExtensions : pb::ExtendableMessage<TestEmptyMessageWithExtensions, TestEmptyMessageWithExtensions.Builder> {
-    private TestEmptyMessageWithExtensions() { }
-    private static readonly TestEmptyMessageWithExtensions defaultInstance = new TestEmptyMessageWithExtensions().MakeReadOnly();
-    private static readonly string[] _testEmptyMessageWithExtensionsFieldNames = new string[] {  };
-    private static readonly uint[] _testEmptyMessageWithExtensionsFieldTags = new uint[] {  };
-    public static TestEmptyMessageWithExtensions DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override TestEmptyMessageWithExtensions DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override TestEmptyMessageWithExtensions ThisMessage {
-      get { return this; }
-    }
-
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestEmptyMessageWithExtensions__Descriptor; }
-    }
-
-    protected override pb::FieldAccess.FieldAccessorTable<TestEmptyMessageWithExtensions, TestEmptyMessageWithExtensions.Builder> InternalFieldAccessors {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestEmptyMessageWithExtensions__FieldAccessorTable; }
-    }
-
-    public override bool IsInitialized {
-      get {
-        if (!ExtensionsAreInitialized) return false;
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _testEmptyMessageWithExtensionsFieldNames;
-      pb::ExtendableMessage<TestEmptyMessageWithExtensions, TestEmptyMessageWithExtensions.Builder>.ExtensionWriter extensionWriter = CreateExtensionWriter(this);
-      extensionWriter.WriteUntil(536870912, output);
-      UnknownFields.WriteTo(output);
-    }
-
-    private int memoizedSerializedSize = -1;
-    public override int SerializedSize {
-      get {
-        int size = memoizedSerializedSize;
-        if (size != -1) return size;
-        return CalcSerializedSize();
-      }
-    }
-
-    private int CalcSerializedSize() {
-      int size = memoizedSerializedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      size += ExtensionsSerializedSize;
-      size += UnknownFields.SerializedSize;
-      memoizedSerializedSize = size;
-      return size;
-    }
-    public static TestEmptyMessageWithExtensions ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestEmptyMessageWithExtensions ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestEmptyMessageWithExtensions ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestEmptyMessageWithExtensions ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestEmptyMessageWithExtensions ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestEmptyMessageWithExtensions ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static TestEmptyMessageWithExtensions ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static TestEmptyMessageWithExtensions ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static TestEmptyMessageWithExtensions ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestEmptyMessageWithExtensions ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private TestEmptyMessageWithExtensions 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(TestEmptyMessageWithExtensions prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::ExtendableBuilder<TestEmptyMessageWithExtensions, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(TestEmptyMessageWithExtensions cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private TestEmptyMessageWithExtensions result;
-
-      private TestEmptyMessageWithExtensions PrepareBuilder() {
-        if (resultIsReadOnly) {
-          TestEmptyMessageWithExtensions original = result;
-          result = new TestEmptyMessageWithExtensions();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override TestEmptyMessageWithExtensions 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.TestEmptyMessageWithExtensions.Descriptor; }
-      }
-
-      public override TestEmptyMessageWithExtensions DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.TestEmptyMessageWithExtensions.DefaultInstance; }
-      }
-
-      public override TestEmptyMessageWithExtensions BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is TestEmptyMessageWithExtensions) {
-          return MergeFrom((TestEmptyMessageWithExtensions) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(TestEmptyMessageWithExtensions other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.TestEmptyMessageWithExtensions.DefaultInstance) return this;
-        PrepareBuilder();
-          this.MergeExtensionFields(other);
-        this.MergeUnknownFields(other.UnknownFields);
-        return this;
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input) {
-        return MergeFrom(input, pb::ExtensionRegistry.Empty);
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-        PrepareBuilder();
-        pb::UnknownFieldSet.Builder unknownFields = null;
-        uint tag;
-        string field_name;
-        while (input.ReadTag(out tag, out field_name)) {
-          if(tag == 0 && field_name != null) {
-            int field_ordinal = global::System.Array.BinarySearch(_testEmptyMessageWithExtensionsFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _testEmptyMessageWithExtensionsFieldTags[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 TestEmptyMessageWithExtensions() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class TestMultipleExtensionRanges : pb::ExtendableMessage<TestMultipleExtensionRanges, TestMultipleExtensionRanges.Builder> {
-    private TestMultipleExtensionRanges() { }
-    private static readonly TestMultipleExtensionRanges defaultInstance = new TestMultipleExtensionRanges().MakeReadOnly();
-    private static readonly string[] _testMultipleExtensionRangesFieldNames = new string[] {  };
-    private static readonly uint[] _testMultipleExtensionRangesFieldTags = new uint[] {  };
-    public static TestMultipleExtensionRanges DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override TestMultipleExtensionRanges DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override TestMultipleExtensionRanges ThisMessage {
-      get { return this; }
-    }
-
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestMultipleExtensionRanges__Descriptor; }
-    }
-
-    protected override pb::FieldAccess.FieldAccessorTable<TestMultipleExtensionRanges, TestMultipleExtensionRanges.Builder> InternalFieldAccessors {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestMultipleExtensionRanges__FieldAccessorTable; }
-    }
-
-    public override bool IsInitialized {
-      get {
-        if (!ExtensionsAreInitialized) return false;
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _testMultipleExtensionRangesFieldNames;
-      pb::ExtendableMessage<TestMultipleExtensionRanges, TestMultipleExtensionRanges.Builder>.ExtensionWriter extensionWriter = CreateExtensionWriter(this);
-      extensionWriter.WriteUntil(43, output);
-      extensionWriter.WriteUntil(4244, output);
-      extensionWriter.WriteUntil(536870912, output);
-      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 += ExtensionsSerializedSize;
-      size += UnknownFields.SerializedSize;
-      memoizedSerializedSize = size;
-      return size;
-    }
-    public static TestMultipleExtensionRanges ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestMultipleExtensionRanges ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestMultipleExtensionRanges ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestMultipleExtensionRanges ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestMultipleExtensionRanges ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestMultipleExtensionRanges ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static TestMultipleExtensionRanges ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static TestMultipleExtensionRanges ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static TestMultipleExtensionRanges ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestMultipleExtensionRanges ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private TestMultipleExtensionRanges 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(TestMultipleExtensionRanges prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::ExtendableBuilder<TestMultipleExtensionRanges, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(TestMultipleExtensionRanges cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private TestMultipleExtensionRanges result;
-
-      private TestMultipleExtensionRanges PrepareBuilder() {
-        if (resultIsReadOnly) {
-          TestMultipleExtensionRanges original = result;
-          result = new TestMultipleExtensionRanges();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override TestMultipleExtensionRanges 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.TestMultipleExtensionRanges.Descriptor; }
-      }
-
-      public override TestMultipleExtensionRanges DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.TestMultipleExtensionRanges.DefaultInstance; }
-      }
-
-      public override TestMultipleExtensionRanges BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is TestMultipleExtensionRanges) {
-          return MergeFrom((TestMultipleExtensionRanges) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(TestMultipleExtensionRanges other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.TestMultipleExtensionRanges.DefaultInstance) return this;
-        PrepareBuilder();
-          this.MergeExtensionFields(other);
-        this.MergeUnknownFields(other.UnknownFields);
-        return this;
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input) {
-        return MergeFrom(input, pb::ExtensionRegistry.Empty);
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-        PrepareBuilder();
-        pb::UnknownFieldSet.Builder unknownFields = null;
-        uint tag;
-        string field_name;
-        while (input.ReadTag(out tag, out field_name)) {
-          if(tag == 0 && field_name != null) {
-            int field_ordinal = global::System.Array.BinarySearch(_testMultipleExtensionRangesFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _testMultipleExtensionRangesFieldTags[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 TestMultipleExtensionRanges() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class TestReallyLargeTagNumber : pb::GeneratedMessage<TestReallyLargeTagNumber, TestReallyLargeTagNumber.Builder> {
-    private TestReallyLargeTagNumber() { }
-    private static readonly TestReallyLargeTagNumber defaultInstance = new TestReallyLargeTagNumber().MakeReadOnly();
-    private static readonly string[] _testReallyLargeTagNumberFieldNames = new string[] { "a", "bb" };
-    private static readonly uint[] _testReallyLargeTagNumberFieldTags = new uint[] { 8, 2147483640 };
-    public static TestReallyLargeTagNumber DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override TestReallyLargeTagNumber DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override TestReallyLargeTagNumber ThisMessage {
-      get { return this; }
-    }
-
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestReallyLargeTagNumber__Descriptor; }
-    }
-
-    protected override pb::FieldAccess.FieldAccessorTable<TestReallyLargeTagNumber, TestReallyLargeTagNumber.Builder> InternalFieldAccessors {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestReallyLargeTagNumber__FieldAccessorTable; }
-    }
-
-    public const int AFieldNumber = 1;
-    private bool hasA;
-    private int a_;
-    public bool HasA {
-      get { return hasA; }
-    }
-    public int A {
-      get { return a_; }
-    }
-
-    public const int BbFieldNumber = 268435455;
-    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 = _testReallyLargeTagNumberFieldNames;
-      if (hasA) {
-        output.WriteInt32(1, field_names[0], A);
-      }
-      if (hasBb) {
-        output.WriteInt32(268435455, field_names[1], 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 (hasA) {
-        size += pb::CodedOutputStream.ComputeInt32Size(1, A);
-      }
-      if (hasBb) {
-        size += pb::CodedOutputStream.ComputeInt32Size(268435455, Bb);
-      }
-      size += UnknownFields.SerializedSize;
-      memoizedSerializedSize = size;
-      return size;
-    }
-    public static TestReallyLargeTagNumber ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestReallyLargeTagNumber ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestReallyLargeTagNumber ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestReallyLargeTagNumber ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestReallyLargeTagNumber ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestReallyLargeTagNumber ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static TestReallyLargeTagNumber ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static TestReallyLargeTagNumber ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static TestReallyLargeTagNumber ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestReallyLargeTagNumber ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private TestReallyLargeTagNumber 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(TestReallyLargeTagNumber prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilder<TestReallyLargeTagNumber, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(TestReallyLargeTagNumber cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private TestReallyLargeTagNumber result;
-
-      private TestReallyLargeTagNumber PrepareBuilder() {
-        if (resultIsReadOnly) {
-          TestReallyLargeTagNumber original = result;
-          result = new TestReallyLargeTagNumber();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override TestReallyLargeTagNumber 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.TestReallyLargeTagNumber.Descriptor; }
-      }
-
-      public override TestReallyLargeTagNumber DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.TestReallyLargeTagNumber.DefaultInstance; }
-      }
-
-      public override TestReallyLargeTagNumber BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is TestReallyLargeTagNumber) {
-          return MergeFrom((TestReallyLargeTagNumber) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(TestReallyLargeTagNumber other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.TestReallyLargeTagNumber.DefaultInstance) return this;
-        PrepareBuilder();
-        if (other.HasA) {
-          A = other.A;
-        }
-        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(_testReallyLargeTagNumberFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _testReallyLargeTagNumberFieldTags[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;
-            }
-            case 2147483640: {
-              result.hasBb = input.ReadInt32(ref result.bb_);
-              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;
-      }
-
-      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 TestReallyLargeTagNumber() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class TestRecursiveMessage : pb::GeneratedMessage<TestRecursiveMessage, TestRecursiveMessage.Builder> {
-    private TestRecursiveMessage() { }
-    private static readonly TestRecursiveMessage defaultInstance = new TestRecursiveMessage().MakeReadOnly();
-    private static readonly string[] _testRecursiveMessageFieldNames = new string[] { "a", "i" };
-    private static readonly uint[] _testRecursiveMessageFieldTags = new uint[] { 10, 16 };
-    public static TestRecursiveMessage DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override TestRecursiveMessage DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override TestRecursiveMessage ThisMessage {
-      get { return this; }
-    }
-
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestRecursiveMessage__Descriptor; }
-    }
-
-    protected override pb::FieldAccess.FieldAccessorTable<TestRecursiveMessage, TestRecursiveMessage.Builder> InternalFieldAccessors {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestRecursiveMessage__FieldAccessorTable; }
-    }
-
-    public const int AFieldNumber = 1;
-    private bool hasA;
-    private global::Google.ProtocolBuffers.TestProtos.TestRecursiveMessage a_;
-    public bool HasA {
-      get { return hasA; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.TestRecursiveMessage A {
-      get { return a_ ?? global::Google.ProtocolBuffers.TestProtos.TestRecursiveMessage.DefaultInstance; }
-    }
-
-    public const int IFieldNumber = 2;
-    private bool hasI;
-    private int i_;
-    public bool HasI {
-      get { return hasI; }
-    }
-    public int I {
-      get { return i_; }
-    }
-
-    public override bool IsInitialized {
-      get {
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _testRecursiveMessageFieldNames;
-      if (hasA) {
-        output.WriteMessage(1, field_names[0], A);
-      }
-      if (hasI) {
-        output.WriteInt32(2, field_names[1], I);
-      }
-      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.ComputeMessageSize(1, A);
-      }
-      if (hasI) {
-        size += pb::CodedOutputStream.ComputeInt32Size(2, I);
-      }
-      size += UnknownFields.SerializedSize;
-      memoizedSerializedSize = size;
-      return size;
-    }
-    public static TestRecursiveMessage ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestRecursiveMessage ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestRecursiveMessage ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestRecursiveMessage ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestRecursiveMessage ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestRecursiveMessage ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static TestRecursiveMessage ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static TestRecursiveMessage ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static TestRecursiveMessage ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestRecursiveMessage ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private TestRecursiveMessage 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(TestRecursiveMessage prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilder<TestRecursiveMessage, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(TestRecursiveMessage cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private TestRecursiveMessage result;
-
-      private TestRecursiveMessage PrepareBuilder() {
-        if (resultIsReadOnly) {
-          TestRecursiveMessage original = result;
-          result = new TestRecursiveMessage();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override TestRecursiveMessage 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.TestRecursiveMessage.Descriptor; }
-      }
-
-      public override TestRecursiveMessage DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.TestRecursiveMessage.DefaultInstance; }
-      }
-
-      public override TestRecursiveMessage BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is TestRecursiveMessage) {
-          return MergeFrom((TestRecursiveMessage) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(TestRecursiveMessage other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.TestRecursiveMessage.DefaultInstance) return this;
-        PrepareBuilder();
-        if (other.HasA) {
-          MergeA(other.A);
-        }
-        if (other.HasI) {
-          I = other.I;
-        }
-        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(_testRecursiveMessageFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _testRecursiveMessageFieldTags[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.TestRecursiveMessage.Builder subBuilder = global::Google.ProtocolBuffers.TestProtos.TestRecursiveMessage.CreateBuilder();
-              if (result.hasA) {
-                subBuilder.MergeFrom(A);
-              }
-              input.ReadMessage(subBuilder, extensionRegistry);
-              A = subBuilder.BuildPartial();
-              break;
-            }
-            case 16: {
-              result.hasI = input.ReadInt32(ref result.i_);
-              break;
-            }
-          }
-        }
-
-        if (unknownFields != null) {
-          this.UnknownFields = unknownFields.Build();
-        }
-        return this;
-      }
-
-
-      public bool HasA {
-       get { return result.hasA; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.TestRecursiveMessage A {
-        get { return result.A; }
-        set { SetA(value); }
-      }
-      public Builder SetA(global::Google.ProtocolBuffers.TestProtos.TestRecursiveMessage value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasA = true;
-        result.a_ = value;
-        return this;
-      }
-      public Builder SetA(global::Google.ProtocolBuffers.TestProtos.TestRecursiveMessage.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.hasA = true;
-        result.a_ = builderForValue.Build();
-        return this;
-      }
-      public Builder MergeA(global::Google.ProtocolBuffers.TestProtos.TestRecursiveMessage value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        if (result.hasA &&
-            result.a_ != global::Google.ProtocolBuffers.TestProtos.TestRecursiveMessage.DefaultInstance) {
-            result.a_ = global::Google.ProtocolBuffers.TestProtos.TestRecursiveMessage.CreateBuilder(result.a_).MergeFrom(value).BuildPartial();
-        } else {
-          result.a_ = value;
-        }
-        result.hasA = true;
-        return this;
-      }
-      public Builder ClearA() {
-        PrepareBuilder();
-        result.hasA = false;
-        result.a_ = null;
-        return this;
-      }
-
-      public bool HasI {
-        get { return result.hasI; }
-      }
-      public int I {
-        get { return result.I; }
-        set { SetI(value); }
-      }
-      public Builder SetI(int value) {
-        PrepareBuilder();
-        result.hasI = true;
-        result.i_ = value;
-        return this;
-      }
-      public Builder ClearI() {
-        PrepareBuilder();
-        result.hasI = false;
-        result.i_ = 0;
-        return this;
-      }
-    }
-    static TestRecursiveMessage() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class TestMutualRecursionA : pb::GeneratedMessage<TestMutualRecursionA, TestMutualRecursionA.Builder> {
-    private TestMutualRecursionA() { }
-    private static readonly TestMutualRecursionA defaultInstance = new TestMutualRecursionA().MakeReadOnly();
-    private static readonly string[] _testMutualRecursionAFieldNames = new string[] { "bb" };
-    private static readonly uint[] _testMutualRecursionAFieldTags = new uint[] { 10 };
-    public static TestMutualRecursionA DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override TestMutualRecursionA DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override TestMutualRecursionA ThisMessage {
-      get { return this; }
-    }
-
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestMutualRecursionA__Descriptor; }
-    }
-
-    protected override pb::FieldAccess.FieldAccessorTable<TestMutualRecursionA, TestMutualRecursionA.Builder> InternalFieldAccessors {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestMutualRecursionA__FieldAccessorTable; }
-    }
-
-    public const int BbFieldNumber = 1;
-    private bool hasBb;
-    private global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionB bb_;
-    public bool HasBb {
-      get { return hasBb; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionB Bb {
-      get { return bb_ ?? global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionB.DefaultInstance; }
-    }
-
-    public override bool IsInitialized {
-      get {
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _testMutualRecursionAFieldNames;
-      if (hasBb) {
-        output.WriteMessage(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.ComputeMessageSize(1, Bb);
-      }
-      size += UnknownFields.SerializedSize;
-      memoizedSerializedSize = size;
-      return size;
-    }
-    public static TestMutualRecursionA ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestMutualRecursionA ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestMutualRecursionA ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestMutualRecursionA ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestMutualRecursionA ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestMutualRecursionA ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static TestMutualRecursionA ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static TestMutualRecursionA ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static TestMutualRecursionA ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestMutualRecursionA ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private TestMutualRecursionA 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(TestMutualRecursionA prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilder<TestMutualRecursionA, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(TestMutualRecursionA cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private TestMutualRecursionA result;
-
-      private TestMutualRecursionA PrepareBuilder() {
-        if (resultIsReadOnly) {
-          TestMutualRecursionA original = result;
-          result = new TestMutualRecursionA();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override TestMutualRecursionA 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.TestMutualRecursionA.Descriptor; }
-      }
-
-      public override TestMutualRecursionA DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionA.DefaultInstance; }
-      }
-
-      public override TestMutualRecursionA BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is TestMutualRecursionA) {
-          return MergeFrom((TestMutualRecursionA) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(TestMutualRecursionA other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionA.DefaultInstance) return this;
-        PrepareBuilder();
-        if (other.HasBb) {
-          MergeBb(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(_testMutualRecursionAFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _testMutualRecursionAFieldTags[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.TestMutualRecursionB.Builder subBuilder = global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionB.CreateBuilder();
-              if (result.hasBb) {
-                subBuilder.MergeFrom(Bb);
-              }
-              input.ReadMessage(subBuilder, extensionRegistry);
-              Bb = subBuilder.BuildPartial();
-              break;
-            }
-          }
-        }
-
-        if (unknownFields != null) {
-          this.UnknownFields = unknownFields.Build();
-        }
-        return this;
-      }
-
-
-      public bool HasBb {
-       get { return result.hasBb; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionB Bb {
-        get { return result.Bb; }
-        set { SetBb(value); }
-      }
-      public Builder SetBb(global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionB value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasBb = true;
-        result.bb_ = value;
-        return this;
-      }
-      public Builder SetBb(global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionB.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.hasBb = true;
-        result.bb_ = builderForValue.Build();
-        return this;
-      }
-      public Builder MergeBb(global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionB value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        if (result.hasBb &&
-            result.bb_ != global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionB.DefaultInstance) {
-            result.bb_ = global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionB.CreateBuilder(result.bb_).MergeFrom(value).BuildPartial();
-        } else {
-          result.bb_ = value;
-        }
-        result.hasBb = true;
-        return this;
-      }
-      public Builder ClearBb() {
-        PrepareBuilder();
-        result.hasBb = false;
-        result.bb_ = null;
-        return this;
-      }
-    }
-    static TestMutualRecursionA() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class TestMutualRecursionB : pb::GeneratedMessage<TestMutualRecursionB, TestMutualRecursionB.Builder> {
-    private TestMutualRecursionB() { }
-    private static readonly TestMutualRecursionB defaultInstance = new TestMutualRecursionB().MakeReadOnly();
-    private static readonly string[] _testMutualRecursionBFieldNames = new string[] { "a", "optional_int32" };
-    private static readonly uint[] _testMutualRecursionBFieldTags = new uint[] { 10, 16 };
-    public static TestMutualRecursionB DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override TestMutualRecursionB DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override TestMutualRecursionB ThisMessage {
-      get { return this; }
-    }
-
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestMutualRecursionB__Descriptor; }
-    }
-
-    protected override pb::FieldAccess.FieldAccessorTable<TestMutualRecursionB, TestMutualRecursionB.Builder> InternalFieldAccessors {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestMutualRecursionB__FieldAccessorTable; }
-    }
-
-    public const int AFieldNumber = 1;
-    private bool hasA;
-    private global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionA a_;
-    public bool HasA {
-      get { return hasA; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionA A {
-      get { return a_ ?? global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionA.DefaultInstance; }
-    }
-
-    public const int OptionalInt32FieldNumber = 2;
-    private bool hasOptionalInt32;
-    private int optionalInt32_;
-    public bool HasOptionalInt32 {
-      get { return hasOptionalInt32; }
-    }
-    public int OptionalInt32 {
-      get { return optionalInt32_; }
-    }
-
-    public override bool IsInitialized {
-      get {
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _testMutualRecursionBFieldNames;
-      if (hasA) {
-        output.WriteMessage(1, field_names[0], A);
-      }
-      if (hasOptionalInt32) {
-        output.WriteInt32(2, field_names[1], OptionalInt32);
-      }
-      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.ComputeMessageSize(1, A);
-      }
-      if (hasOptionalInt32) {
-        size += pb::CodedOutputStream.ComputeInt32Size(2, OptionalInt32);
-      }
-      size += UnknownFields.SerializedSize;
-      memoizedSerializedSize = size;
-      return size;
-    }
-    public static TestMutualRecursionB ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestMutualRecursionB ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestMutualRecursionB ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestMutualRecursionB ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestMutualRecursionB ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestMutualRecursionB ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static TestMutualRecursionB ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static TestMutualRecursionB ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static TestMutualRecursionB ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestMutualRecursionB ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private TestMutualRecursionB 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(TestMutualRecursionB prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilder<TestMutualRecursionB, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(TestMutualRecursionB cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private TestMutualRecursionB result;
-
-      private TestMutualRecursionB PrepareBuilder() {
-        if (resultIsReadOnly) {
-          TestMutualRecursionB original = result;
-          result = new TestMutualRecursionB();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override TestMutualRecursionB 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.TestMutualRecursionB.Descriptor; }
-      }
-
-      public override TestMutualRecursionB DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionB.DefaultInstance; }
-      }
-
-      public override TestMutualRecursionB BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is TestMutualRecursionB) {
-          return MergeFrom((TestMutualRecursionB) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(TestMutualRecursionB other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionB.DefaultInstance) return this;
-        PrepareBuilder();
-        if (other.HasA) {
-          MergeA(other.A);
-        }
-        if (other.HasOptionalInt32) {
-          OptionalInt32 = other.OptionalInt32;
-        }
-        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(_testMutualRecursionBFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _testMutualRecursionBFieldTags[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.TestMutualRecursionA.Builder subBuilder = global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionA.CreateBuilder();
-              if (result.hasA) {
-                subBuilder.MergeFrom(A);
-              }
-              input.ReadMessage(subBuilder, extensionRegistry);
-              A = subBuilder.BuildPartial();
-              break;
-            }
-            case 16: {
-              result.hasOptionalInt32 = input.ReadInt32(ref result.optionalInt32_);
-              break;
-            }
-          }
-        }
-
-        if (unknownFields != null) {
-          this.UnknownFields = unknownFields.Build();
-        }
-        return this;
-      }
-
-
-      public bool HasA {
-       get { return result.hasA; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionA A {
-        get { return result.A; }
-        set { SetA(value); }
-      }
-      public Builder SetA(global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionA value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasA = true;
-        result.a_ = value;
-        return this;
-      }
-      public Builder SetA(global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionA.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.hasA = true;
-        result.a_ = builderForValue.Build();
-        return this;
-      }
-      public Builder MergeA(global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionA value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        if (result.hasA &&
-            result.a_ != global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionA.DefaultInstance) {
-            result.a_ = global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionA.CreateBuilder(result.a_).MergeFrom(value).BuildPartial();
-        } else {
-          result.a_ = value;
-        }
-        result.hasA = true;
-        return this;
-      }
-      public Builder ClearA() {
-        PrepareBuilder();
-        result.hasA = false;
-        result.a_ = null;
-        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;
-      }
-    }
-    static TestMutualRecursionB() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class TestDupFieldNumber : pb::GeneratedMessage<TestDupFieldNumber, TestDupFieldNumber.Builder> {
-    private TestDupFieldNumber() { }
-    private static readonly TestDupFieldNumber defaultInstance = new TestDupFieldNumber().MakeReadOnly();
-    private static readonly string[] _testDupFieldNumberFieldNames = new string[] { "a", "bar", "foo" };
-    private static readonly uint[] _testDupFieldNumberFieldTags = new uint[] { 8, 27, 19 };
-    public static TestDupFieldNumber DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override TestDupFieldNumber DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override TestDupFieldNumber ThisMessage {
-      get { return this; }
-    }
-
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestDupFieldNumber__Descriptor; }
-    }
-
-    protected override pb::FieldAccess.FieldAccessorTable<TestDupFieldNumber, TestDupFieldNumber.Builder> InternalFieldAccessors {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestDupFieldNumber__FieldAccessorTable; }
-    }
-
-    #region Nested types
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public static partial class Types {
-      [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-      public sealed partial class Foo : pb::GeneratedMessage<Foo, Foo.Builder> {
-        private Foo() { }
-        private static readonly Foo defaultInstance = new Foo().MakeReadOnly();
-        private static readonly string[] _fooFieldNames = new string[] { "a" };
-        private static readonly uint[] _fooFieldTags = new uint[] { 8 };
-        public static Foo DefaultInstance {
-          get { return defaultInstance; }
-        }
-
-        public override Foo DefaultInstanceForType {
-          get { return DefaultInstance; }
-        }
-
-        protected override Foo ThisMessage {
-          get { return this; }
-        }
-
-        public static pbd::MessageDescriptor Descriptor {
-          get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestDupFieldNumber_Foo__Descriptor; }
-        }
-
-        protected override pb::FieldAccess.FieldAccessorTable<Foo, Foo.Builder> InternalFieldAccessors {
-          get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestDupFieldNumber_Foo__FieldAccessorTable; }
-        }
-
-        public const int AFieldNumber = 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 = _fooFieldNames;
-          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 Foo ParseFrom(pb::ByteString data) {
-          return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-        }
-        public static Foo ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-        }
-        public static Foo ParseFrom(byte[] data) {
-          return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-        }
-        public static Foo ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-        }
-        public static Foo ParseFrom(global::System.IO.Stream input) {
-          return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-        }
-        public static Foo ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-        }
-        public static Foo ParseDelimitedFrom(global::System.IO.Stream input) {
-          return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-        }
-        public static Foo ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-          return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-        }
-        public static Foo ParseFrom(pb::ICodedInputStream input) {
-          return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-        }
-        public static Foo ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-        }
-        private Foo 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(Foo prototype) {
-          return new Builder(prototype);
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-        public sealed partial class Builder : pb::GeneratedBuilder<Foo, Builder> {
-          protected override Builder ThisBuilder {
-            get { return this; }
-          }
-          public Builder() {
-            result = DefaultInstance;
-            resultIsReadOnly = true;
-          }
-          internal Builder(Foo cloneFrom) {
-            result = cloneFrom;
-            resultIsReadOnly = true;
-          }
-
-          private bool resultIsReadOnly;
-          private Foo result;
-
-          private Foo PrepareBuilder() {
-            if (resultIsReadOnly) {
-              Foo original = result;
-              result = new Foo();
-              resultIsReadOnly = false;
-              MergeFrom(original);
-            }
-            return result;
-          }
-
-          public override bool IsInitialized {
-            get { return result.IsInitialized; }
-          }
-
-          protected override Foo 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.TestDupFieldNumber.Types.Foo.Descriptor; }
-          }
-
-          public override Foo DefaultInstanceForType {
-            get { return global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Foo.DefaultInstance; }
-          }
-
-          public override Foo BuildPartial() {
-            if (resultIsReadOnly) {
-              return result;
-            }
-            resultIsReadOnly = true;
-            return result.MakeReadOnly();
-          }
-
-          public override Builder MergeFrom(pb::IMessage other) {
-            if (other is Foo) {
-              return MergeFrom((Foo) other);
-            } else {
-              base.MergeFrom(other);
-              return this;
-            }
-          }
-
-          public override Builder MergeFrom(Foo other) {
-            if (other == global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Foo.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(_fooFieldNames, field_name, global::System.StringComparer.Ordinal);
-                if(field_ordinal >= 0)
-                  tag = _fooFieldTags[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 Foo() {
-          object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor, null);
-        }
-      }
-
-      [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-      public sealed partial class Bar : pb::GeneratedMessage<Bar, Bar.Builder> {
-        private Bar() { }
-        private static readonly Bar defaultInstance = new Bar().MakeReadOnly();
-        private static readonly string[] _barFieldNames = new string[] { "a" };
-        private static readonly uint[] _barFieldTags = new uint[] { 8 };
-        public static Bar DefaultInstance {
-          get { return defaultInstance; }
-        }
-
-        public override Bar DefaultInstanceForType {
-          get { return DefaultInstance; }
-        }
-
-        protected override Bar ThisMessage {
-          get { return this; }
-        }
-
-        public static pbd::MessageDescriptor Descriptor {
-          get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestDupFieldNumber_Bar__Descriptor; }
-        }
-
-        protected override pb::FieldAccess.FieldAccessorTable<Bar, Bar.Builder> InternalFieldAccessors {
-          get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestDupFieldNumber_Bar__FieldAccessorTable; }
-        }
-
-        public const int AFieldNumber = 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 = _barFieldNames;
-          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 Bar ParseFrom(pb::ByteString data) {
-          return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-        }
-        public static Bar ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-        }
-        public static Bar ParseFrom(byte[] data) {
-          return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-        }
-        public static Bar ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-        }
-        public static Bar ParseFrom(global::System.IO.Stream input) {
-          return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-        }
-        public static Bar ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-        }
-        public static Bar ParseDelimitedFrom(global::System.IO.Stream input) {
-          return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-        }
-        public static Bar ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-          return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-        }
-        public static Bar ParseFrom(pb::ICodedInputStream input) {
-          return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-        }
-        public static Bar ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-        }
-        private Bar 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(Bar prototype) {
-          return new Builder(prototype);
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-        public sealed partial class Builder : pb::GeneratedBuilder<Bar, Builder> {
-          protected override Builder ThisBuilder {
-            get { return this; }
-          }
-          public Builder() {
-            result = DefaultInstance;
-            resultIsReadOnly = true;
-          }
-          internal Builder(Bar cloneFrom) {
-            result = cloneFrom;
-            resultIsReadOnly = true;
-          }
-
-          private bool resultIsReadOnly;
-          private Bar result;
-
-          private Bar PrepareBuilder() {
-            if (resultIsReadOnly) {
-              Bar original = result;
-              result = new Bar();
-              resultIsReadOnly = false;
-              MergeFrom(original);
-            }
-            return result;
-          }
-
-          public override bool IsInitialized {
-            get { return result.IsInitialized; }
-          }
-
-          protected override Bar 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.TestDupFieldNumber.Types.Bar.Descriptor; }
-          }
-
-          public override Bar DefaultInstanceForType {
-            get { return global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Bar.DefaultInstance; }
-          }
-
-          public override Bar BuildPartial() {
-            if (resultIsReadOnly) {
-              return result;
-            }
-            resultIsReadOnly = true;
-            return result.MakeReadOnly();
-          }
-
-          public override Builder MergeFrom(pb::IMessage other) {
-            if (other is Bar) {
-              return MergeFrom((Bar) other);
-            } else {
-              base.MergeFrom(other);
-              return this;
-            }
-          }
-
-          public override Builder MergeFrom(Bar other) {
-            if (other == global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Bar.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(_barFieldNames, field_name, global::System.StringComparer.Ordinal);
-                if(field_ordinal >= 0)
-                  tag = _barFieldTags[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 Bar() {
-          object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor, null);
-        }
-      }
-
-    }
-    #endregion
-
-    public const int AFieldNumber = 1;
-    private bool hasA;
-    private int a_;
-    public bool HasA {
-      get { return hasA; }
-    }
-    public int A {
-      get { return a_; }
-    }
-
-    public const int FooFieldNumber = 2;
-    private bool hasFoo;
-    private global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Foo foo_;
-    public bool HasFoo {
-      get { return hasFoo; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Foo Foo {
-      get { return foo_ ?? global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Foo.DefaultInstance; }
-    }
-
-    public const int BarFieldNumber = 3;
-    private bool hasBar;
-    private global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Bar bar_;
-    public bool HasBar {
-      get { return hasBar; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Bar Bar {
-      get { return bar_ ?? global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Bar.DefaultInstance; }
-    }
-
-    public override bool IsInitialized {
-      get {
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _testDupFieldNumberFieldNames;
-      if (hasA) {
-        output.WriteInt32(1, field_names[0], A);
-      }
-      if (hasFoo) {
-        output.WriteGroup(2, field_names[2], Foo);
-      }
-      if (hasBar) {
-        output.WriteGroup(3, field_names[1], Bar);
-      }
-      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);
-      }
-      if (hasFoo) {
-        size += pb::CodedOutputStream.ComputeGroupSize(2, Foo);
-      }
-      if (hasBar) {
-        size += pb::CodedOutputStream.ComputeGroupSize(3, Bar);
-      }
-      size += UnknownFields.SerializedSize;
-      memoizedSerializedSize = size;
-      return size;
-    }
-    public static TestDupFieldNumber ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestDupFieldNumber ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestDupFieldNumber ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestDupFieldNumber ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestDupFieldNumber ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestDupFieldNumber ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static TestDupFieldNumber ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static TestDupFieldNumber ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static TestDupFieldNumber ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestDupFieldNumber ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private TestDupFieldNumber 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(TestDupFieldNumber prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilder<TestDupFieldNumber, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(TestDupFieldNumber cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private TestDupFieldNumber result;
-
-      private TestDupFieldNumber PrepareBuilder() {
-        if (resultIsReadOnly) {
-          TestDupFieldNumber original = result;
-          result = new TestDupFieldNumber();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override TestDupFieldNumber 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.TestDupFieldNumber.Descriptor; }
-      }
-
-      public override TestDupFieldNumber DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.DefaultInstance; }
-      }
-
-      public override TestDupFieldNumber BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is TestDupFieldNumber) {
-          return MergeFrom((TestDupFieldNumber) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(TestDupFieldNumber other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.DefaultInstance) return this;
-        PrepareBuilder();
-        if (other.HasA) {
-          A = other.A;
-        }
-        if (other.HasFoo) {
-          MergeFoo(other.Foo);
-        }
-        if (other.HasBar) {
-          MergeBar(other.Bar);
-        }
-        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(_testDupFieldNumberFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _testDupFieldNumberFieldTags[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;
-            }
-            case 19: {
-              global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Foo.Builder subBuilder = global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Foo.CreateBuilder();
-              if (result.hasFoo) {
-                subBuilder.MergeFrom(Foo);
-              }
-              input.ReadGroup(2, subBuilder, extensionRegistry);
-              Foo = subBuilder.BuildPartial();
-              break;
-            }
-            case 27: {
-              global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Bar.Builder subBuilder = global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Bar.CreateBuilder();
-              if (result.hasBar) {
-                subBuilder.MergeFrom(Bar);
-              }
-              input.ReadGroup(3, subBuilder, extensionRegistry);
-              Bar = subBuilder.BuildPartial();
-              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;
-      }
-
-      public bool HasFoo {
-       get { return result.hasFoo; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Foo Foo {
-        get { return result.Foo; }
-        set { SetFoo(value); }
-      }
-      public Builder SetFoo(global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Foo value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasFoo = true;
-        result.foo_ = value;
-        return this;
-      }
-      public Builder SetFoo(global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Foo.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.hasFoo = true;
-        result.foo_ = builderForValue.Build();
-        return this;
-      }
-      public Builder MergeFoo(global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Foo value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        if (result.hasFoo &&
-            result.foo_ != global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Foo.DefaultInstance) {
-            result.foo_ = global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Foo.CreateBuilder(result.foo_).MergeFrom(value).BuildPartial();
-        } else {
-          result.foo_ = value;
-        }
-        result.hasFoo = true;
-        return this;
-      }
-      public Builder ClearFoo() {
-        PrepareBuilder();
-        result.hasFoo = false;
-        result.foo_ = null;
-        return this;
-      }
-
-      public bool HasBar {
-       get { return result.hasBar; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Bar Bar {
-        get { return result.Bar; }
-        set { SetBar(value); }
-      }
-      public Builder SetBar(global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Bar value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasBar = true;
-        result.bar_ = value;
-        return this;
-      }
-      public Builder SetBar(global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Bar.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.hasBar = true;
-        result.bar_ = builderForValue.Build();
-        return this;
-      }
-      public Builder MergeBar(global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Bar value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        if (result.hasBar &&
-            result.bar_ != global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Bar.DefaultInstance) {
-            result.bar_ = global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Bar.CreateBuilder(result.bar_).MergeFrom(value).BuildPartial();
-        } else {
-          result.bar_ = value;
-        }
-        result.hasBar = true;
-        return this;
-      }
-      public Builder ClearBar() {
-        PrepareBuilder();
-        result.hasBar = false;
-        result.bar_ = null;
-        return this;
-      }
-    }
-    static TestDupFieldNumber() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class TestEagerMessage : pb::GeneratedMessage<TestEagerMessage, TestEagerMessage.Builder> {
-    private TestEagerMessage() { }
-    private static readonly TestEagerMessage defaultInstance = new TestEagerMessage().MakeReadOnly();
-    private static readonly string[] _testEagerMessageFieldNames = new string[] { "sub_message" };
-    private static readonly uint[] _testEagerMessageFieldTags = new uint[] { 10 };
-    public static TestEagerMessage DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override TestEagerMessage DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override TestEagerMessage ThisMessage {
-      get { return this; }
-    }
-
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestEagerMessage__Descriptor; }
-    }
-
-    protected override pb::FieldAccess.FieldAccessorTable<TestEagerMessage, TestEagerMessage.Builder> InternalFieldAccessors {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestEagerMessage__FieldAccessorTable; }
-    }
-
-    public const int SubMessageFieldNumber = 1;
-    private bool hasSubMessage;
-    private global::Google.ProtocolBuffers.TestProtos.TestAllTypes subMessage_;
-    public bool HasSubMessage {
-      get { return hasSubMessage; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.TestAllTypes SubMessage {
-      get { return subMessage_ ?? global::Google.ProtocolBuffers.TestProtos.TestAllTypes.DefaultInstance; }
-    }
-
-    public override bool IsInitialized {
-      get {
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _testEagerMessageFieldNames;
-      if (hasSubMessage) {
-        output.WriteMessage(1, field_names[0], SubMessage);
-      }
-      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 (hasSubMessage) {
-        size += pb::CodedOutputStream.ComputeMessageSize(1, SubMessage);
-      }
-      size += UnknownFields.SerializedSize;
-      memoizedSerializedSize = size;
-      return size;
-    }
-    public static TestEagerMessage ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestEagerMessage ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestEagerMessage ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestEagerMessage ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestEagerMessage ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestEagerMessage ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static TestEagerMessage ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static TestEagerMessage ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static TestEagerMessage ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestEagerMessage ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private TestEagerMessage 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(TestEagerMessage prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilder<TestEagerMessage, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(TestEagerMessage cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private TestEagerMessage result;
-
-      private TestEagerMessage PrepareBuilder() {
-        if (resultIsReadOnly) {
-          TestEagerMessage original = result;
-          result = new TestEagerMessage();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override TestEagerMessage 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.TestEagerMessage.Descriptor; }
-      }
-
-      public override TestEagerMessage DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.TestEagerMessage.DefaultInstance; }
-      }
-
-      public override TestEagerMessage BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is TestEagerMessage) {
-          return MergeFrom((TestEagerMessage) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(TestEagerMessage other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.TestEagerMessage.DefaultInstance) return this;
-        PrepareBuilder();
-        if (other.HasSubMessage) {
-          MergeSubMessage(other.SubMessage);
-        }
-        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(_testEagerMessageFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _testEagerMessageFieldTags[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.TestAllTypes.Builder subBuilder = global::Google.ProtocolBuffers.TestProtos.TestAllTypes.CreateBuilder();
-              if (result.hasSubMessage) {
-                subBuilder.MergeFrom(SubMessage);
-              }
-              input.ReadMessage(subBuilder, extensionRegistry);
-              SubMessage = subBuilder.BuildPartial();
-              break;
-            }
-          }
-        }
-
-        if (unknownFields != null) {
-          this.UnknownFields = unknownFields.Build();
-        }
-        return this;
-      }
-
-
-      public bool HasSubMessage {
-       get { return result.hasSubMessage; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.TestAllTypes SubMessage {
-        get { return result.SubMessage; }
-        set { SetSubMessage(value); }
-      }
-      public Builder SetSubMessage(global::Google.ProtocolBuffers.TestProtos.TestAllTypes value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasSubMessage = true;
-        result.subMessage_ = value;
-        return this;
-      }
-      public Builder SetSubMessage(global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.hasSubMessage = true;
-        result.subMessage_ = builderForValue.Build();
-        return this;
-      }
-      public Builder MergeSubMessage(global::Google.ProtocolBuffers.TestProtos.TestAllTypes value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        if (result.hasSubMessage &&
-            result.subMessage_ != global::Google.ProtocolBuffers.TestProtos.TestAllTypes.DefaultInstance) {
-            result.subMessage_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypes.CreateBuilder(result.subMessage_).MergeFrom(value).BuildPartial();
-        } else {
-          result.subMessage_ = value;
-        }
-        result.hasSubMessage = true;
-        return this;
-      }
-      public Builder ClearSubMessage() {
-        PrepareBuilder();
-        result.hasSubMessage = false;
-        result.subMessage_ = null;
-        return this;
-      }
-    }
-    static TestEagerMessage() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class TestLazyMessage : pb::GeneratedMessage<TestLazyMessage, TestLazyMessage.Builder> {
-    private TestLazyMessage() { }
-    private static readonly TestLazyMessage defaultInstance = new TestLazyMessage().MakeReadOnly();
-    private static readonly string[] _testLazyMessageFieldNames = new string[] { "sub_message" };
-    private static readonly uint[] _testLazyMessageFieldTags = new uint[] { 10 };
-    public static TestLazyMessage DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override TestLazyMessage DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override TestLazyMessage ThisMessage {
-      get { return this; }
-    }
-
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestLazyMessage__Descriptor; }
-    }
-
-    protected override pb::FieldAccess.FieldAccessorTable<TestLazyMessage, TestLazyMessage.Builder> InternalFieldAccessors {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestLazyMessage__FieldAccessorTable; }
-    }
-
-    public const int SubMessageFieldNumber = 1;
-    private bool hasSubMessage;
-    private global::Google.ProtocolBuffers.TestProtos.TestAllTypes subMessage_;
-    public bool HasSubMessage {
-      get { return hasSubMessage; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.TestAllTypes SubMessage {
-      get { return subMessage_ ?? global::Google.ProtocolBuffers.TestProtos.TestAllTypes.DefaultInstance; }
-    }
-
-    public override bool IsInitialized {
-      get {
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _testLazyMessageFieldNames;
-      if (hasSubMessage) {
-        output.WriteMessage(1, field_names[0], SubMessage);
-      }
-      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 (hasSubMessage) {
-        size += pb::CodedOutputStream.ComputeMessageSize(1, SubMessage);
-      }
-      size += UnknownFields.SerializedSize;
-      memoizedSerializedSize = size;
-      return size;
-    }
-    public static TestLazyMessage ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestLazyMessage ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestLazyMessage ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestLazyMessage ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestLazyMessage ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestLazyMessage ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static TestLazyMessage ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static TestLazyMessage ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static TestLazyMessage ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestLazyMessage ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private TestLazyMessage 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(TestLazyMessage prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilder<TestLazyMessage, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(TestLazyMessage cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private TestLazyMessage result;
-
-      private TestLazyMessage PrepareBuilder() {
-        if (resultIsReadOnly) {
-          TestLazyMessage original = result;
-          result = new TestLazyMessage();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override TestLazyMessage 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.TestLazyMessage.Descriptor; }
-      }
-
-      public override TestLazyMessage DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.TestLazyMessage.DefaultInstance; }
-      }
-
-      public override TestLazyMessage BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is TestLazyMessage) {
-          return MergeFrom((TestLazyMessage) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(TestLazyMessage other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.TestLazyMessage.DefaultInstance) return this;
-        PrepareBuilder();
-        if (other.HasSubMessage) {
-          MergeSubMessage(other.SubMessage);
-        }
-        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(_testLazyMessageFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _testLazyMessageFieldTags[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.TestAllTypes.Builder subBuilder = global::Google.ProtocolBuffers.TestProtos.TestAllTypes.CreateBuilder();
-              if (result.hasSubMessage) {
-                subBuilder.MergeFrom(SubMessage);
-              }
-              input.ReadMessage(subBuilder, extensionRegistry);
-              SubMessage = subBuilder.BuildPartial();
-              break;
-            }
-          }
-        }
-
-        if (unknownFields != null) {
-          this.UnknownFields = unknownFields.Build();
-        }
-        return this;
-      }
-
-
-      public bool HasSubMessage {
-       get { return result.hasSubMessage; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.TestAllTypes SubMessage {
-        get { return result.SubMessage; }
-        set { SetSubMessage(value); }
-      }
-      public Builder SetSubMessage(global::Google.ProtocolBuffers.TestProtos.TestAllTypes value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasSubMessage = true;
-        result.subMessage_ = value;
-        return this;
-      }
-      public Builder SetSubMessage(global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.hasSubMessage = true;
-        result.subMessage_ = builderForValue.Build();
-        return this;
-      }
-      public Builder MergeSubMessage(global::Google.ProtocolBuffers.TestProtos.TestAllTypes value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        if (result.hasSubMessage &&
-            result.subMessage_ != global::Google.ProtocolBuffers.TestProtos.TestAllTypes.DefaultInstance) {
-            result.subMessage_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypes.CreateBuilder(result.subMessage_).MergeFrom(value).BuildPartial();
-        } else {
-          result.subMessage_ = value;
-        }
-        result.hasSubMessage = true;
-        return this;
-      }
-      public Builder ClearSubMessage() {
-        PrepareBuilder();
-        result.hasSubMessage = false;
-        result.subMessage_ = null;
-        return this;
-      }
-    }
-    static TestLazyMessage() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class TestNestedMessageHasBits : pb::GeneratedMessage<TestNestedMessageHasBits, TestNestedMessageHasBits.Builder> {
-    private TestNestedMessageHasBits() { }
-    private static readonly TestNestedMessageHasBits defaultInstance = new TestNestedMessageHasBits().MakeReadOnly();
-    private static readonly string[] _testNestedMessageHasBitsFieldNames = new string[] { "optional_nested_message" };
-    private static readonly uint[] _testNestedMessageHasBitsFieldTags = new uint[] { 10 };
-    public static TestNestedMessageHasBits DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override TestNestedMessageHasBits DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override TestNestedMessageHasBits ThisMessage {
-      get { return this; }
-    }
-
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestNestedMessageHasBits__Descriptor; }
-    }
-
-    protected override pb::FieldAccess.FieldAccessorTable<TestNestedMessageHasBits, TestNestedMessageHasBits.Builder> InternalFieldAccessors {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestNestedMessageHasBits__FieldAccessorTable; }
-    }
-
-    #region Nested types
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public static partial class Types {
-      [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[] { "nestedmessage_repeated_foreignmessage", "nestedmessage_repeated_int32" };
-        private static readonly uint[] _nestedMessageFieldTags = new uint[] { 18, 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.Unittest.internal__static_protobuf_unittest_TestNestedMessageHasBits_NestedMessage__Descriptor; }
-        }
-
-        protected override pb::FieldAccess.FieldAccessorTable<NestedMessage, NestedMessage.Builder> InternalFieldAccessors {
-          get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestNestedMessageHasBits_NestedMessage__FieldAccessorTable; }
-        }
-
-        public const int NestedmessageRepeatedInt32FieldNumber = 1;
-        private pbc::PopsicleList<int> nestedmessageRepeatedInt32_ = new pbc::PopsicleList<int>();
-        public scg::IList<int> NestedmessageRepeatedInt32List {
-          get { return pbc::Lists.AsReadOnly(nestedmessageRepeatedInt32_); }
-        }
-        public int NestedmessageRepeatedInt32Count {
-          get { return nestedmessageRepeatedInt32_.Count; }
-        }
-        public int GetNestedmessageRepeatedInt32(int index) {
-          return nestedmessageRepeatedInt32_[index];
-        }
-
-        public const int NestedmessageRepeatedForeignmessageFieldNumber = 2;
-        private pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.ForeignMessage> nestedmessageRepeatedForeignmessage_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.ForeignMessage>();
-        public scg::IList<global::Google.ProtocolBuffers.TestProtos.ForeignMessage> NestedmessageRepeatedForeignmessageList {
-          get { return nestedmessageRepeatedForeignmessage_; }
-        }
-        public int NestedmessageRepeatedForeignmessageCount {
-          get { return nestedmessageRepeatedForeignmessage_.Count; }
-        }
-        public global::Google.ProtocolBuffers.TestProtos.ForeignMessage GetNestedmessageRepeatedForeignmessage(int index) {
-          return nestedmessageRepeatedForeignmessage_[index];
-        }
-
-        public override bool IsInitialized {
-          get {
-            return true;
-          }
-        }
-
-        public override void WriteTo(pb::ICodedOutputStream output) {
-          CalcSerializedSize();
-          string[] field_names = _nestedMessageFieldNames;
-          if (nestedmessageRepeatedInt32_.Count > 0) {
-            output.WriteInt32Array(1, field_names[1], nestedmessageRepeatedInt32_);
-          }
-          if (nestedmessageRepeatedForeignmessage_.Count > 0) {
-            output.WriteMessageArray(2, field_names[0], nestedmessageRepeatedForeignmessage_);
-          }
-          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;
-            foreach (int element in NestedmessageRepeatedInt32List) {
-              dataSize += pb::CodedOutputStream.ComputeInt32SizeNoTag(element);
-            }
-            size += dataSize;
-            size += 1 * nestedmessageRepeatedInt32_.Count;
-          }
-          foreach (global::Google.ProtocolBuffers.TestProtos.ForeignMessage element in NestedmessageRepeatedForeignmessageList) {
-            size += pb::CodedOutputStream.ComputeMessageSize(2, element);
-          }
-          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() {
-          nestedmessageRepeatedInt32_.MakeReadOnly();
-          nestedmessageRepeatedForeignmessage_.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.TestNestedMessageHasBits.Types.NestedMessage.Descriptor; }
-          }
-
-          public override NestedMessage DefaultInstanceForType {
-            get { return global::Google.ProtocolBuffers.TestProtos.TestNestedMessageHasBits.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.TestNestedMessageHasBits.Types.NestedMessage.DefaultInstance) return this;
-            PrepareBuilder();
-            if (other.nestedmessageRepeatedInt32_.Count != 0) {
-              result.nestedmessageRepeatedInt32_.Add(other.nestedmessageRepeatedInt32_);
-            }
-            if (other.nestedmessageRepeatedForeignmessage_.Count != 0) {
-              result.nestedmessageRepeatedForeignmessage_.Add(other.nestedmessageRepeatedForeignmessage_);
-            }
-            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 10:
-                case 8: {
-                  input.ReadInt32Array(tag, field_name, result.nestedmessageRepeatedInt32_);
-                  break;
-                }
-                case 18: {
-                  input.ReadMessageArray(tag, field_name, result.nestedmessageRepeatedForeignmessage_, global::Google.ProtocolBuffers.TestProtos.ForeignMessage.DefaultInstance, extensionRegistry);
-                  break;
-                }
-              }
-            }
-
-            if (unknownFields != null) {
-              this.UnknownFields = unknownFields.Build();
-            }
-            return this;
-          }
-
-
-          public pbc::IPopsicleList<int> NestedmessageRepeatedInt32List {
-            get { return PrepareBuilder().nestedmessageRepeatedInt32_; }
-          }
-          public int NestedmessageRepeatedInt32Count {
-            get { return result.NestedmessageRepeatedInt32Count; }
-          }
-          public int GetNestedmessageRepeatedInt32(int index) {
-            return result.GetNestedmessageRepeatedInt32(index);
-          }
-          public Builder SetNestedmessageRepeatedInt32(int index, int value) {
-            PrepareBuilder();
-            result.nestedmessageRepeatedInt32_[index] = value;
-            return this;
-          }
-          public Builder AddNestedmessageRepeatedInt32(int value) {
-            PrepareBuilder();
-            result.nestedmessageRepeatedInt32_.Add(value);
-            return this;
-          }
-          public Builder AddRangeNestedmessageRepeatedInt32(scg::IEnumerable<int> values) {
-            PrepareBuilder();
-            result.nestedmessageRepeatedInt32_.Add(values);
-            return this;
-          }
-          public Builder ClearNestedmessageRepeatedInt32() {
-            PrepareBuilder();
-            result.nestedmessageRepeatedInt32_.Clear();
-            return this;
-          }
-
-          public pbc::IPopsicleList<global::Google.ProtocolBuffers.TestProtos.ForeignMessage> NestedmessageRepeatedForeignmessageList {
-            get { return PrepareBuilder().nestedmessageRepeatedForeignmessage_; }
-          }
-          public int NestedmessageRepeatedForeignmessageCount {
-            get { return result.NestedmessageRepeatedForeignmessageCount; }
-          }
-          public global::Google.ProtocolBuffers.TestProtos.ForeignMessage GetNestedmessageRepeatedForeignmessage(int index) {
-            return result.GetNestedmessageRepeatedForeignmessage(index);
-          }
-          public Builder SetNestedmessageRepeatedForeignmessage(int index, global::Google.ProtocolBuffers.TestProtos.ForeignMessage value) {
-            pb::ThrowHelper.ThrowIfNull(value, "value");
-            PrepareBuilder();
-            result.nestedmessageRepeatedForeignmessage_[index] = value;
-            return this;
-          }
-          public Builder SetNestedmessageRepeatedForeignmessage(int index, global::Google.ProtocolBuffers.TestProtos.ForeignMessage.Builder builderForValue) {
-            pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-            PrepareBuilder();
-            result.nestedmessageRepeatedForeignmessage_[index] = builderForValue.Build();
-            return this;
-          }
-          public Builder AddNestedmessageRepeatedForeignmessage(global::Google.ProtocolBuffers.TestProtos.ForeignMessage value) {
-            pb::ThrowHelper.ThrowIfNull(value, "value");
-            PrepareBuilder();
-            result.nestedmessageRepeatedForeignmessage_.Add(value);
-            return this;
-          }
-          public Builder AddNestedmessageRepeatedForeignmessage(global::Google.ProtocolBuffers.TestProtos.ForeignMessage.Builder builderForValue) {
-            pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-            PrepareBuilder();
-            result.nestedmessageRepeatedForeignmessage_.Add(builderForValue.Build());
-            return this;
-          }
-          public Builder AddRangeNestedmessageRepeatedForeignmessage(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.ForeignMessage> values) {
-            PrepareBuilder();
-            result.nestedmessageRepeatedForeignmessage_.Add(values);
-            return this;
-          }
-          public Builder ClearNestedmessageRepeatedForeignmessage() {
-            PrepareBuilder();
-            result.nestedmessageRepeatedForeignmessage_.Clear();
-            return this;
-          }
-        }
-        static NestedMessage() {
-          object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor, null);
-        }
-      }
-
-    }
-    #endregion
-
-    public const int OptionalNestedMessageFieldNumber = 1;
-    private bool hasOptionalNestedMessage;
-    private global::Google.ProtocolBuffers.TestProtos.TestNestedMessageHasBits.Types.NestedMessage optionalNestedMessage_;
-    public bool HasOptionalNestedMessage {
-      get { return hasOptionalNestedMessage; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.TestNestedMessageHasBits.Types.NestedMessage OptionalNestedMessage {
-      get { return optionalNestedMessage_ ?? global::Google.ProtocolBuffers.TestProtos.TestNestedMessageHasBits.Types.NestedMessage.DefaultInstance; }
-    }
-
-    public override bool IsInitialized {
-      get {
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _testNestedMessageHasBitsFieldNames;
-      if (hasOptionalNestedMessage) {
-        output.WriteMessage(1, field_names[0], OptionalNestedMessage);
-      }
-      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 (hasOptionalNestedMessage) {
-        size += pb::CodedOutputStream.ComputeMessageSize(1, OptionalNestedMessage);
-      }
-      size += UnknownFields.SerializedSize;
-      memoizedSerializedSize = size;
-      return size;
-    }
-    public static TestNestedMessageHasBits ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestNestedMessageHasBits ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestNestedMessageHasBits ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestNestedMessageHasBits ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestNestedMessageHasBits ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestNestedMessageHasBits ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static TestNestedMessageHasBits ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static TestNestedMessageHasBits ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static TestNestedMessageHasBits ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestNestedMessageHasBits ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private TestNestedMessageHasBits 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(TestNestedMessageHasBits prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilder<TestNestedMessageHasBits, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(TestNestedMessageHasBits cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private TestNestedMessageHasBits result;
-
-      private TestNestedMessageHasBits PrepareBuilder() {
-        if (resultIsReadOnly) {
-          TestNestedMessageHasBits original = result;
-          result = new TestNestedMessageHasBits();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override TestNestedMessageHasBits 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.TestNestedMessageHasBits.Descriptor; }
-      }
-
-      public override TestNestedMessageHasBits DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.TestNestedMessageHasBits.DefaultInstance; }
-      }
-
-      public override TestNestedMessageHasBits BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is TestNestedMessageHasBits) {
-          return MergeFrom((TestNestedMessageHasBits) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(TestNestedMessageHasBits other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.TestNestedMessageHasBits.DefaultInstance) return this;
-        PrepareBuilder();
-        if (other.HasOptionalNestedMessage) {
-          MergeOptionalNestedMessage(other.OptionalNestedMessage);
-        }
-        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(_testNestedMessageHasBitsFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _testNestedMessageHasBitsFieldTags[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.TestNestedMessageHasBits.Types.NestedMessage.Builder subBuilder = global::Google.ProtocolBuffers.TestProtos.TestNestedMessageHasBits.Types.NestedMessage.CreateBuilder();
-              if (result.hasOptionalNestedMessage) {
-                subBuilder.MergeFrom(OptionalNestedMessage);
-              }
-              input.ReadMessage(subBuilder, extensionRegistry);
-              OptionalNestedMessage = subBuilder.BuildPartial();
-              break;
-            }
-          }
-        }
-
-        if (unknownFields != null) {
-          this.UnknownFields = unknownFields.Build();
-        }
-        return this;
-      }
-
-
-      public bool HasOptionalNestedMessage {
-       get { return result.hasOptionalNestedMessage; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.TestNestedMessageHasBits.Types.NestedMessage OptionalNestedMessage {
-        get { return result.OptionalNestedMessage; }
-        set { SetOptionalNestedMessage(value); }
-      }
-      public Builder SetOptionalNestedMessage(global::Google.ProtocolBuffers.TestProtos.TestNestedMessageHasBits.Types.NestedMessage value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasOptionalNestedMessage = true;
-        result.optionalNestedMessage_ = value;
-        return this;
-      }
-      public Builder SetOptionalNestedMessage(global::Google.ProtocolBuffers.TestProtos.TestNestedMessageHasBits.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.TestNestedMessageHasBits.Types.NestedMessage value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        if (result.hasOptionalNestedMessage &&
-            result.optionalNestedMessage_ != global::Google.ProtocolBuffers.TestProtos.TestNestedMessageHasBits.Types.NestedMessage.DefaultInstance) {
-            result.optionalNestedMessage_ = global::Google.ProtocolBuffers.TestProtos.TestNestedMessageHasBits.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;
-      }
-    }
-    static TestNestedMessageHasBits() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class TestCamelCaseFieldNames : pb::GeneratedMessage<TestCamelCaseFieldNames, TestCamelCaseFieldNames.Builder> {
-    private TestCamelCaseFieldNames() { }
-    private static readonly TestCamelCaseFieldNames defaultInstance = new TestCamelCaseFieldNames().MakeReadOnly();
-    private static readonly string[] _testCamelCaseFieldNamesFieldNames = new string[] { "CordField", "EnumField", "MessageField", "PrimitiveField", "RepeatedCordField", "RepeatedEnumField", "RepeatedMessageField", "RepeatedPrimitiveField", "RepeatedStringField", "RepeatedStringPieceField", "StringField", "StringPieceField" };
-    private static readonly uint[] _testCamelCaseFieldNamesFieldTags = new uint[] { 50, 24, 34, 8, 98, 72, 82, 56, 66, 90, 18, 42 };
-    public static TestCamelCaseFieldNames DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override TestCamelCaseFieldNames DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override TestCamelCaseFieldNames ThisMessage {
-      get { return this; }
-    }
-
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestCamelCaseFieldNames__Descriptor; }
-    }
-
-    protected override pb::FieldAccess.FieldAccessorTable<TestCamelCaseFieldNames, TestCamelCaseFieldNames.Builder> InternalFieldAccessors {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestCamelCaseFieldNames__FieldAccessorTable; }
-    }
-
-    public const int PrimitiveFieldFieldNumber = 1;
-    private bool hasPrimitiveField;
-    private int primitiveField_;
-    public bool HasPrimitiveField {
-      get { return hasPrimitiveField; }
-    }
-    public int PrimitiveField {
-      get { return primitiveField_; }
-    }
-
-    public const int StringFieldFieldNumber = 2;
-    private bool hasStringField;
-    private string stringField_ = "";
-    public bool HasStringField {
-      get { return hasStringField; }
-    }
-    public string StringField {
-      get { return stringField_; }
-    }
-
-    public const int EnumFieldFieldNumber = 3;
-    private bool hasEnumField;
-    private global::Google.ProtocolBuffers.TestProtos.ForeignEnum enumField_ = global::Google.ProtocolBuffers.TestProtos.ForeignEnum.FOREIGN_FOO;
-    public bool HasEnumField {
-      get { return hasEnumField; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.ForeignEnum EnumField {
-      get { return enumField_; }
-    }
-
-    public const int MessageFieldFieldNumber = 4;
-    private bool hasMessageField;
-    private global::Google.ProtocolBuffers.TestProtos.ForeignMessage messageField_;
-    public bool HasMessageField {
-      get { return hasMessageField; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.ForeignMessage MessageField {
-      get { return messageField_ ?? global::Google.ProtocolBuffers.TestProtos.ForeignMessage.DefaultInstance; }
-    }
-
-    public const int StringPieceFieldFieldNumber = 5;
-    private bool hasStringPieceField;
-    private string stringPieceField_ = "";
-    public bool HasStringPieceField {
-      get { return hasStringPieceField; }
-    }
-    public string StringPieceField {
-      get { return stringPieceField_; }
-    }
-
-    public const int CordFieldFieldNumber = 6;
-    private bool hasCordField;
-    private string cordField_ = "";
-    public bool HasCordField {
-      get { return hasCordField; }
-    }
-    public string CordField {
-      get { return cordField_; }
-    }
-
-    public const int RepeatedPrimitiveFieldFieldNumber = 7;
-    private pbc::PopsicleList<int> repeatedPrimitiveField_ = new pbc::PopsicleList<int>();
-    public scg::IList<int> RepeatedPrimitiveFieldList {
-      get { return pbc::Lists.AsReadOnly(repeatedPrimitiveField_); }
-    }
-    public int RepeatedPrimitiveFieldCount {
-      get { return repeatedPrimitiveField_.Count; }
-    }
-    public int GetRepeatedPrimitiveField(int index) {
-      return repeatedPrimitiveField_[index];
-    }
-
-    public const int RepeatedStringFieldFieldNumber = 8;
-    private pbc::PopsicleList<string> repeatedStringField_ = new pbc::PopsicleList<string>();
-    public scg::IList<string> RepeatedStringFieldList {
-      get { return pbc::Lists.AsReadOnly(repeatedStringField_); }
-    }
-    public int RepeatedStringFieldCount {
-      get { return repeatedStringField_.Count; }
-    }
-    public string GetRepeatedStringField(int index) {
-      return repeatedStringField_[index];
-    }
-
-    public const int RepeatedEnumFieldFieldNumber = 9;
-    private pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.ForeignEnum> repeatedEnumField_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.ForeignEnum>();
-    public scg::IList<global::Google.ProtocolBuffers.TestProtos.ForeignEnum> RepeatedEnumFieldList {
-      get { return pbc::Lists.AsReadOnly(repeatedEnumField_); }
-    }
-    public int RepeatedEnumFieldCount {
-      get { return repeatedEnumField_.Count; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.ForeignEnum GetRepeatedEnumField(int index) {
-      return repeatedEnumField_[index];
-    }
-
-    public const int RepeatedMessageFieldFieldNumber = 10;
-    private pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.ForeignMessage> repeatedMessageField_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.ForeignMessage>();
-    public scg::IList<global::Google.ProtocolBuffers.TestProtos.ForeignMessage> RepeatedMessageFieldList {
-      get { return repeatedMessageField_; }
-    }
-    public int RepeatedMessageFieldCount {
-      get { return repeatedMessageField_.Count; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.ForeignMessage GetRepeatedMessageField(int index) {
-      return repeatedMessageField_[index];
-    }
-
-    public const int RepeatedStringPieceFieldFieldNumber = 11;
-    private pbc::PopsicleList<string> repeatedStringPieceField_ = new pbc::PopsicleList<string>();
-    public scg::IList<string> RepeatedStringPieceFieldList {
-      get { return pbc::Lists.AsReadOnly(repeatedStringPieceField_); }
-    }
-    public int RepeatedStringPieceFieldCount {
-      get { return repeatedStringPieceField_.Count; }
-    }
-    public string GetRepeatedStringPieceField(int index) {
-      return repeatedStringPieceField_[index];
-    }
-
-    public const int RepeatedCordFieldFieldNumber = 12;
-    private pbc::PopsicleList<string> repeatedCordField_ = new pbc::PopsicleList<string>();
-    public scg::IList<string> RepeatedCordFieldList {
-      get { return pbc::Lists.AsReadOnly(repeatedCordField_); }
-    }
-    public int RepeatedCordFieldCount {
-      get { return repeatedCordField_.Count; }
-    }
-    public string GetRepeatedCordField(int index) {
-      return repeatedCordField_[index];
-    }
-
-    public override bool IsInitialized {
-      get {
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _testCamelCaseFieldNamesFieldNames;
-      if (hasPrimitiveField) {
-        output.WriteInt32(1, field_names[3], PrimitiveField);
-      }
-      if (hasStringField) {
-        output.WriteString(2, field_names[10], StringField);
-      }
-      if (hasEnumField) {
-        output.WriteEnum(3, field_names[1], (int) EnumField, EnumField);
-      }
-      if (hasMessageField) {
-        output.WriteMessage(4, field_names[2], MessageField);
-      }
-      if (hasStringPieceField) {
-        output.WriteString(5, field_names[11], StringPieceField);
-      }
-      if (hasCordField) {
-        output.WriteString(6, field_names[0], CordField);
-      }
-      if (repeatedPrimitiveField_.Count > 0) {
-        output.WriteInt32Array(7, field_names[7], repeatedPrimitiveField_);
-      }
-      if (repeatedStringField_.Count > 0) {
-        output.WriteStringArray(8, field_names[8], repeatedStringField_);
-      }
-      if (repeatedEnumField_.Count > 0) {
-        output.WriteEnumArray(9, field_names[5], repeatedEnumField_);
-      }
-      if (repeatedMessageField_.Count > 0) {
-        output.WriteMessageArray(10, field_names[6], repeatedMessageField_);
-      }
-      if (repeatedStringPieceField_.Count > 0) {
-        output.WriteStringArray(11, field_names[9], repeatedStringPieceField_);
-      }
-      if (repeatedCordField_.Count > 0) {
-        output.WriteStringArray(12, field_names[4], repeatedCordField_);
-      }
-      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 (hasPrimitiveField) {
-        size += pb::CodedOutputStream.ComputeInt32Size(1, PrimitiveField);
-      }
-      if (hasStringField) {
-        size += pb::CodedOutputStream.ComputeStringSize(2, StringField);
-      }
-      if (hasEnumField) {
-        size += pb::CodedOutputStream.ComputeEnumSize(3, (int) EnumField);
-      }
-      if (hasMessageField) {
-        size += pb::CodedOutputStream.ComputeMessageSize(4, MessageField);
-      }
-      if (hasStringPieceField) {
-        size += pb::CodedOutputStream.ComputeStringSize(5, StringPieceField);
-      }
-      if (hasCordField) {
-        size += pb::CodedOutputStream.ComputeStringSize(6, CordField);
-      }
-      {
-        int dataSize = 0;
-        foreach (int element in RepeatedPrimitiveFieldList) {
-          dataSize += pb::CodedOutputStream.ComputeInt32SizeNoTag(element);
-        }
-        size += dataSize;
-        size += 1 * repeatedPrimitiveField_.Count;
-      }
-      {
-        int dataSize = 0;
-        foreach (string element in RepeatedStringFieldList) {
-          dataSize += pb::CodedOutputStream.ComputeStringSizeNoTag(element);
-        }
-        size += dataSize;
-        size += 1 * repeatedStringField_.Count;
-      }
-      {
-        int dataSize = 0;
-        if (repeatedEnumField_.Count > 0) {
-          foreach (global::Google.ProtocolBuffers.TestProtos.ForeignEnum element in repeatedEnumField_) {
-            dataSize += pb::CodedOutputStream.ComputeEnumSizeNoTag((int) element);
-          }
-          size += dataSize;
-          size += 1 * repeatedEnumField_.Count;
-        }
-      }
-      foreach (global::Google.ProtocolBuffers.TestProtos.ForeignMessage element in RepeatedMessageFieldList) {
-        size += pb::CodedOutputStream.ComputeMessageSize(10, element);
-      }
-      {
-        int dataSize = 0;
-        foreach (string element in RepeatedStringPieceFieldList) {
-          dataSize += pb::CodedOutputStream.ComputeStringSizeNoTag(element);
-        }
-        size += dataSize;
-        size += 1 * repeatedStringPieceField_.Count;
-      }
-      {
-        int dataSize = 0;
-        foreach (string element in RepeatedCordFieldList) {
-          dataSize += pb::CodedOutputStream.ComputeStringSizeNoTag(element);
-        }
-        size += dataSize;
-        size += 1 * repeatedCordField_.Count;
-      }
-      size += UnknownFields.SerializedSize;
-      memoizedSerializedSize = size;
-      return size;
-    }
-    public static TestCamelCaseFieldNames ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestCamelCaseFieldNames ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestCamelCaseFieldNames ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestCamelCaseFieldNames ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestCamelCaseFieldNames ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestCamelCaseFieldNames ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static TestCamelCaseFieldNames ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static TestCamelCaseFieldNames ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static TestCamelCaseFieldNames ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestCamelCaseFieldNames ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private TestCamelCaseFieldNames MakeReadOnly() {
-      repeatedPrimitiveField_.MakeReadOnly();
-      repeatedStringField_.MakeReadOnly();
-      repeatedEnumField_.MakeReadOnly();
-      repeatedMessageField_.MakeReadOnly();
-      repeatedStringPieceField_.MakeReadOnly();
-      repeatedCordField_.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(TestCamelCaseFieldNames prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilder<TestCamelCaseFieldNames, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(TestCamelCaseFieldNames cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private TestCamelCaseFieldNames result;
-
-      private TestCamelCaseFieldNames PrepareBuilder() {
-        if (resultIsReadOnly) {
-          TestCamelCaseFieldNames original = result;
-          result = new TestCamelCaseFieldNames();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override TestCamelCaseFieldNames 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.TestCamelCaseFieldNames.Descriptor; }
-      }
-
-      public override TestCamelCaseFieldNames DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.TestCamelCaseFieldNames.DefaultInstance; }
-      }
-
-      public override TestCamelCaseFieldNames BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is TestCamelCaseFieldNames) {
-          return MergeFrom((TestCamelCaseFieldNames) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(TestCamelCaseFieldNames other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.TestCamelCaseFieldNames.DefaultInstance) return this;
-        PrepareBuilder();
-        if (other.HasPrimitiveField) {
-          PrimitiveField = other.PrimitiveField;
-        }
-        if (other.HasStringField) {
-          StringField = other.StringField;
-        }
-        if (other.HasEnumField) {
-          EnumField = other.EnumField;
-        }
-        if (other.HasMessageField) {
-          MergeMessageField(other.MessageField);
-        }
-        if (other.HasStringPieceField) {
-          StringPieceField = other.StringPieceField;
-        }
-        if (other.HasCordField) {
-          CordField = other.CordField;
-        }
-        if (other.repeatedPrimitiveField_.Count != 0) {
-          result.repeatedPrimitiveField_.Add(other.repeatedPrimitiveField_);
-        }
-        if (other.repeatedStringField_.Count != 0) {
-          result.repeatedStringField_.Add(other.repeatedStringField_);
-        }
-        if (other.repeatedEnumField_.Count != 0) {
-          result.repeatedEnumField_.Add(other.repeatedEnumField_);
-        }
-        if (other.repeatedMessageField_.Count != 0) {
-          result.repeatedMessageField_.Add(other.repeatedMessageField_);
-        }
-        if (other.repeatedStringPieceField_.Count != 0) {
-          result.repeatedStringPieceField_.Add(other.repeatedStringPieceField_);
-        }
-        if (other.repeatedCordField_.Count != 0) {
-          result.repeatedCordField_.Add(other.repeatedCordField_);
-        }
-        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(_testCamelCaseFieldNamesFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _testCamelCaseFieldNamesFieldTags[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.hasPrimitiveField = input.ReadInt32(ref result.primitiveField_);
-              break;
-            }
-            case 18: {
-              result.hasStringField = input.ReadString(ref result.stringField_);
-              break;
-            }
-            case 24: {
-              object unknown;
-              if(input.ReadEnum(ref result.enumField_, out unknown)) {
-                result.hasEnumField = true;
-              } else if(unknown is int) {
-                if (unknownFields == null) {
-                  unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-                }
-                unknownFields.MergeVarintField(3, (ulong)(int)unknown);
-              }
-              break;
-            }
-            case 34: {
-              global::Google.ProtocolBuffers.TestProtos.ForeignMessage.Builder subBuilder = global::Google.ProtocolBuffers.TestProtos.ForeignMessage.CreateBuilder();
-              if (result.hasMessageField) {
-                subBuilder.MergeFrom(MessageField);
-              }
-              input.ReadMessage(subBuilder, extensionRegistry);
-              MessageField = subBuilder.BuildPartial();
-              break;
-            }
-            case 42: {
-              result.hasStringPieceField = input.ReadString(ref result.stringPieceField_);
-              break;
-            }
-            case 50: {
-              result.hasCordField = input.ReadString(ref result.cordField_);
-              break;
-            }
-            case 58:
-            case 56: {
-              input.ReadInt32Array(tag, field_name, result.repeatedPrimitiveField_);
-              break;
-            }
-            case 66: {
-              input.ReadStringArray(tag, field_name, result.repeatedStringField_);
-              break;
-            }
-            case 74:
-            case 72: {
-              scg::ICollection<object> unknownItems;
-              input.ReadEnumArray<global::Google.ProtocolBuffers.TestProtos.ForeignEnum>(tag, field_name, result.repeatedEnumField_, 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(9, (ulong)(int)rawValue);
-              }
-              break;
-            }
-            case 82: {
-              input.ReadMessageArray(tag, field_name, result.repeatedMessageField_, global::Google.ProtocolBuffers.TestProtos.ForeignMessage.DefaultInstance, extensionRegistry);
-              break;
-            }
-            case 90: {
-              input.ReadStringArray(tag, field_name, result.repeatedStringPieceField_);
-              break;
-            }
-            case 98: {
-              input.ReadStringArray(tag, field_name, result.repeatedCordField_);
-              break;
-            }
-          }
-        }
-
-        if (unknownFields != null) {
-          this.UnknownFields = unknownFields.Build();
-        }
-        return this;
-      }
-
-
-      public bool HasPrimitiveField {
-        get { return result.hasPrimitiveField; }
-      }
-      public int PrimitiveField {
-        get { return result.PrimitiveField; }
-        set { SetPrimitiveField(value); }
-      }
-      public Builder SetPrimitiveField(int value) {
-        PrepareBuilder();
-        result.hasPrimitiveField = true;
-        result.primitiveField_ = value;
-        return this;
-      }
-      public Builder ClearPrimitiveField() {
-        PrepareBuilder();
-        result.hasPrimitiveField = false;
-        result.primitiveField_ = 0;
-        return this;
-      }
-
-      public bool HasStringField {
-        get { return result.hasStringField; }
-      }
-      public string StringField {
-        get { return result.StringField; }
-        set { SetStringField(value); }
-      }
-      public Builder SetStringField(string value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasStringField = true;
-        result.stringField_ = value;
-        return this;
-      }
-      public Builder ClearStringField() {
-        PrepareBuilder();
-        result.hasStringField = false;
-        result.stringField_ = "";
-        return this;
-      }
-
-      public bool HasEnumField {
-        get { return result.hasEnumField; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.ForeignEnum EnumField {
-        get { return result.EnumField; }
-        set { SetEnumField(value); }
-      }
-      public Builder SetEnumField(global::Google.ProtocolBuffers.TestProtos.ForeignEnum value) {
-        PrepareBuilder();
-        result.hasEnumField = true;
-        result.enumField_ = value;
-        return this;
-      }
-      public Builder ClearEnumField() {
-        PrepareBuilder();
-        result.hasEnumField = false;
-        result.enumField_ = global::Google.ProtocolBuffers.TestProtos.ForeignEnum.FOREIGN_FOO;
-        return this;
-      }
-
-      public bool HasMessageField {
-       get { return result.hasMessageField; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.ForeignMessage MessageField {
-        get { return result.MessageField; }
-        set { SetMessageField(value); }
-      }
-      public Builder SetMessageField(global::Google.ProtocolBuffers.TestProtos.ForeignMessage value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasMessageField = true;
-        result.messageField_ = value;
-        return this;
-      }
-      public Builder SetMessageField(global::Google.ProtocolBuffers.TestProtos.ForeignMessage.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.hasMessageField = true;
-        result.messageField_ = builderForValue.Build();
-        return this;
-      }
-      public Builder MergeMessageField(global::Google.ProtocolBuffers.TestProtos.ForeignMessage value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        if (result.hasMessageField &&
-            result.messageField_ != global::Google.ProtocolBuffers.TestProtos.ForeignMessage.DefaultInstance) {
-            result.messageField_ = global::Google.ProtocolBuffers.TestProtos.ForeignMessage.CreateBuilder(result.messageField_).MergeFrom(value).BuildPartial();
-        } else {
-          result.messageField_ = value;
-        }
-        result.hasMessageField = true;
-        return this;
-      }
-      public Builder ClearMessageField() {
-        PrepareBuilder();
-        result.hasMessageField = false;
-        result.messageField_ = null;
-        return this;
-      }
-
-      public bool HasStringPieceField {
-        get { return result.hasStringPieceField; }
-      }
-      public string StringPieceField {
-        get { return result.StringPieceField; }
-        set { SetStringPieceField(value); }
-      }
-      public Builder SetStringPieceField(string value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasStringPieceField = true;
-        result.stringPieceField_ = value;
-        return this;
-      }
-      public Builder ClearStringPieceField() {
-        PrepareBuilder();
-        result.hasStringPieceField = false;
-        result.stringPieceField_ = "";
-        return this;
-      }
-
-      public bool HasCordField {
-        get { return result.hasCordField; }
-      }
-      public string CordField {
-        get { return result.CordField; }
-        set { SetCordField(value); }
-      }
-      public Builder SetCordField(string value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasCordField = true;
-        result.cordField_ = value;
-        return this;
-      }
-      public Builder ClearCordField() {
-        PrepareBuilder();
-        result.hasCordField = false;
-        result.cordField_ = "";
-        return this;
-      }
-
-      public pbc::IPopsicleList<int> RepeatedPrimitiveFieldList {
-        get { return PrepareBuilder().repeatedPrimitiveField_; }
-      }
-      public int RepeatedPrimitiveFieldCount {
-        get { return result.RepeatedPrimitiveFieldCount; }
-      }
-      public int GetRepeatedPrimitiveField(int index) {
-        return result.GetRepeatedPrimitiveField(index);
-      }
-      public Builder SetRepeatedPrimitiveField(int index, int value) {
-        PrepareBuilder();
-        result.repeatedPrimitiveField_[index] = value;
-        return this;
-      }
-      public Builder AddRepeatedPrimitiveField(int value) {
-        PrepareBuilder();
-        result.repeatedPrimitiveField_.Add(value);
-        return this;
-      }
-      public Builder AddRangeRepeatedPrimitiveField(scg::IEnumerable<int> values) {
-        PrepareBuilder();
-        result.repeatedPrimitiveField_.Add(values);
-        return this;
-      }
-      public Builder ClearRepeatedPrimitiveField() {
-        PrepareBuilder();
-        result.repeatedPrimitiveField_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<string> RepeatedStringFieldList {
-        get { return PrepareBuilder().repeatedStringField_; }
-      }
-      public int RepeatedStringFieldCount {
-        get { return result.RepeatedStringFieldCount; }
-      }
-      public string GetRepeatedStringField(int index) {
-        return result.GetRepeatedStringField(index);
-      }
-      public Builder SetRepeatedStringField(int index, string value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.repeatedStringField_[index] = value;
-        return this;
-      }
-      public Builder AddRepeatedStringField(string value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.repeatedStringField_.Add(value);
-        return this;
-      }
-      public Builder AddRangeRepeatedStringField(scg::IEnumerable<string> values) {
-        PrepareBuilder();
-        result.repeatedStringField_.Add(values);
-        return this;
-      }
-      public Builder ClearRepeatedStringField() {
-        PrepareBuilder();
-        result.repeatedStringField_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<global::Google.ProtocolBuffers.TestProtos.ForeignEnum> RepeatedEnumFieldList {
-        get { return PrepareBuilder().repeatedEnumField_; }
-      }
-      public int RepeatedEnumFieldCount {
-        get { return result.RepeatedEnumFieldCount; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.ForeignEnum GetRepeatedEnumField(int index) {
-        return result.GetRepeatedEnumField(index);
-      }
-      public Builder SetRepeatedEnumField(int index, global::Google.ProtocolBuffers.TestProtos.ForeignEnum value) {
-        PrepareBuilder();
-        result.repeatedEnumField_[index] = value;
-        return this;
-      }
-      public Builder AddRepeatedEnumField(global::Google.ProtocolBuffers.TestProtos.ForeignEnum value) {
-        PrepareBuilder();
-        result.repeatedEnumField_.Add(value);
-        return this;
-      }
-      public Builder AddRangeRepeatedEnumField(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.ForeignEnum> values) {
-        PrepareBuilder();
-        result.repeatedEnumField_.Add(values);
-        return this;
-      }
-      public Builder ClearRepeatedEnumField() {
-        PrepareBuilder();
-        result.repeatedEnumField_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<global::Google.ProtocolBuffers.TestProtos.ForeignMessage> RepeatedMessageFieldList {
-        get { return PrepareBuilder().repeatedMessageField_; }
-      }
-      public int RepeatedMessageFieldCount {
-        get { return result.RepeatedMessageFieldCount; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.ForeignMessage GetRepeatedMessageField(int index) {
-        return result.GetRepeatedMessageField(index);
-      }
-      public Builder SetRepeatedMessageField(int index, global::Google.ProtocolBuffers.TestProtos.ForeignMessage value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.repeatedMessageField_[index] = value;
-        return this;
-      }
-      public Builder SetRepeatedMessageField(int index, global::Google.ProtocolBuffers.TestProtos.ForeignMessage.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.repeatedMessageField_[index] = builderForValue.Build();
-        return this;
-      }
-      public Builder AddRepeatedMessageField(global::Google.ProtocolBuffers.TestProtos.ForeignMessage value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.repeatedMessageField_.Add(value);
-        return this;
-      }
-      public Builder AddRepeatedMessageField(global::Google.ProtocolBuffers.TestProtos.ForeignMessage.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.repeatedMessageField_.Add(builderForValue.Build());
-        return this;
-      }
-      public Builder AddRangeRepeatedMessageField(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.ForeignMessage> values) {
-        PrepareBuilder();
-        result.repeatedMessageField_.Add(values);
-        return this;
-      }
-      public Builder ClearRepeatedMessageField() {
-        PrepareBuilder();
-        result.repeatedMessageField_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<string> RepeatedStringPieceFieldList {
-        get { return PrepareBuilder().repeatedStringPieceField_; }
-      }
-      public int RepeatedStringPieceFieldCount {
-        get { return result.RepeatedStringPieceFieldCount; }
-      }
-      public string GetRepeatedStringPieceField(int index) {
-        return result.GetRepeatedStringPieceField(index);
-      }
-      public Builder SetRepeatedStringPieceField(int index, string value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.repeatedStringPieceField_[index] = value;
-        return this;
-      }
-      public Builder AddRepeatedStringPieceField(string value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.repeatedStringPieceField_.Add(value);
-        return this;
-      }
-      public Builder AddRangeRepeatedStringPieceField(scg::IEnumerable<string> values) {
-        PrepareBuilder();
-        result.repeatedStringPieceField_.Add(values);
-        return this;
-      }
-      public Builder ClearRepeatedStringPieceField() {
-        PrepareBuilder();
-        result.repeatedStringPieceField_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<string> RepeatedCordFieldList {
-        get { return PrepareBuilder().repeatedCordField_; }
-      }
-      public int RepeatedCordFieldCount {
-        get { return result.RepeatedCordFieldCount; }
-      }
-      public string GetRepeatedCordField(int index) {
-        return result.GetRepeatedCordField(index);
-      }
-      public Builder SetRepeatedCordField(int index, string value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.repeatedCordField_[index] = value;
-        return this;
-      }
-      public Builder AddRepeatedCordField(string value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.repeatedCordField_.Add(value);
-        return this;
-      }
-      public Builder AddRangeRepeatedCordField(scg::IEnumerable<string> values) {
-        PrepareBuilder();
-        result.repeatedCordField_.Add(values);
-        return this;
-      }
-      public Builder ClearRepeatedCordField() {
-        PrepareBuilder();
-        result.repeatedCordField_.Clear();
-        return this;
-      }
-    }
-    static TestCamelCaseFieldNames() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class TestFieldOrderings : pb::ExtendableMessage<TestFieldOrderings, TestFieldOrderings.Builder> {
-    private TestFieldOrderings() { }
-    private static readonly TestFieldOrderings defaultInstance = new TestFieldOrderings().MakeReadOnly();
-    private static readonly string[] _testFieldOrderingsFieldNames = new string[] { "my_float", "my_int", "my_string", "optional_nested_message" };
-    private static readonly uint[] _testFieldOrderingsFieldTags = new uint[] { 813, 8, 90, 1602 };
-    public static TestFieldOrderings DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override TestFieldOrderings DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override TestFieldOrderings ThisMessage {
-      get { return this; }
-    }
-
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestFieldOrderings__Descriptor; }
-    }
-
-    protected override pb::FieldAccess.FieldAccessorTable<TestFieldOrderings, TestFieldOrderings.Builder> InternalFieldAccessors {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestFieldOrderings__FieldAccessorTable; }
-    }
-
-    #region Nested types
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public static partial class Types {
-      [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", "oo" };
-        private static readonly uint[] _nestedMessageFieldTags = new uint[] { 8, 16 };
-        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.Unittest.internal__static_protobuf_unittest_TestFieldOrderings_NestedMessage__Descriptor; }
-        }
-
-        protected override pb::FieldAccess.FieldAccessorTable<NestedMessage, NestedMessage.Builder> InternalFieldAccessors {
-          get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestFieldOrderings_NestedMessage__FieldAccessorTable; }
-        }
-
-        public const int OoFieldNumber = 2;
-        private bool hasOo;
-        private long oo_;
-        public bool HasOo {
-          get { return hasOo; }
-        }
-        public long Oo {
-          get { return oo_; }
-        }
-
-        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);
-          }
-          if (hasOo) {
-            output.WriteInt64(2, field_names[1], Oo);
-          }
-          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 (hasOo) {
-            size += pb::CodedOutputStream.ComputeInt64Size(2, Oo);
-          }
-          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.TestFieldOrderings.Types.NestedMessage.Descriptor; }
-          }
-
-          public override NestedMessage DefaultInstanceForType {
-            get { return global::Google.ProtocolBuffers.TestProtos.TestFieldOrderings.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.TestFieldOrderings.Types.NestedMessage.DefaultInstance) return this;
-            PrepareBuilder();
-            if (other.HasOo) {
-              Oo = other.Oo;
-            }
-            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;
-                }
-                case 16: {
-                  result.hasOo = input.ReadInt64(ref result.oo_);
-                  break;
-                }
-              }
-            }
-
-            if (unknownFields != null) {
-              this.UnknownFields = unknownFields.Build();
-            }
-            return this;
-          }
-
-
-          public bool HasOo {
-            get { return result.hasOo; }
-          }
-          public long Oo {
-            get { return result.Oo; }
-            set { SetOo(value); }
-          }
-          public Builder SetOo(long value) {
-            PrepareBuilder();
-            result.hasOo = true;
-            result.oo_ = value;
-            return this;
-          }
-          public Builder ClearOo() {
-            PrepareBuilder();
-            result.hasOo = false;
-            result.oo_ = 0L;
-            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.Unittest.Descriptor, null);
-        }
-      }
-
-    }
-    #endregion
-
-    public const int MyStringFieldNumber = 11;
-    private bool hasMyString;
-    private string myString_ = "";
-    public bool HasMyString {
-      get { return hasMyString; }
-    }
-    public string MyString {
-      get { return myString_; }
-    }
-
-    public const int MyIntFieldNumber = 1;
-    private bool hasMyInt;
-    private long myInt_;
-    public bool HasMyInt {
-      get { return hasMyInt; }
-    }
-    public long MyInt {
-      get { return myInt_; }
-    }
-
-    public const int MyFloatFieldNumber = 101;
-    private bool hasMyFloat;
-    private float myFloat_;
-    public bool HasMyFloat {
-      get { return hasMyFloat; }
-    }
-    public float MyFloat {
-      get { return myFloat_; }
-    }
-
-    public const int OptionalNestedMessageFieldNumber = 200;
-    private bool hasOptionalNestedMessage;
-    private global::Google.ProtocolBuffers.TestProtos.TestFieldOrderings.Types.NestedMessage optionalNestedMessage_;
-    public bool HasOptionalNestedMessage {
-      get { return hasOptionalNestedMessage; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.TestFieldOrderings.Types.NestedMessage OptionalNestedMessage {
-      get { return optionalNestedMessage_ ?? global::Google.ProtocolBuffers.TestProtos.TestFieldOrderings.Types.NestedMessage.DefaultInstance; }
-    }
-
-    public override bool IsInitialized {
-      get {
-        if (!ExtensionsAreInitialized) return false;
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _testFieldOrderingsFieldNames;
-      pb::ExtendableMessage<TestFieldOrderings, TestFieldOrderings.Builder>.ExtensionWriter extensionWriter = CreateExtensionWriter(this);
-      if (hasMyInt) {
-        output.WriteInt64(1, field_names[1], MyInt);
-      }
-      extensionWriter.WriteUntil(11, output);
-      if (hasMyString) {
-        output.WriteString(11, field_names[2], MyString);
-      }
-      extensionWriter.WriteUntil(101, output);
-      if (hasMyFloat) {
-        output.WriteFloat(101, field_names[0], MyFloat);
-      }
-      if (hasOptionalNestedMessage) {
-        output.WriteMessage(200, field_names[3], OptionalNestedMessage);
-      }
-      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 (hasMyString) {
-        size += pb::CodedOutputStream.ComputeStringSize(11, MyString);
-      }
-      if (hasMyInt) {
-        size += pb::CodedOutputStream.ComputeInt64Size(1, MyInt);
-      }
-      if (hasMyFloat) {
-        size += pb::CodedOutputStream.ComputeFloatSize(101, MyFloat);
-      }
-      if (hasOptionalNestedMessage) {
-        size += pb::CodedOutputStream.ComputeMessageSize(200, OptionalNestedMessage);
-      }
-      size += ExtensionsSerializedSize;
-      size += UnknownFields.SerializedSize;
-      memoizedSerializedSize = size;
-      return size;
-    }
-    public static TestFieldOrderings ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestFieldOrderings ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestFieldOrderings ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestFieldOrderings ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestFieldOrderings ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestFieldOrderings ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static TestFieldOrderings ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static TestFieldOrderings ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static TestFieldOrderings ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestFieldOrderings ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private TestFieldOrderings 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(TestFieldOrderings prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::ExtendableBuilder<TestFieldOrderings, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(TestFieldOrderings cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private TestFieldOrderings result;
-
-      private TestFieldOrderings PrepareBuilder() {
-        if (resultIsReadOnly) {
-          TestFieldOrderings original = result;
-          result = new TestFieldOrderings();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override TestFieldOrderings 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.TestFieldOrderings.Descriptor; }
-      }
-
-      public override TestFieldOrderings DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.TestFieldOrderings.DefaultInstance; }
-      }
-
-      public override TestFieldOrderings BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is TestFieldOrderings) {
-          return MergeFrom((TestFieldOrderings) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(TestFieldOrderings other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.TestFieldOrderings.DefaultInstance) return this;
-        PrepareBuilder();
-        if (other.HasMyString) {
-          MyString = other.MyString;
-        }
-        if (other.HasMyInt) {
-          MyInt = other.MyInt;
-        }
-        if (other.HasMyFloat) {
-          MyFloat = other.MyFloat;
-        }
-        if (other.HasOptionalNestedMessage) {
-          MergeOptionalNestedMessage(other.OptionalNestedMessage);
-        }
-          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(_testFieldOrderingsFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _testFieldOrderingsFieldTags[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.hasMyInt = input.ReadInt64(ref result.myInt_);
-              break;
-            }
-            case 90: {
-              result.hasMyString = input.ReadString(ref result.myString_);
-              break;
-            }
-            case 813: {
-              result.hasMyFloat = input.ReadFloat(ref result.myFloat_);
-              break;
-            }
-            case 1602: {
-              global::Google.ProtocolBuffers.TestProtos.TestFieldOrderings.Types.NestedMessage.Builder subBuilder = global::Google.ProtocolBuffers.TestProtos.TestFieldOrderings.Types.NestedMessage.CreateBuilder();
-              if (result.hasOptionalNestedMessage) {
-                subBuilder.MergeFrom(OptionalNestedMessage);
-              }
-              input.ReadMessage(subBuilder, extensionRegistry);
-              OptionalNestedMessage = subBuilder.BuildPartial();
-              break;
-            }
-          }
-        }
-
-        if (unknownFields != null) {
-          this.UnknownFields = unknownFields.Build();
-        }
-        return this;
-      }
-
-
-      public bool HasMyString {
-        get { return result.hasMyString; }
-      }
-      public string MyString {
-        get { return result.MyString; }
-        set { SetMyString(value); }
-      }
-      public Builder SetMyString(string value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasMyString = true;
-        result.myString_ = value;
-        return this;
-      }
-      public Builder ClearMyString() {
-        PrepareBuilder();
-        result.hasMyString = false;
-        result.myString_ = "";
-        return this;
-      }
-
-      public bool HasMyInt {
-        get { return result.hasMyInt; }
-      }
-      public long MyInt {
-        get { return result.MyInt; }
-        set { SetMyInt(value); }
-      }
-      public Builder SetMyInt(long value) {
-        PrepareBuilder();
-        result.hasMyInt = true;
-        result.myInt_ = value;
-        return this;
-      }
-      public Builder ClearMyInt() {
-        PrepareBuilder();
-        result.hasMyInt = false;
-        result.myInt_ = 0L;
-        return this;
-      }
-
-      public bool HasMyFloat {
-        get { return result.hasMyFloat; }
-      }
-      public float MyFloat {
-        get { return result.MyFloat; }
-        set { SetMyFloat(value); }
-      }
-      public Builder SetMyFloat(float value) {
-        PrepareBuilder();
-        result.hasMyFloat = true;
-        result.myFloat_ = value;
-        return this;
-      }
-      public Builder ClearMyFloat() {
-        PrepareBuilder();
-        result.hasMyFloat = false;
-        result.myFloat_ = 0F;
-        return this;
-      }
-
-      public bool HasOptionalNestedMessage {
-       get { return result.hasOptionalNestedMessage; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.TestFieldOrderings.Types.NestedMessage OptionalNestedMessage {
-        get { return result.OptionalNestedMessage; }
-        set { SetOptionalNestedMessage(value); }
-      }
-      public Builder SetOptionalNestedMessage(global::Google.ProtocolBuffers.TestProtos.TestFieldOrderings.Types.NestedMessage value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasOptionalNestedMessage = true;
-        result.optionalNestedMessage_ = value;
-        return this;
-      }
-      public Builder SetOptionalNestedMessage(global::Google.ProtocolBuffers.TestProtos.TestFieldOrderings.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.TestFieldOrderings.Types.NestedMessage value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        if (result.hasOptionalNestedMessage &&
-            result.optionalNestedMessage_ != global::Google.ProtocolBuffers.TestProtos.TestFieldOrderings.Types.NestedMessage.DefaultInstance) {
-            result.optionalNestedMessage_ = global::Google.ProtocolBuffers.TestProtos.TestFieldOrderings.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;
-      }
-    }
-    static TestFieldOrderings() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class TestExtremeDefaultValues : pb::GeneratedMessage<TestExtremeDefaultValues, TestExtremeDefaultValues.Builder> {
-    private TestExtremeDefaultValues() { }
-    private static readonly TestExtremeDefaultValues defaultInstance = new TestExtremeDefaultValues().MakeReadOnly();
-    private static readonly string[] _testExtremeDefaultValuesFieldNames = new string[] { "bytes_with_zero", "cord_with_zero", "cpp_trigraph", "escaped_bytes", "inf_double", "inf_float", "large_float", "large_uint32", "large_uint64", "nan_double", "nan_float", "neg_inf_double", "neg_inf_float", "negative_float", "negative_one_float", "one_float", "really_small_int32", "really_small_int64", "replacement_string", "small_float", "small_int32", "small_int64", "small_negative_float", "string_piece_with_zero", "string_with_zero", "utf8_string", "zero_float" };
-    private static readonly uint[] _testExtremeDefaultValuesFieldTags = new uint[] { 194, 210, 162, 10, 113, 141, 101, 16, 24, 129, 157, 121, 149, 93, 85, 69, 168, 176, 218, 77, 32, 40, 109, 202, 186, 50, 61 };
-    public static TestExtremeDefaultValues DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override TestExtremeDefaultValues DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override TestExtremeDefaultValues ThisMessage {
-      get { return this; }
-    }
-
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestExtremeDefaultValues__Descriptor; }
-    }
-
-    protected override pb::FieldAccess.FieldAccessorTable<TestExtremeDefaultValues, TestExtremeDefaultValues.Builder> InternalFieldAccessors {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestExtremeDefaultValues__FieldAccessorTable; }
-    }
-
-    public const int EscapedBytesFieldNumber = 1;
-    private bool hasEscapedBytes;
-    private pb::ByteString escapedBytes_ = (pb::ByteString) global::Google.ProtocolBuffers.TestProtos.TestExtremeDefaultValues.Descriptor.Fields[0].DefaultValue;
-    public bool HasEscapedBytes {
-      get { return hasEscapedBytes; }
-    }
-    public pb::ByteString EscapedBytes {
-      get { return escapedBytes_; }
-    }
-
-    public const int LargeUint32FieldNumber = 2;
-    private bool hasLargeUint32;
-    private uint largeUint32_ = 4294967295;
-    public bool HasLargeUint32 {
-      get { return hasLargeUint32; }
-    }
-    public uint LargeUint32 {
-      get { return largeUint32_; }
-    }
-
-    public const int LargeUint64FieldNumber = 3;
-    private bool hasLargeUint64;
-    private ulong largeUint64_ = 18446744073709551615UL;
-    public bool HasLargeUint64 {
-      get { return hasLargeUint64; }
-    }
-    public ulong LargeUint64 {
-      get { return largeUint64_; }
-    }
-
-    public const int SmallInt32FieldNumber = 4;
-    private bool hasSmallInt32;
-    private int smallInt32_ = -2147483647;
-    public bool HasSmallInt32 {
-      get { return hasSmallInt32; }
-    }
-    public int SmallInt32 {
-      get { return smallInt32_; }
-    }
-
-    public const int SmallInt64FieldNumber = 5;
-    private bool hasSmallInt64;
-    private long smallInt64_ = -9223372036854775807L;
-    public bool HasSmallInt64 {
-      get { return hasSmallInt64; }
-    }
-    public long SmallInt64 {
-      get { return smallInt64_; }
-    }
-
-    public const int ReallySmallInt32FieldNumber = 21;
-    private bool hasReallySmallInt32;
-    private int reallySmallInt32_ = -2147483648;
-    public bool HasReallySmallInt32 {
-      get { return hasReallySmallInt32; }
-    }
-    public int ReallySmallInt32 {
-      get { return reallySmallInt32_; }
-    }
-
-    public const int ReallySmallInt64FieldNumber = 22;
-    private bool hasReallySmallInt64;
-    private long reallySmallInt64_ = -9223372036854775808L;
-    public bool HasReallySmallInt64 {
-      get { return hasReallySmallInt64; }
-    }
-    public long ReallySmallInt64 {
-      get { return reallySmallInt64_; }
-    }
-
-    public const int Utf8StringFieldNumber = 6;
-    private bool hasUtf8String;
-    private string utf8String_ = (string) global::Google.ProtocolBuffers.TestProtos.TestExtremeDefaultValues.Descriptor.Fields[7].DefaultValue;
-    public bool HasUtf8String {
-      get { return hasUtf8String; }
-    }
-    public string Utf8String {
-      get { return utf8String_; }
-    }
-
-    public const int ZeroFloatFieldNumber = 7;
-    private bool hasZeroFloat;
-    private float zeroFloat_;
-    public bool HasZeroFloat {
-      get { return hasZeroFloat; }
-    }
-    public float ZeroFloat {
-      get { return zeroFloat_; }
-    }
-
-    public const int OneFloatFieldNumber = 8;
-    private bool hasOneFloat;
-    private float oneFloat_ = 1F;
-    public bool HasOneFloat {
-      get { return hasOneFloat; }
-    }
-    public float OneFloat {
-      get { return oneFloat_; }
-    }
-
-    public const int SmallFloatFieldNumber = 9;
-    private bool hasSmallFloat;
-    private float smallFloat_ = 1.5F;
-    public bool HasSmallFloat {
-      get { return hasSmallFloat; }
-    }
-    public float SmallFloat {
-      get { return smallFloat_; }
-    }
-
-    public const int NegativeOneFloatFieldNumber = 10;
-    private bool hasNegativeOneFloat;
-    private float negativeOneFloat_ = -1F;
-    public bool HasNegativeOneFloat {
-      get { return hasNegativeOneFloat; }
-    }
-    public float NegativeOneFloat {
-      get { return negativeOneFloat_; }
-    }
-
-    public const int NegativeFloatFieldNumber = 11;
-    private bool hasNegativeFloat;
-    private float negativeFloat_ = -1.5F;
-    public bool HasNegativeFloat {
-      get { return hasNegativeFloat; }
-    }
-    public float NegativeFloat {
-      get { return negativeFloat_; }
-    }
-
-    public const int LargeFloatFieldNumber = 12;
-    private bool hasLargeFloat;
-    private float largeFloat_ = 2e+08F;
-    public bool HasLargeFloat {
-      get { return hasLargeFloat; }
-    }
-    public float LargeFloat {
-      get { return largeFloat_; }
-    }
-
-    public const int SmallNegativeFloatFieldNumber = 13;
-    private bool hasSmallNegativeFloat;
-    private float smallNegativeFloat_ = -8e-28F;
-    public bool HasSmallNegativeFloat {
-      get { return hasSmallNegativeFloat; }
-    }
-    public float SmallNegativeFloat {
-      get { return smallNegativeFloat_; }
-    }
-
-    public const int InfDoubleFieldNumber = 14;
-    private bool hasInfDouble;
-    private double infDouble_ = double.PositiveInfinity;
-    public bool HasInfDouble {
-      get { return hasInfDouble; }
-    }
-    public double InfDouble {
-      get { return infDouble_; }
-    }
-
-    public const int NegInfDoubleFieldNumber = 15;
-    private bool hasNegInfDouble;
-    private double negInfDouble_ = double.NegativeInfinity;
-    public bool HasNegInfDouble {
-      get { return hasNegInfDouble; }
-    }
-    public double NegInfDouble {
-      get { return negInfDouble_; }
-    }
-
-    public const int NanDoubleFieldNumber = 16;
-    private bool hasNanDouble;
-    private double nanDouble_ = double.NaN;
-    public bool HasNanDouble {
-      get { return hasNanDouble; }
-    }
-    public double NanDouble {
-      get { return nanDouble_; }
-    }
-
-    public const int InfFloatFieldNumber = 17;
-    private bool hasInfFloat;
-    private float infFloat_ = float.PositiveInfinity;
-    public bool HasInfFloat {
-      get { return hasInfFloat; }
-    }
-    public float InfFloat {
-      get { return infFloat_; }
-    }
-
-    public const int NegInfFloatFieldNumber = 18;
-    private bool hasNegInfFloat;
-    private float negInfFloat_ = float.NegativeInfinity;
-    public bool HasNegInfFloat {
-      get { return hasNegInfFloat; }
-    }
-    public float NegInfFloat {
-      get { return negInfFloat_; }
-    }
-
-    public const int NanFloatFieldNumber = 19;
-    private bool hasNanFloat;
-    private float nanFloat_ = float.NaN;
-    public bool HasNanFloat {
-      get { return hasNanFloat; }
-    }
-    public float NanFloat {
-      get { return nanFloat_; }
-    }
-
-    public const int CppTrigraphFieldNumber = 20;
-    private bool hasCppTrigraph;
-    private string cppTrigraph_ = "? ? ?? ?? ??? ??/ ??-";
-    public bool HasCppTrigraph {
-      get { return hasCppTrigraph; }
-    }
-    public string CppTrigraph {
-      get { return cppTrigraph_; }
-    }
-
-    public const int StringWithZeroFieldNumber = 23;
-    private bool hasStringWithZero;
-    private string stringWithZero_ = (string) global::Google.ProtocolBuffers.TestProtos.TestExtremeDefaultValues.Descriptor.Fields[22].DefaultValue;
-    public bool HasStringWithZero {
-      get { return hasStringWithZero; }
-    }
-    public string StringWithZero {
-      get { return stringWithZero_; }
-    }
-
-    public const int BytesWithZeroFieldNumber = 24;
-    private bool hasBytesWithZero;
-    private pb::ByteString bytesWithZero_ = (pb::ByteString) global::Google.ProtocolBuffers.TestProtos.TestExtremeDefaultValues.Descriptor.Fields[23].DefaultValue;
-    public bool HasBytesWithZero {
-      get { return hasBytesWithZero; }
-    }
-    public pb::ByteString BytesWithZero {
-      get { return bytesWithZero_; }
-    }
-
-    public const int StringPieceWithZeroFieldNumber = 25;
-    private bool hasStringPieceWithZero;
-    private string stringPieceWithZero_ = (string) global::Google.ProtocolBuffers.TestProtos.TestExtremeDefaultValues.Descriptor.Fields[24].DefaultValue;
-    public bool HasStringPieceWithZero {
-      get { return hasStringPieceWithZero; }
-    }
-    public string StringPieceWithZero {
-      get { return stringPieceWithZero_; }
-    }
-
-    public const int CordWithZeroFieldNumber = 26;
-    private bool hasCordWithZero;
-    private string cordWithZero_ = (string) global::Google.ProtocolBuffers.TestProtos.TestExtremeDefaultValues.Descriptor.Fields[25].DefaultValue;
-    public bool HasCordWithZero {
-      get { return hasCordWithZero; }
-    }
-    public string CordWithZero {
-      get { return cordWithZero_; }
-    }
-
-    public const int ReplacementStringFieldNumber = 27;
-    private bool hasReplacementString;
-    private string replacementString_ = "${unknown}";
-    public bool HasReplacementString {
-      get { return hasReplacementString; }
-    }
-    public string ReplacementString {
-      get { return replacementString_; }
-    }
-
-    public override bool IsInitialized {
-      get {
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _testExtremeDefaultValuesFieldNames;
-      if (hasEscapedBytes) {
-        output.WriteBytes(1, field_names[3], EscapedBytes);
-      }
-      if (hasLargeUint32) {
-        output.WriteUInt32(2, field_names[7], LargeUint32);
-      }
-      if (hasLargeUint64) {
-        output.WriteUInt64(3, field_names[8], LargeUint64);
-      }
-      if (hasSmallInt32) {
-        output.WriteInt32(4, field_names[20], SmallInt32);
-      }
-      if (hasSmallInt64) {
-        output.WriteInt64(5, field_names[21], SmallInt64);
-      }
-      if (hasUtf8String) {
-        output.WriteString(6, field_names[25], Utf8String);
-      }
-      if (hasZeroFloat) {
-        output.WriteFloat(7, field_names[26], ZeroFloat);
-      }
-      if (hasOneFloat) {
-        output.WriteFloat(8, field_names[15], OneFloat);
-      }
-      if (hasSmallFloat) {
-        output.WriteFloat(9, field_names[19], SmallFloat);
-      }
-      if (hasNegativeOneFloat) {
-        output.WriteFloat(10, field_names[14], NegativeOneFloat);
-      }
-      if (hasNegativeFloat) {
-        output.WriteFloat(11, field_names[13], NegativeFloat);
-      }
-      if (hasLargeFloat) {
-        output.WriteFloat(12, field_names[6], LargeFloat);
-      }
-      if (hasSmallNegativeFloat) {
-        output.WriteFloat(13, field_names[22], SmallNegativeFloat);
-      }
-      if (hasInfDouble) {
-        output.WriteDouble(14, field_names[4], InfDouble);
-      }
-      if (hasNegInfDouble) {
-        output.WriteDouble(15, field_names[11], NegInfDouble);
-      }
-      if (hasNanDouble) {
-        output.WriteDouble(16, field_names[9], NanDouble);
-      }
-      if (hasInfFloat) {
-        output.WriteFloat(17, field_names[5], InfFloat);
-      }
-      if (hasNegInfFloat) {
-        output.WriteFloat(18, field_names[12], NegInfFloat);
-      }
-      if (hasNanFloat) {
-        output.WriteFloat(19, field_names[10], NanFloat);
-      }
-      if (hasCppTrigraph) {
-        output.WriteString(20, field_names[2], CppTrigraph);
-      }
-      if (hasReallySmallInt32) {
-        output.WriteInt32(21, field_names[16], ReallySmallInt32);
-      }
-      if (hasReallySmallInt64) {
-        output.WriteInt64(22, field_names[17], ReallySmallInt64);
-      }
-      if (hasStringWithZero) {
-        output.WriteString(23, field_names[24], StringWithZero);
-      }
-      if (hasBytesWithZero) {
-        output.WriteBytes(24, field_names[0], BytesWithZero);
-      }
-      if (hasStringPieceWithZero) {
-        output.WriteString(25, field_names[23], StringPieceWithZero);
-      }
-      if (hasCordWithZero) {
-        output.WriteString(26, field_names[1], CordWithZero);
-      }
-      if (hasReplacementString) {
-        output.WriteString(27, field_names[18], ReplacementString);
-      }
-      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 (hasEscapedBytes) {
-        size += pb::CodedOutputStream.ComputeBytesSize(1, EscapedBytes);
-      }
-      if (hasLargeUint32) {
-        size += pb::CodedOutputStream.ComputeUInt32Size(2, LargeUint32);
-      }
-      if (hasLargeUint64) {
-        size += pb::CodedOutputStream.ComputeUInt64Size(3, LargeUint64);
-      }
-      if (hasSmallInt32) {
-        size += pb::CodedOutputStream.ComputeInt32Size(4, SmallInt32);
-      }
-      if (hasSmallInt64) {
-        size += pb::CodedOutputStream.ComputeInt64Size(5, SmallInt64);
-      }
-      if (hasReallySmallInt32) {
-        size += pb::CodedOutputStream.ComputeInt32Size(21, ReallySmallInt32);
-      }
-      if (hasReallySmallInt64) {
-        size += pb::CodedOutputStream.ComputeInt64Size(22, ReallySmallInt64);
-      }
-      if (hasUtf8String) {
-        size += pb::CodedOutputStream.ComputeStringSize(6, Utf8String);
-      }
-      if (hasZeroFloat) {
-        size += pb::CodedOutputStream.ComputeFloatSize(7, ZeroFloat);
-      }
-      if (hasOneFloat) {
-        size += pb::CodedOutputStream.ComputeFloatSize(8, OneFloat);
-      }
-      if (hasSmallFloat) {
-        size += pb::CodedOutputStream.ComputeFloatSize(9, SmallFloat);
-      }
-      if (hasNegativeOneFloat) {
-        size += pb::CodedOutputStream.ComputeFloatSize(10, NegativeOneFloat);
-      }
-      if (hasNegativeFloat) {
-        size += pb::CodedOutputStream.ComputeFloatSize(11, NegativeFloat);
-      }
-      if (hasLargeFloat) {
-        size += pb::CodedOutputStream.ComputeFloatSize(12, LargeFloat);
-      }
-      if (hasSmallNegativeFloat) {
-        size += pb::CodedOutputStream.ComputeFloatSize(13, SmallNegativeFloat);
-      }
-      if (hasInfDouble) {
-        size += pb::CodedOutputStream.ComputeDoubleSize(14, InfDouble);
-      }
-      if (hasNegInfDouble) {
-        size += pb::CodedOutputStream.ComputeDoubleSize(15, NegInfDouble);
-      }
-      if (hasNanDouble) {
-        size += pb::CodedOutputStream.ComputeDoubleSize(16, NanDouble);
-      }
-      if (hasInfFloat) {
-        size += pb::CodedOutputStream.ComputeFloatSize(17, InfFloat);
-      }
-      if (hasNegInfFloat) {
-        size += pb::CodedOutputStream.ComputeFloatSize(18, NegInfFloat);
-      }
-      if (hasNanFloat) {
-        size += pb::CodedOutputStream.ComputeFloatSize(19, NanFloat);
-      }
-      if (hasCppTrigraph) {
-        size += pb::CodedOutputStream.ComputeStringSize(20, CppTrigraph);
-      }
-      if (hasStringWithZero) {
-        size += pb::CodedOutputStream.ComputeStringSize(23, StringWithZero);
-      }
-      if (hasBytesWithZero) {
-        size += pb::CodedOutputStream.ComputeBytesSize(24, BytesWithZero);
-      }
-      if (hasStringPieceWithZero) {
-        size += pb::CodedOutputStream.ComputeStringSize(25, StringPieceWithZero);
-      }
-      if (hasCordWithZero) {
-        size += pb::CodedOutputStream.ComputeStringSize(26, CordWithZero);
-      }
-      if (hasReplacementString) {
-        size += pb::CodedOutputStream.ComputeStringSize(27, ReplacementString);
-      }
-      size += UnknownFields.SerializedSize;
-      memoizedSerializedSize = size;
-      return size;
-    }
-    public static TestExtremeDefaultValues ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestExtremeDefaultValues ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestExtremeDefaultValues ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestExtremeDefaultValues ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestExtremeDefaultValues ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestExtremeDefaultValues ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static TestExtremeDefaultValues ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static TestExtremeDefaultValues ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static TestExtremeDefaultValues ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestExtremeDefaultValues ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private TestExtremeDefaultValues 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(TestExtremeDefaultValues prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilder<TestExtremeDefaultValues, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(TestExtremeDefaultValues cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private TestExtremeDefaultValues result;
-
-      private TestExtremeDefaultValues PrepareBuilder() {
-        if (resultIsReadOnly) {
-          TestExtremeDefaultValues original = result;
-          result = new TestExtremeDefaultValues();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override TestExtremeDefaultValues 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.TestExtremeDefaultValues.Descriptor; }
-      }
-
-      public override TestExtremeDefaultValues DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.TestExtremeDefaultValues.DefaultInstance; }
-      }
-
-      public override TestExtremeDefaultValues BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is TestExtremeDefaultValues) {
-          return MergeFrom((TestExtremeDefaultValues) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(TestExtremeDefaultValues other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.TestExtremeDefaultValues.DefaultInstance) return this;
-        PrepareBuilder();
-        if (other.HasEscapedBytes) {
-          EscapedBytes = other.EscapedBytes;
-        }
-        if (other.HasLargeUint32) {
-          LargeUint32 = other.LargeUint32;
-        }
-        if (other.HasLargeUint64) {
-          LargeUint64 = other.LargeUint64;
-        }
-        if (other.HasSmallInt32) {
-          SmallInt32 = other.SmallInt32;
-        }
-        if (other.HasSmallInt64) {
-          SmallInt64 = other.SmallInt64;
-        }
-        if (other.HasReallySmallInt32) {
-          ReallySmallInt32 = other.ReallySmallInt32;
-        }
-        if (other.HasReallySmallInt64) {
-          ReallySmallInt64 = other.ReallySmallInt64;
-        }
-        if (other.HasUtf8String) {
-          Utf8String = other.Utf8String;
-        }
-        if (other.HasZeroFloat) {
-          ZeroFloat = other.ZeroFloat;
-        }
-        if (other.HasOneFloat) {
-          OneFloat = other.OneFloat;
-        }
-        if (other.HasSmallFloat) {
-          SmallFloat = other.SmallFloat;
-        }
-        if (other.HasNegativeOneFloat) {
-          NegativeOneFloat = other.NegativeOneFloat;
-        }
-        if (other.HasNegativeFloat) {
-          NegativeFloat = other.NegativeFloat;
-        }
-        if (other.HasLargeFloat) {
-          LargeFloat = other.LargeFloat;
-        }
-        if (other.HasSmallNegativeFloat) {
-          SmallNegativeFloat = other.SmallNegativeFloat;
-        }
-        if (other.HasInfDouble) {
-          InfDouble = other.InfDouble;
-        }
-        if (other.HasNegInfDouble) {
-          NegInfDouble = other.NegInfDouble;
-        }
-        if (other.HasNanDouble) {
-          NanDouble = other.NanDouble;
-        }
-        if (other.HasInfFloat) {
-          InfFloat = other.InfFloat;
-        }
-        if (other.HasNegInfFloat) {
-          NegInfFloat = other.NegInfFloat;
-        }
-        if (other.HasNanFloat) {
-          NanFloat = other.NanFloat;
-        }
-        if (other.HasCppTrigraph) {
-          CppTrigraph = other.CppTrigraph;
-        }
-        if (other.HasStringWithZero) {
-          StringWithZero = other.StringWithZero;
-        }
-        if (other.HasBytesWithZero) {
-          BytesWithZero = other.BytesWithZero;
-        }
-        if (other.HasStringPieceWithZero) {
-          StringPieceWithZero = other.StringPieceWithZero;
-        }
-        if (other.HasCordWithZero) {
-          CordWithZero = other.CordWithZero;
-        }
-        if (other.HasReplacementString) {
-          ReplacementString = other.ReplacementString;
-        }
-        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(_testExtremeDefaultValuesFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _testExtremeDefaultValuesFieldTags[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: {
-              result.hasEscapedBytes = input.ReadBytes(ref result.escapedBytes_);
-              break;
-            }
-            case 16: {
-              result.hasLargeUint32 = input.ReadUInt32(ref result.largeUint32_);
-              break;
-            }
-            case 24: {
-              result.hasLargeUint64 = input.ReadUInt64(ref result.largeUint64_);
-              break;
-            }
-            case 32: {
-              result.hasSmallInt32 = input.ReadInt32(ref result.smallInt32_);
-              break;
-            }
-            case 40: {
-              result.hasSmallInt64 = input.ReadInt64(ref result.smallInt64_);
-              break;
-            }
-            case 50: {
-              result.hasUtf8String = input.ReadString(ref result.utf8String_);
-              break;
-            }
-            case 61: {
-              result.hasZeroFloat = input.ReadFloat(ref result.zeroFloat_);
-              break;
-            }
-            case 69: {
-              result.hasOneFloat = input.ReadFloat(ref result.oneFloat_);
-              break;
-            }
-            case 77: {
-              result.hasSmallFloat = input.ReadFloat(ref result.smallFloat_);
-              break;
-            }
-            case 85: {
-              result.hasNegativeOneFloat = input.ReadFloat(ref result.negativeOneFloat_);
-              break;
-            }
-            case 93: {
-              result.hasNegativeFloat = input.ReadFloat(ref result.negativeFloat_);
-              break;
-            }
-            case 101: {
-              result.hasLargeFloat = input.ReadFloat(ref result.largeFloat_);
-              break;
-            }
-            case 109: {
-              result.hasSmallNegativeFloat = input.ReadFloat(ref result.smallNegativeFloat_);
-              break;
-            }
-            case 113: {
-              result.hasInfDouble = input.ReadDouble(ref result.infDouble_);
-              break;
-            }
-            case 121: {
-              result.hasNegInfDouble = input.ReadDouble(ref result.negInfDouble_);
-              break;
-            }
-            case 129: {
-              result.hasNanDouble = input.ReadDouble(ref result.nanDouble_);
-              break;
-            }
-            case 141: {
-              result.hasInfFloat = input.ReadFloat(ref result.infFloat_);
-              break;
-            }
-            case 149: {
-              result.hasNegInfFloat = input.ReadFloat(ref result.negInfFloat_);
-              break;
-            }
-            case 157: {
-              result.hasNanFloat = input.ReadFloat(ref result.nanFloat_);
-              break;
-            }
-            case 162: {
-              result.hasCppTrigraph = input.ReadString(ref result.cppTrigraph_);
-              break;
-            }
-            case 168: {
-              result.hasReallySmallInt32 = input.ReadInt32(ref result.reallySmallInt32_);
-              break;
-            }
-            case 176: {
-              result.hasReallySmallInt64 = input.ReadInt64(ref result.reallySmallInt64_);
-              break;
-            }
-            case 186: {
-              result.hasStringWithZero = input.ReadString(ref result.stringWithZero_);
-              break;
-            }
-            case 194: {
-              result.hasBytesWithZero = input.ReadBytes(ref result.bytesWithZero_);
-              break;
-            }
-            case 202: {
-              result.hasStringPieceWithZero = input.ReadString(ref result.stringPieceWithZero_);
-              break;
-            }
-            case 210: {
-              result.hasCordWithZero = input.ReadString(ref result.cordWithZero_);
-              break;
-            }
-            case 218: {
-              result.hasReplacementString = input.ReadString(ref result.replacementString_);
-              break;
-            }
-          }
-        }
-
-        if (unknownFields != null) {
-          this.UnknownFields = unknownFields.Build();
-        }
-        return this;
-      }
-
-
-      public bool HasEscapedBytes {
-        get { return result.hasEscapedBytes; }
-      }
-      public pb::ByteString EscapedBytes {
-        get { return result.EscapedBytes; }
-        set { SetEscapedBytes(value); }
-      }
-      public Builder SetEscapedBytes(pb::ByteString value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasEscapedBytes = true;
-        result.escapedBytes_ = value;
-        return this;
-      }
-      public Builder ClearEscapedBytes() {
-        PrepareBuilder();
-        result.hasEscapedBytes = false;
-        result.escapedBytes_ = (pb::ByteString) global::Google.ProtocolBuffers.TestProtos.TestExtremeDefaultValues.Descriptor.Fields[0].DefaultValue;
-        return this;
-      }
-
-      public bool HasLargeUint32 {
-        get { return result.hasLargeUint32; }
-      }
-      public uint LargeUint32 {
-        get { return result.LargeUint32; }
-        set { SetLargeUint32(value); }
-      }
-      public Builder SetLargeUint32(uint value) {
-        PrepareBuilder();
-        result.hasLargeUint32 = true;
-        result.largeUint32_ = value;
-        return this;
-      }
-      public Builder ClearLargeUint32() {
-        PrepareBuilder();
-        result.hasLargeUint32 = false;
-        result.largeUint32_ = 4294967295;
-        return this;
-      }
-
-      public bool HasLargeUint64 {
-        get { return result.hasLargeUint64; }
-      }
-      public ulong LargeUint64 {
-        get { return result.LargeUint64; }
-        set { SetLargeUint64(value); }
-      }
-      public Builder SetLargeUint64(ulong value) {
-        PrepareBuilder();
-        result.hasLargeUint64 = true;
-        result.largeUint64_ = value;
-        return this;
-      }
-      public Builder ClearLargeUint64() {
-        PrepareBuilder();
-        result.hasLargeUint64 = false;
-        result.largeUint64_ = 18446744073709551615UL;
-        return this;
-      }
-
-      public bool HasSmallInt32 {
-        get { return result.hasSmallInt32; }
-      }
-      public int SmallInt32 {
-        get { return result.SmallInt32; }
-        set { SetSmallInt32(value); }
-      }
-      public Builder SetSmallInt32(int value) {
-        PrepareBuilder();
-        result.hasSmallInt32 = true;
-        result.smallInt32_ = value;
-        return this;
-      }
-      public Builder ClearSmallInt32() {
-        PrepareBuilder();
-        result.hasSmallInt32 = false;
-        result.smallInt32_ = -2147483647;
-        return this;
-      }
-
-      public bool HasSmallInt64 {
-        get { return result.hasSmallInt64; }
-      }
-      public long SmallInt64 {
-        get { return result.SmallInt64; }
-        set { SetSmallInt64(value); }
-      }
-      public Builder SetSmallInt64(long value) {
-        PrepareBuilder();
-        result.hasSmallInt64 = true;
-        result.smallInt64_ = value;
-        return this;
-      }
-      public Builder ClearSmallInt64() {
-        PrepareBuilder();
-        result.hasSmallInt64 = false;
-        result.smallInt64_ = -9223372036854775807L;
-        return this;
-      }
-
-      public bool HasReallySmallInt32 {
-        get { return result.hasReallySmallInt32; }
-      }
-      public int ReallySmallInt32 {
-        get { return result.ReallySmallInt32; }
-        set { SetReallySmallInt32(value); }
-      }
-      public Builder SetReallySmallInt32(int value) {
-        PrepareBuilder();
-        result.hasReallySmallInt32 = true;
-        result.reallySmallInt32_ = value;
-        return this;
-      }
-      public Builder ClearReallySmallInt32() {
-        PrepareBuilder();
-        result.hasReallySmallInt32 = false;
-        result.reallySmallInt32_ = -2147483648;
-        return this;
-      }
-
-      public bool HasReallySmallInt64 {
-        get { return result.hasReallySmallInt64; }
-      }
-      public long ReallySmallInt64 {
-        get { return result.ReallySmallInt64; }
-        set { SetReallySmallInt64(value); }
-      }
-      public Builder SetReallySmallInt64(long value) {
-        PrepareBuilder();
-        result.hasReallySmallInt64 = true;
-        result.reallySmallInt64_ = value;
-        return this;
-      }
-      public Builder ClearReallySmallInt64() {
-        PrepareBuilder();
-        result.hasReallySmallInt64 = false;
-        result.reallySmallInt64_ = -9223372036854775808L;
-        return this;
-      }
-
-      public bool HasUtf8String {
-        get { return result.hasUtf8String; }
-      }
-      public string Utf8String {
-        get { return result.Utf8String; }
-        set { SetUtf8String(value); }
-      }
-      public Builder SetUtf8String(string value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasUtf8String = true;
-        result.utf8String_ = value;
-        return this;
-      }
-      public Builder ClearUtf8String() {
-        PrepareBuilder();
-        result.hasUtf8String = false;
-        result.utf8String_ = (string) global::Google.ProtocolBuffers.TestProtos.TestExtremeDefaultValues.Descriptor.Fields[7].DefaultValue;
-        return this;
-      }
-
-      public bool HasZeroFloat {
-        get { return result.hasZeroFloat; }
-      }
-      public float ZeroFloat {
-        get { return result.ZeroFloat; }
-        set { SetZeroFloat(value); }
-      }
-      public Builder SetZeroFloat(float value) {
-        PrepareBuilder();
-        result.hasZeroFloat = true;
-        result.zeroFloat_ = value;
-        return this;
-      }
-      public Builder ClearZeroFloat() {
-        PrepareBuilder();
-        result.hasZeroFloat = false;
-        result.zeroFloat_ = 0F;
-        return this;
-      }
-
-      public bool HasOneFloat {
-        get { return result.hasOneFloat; }
-      }
-      public float OneFloat {
-        get { return result.OneFloat; }
-        set { SetOneFloat(value); }
-      }
-      public Builder SetOneFloat(float value) {
-        PrepareBuilder();
-        result.hasOneFloat = true;
-        result.oneFloat_ = value;
-        return this;
-      }
-      public Builder ClearOneFloat() {
-        PrepareBuilder();
-        result.hasOneFloat = false;
-        result.oneFloat_ = 1F;
-        return this;
-      }
-
-      public bool HasSmallFloat {
-        get { return result.hasSmallFloat; }
-      }
-      public float SmallFloat {
-        get { return result.SmallFloat; }
-        set { SetSmallFloat(value); }
-      }
-      public Builder SetSmallFloat(float value) {
-        PrepareBuilder();
-        result.hasSmallFloat = true;
-        result.smallFloat_ = value;
-        return this;
-      }
-      public Builder ClearSmallFloat() {
-        PrepareBuilder();
-        result.hasSmallFloat = false;
-        result.smallFloat_ = 1.5F;
-        return this;
-      }
-
-      public bool HasNegativeOneFloat {
-        get { return result.hasNegativeOneFloat; }
-      }
-      public float NegativeOneFloat {
-        get { return result.NegativeOneFloat; }
-        set { SetNegativeOneFloat(value); }
-      }
-      public Builder SetNegativeOneFloat(float value) {
-        PrepareBuilder();
-        result.hasNegativeOneFloat = true;
-        result.negativeOneFloat_ = value;
-        return this;
-      }
-      public Builder ClearNegativeOneFloat() {
-        PrepareBuilder();
-        result.hasNegativeOneFloat = false;
-        result.negativeOneFloat_ = -1F;
-        return this;
-      }
-
-      public bool HasNegativeFloat {
-        get { return result.hasNegativeFloat; }
-      }
-      public float NegativeFloat {
-        get { return result.NegativeFloat; }
-        set { SetNegativeFloat(value); }
-      }
-      public Builder SetNegativeFloat(float value) {
-        PrepareBuilder();
-        result.hasNegativeFloat = true;
-        result.negativeFloat_ = value;
-        return this;
-      }
-      public Builder ClearNegativeFloat() {
-        PrepareBuilder();
-        result.hasNegativeFloat = false;
-        result.negativeFloat_ = -1.5F;
-        return this;
-      }
-
-      public bool HasLargeFloat {
-        get { return result.hasLargeFloat; }
-      }
-      public float LargeFloat {
-        get { return result.LargeFloat; }
-        set { SetLargeFloat(value); }
-      }
-      public Builder SetLargeFloat(float value) {
-        PrepareBuilder();
-        result.hasLargeFloat = true;
-        result.largeFloat_ = value;
-        return this;
-      }
-      public Builder ClearLargeFloat() {
-        PrepareBuilder();
-        result.hasLargeFloat = false;
-        result.largeFloat_ = 2e+08F;
-        return this;
-      }
-
-      public bool HasSmallNegativeFloat {
-        get { return result.hasSmallNegativeFloat; }
-      }
-      public float SmallNegativeFloat {
-        get { return result.SmallNegativeFloat; }
-        set { SetSmallNegativeFloat(value); }
-      }
-      public Builder SetSmallNegativeFloat(float value) {
-        PrepareBuilder();
-        result.hasSmallNegativeFloat = true;
-        result.smallNegativeFloat_ = value;
-        return this;
-      }
-      public Builder ClearSmallNegativeFloat() {
-        PrepareBuilder();
-        result.hasSmallNegativeFloat = false;
-        result.smallNegativeFloat_ = -8e-28F;
-        return this;
-      }
-
-      public bool HasInfDouble {
-        get { return result.hasInfDouble; }
-      }
-      public double InfDouble {
-        get { return result.InfDouble; }
-        set { SetInfDouble(value); }
-      }
-      public Builder SetInfDouble(double value) {
-        PrepareBuilder();
-        result.hasInfDouble = true;
-        result.infDouble_ = value;
-        return this;
-      }
-      public Builder ClearInfDouble() {
-        PrepareBuilder();
-        result.hasInfDouble = false;
-        result.infDouble_ = double.PositiveInfinity;
-        return this;
-      }
-
-      public bool HasNegInfDouble {
-        get { return result.hasNegInfDouble; }
-      }
-      public double NegInfDouble {
-        get { return result.NegInfDouble; }
-        set { SetNegInfDouble(value); }
-      }
-      public Builder SetNegInfDouble(double value) {
-        PrepareBuilder();
-        result.hasNegInfDouble = true;
-        result.negInfDouble_ = value;
-        return this;
-      }
-      public Builder ClearNegInfDouble() {
-        PrepareBuilder();
-        result.hasNegInfDouble = false;
-        result.negInfDouble_ = double.NegativeInfinity;
-        return this;
-      }
-
-      public bool HasNanDouble {
-        get { return result.hasNanDouble; }
-      }
-      public double NanDouble {
-        get { return result.NanDouble; }
-        set { SetNanDouble(value); }
-      }
-      public Builder SetNanDouble(double value) {
-        PrepareBuilder();
-        result.hasNanDouble = true;
-        result.nanDouble_ = value;
-        return this;
-      }
-      public Builder ClearNanDouble() {
-        PrepareBuilder();
-        result.hasNanDouble = false;
-        result.nanDouble_ = double.NaN;
-        return this;
-      }
-
-      public bool HasInfFloat {
-        get { return result.hasInfFloat; }
-      }
-      public float InfFloat {
-        get { return result.InfFloat; }
-        set { SetInfFloat(value); }
-      }
-      public Builder SetInfFloat(float value) {
-        PrepareBuilder();
-        result.hasInfFloat = true;
-        result.infFloat_ = value;
-        return this;
-      }
-      public Builder ClearInfFloat() {
-        PrepareBuilder();
-        result.hasInfFloat = false;
-        result.infFloat_ = float.PositiveInfinity;
-        return this;
-      }
-
-      public bool HasNegInfFloat {
-        get { return result.hasNegInfFloat; }
-      }
-      public float NegInfFloat {
-        get { return result.NegInfFloat; }
-        set { SetNegInfFloat(value); }
-      }
-      public Builder SetNegInfFloat(float value) {
-        PrepareBuilder();
-        result.hasNegInfFloat = true;
-        result.negInfFloat_ = value;
-        return this;
-      }
-      public Builder ClearNegInfFloat() {
-        PrepareBuilder();
-        result.hasNegInfFloat = false;
-        result.negInfFloat_ = float.NegativeInfinity;
-        return this;
-      }
-
-      public bool HasNanFloat {
-        get { return result.hasNanFloat; }
-      }
-      public float NanFloat {
-        get { return result.NanFloat; }
-        set { SetNanFloat(value); }
-      }
-      public Builder SetNanFloat(float value) {
-        PrepareBuilder();
-        result.hasNanFloat = true;
-        result.nanFloat_ = value;
-        return this;
-      }
-      public Builder ClearNanFloat() {
-        PrepareBuilder();
-        result.hasNanFloat = false;
-        result.nanFloat_ = float.NaN;
-        return this;
-      }
-
-      public bool HasCppTrigraph {
-        get { return result.hasCppTrigraph; }
-      }
-      public string CppTrigraph {
-        get { return result.CppTrigraph; }
-        set { SetCppTrigraph(value); }
-      }
-      public Builder SetCppTrigraph(string value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasCppTrigraph = true;
-        result.cppTrigraph_ = value;
-        return this;
-      }
-      public Builder ClearCppTrigraph() {
-        PrepareBuilder();
-        result.hasCppTrigraph = false;
-        result.cppTrigraph_ = "? ? ?? ?? ??? ??/ ??-";
-        return this;
-      }
-
-      public bool HasStringWithZero {
-        get { return result.hasStringWithZero; }
-      }
-      public string StringWithZero {
-        get { return result.StringWithZero; }
-        set { SetStringWithZero(value); }
-      }
-      public Builder SetStringWithZero(string value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasStringWithZero = true;
-        result.stringWithZero_ = value;
-        return this;
-      }
-      public Builder ClearStringWithZero() {
-        PrepareBuilder();
-        result.hasStringWithZero = false;
-        result.stringWithZero_ = (string) global::Google.ProtocolBuffers.TestProtos.TestExtremeDefaultValues.Descriptor.Fields[22].DefaultValue;
-        return this;
-      }
-
-      public bool HasBytesWithZero {
-        get { return result.hasBytesWithZero; }
-      }
-      public pb::ByteString BytesWithZero {
-        get { return result.BytesWithZero; }
-        set { SetBytesWithZero(value); }
-      }
-      public Builder SetBytesWithZero(pb::ByteString value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasBytesWithZero = true;
-        result.bytesWithZero_ = value;
-        return this;
-      }
-      public Builder ClearBytesWithZero() {
-        PrepareBuilder();
-        result.hasBytesWithZero = false;
-        result.bytesWithZero_ = (pb::ByteString) global::Google.ProtocolBuffers.TestProtos.TestExtremeDefaultValues.Descriptor.Fields[23].DefaultValue;
-        return this;
-      }
-
-      public bool HasStringPieceWithZero {
-        get { return result.hasStringPieceWithZero; }
-      }
-      public string StringPieceWithZero {
-        get { return result.StringPieceWithZero; }
-        set { SetStringPieceWithZero(value); }
-      }
-      public Builder SetStringPieceWithZero(string value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasStringPieceWithZero = true;
-        result.stringPieceWithZero_ = value;
-        return this;
-      }
-      public Builder ClearStringPieceWithZero() {
-        PrepareBuilder();
-        result.hasStringPieceWithZero = false;
-        result.stringPieceWithZero_ = (string) global::Google.ProtocolBuffers.TestProtos.TestExtremeDefaultValues.Descriptor.Fields[24].DefaultValue;
-        return this;
-      }
-
-      public bool HasCordWithZero {
-        get { return result.hasCordWithZero; }
-      }
-      public string CordWithZero {
-        get { return result.CordWithZero; }
-        set { SetCordWithZero(value); }
-      }
-      public Builder SetCordWithZero(string value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasCordWithZero = true;
-        result.cordWithZero_ = value;
-        return this;
-      }
-      public Builder ClearCordWithZero() {
-        PrepareBuilder();
-        result.hasCordWithZero = false;
-        result.cordWithZero_ = (string) global::Google.ProtocolBuffers.TestProtos.TestExtremeDefaultValues.Descriptor.Fields[25].DefaultValue;
-        return this;
-      }
-
-      public bool HasReplacementString {
-        get { return result.hasReplacementString; }
-      }
-      public string ReplacementString {
-        get { return result.ReplacementString; }
-        set { SetReplacementString(value); }
-      }
-      public Builder SetReplacementString(string value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasReplacementString = true;
-        result.replacementString_ = value;
-        return this;
-      }
-      public Builder ClearReplacementString() {
-        PrepareBuilder();
-        result.hasReplacementString = false;
-        result.replacementString_ = "${unknown}";
-        return this;
-      }
-    }
-    static TestExtremeDefaultValues() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class SparseEnumMessage : pb::GeneratedMessage<SparseEnumMessage, SparseEnumMessage.Builder> {
-    private SparseEnumMessage() { }
-    private static readonly SparseEnumMessage defaultInstance = new SparseEnumMessage().MakeReadOnly();
-    private static readonly string[] _sparseEnumMessageFieldNames = new string[] { "sparse_enum" };
-    private static readonly uint[] _sparseEnumMessageFieldTags = new uint[] { 8 };
-    public static SparseEnumMessage DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override SparseEnumMessage DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override SparseEnumMessage ThisMessage {
-      get { return this; }
-    }
-
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_SparseEnumMessage__Descriptor; }
-    }
-
-    protected override pb::FieldAccess.FieldAccessorTable<SparseEnumMessage, SparseEnumMessage.Builder> InternalFieldAccessors {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_SparseEnumMessage__FieldAccessorTable; }
-    }
-
-    public const int SparseEnumFieldNumber = 1;
-    private bool hasSparseEnum;
-    private global::Google.ProtocolBuffers.TestProtos.TestSparseEnum sparseEnum_ = global::Google.ProtocolBuffers.TestProtos.TestSparseEnum.SPARSE_A;
-    public bool HasSparseEnum {
-      get { return hasSparseEnum; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.TestSparseEnum SparseEnum {
-      get { return sparseEnum_; }
-    }
-
-    public override bool IsInitialized {
-      get {
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _sparseEnumMessageFieldNames;
-      if (hasSparseEnum) {
-        output.WriteEnum(1, field_names[0], (int) SparseEnum, SparseEnum);
-      }
-      UnknownFields.WriteTo(output);
-    }
-
-    private int memoizedSerializedSize = -1;
-    public override int SerializedSize {
-      get {
-        int size = memoizedSerializedSize;
-        if (size != -1) return size;
-        return CalcSerializedSize();
-      }
-    }
-
-    private int CalcSerializedSize() {
-      int size = memoizedSerializedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (hasSparseEnum) {
-        size += pb::CodedOutputStream.ComputeEnumSize(1, (int) SparseEnum);
-      }
-      size += UnknownFields.SerializedSize;
-      memoizedSerializedSize = size;
-      return size;
-    }
-    public static SparseEnumMessage ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static SparseEnumMessage ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static SparseEnumMessage ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static SparseEnumMessage ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static SparseEnumMessage ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static SparseEnumMessage ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static SparseEnumMessage ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static SparseEnumMessage ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static SparseEnumMessage ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static SparseEnumMessage ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private SparseEnumMessage MakeReadOnly() {
-      return this;
-    }
-
-    public static Builder CreateBuilder() { return new Builder(); }
-    public override Builder ToBuilder() { return CreateBuilder(this); }
-    public override Builder CreateBuilderForType() { return new Builder(); }
-    public static Builder CreateBuilder(SparseEnumMessage prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilder<SparseEnumMessage, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(SparseEnumMessage cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private SparseEnumMessage result;
-
-      private SparseEnumMessage PrepareBuilder() {
-        if (resultIsReadOnly) {
-          SparseEnumMessage original = result;
-          result = new SparseEnumMessage();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override SparseEnumMessage MessageBeingBuilt {
-        get { return PrepareBuilder(); }
-      }
-
-      public override Builder Clear() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-        return this;
-      }
-
-      public override Builder Clone() {
-        if (resultIsReadOnly) {
-          return new Builder(result);
-        } else {
-          return new Builder().MergeFrom(result);
-        }
-      }
-
-      public override pbd::MessageDescriptor DescriptorForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.SparseEnumMessage.Descriptor; }
-      }
-
-      public override SparseEnumMessage DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.SparseEnumMessage.DefaultInstance; }
-      }
-
-      public override SparseEnumMessage BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is SparseEnumMessage) {
-          return MergeFrom((SparseEnumMessage) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(SparseEnumMessage other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.SparseEnumMessage.DefaultInstance) return this;
-        PrepareBuilder();
-        if (other.HasSparseEnum) {
-          SparseEnum = other.SparseEnum;
-        }
-        this.MergeUnknownFields(other.UnknownFields);
-        return this;
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input) {
-        return MergeFrom(input, pb::ExtensionRegistry.Empty);
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-        PrepareBuilder();
-        pb::UnknownFieldSet.Builder unknownFields = null;
-        uint tag;
-        string field_name;
-        while (input.ReadTag(out tag, out field_name)) {
-          if(tag == 0 && field_name != null) {
-            int field_ordinal = global::System.Array.BinarySearch(_sparseEnumMessageFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _sparseEnumMessageFieldTags[field_ordinal];
-            else {
-              if (unknownFields == null) {
-                unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-              }
-              ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name);
-              continue;
-            }
-          }
-          switch (tag) {
-            case 0: {
-              throw pb::InvalidProtocolBufferException.InvalidTag();
-            }
-            default: {
-              if (pb::WireFormat.IsEndGroupTag(tag)) {
-                if (unknownFields != null) {
-                  this.UnknownFields = unknownFields.Build();
-                }
-                return this;
-              }
-              if (unknownFields == null) {
-                unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-              }
-              ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name);
-              break;
-            }
-            case 8: {
-              object unknown;
-              if(input.ReadEnum(ref result.sparseEnum_, out unknown)) {
-                result.hasSparseEnum = true;
-              } else if(unknown is int) {
-                if (unknownFields == null) {
-                  unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-                }
-                unknownFields.MergeVarintField(1, (ulong)(int)unknown);
-              }
-              break;
-            }
-          }
-        }
-
-        if (unknownFields != null) {
-          this.UnknownFields = unknownFields.Build();
-        }
-        return this;
-      }
-
-
-      public bool HasSparseEnum {
-        get { return result.hasSparseEnum; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.TestSparseEnum SparseEnum {
-        get { return result.SparseEnum; }
-        set { SetSparseEnum(value); }
-      }
-      public Builder SetSparseEnum(global::Google.ProtocolBuffers.TestProtos.TestSparseEnum value) {
-        PrepareBuilder();
-        result.hasSparseEnum = true;
-        result.sparseEnum_ = value;
-        return this;
-      }
-      public Builder ClearSparseEnum() {
-        PrepareBuilder();
-        result.hasSparseEnum = false;
-        result.sparseEnum_ = global::Google.ProtocolBuffers.TestProtos.TestSparseEnum.SPARSE_A;
-        return this;
-      }
-    }
-    static SparseEnumMessage() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class OneString : pb::GeneratedMessage<OneString, OneString.Builder> {
-    private OneString() { }
-    private static readonly OneString defaultInstance = new OneString().MakeReadOnly();
-    private static readonly string[] _oneStringFieldNames = new string[] { "data" };
-    private static readonly uint[] _oneStringFieldTags = new uint[] { 10 };
-    public static OneString DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override OneString DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override OneString ThisMessage {
-      get { return this; }
-    }
-
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_OneString__Descriptor; }
-    }
-
-    protected override pb::FieldAccess.FieldAccessorTable<OneString, OneString.Builder> InternalFieldAccessors {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_OneString__FieldAccessorTable; }
-    }
-
-    public const int DataFieldNumber = 1;
-    private bool hasData;
-    private string data_ = "";
-    public bool HasData {
-      get { return hasData; }
-    }
-    public string Data {
-      get { return data_; }
-    }
-
-    public override bool IsInitialized {
-      get {
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _oneStringFieldNames;
-      if (hasData) {
-        output.WriteString(1, field_names[0], Data);
-      }
-      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 (hasData) {
-        size += pb::CodedOutputStream.ComputeStringSize(1, Data);
-      }
-      size += UnknownFields.SerializedSize;
-      memoizedSerializedSize = size;
-      return size;
-    }
-    public static OneString ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static OneString ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static OneString ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static OneString ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static OneString ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static OneString ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static OneString ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static OneString ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static OneString ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static OneString ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private OneString 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(OneString prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilder<OneString, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(OneString cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private OneString result;
-
-      private OneString PrepareBuilder() {
-        if (resultIsReadOnly) {
-          OneString original = result;
-          result = new OneString();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override OneString 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.OneString.Descriptor; }
-      }
-
-      public override OneString DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.OneString.DefaultInstance; }
-      }
-
-      public override OneString BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is OneString) {
-          return MergeFrom((OneString) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(OneString other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.OneString.DefaultInstance) return this;
-        PrepareBuilder();
-        if (other.HasData) {
-          Data = other.Data;
-        }
-        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(_oneStringFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _oneStringFieldTags[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: {
-              result.hasData = input.ReadString(ref result.data_);
-              break;
-            }
-          }
-        }
-
-        if (unknownFields != null) {
-          this.UnknownFields = unknownFields.Build();
-        }
-        return this;
-      }
-
-
-      public bool HasData {
-        get { return result.hasData; }
-      }
-      public string Data {
-        get { return result.Data; }
-        set { SetData(value); }
-      }
-      public Builder SetData(string value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasData = true;
-        result.data_ = value;
-        return this;
-      }
-      public Builder ClearData() {
-        PrepareBuilder();
-        result.hasData = false;
-        result.data_ = "";
-        return this;
-      }
-    }
-    static OneString() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class MoreString : pb::GeneratedMessage<MoreString, MoreString.Builder> {
-    private MoreString() { }
-    private static readonly MoreString defaultInstance = new MoreString().MakeReadOnly();
-    private static readonly string[] _moreStringFieldNames = new string[] { "data" };
-    private static readonly uint[] _moreStringFieldTags = new uint[] { 10 };
-    public static MoreString DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override MoreString DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override MoreString ThisMessage {
-      get { return this; }
-    }
-
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_MoreString__Descriptor; }
-    }
-
-    protected override pb::FieldAccess.FieldAccessorTable<MoreString, MoreString.Builder> InternalFieldAccessors {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_MoreString__FieldAccessorTable; }
-    }
-
-    public const int DataFieldNumber = 1;
-    private pbc::PopsicleList<string> data_ = new pbc::PopsicleList<string>();
-    public scg::IList<string> DataList {
-      get { return pbc::Lists.AsReadOnly(data_); }
-    }
-    public int DataCount {
-      get { return data_.Count; }
-    }
-    public string GetData(int index) {
-      return data_[index];
-    }
-
-    public override bool IsInitialized {
-      get {
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _moreStringFieldNames;
-      if (data_.Count > 0) {
-        output.WriteStringArray(1, field_names[0], data_);
-      }
-      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;
-        foreach (string element in DataList) {
-          dataSize += pb::CodedOutputStream.ComputeStringSizeNoTag(element);
-        }
-        size += dataSize;
-        size += 1 * data_.Count;
-      }
-      size += UnknownFields.SerializedSize;
-      memoizedSerializedSize = size;
-      return size;
-    }
-    public static MoreString ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static MoreString ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static MoreString ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static MoreString ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static MoreString ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static MoreString ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static MoreString ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static MoreString ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static MoreString ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static MoreString ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private MoreString MakeReadOnly() {
-      data_.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(MoreString prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilder<MoreString, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(MoreString cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private MoreString result;
-
-      private MoreString PrepareBuilder() {
-        if (resultIsReadOnly) {
-          MoreString original = result;
-          result = new MoreString();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override MoreString 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.MoreString.Descriptor; }
-      }
-
-      public override MoreString DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.MoreString.DefaultInstance; }
-      }
-
-      public override MoreString BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is MoreString) {
-          return MergeFrom((MoreString) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(MoreString other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.MoreString.DefaultInstance) return this;
-        PrepareBuilder();
-        if (other.data_.Count != 0) {
-          result.data_.Add(other.data_);
-        }
-        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(_moreStringFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _moreStringFieldTags[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: {
-              input.ReadStringArray(tag, field_name, result.data_);
-              break;
-            }
-          }
-        }
-
-        if (unknownFields != null) {
-          this.UnknownFields = unknownFields.Build();
-        }
-        return this;
-      }
-
-
-      public pbc::IPopsicleList<string> DataList {
-        get { return PrepareBuilder().data_; }
-      }
-      public int DataCount {
-        get { return result.DataCount; }
-      }
-      public string GetData(int index) {
-        return result.GetData(index);
-      }
-      public Builder SetData(int index, string value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.data_[index] = value;
-        return this;
-      }
-      public Builder AddData(string value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.data_.Add(value);
-        return this;
-      }
-      public Builder AddRangeData(scg::IEnumerable<string> values) {
-        PrepareBuilder();
-        result.data_.Add(values);
-        return this;
-      }
-      public Builder ClearData() {
-        PrepareBuilder();
-        result.data_.Clear();
-        return this;
-      }
-    }
-    static MoreString() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class OneBytes : pb::GeneratedMessage<OneBytes, OneBytes.Builder> {
-    private OneBytes() { }
-    private static readonly OneBytes defaultInstance = new OneBytes().MakeReadOnly();
-    private static readonly string[] _oneBytesFieldNames = new string[] { "data" };
-    private static readonly uint[] _oneBytesFieldTags = new uint[] { 10 };
-    public static OneBytes DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override OneBytes DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override OneBytes ThisMessage {
-      get { return this; }
-    }
-
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_OneBytes__Descriptor; }
-    }
-
-    protected override pb::FieldAccess.FieldAccessorTable<OneBytes, OneBytes.Builder> InternalFieldAccessors {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_OneBytes__FieldAccessorTable; }
-    }
-
-    public const int DataFieldNumber = 1;
-    private bool hasData;
-    private pb::ByteString data_ = pb::ByteString.Empty;
-    public bool HasData {
-      get { return hasData; }
-    }
-    public pb::ByteString Data {
-      get { return data_; }
-    }
-
-    public override bool IsInitialized {
-      get {
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _oneBytesFieldNames;
-      if (hasData) {
-        output.WriteBytes(1, field_names[0], Data);
-      }
-      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 (hasData) {
-        size += pb::CodedOutputStream.ComputeBytesSize(1, Data);
-      }
-      size += UnknownFields.SerializedSize;
-      memoizedSerializedSize = size;
-      return size;
-    }
-    public static OneBytes ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static OneBytes ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static OneBytes ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static OneBytes ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static OneBytes ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static OneBytes ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static OneBytes ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static OneBytes ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static OneBytes ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static OneBytes ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private OneBytes 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(OneBytes prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilder<OneBytes, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(OneBytes cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private OneBytes result;
-
-      private OneBytes PrepareBuilder() {
-        if (resultIsReadOnly) {
-          OneBytes original = result;
-          result = new OneBytes();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override OneBytes 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.OneBytes.Descriptor; }
-      }
-
-      public override OneBytes DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.OneBytes.DefaultInstance; }
-      }
-
-      public override OneBytes BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is OneBytes) {
-          return MergeFrom((OneBytes) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(OneBytes other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.OneBytes.DefaultInstance) return this;
-        PrepareBuilder();
-        if (other.HasData) {
-          Data = other.Data;
-        }
-        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(_oneBytesFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _oneBytesFieldTags[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: {
-              result.hasData = input.ReadBytes(ref result.data_);
-              break;
-            }
-          }
-        }
-
-        if (unknownFields != null) {
-          this.UnknownFields = unknownFields.Build();
-        }
-        return this;
-      }
-
-
-      public bool HasData {
-        get { return result.hasData; }
-      }
-      public pb::ByteString Data {
-        get { return result.Data; }
-        set { SetData(value); }
-      }
-      public Builder SetData(pb::ByteString value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasData = true;
-        result.data_ = value;
-        return this;
-      }
-      public Builder ClearData() {
-        PrepareBuilder();
-        result.hasData = false;
-        result.data_ = pb::ByteString.Empty;
-        return this;
-      }
-    }
-    static OneBytes() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class MoreBytes : pb::GeneratedMessage<MoreBytes, MoreBytes.Builder> {
-    private MoreBytes() { }
-    private static readonly MoreBytes defaultInstance = new MoreBytes().MakeReadOnly();
-    private static readonly string[] _moreBytesFieldNames = new string[] { "data" };
-    private static readonly uint[] _moreBytesFieldTags = new uint[] { 10 };
-    public static MoreBytes DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override MoreBytes DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override MoreBytes ThisMessage {
-      get { return this; }
-    }
-
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_MoreBytes__Descriptor; }
-    }
-
-    protected override pb::FieldAccess.FieldAccessorTable<MoreBytes, MoreBytes.Builder> InternalFieldAccessors {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_MoreBytes__FieldAccessorTable; }
-    }
-
-    public const int DataFieldNumber = 1;
-    private pbc::PopsicleList<pb::ByteString> data_ = new pbc::PopsicleList<pb::ByteString>();
-    public scg::IList<pb::ByteString> DataList {
-      get { return pbc::Lists.AsReadOnly(data_); }
-    }
-    public int DataCount {
-      get { return data_.Count; }
-    }
-    public pb::ByteString GetData(int index) {
-      return data_[index];
-    }
-
-    public override bool IsInitialized {
-      get {
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _moreBytesFieldNames;
-      if (data_.Count > 0) {
-        output.WriteBytesArray(1, field_names[0], data_);
-      }
-      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;
-        foreach (pb::ByteString element in DataList) {
-          dataSize += pb::CodedOutputStream.ComputeBytesSizeNoTag(element);
-        }
-        size += dataSize;
-        size += 1 * data_.Count;
-      }
-      size += UnknownFields.SerializedSize;
-      memoizedSerializedSize = size;
-      return size;
-    }
-    public static MoreBytes ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static MoreBytes ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static MoreBytes ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static MoreBytes ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static MoreBytes ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static MoreBytes ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static MoreBytes ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static MoreBytes ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static MoreBytes ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static MoreBytes ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private MoreBytes MakeReadOnly() {
-      data_.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(MoreBytes prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilder<MoreBytes, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(MoreBytes cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private MoreBytes result;
-
-      private MoreBytes PrepareBuilder() {
-        if (resultIsReadOnly) {
-          MoreBytes original = result;
-          result = new MoreBytes();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override MoreBytes 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.MoreBytes.Descriptor; }
-      }
-
-      public override MoreBytes DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.MoreBytes.DefaultInstance; }
-      }
-
-      public override MoreBytes BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is MoreBytes) {
-          return MergeFrom((MoreBytes) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(MoreBytes other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.MoreBytes.DefaultInstance) return this;
-        PrepareBuilder();
-        if (other.data_.Count != 0) {
-          result.data_.Add(other.data_);
-        }
-        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(_moreBytesFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _moreBytesFieldTags[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: {
-              input.ReadBytesArray(tag, field_name, result.data_);
-              break;
-            }
-          }
-        }
-
-        if (unknownFields != null) {
-          this.UnknownFields = unknownFields.Build();
-        }
-        return this;
-      }
-
-
-      public pbc::IPopsicleList<pb::ByteString> DataList {
-        get { return PrepareBuilder().data_; }
-      }
-      public int DataCount {
-        get { return result.DataCount; }
-      }
-      public pb::ByteString GetData(int index) {
-        return result.GetData(index);
-      }
-      public Builder SetData(int index, pb::ByteString value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.data_[index] = value;
-        return this;
-      }
-      public Builder AddData(pb::ByteString value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.data_.Add(value);
-        return this;
-      }
-      public Builder AddRangeData(scg::IEnumerable<pb::ByteString> values) {
-        PrepareBuilder();
-        result.data_.Add(values);
-        return this;
-      }
-      public Builder ClearData() {
-        PrepareBuilder();
-        result.data_.Clear();
-        return this;
-      }
-    }
-    static MoreBytes() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class Int32Message : pb::GeneratedMessage<Int32Message, Int32Message.Builder> {
-    private Int32Message() { }
-    private static readonly Int32Message defaultInstance = new Int32Message().MakeReadOnly();
-    private static readonly string[] _int32MessageFieldNames = new string[] { "data" };
-    private static readonly uint[] _int32MessageFieldTags = new uint[] { 8 };
-    public static Int32Message DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override Int32Message DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override Int32Message ThisMessage {
-      get { return this; }
-    }
-
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_Int32Message__Descriptor; }
-    }
-
-    protected override pb::FieldAccess.FieldAccessorTable<Int32Message, Int32Message.Builder> InternalFieldAccessors {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_Int32Message__FieldAccessorTable; }
-    }
-
-    public const int DataFieldNumber = 1;
-    private bool hasData;
-    private int data_;
-    public bool HasData {
-      get { return hasData; }
-    }
-    public int Data {
-      get { return data_; }
-    }
-
-    public override bool IsInitialized {
-      get {
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _int32MessageFieldNames;
-      if (hasData) {
-        output.WriteInt32(1, field_names[0], Data);
-      }
-      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 (hasData) {
-        size += pb::CodedOutputStream.ComputeInt32Size(1, Data);
-      }
-      size += UnknownFields.SerializedSize;
-      memoizedSerializedSize = size;
-      return size;
-    }
-    public static Int32Message ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static Int32Message ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static Int32Message ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static Int32Message ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static Int32Message ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static Int32Message ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static Int32Message ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static Int32Message ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static Int32Message ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static Int32Message ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private Int32Message 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(Int32Message prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilder<Int32Message, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(Int32Message cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private Int32Message result;
-
-      private Int32Message PrepareBuilder() {
-        if (resultIsReadOnly) {
-          Int32Message original = result;
-          result = new Int32Message();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override Int32Message 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.Int32Message.Descriptor; }
-      }
-
-      public override Int32Message DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.Int32Message.DefaultInstance; }
-      }
-
-      public override Int32Message BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is Int32Message) {
-          return MergeFrom((Int32Message) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(Int32Message other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.Int32Message.DefaultInstance) return this;
-        PrepareBuilder();
-        if (other.HasData) {
-          Data = other.Data;
-        }
-        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(_int32MessageFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _int32MessageFieldTags[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.hasData = input.ReadInt32(ref result.data_);
-              break;
-            }
-          }
-        }
-
-        if (unknownFields != null) {
-          this.UnknownFields = unknownFields.Build();
-        }
-        return this;
-      }
-
-
-      public bool HasData {
-        get { return result.hasData; }
-      }
-      public int Data {
-        get { return result.Data; }
-        set { SetData(value); }
-      }
-      public Builder SetData(int value) {
-        PrepareBuilder();
-        result.hasData = true;
-        result.data_ = value;
-        return this;
-      }
-      public Builder ClearData() {
-        PrepareBuilder();
-        result.hasData = false;
-        result.data_ = 0;
-        return this;
-      }
-    }
-    static Int32Message() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class Uint32Message : pb::GeneratedMessage<Uint32Message, Uint32Message.Builder> {
-    private Uint32Message() { }
-    private static readonly Uint32Message defaultInstance = new Uint32Message().MakeReadOnly();
-    private static readonly string[] _uint32MessageFieldNames = new string[] { "data" };
-    private static readonly uint[] _uint32MessageFieldTags = new uint[] { 8 };
-    public static Uint32Message DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override Uint32Message DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override Uint32Message ThisMessage {
-      get { return this; }
-    }
-
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_Uint32Message__Descriptor; }
-    }
-
-    protected override pb::FieldAccess.FieldAccessorTable<Uint32Message, Uint32Message.Builder> InternalFieldAccessors {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_Uint32Message__FieldAccessorTable; }
-    }
-
-    public const int DataFieldNumber = 1;
-    private bool hasData;
-    private uint data_;
-    public bool HasData {
-      get { return hasData; }
-    }
-    public uint Data {
-      get { return data_; }
-    }
-
-    public override bool IsInitialized {
-      get {
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _uint32MessageFieldNames;
-      if (hasData) {
-        output.WriteUInt32(1, field_names[0], Data);
-      }
-      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 (hasData) {
-        size += pb::CodedOutputStream.ComputeUInt32Size(1, Data);
-      }
-      size += UnknownFields.SerializedSize;
-      memoizedSerializedSize = size;
-      return size;
-    }
-    public static Uint32Message ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static Uint32Message ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static Uint32Message ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static Uint32Message ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static Uint32Message ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static Uint32Message ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static Uint32Message ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static Uint32Message ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static Uint32Message ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static Uint32Message ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private Uint32Message 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(Uint32Message prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilder<Uint32Message, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(Uint32Message cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private Uint32Message result;
-
-      private Uint32Message PrepareBuilder() {
-        if (resultIsReadOnly) {
-          Uint32Message original = result;
-          result = new Uint32Message();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override Uint32Message 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.Uint32Message.Descriptor; }
-      }
-
-      public override Uint32Message DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.Uint32Message.DefaultInstance; }
-      }
-
-      public override Uint32Message BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is Uint32Message) {
-          return MergeFrom((Uint32Message) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(Uint32Message other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.Uint32Message.DefaultInstance) return this;
-        PrepareBuilder();
-        if (other.HasData) {
-          Data = other.Data;
-        }
-        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(_uint32MessageFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _uint32MessageFieldTags[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.hasData = input.ReadUInt32(ref result.data_);
-              break;
-            }
-          }
-        }
-
-        if (unknownFields != null) {
-          this.UnknownFields = unknownFields.Build();
-        }
-        return this;
-      }
-
-
-      public bool HasData {
-        get { return result.hasData; }
-      }
-      public uint Data {
-        get { return result.Data; }
-        set { SetData(value); }
-      }
-      public Builder SetData(uint value) {
-        PrepareBuilder();
-        result.hasData = true;
-        result.data_ = value;
-        return this;
-      }
-      public Builder ClearData() {
-        PrepareBuilder();
-        result.hasData = false;
-        result.data_ = 0;
-        return this;
-      }
-    }
-    static Uint32Message() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class Int64Message : pb::GeneratedMessage<Int64Message, Int64Message.Builder> {
-    private Int64Message() { }
-    private static readonly Int64Message defaultInstance = new Int64Message().MakeReadOnly();
-    private static readonly string[] _int64MessageFieldNames = new string[] { "data" };
-    private static readonly uint[] _int64MessageFieldTags = new uint[] { 8 };
-    public static Int64Message DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override Int64Message DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override Int64Message ThisMessage {
-      get { return this; }
-    }
-
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_Int64Message__Descriptor; }
-    }
-
-    protected override pb::FieldAccess.FieldAccessorTable<Int64Message, Int64Message.Builder> InternalFieldAccessors {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_Int64Message__FieldAccessorTable; }
-    }
-
-    public const int DataFieldNumber = 1;
-    private bool hasData;
-    private long data_;
-    public bool HasData {
-      get { return hasData; }
-    }
-    public long Data {
-      get { return data_; }
-    }
-
-    public override bool IsInitialized {
-      get {
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _int64MessageFieldNames;
-      if (hasData) {
-        output.WriteInt64(1, field_names[0], Data);
-      }
-      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 (hasData) {
-        size += pb::CodedOutputStream.ComputeInt64Size(1, Data);
-      }
-      size += UnknownFields.SerializedSize;
-      memoizedSerializedSize = size;
-      return size;
-    }
-    public static Int64Message ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static Int64Message ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static Int64Message ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static Int64Message ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static Int64Message ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static Int64Message ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static Int64Message ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static Int64Message ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static Int64Message ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static Int64Message ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private Int64Message 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(Int64Message prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilder<Int64Message, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(Int64Message cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private Int64Message result;
-
-      private Int64Message PrepareBuilder() {
-        if (resultIsReadOnly) {
-          Int64Message original = result;
-          result = new Int64Message();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override Int64Message 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.Int64Message.Descriptor; }
-      }
-
-      public override Int64Message DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.Int64Message.DefaultInstance; }
-      }
-
-      public override Int64Message BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is Int64Message) {
-          return MergeFrom((Int64Message) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(Int64Message other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.Int64Message.DefaultInstance) return this;
-        PrepareBuilder();
-        if (other.HasData) {
-          Data = other.Data;
-        }
-        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(_int64MessageFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _int64MessageFieldTags[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.hasData = input.ReadInt64(ref result.data_);
-              break;
-            }
-          }
-        }
-
-        if (unknownFields != null) {
-          this.UnknownFields = unknownFields.Build();
-        }
-        return this;
-      }
-
-
-      public bool HasData {
-        get { return result.hasData; }
-      }
-      public long Data {
-        get { return result.Data; }
-        set { SetData(value); }
-      }
-      public Builder SetData(long value) {
-        PrepareBuilder();
-        result.hasData = true;
-        result.data_ = value;
-        return this;
-      }
-      public Builder ClearData() {
-        PrepareBuilder();
-        result.hasData = false;
-        result.data_ = 0L;
-        return this;
-      }
-    }
-    static Int64Message() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class Uint64Message : pb::GeneratedMessage<Uint64Message, Uint64Message.Builder> {
-    private Uint64Message() { }
-    private static readonly Uint64Message defaultInstance = new Uint64Message().MakeReadOnly();
-    private static readonly string[] _uint64MessageFieldNames = new string[] { "data" };
-    private static readonly uint[] _uint64MessageFieldTags = new uint[] { 8 };
-    public static Uint64Message DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override Uint64Message DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override Uint64Message ThisMessage {
-      get { return this; }
-    }
-
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_Uint64Message__Descriptor; }
-    }
-
-    protected override pb::FieldAccess.FieldAccessorTable<Uint64Message, Uint64Message.Builder> InternalFieldAccessors {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_Uint64Message__FieldAccessorTable; }
-    }
-
-    public const int DataFieldNumber = 1;
-    private bool hasData;
-    private ulong data_;
-    public bool HasData {
-      get { return hasData; }
-    }
-    public ulong Data {
-      get { return data_; }
-    }
-
-    public override bool IsInitialized {
-      get {
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _uint64MessageFieldNames;
-      if (hasData) {
-        output.WriteUInt64(1, field_names[0], Data);
-      }
-      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 (hasData) {
-        size += pb::CodedOutputStream.ComputeUInt64Size(1, Data);
-      }
-      size += UnknownFields.SerializedSize;
-      memoizedSerializedSize = size;
-      return size;
-    }
-    public static Uint64Message ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static Uint64Message ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static Uint64Message ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static Uint64Message ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static Uint64Message ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static Uint64Message ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static Uint64Message ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static Uint64Message ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static Uint64Message ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static Uint64Message ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private Uint64Message 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(Uint64Message prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilder<Uint64Message, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(Uint64Message cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private Uint64Message result;
-
-      private Uint64Message PrepareBuilder() {
-        if (resultIsReadOnly) {
-          Uint64Message original = result;
-          result = new Uint64Message();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override Uint64Message 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.Uint64Message.Descriptor; }
-      }
-
-      public override Uint64Message DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.Uint64Message.DefaultInstance; }
-      }
-
-      public override Uint64Message BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is Uint64Message) {
-          return MergeFrom((Uint64Message) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(Uint64Message other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.Uint64Message.DefaultInstance) return this;
-        PrepareBuilder();
-        if (other.HasData) {
-          Data = other.Data;
-        }
-        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(_uint64MessageFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _uint64MessageFieldTags[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.hasData = input.ReadUInt64(ref result.data_);
-              break;
-            }
-          }
-        }
-
-        if (unknownFields != null) {
-          this.UnknownFields = unknownFields.Build();
-        }
-        return this;
-      }
-
-
-      public bool HasData {
-        get { return result.hasData; }
-      }
-      public ulong Data {
-        get { return result.Data; }
-        set { SetData(value); }
-      }
-      public Builder SetData(ulong value) {
-        PrepareBuilder();
-        result.hasData = true;
-        result.data_ = value;
-        return this;
-      }
-      public Builder ClearData() {
-        PrepareBuilder();
-        result.hasData = false;
-        result.data_ = 0UL;
-        return this;
-      }
-    }
-    static Uint64Message() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class BoolMessage : pb::GeneratedMessage<BoolMessage, BoolMessage.Builder> {
-    private BoolMessage() { }
-    private static readonly BoolMessage defaultInstance = new BoolMessage().MakeReadOnly();
-    private static readonly string[] _boolMessageFieldNames = new string[] { "data" };
-    private static readonly uint[] _boolMessageFieldTags = new uint[] { 8 };
-    public static BoolMessage DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override BoolMessage DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override BoolMessage ThisMessage {
-      get { return this; }
-    }
-
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_BoolMessage__Descriptor; }
-    }
-
-    protected override pb::FieldAccess.FieldAccessorTable<BoolMessage, BoolMessage.Builder> InternalFieldAccessors {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_BoolMessage__FieldAccessorTable; }
-    }
-
-    public const int DataFieldNumber = 1;
-    private bool hasData;
-    private bool data_;
-    public bool HasData {
-      get { return hasData; }
-    }
-    public bool Data {
-      get { return data_; }
-    }
-
-    public override bool IsInitialized {
-      get {
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _boolMessageFieldNames;
-      if (hasData) {
-        output.WriteBool(1, field_names[0], Data);
-      }
-      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 (hasData) {
-        size += pb::CodedOutputStream.ComputeBoolSize(1, Data);
-      }
-      size += UnknownFields.SerializedSize;
-      memoizedSerializedSize = size;
-      return size;
-    }
-    public static BoolMessage ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static BoolMessage ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static BoolMessage ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static BoolMessage ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static BoolMessage ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static BoolMessage ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static BoolMessage ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static BoolMessage ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static BoolMessage ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static BoolMessage ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private BoolMessage 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(BoolMessage prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilder<BoolMessage, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(BoolMessage cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private BoolMessage result;
-
-      private BoolMessage PrepareBuilder() {
-        if (resultIsReadOnly) {
-          BoolMessage original = result;
-          result = new BoolMessage();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override BoolMessage 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.BoolMessage.Descriptor; }
-      }
-
-      public override BoolMessage DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.BoolMessage.DefaultInstance; }
-      }
-
-      public override BoolMessage BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is BoolMessage) {
-          return MergeFrom((BoolMessage) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(BoolMessage other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.BoolMessage.DefaultInstance) return this;
-        PrepareBuilder();
-        if (other.HasData) {
-          Data = other.Data;
-        }
-        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(_boolMessageFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _boolMessageFieldTags[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.hasData = input.ReadBool(ref result.data_);
-              break;
-            }
-          }
-        }
-
-        if (unknownFields != null) {
-          this.UnknownFields = unknownFields.Build();
-        }
-        return this;
-      }
-
-
-      public bool HasData {
-        get { return result.hasData; }
-      }
-      public bool Data {
-        get { return result.Data; }
-        set { SetData(value); }
-      }
-      public Builder SetData(bool value) {
-        PrepareBuilder();
-        result.hasData = true;
-        result.data_ = value;
-        return this;
-      }
-      public Builder ClearData() {
-        PrepareBuilder();
-        result.hasData = false;
-        result.data_ = false;
-        return this;
-      }
-    }
-    static BoolMessage() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class TestOneof : pb::GeneratedMessage<TestOneof, TestOneof.Builder> {
-    private TestOneof() { }
-    private static readonly TestOneof defaultInstance = new TestOneof().MakeReadOnly();
-    private static readonly string[] _testOneofFieldNames = new string[] { "foo_int", "foo_message", "foo_string", "foogroup" };
-    private static readonly uint[] _testOneofFieldTags = new uint[] { 8, 26, 18, 35 };
-    public static TestOneof DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override TestOneof DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override TestOneof ThisMessage {
-      get { return this; }
-    }
-
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestOneof__Descriptor; }
-    }
-
-    protected override pb::FieldAccess.FieldAccessorTable<TestOneof, TestOneof.Builder> InternalFieldAccessors {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestOneof__FieldAccessorTable; }
-    }
-
-    #region Nested types
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public static partial class Types {
-      [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-      public sealed partial class FooGroup : pb::GeneratedMessage<FooGroup, FooGroup.Builder> {
-        private FooGroup() { }
-        private static readonly FooGroup defaultInstance = new FooGroup().MakeReadOnly();
-        private static readonly string[] _fooGroupFieldNames = new string[] { "a", "b" };
-        private static readonly uint[] _fooGroupFieldTags = new uint[] { 40, 50 };
-        public static FooGroup DefaultInstance {
-          get { return defaultInstance; }
-        }
-
-        public override FooGroup DefaultInstanceForType {
-          get { return DefaultInstance; }
-        }
-
-        protected override FooGroup ThisMessage {
-          get { return this; }
-        }
-
-        public static pbd::MessageDescriptor Descriptor {
-          get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestOneof_FooGroup__Descriptor; }
-        }
-
-        protected override pb::FieldAccess.FieldAccessorTable<FooGroup, FooGroup.Builder> InternalFieldAccessors {
-          get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestOneof_FooGroup__FieldAccessorTable; }
-        }
-
-        public const int AFieldNumber = 5;
-        private bool hasA;
-        private int a_;
-        public bool HasA {
-          get { return hasA; }
-        }
-        public int A {
-          get { return a_; }
-        }
-
-        public const int BFieldNumber = 6;
-        private bool hasB;
-        private string b_ = "";
-        public bool HasB {
-          get { return hasB; }
-        }
-        public string B {
-          get { return b_; }
-        }
-
-        public override bool IsInitialized {
-          get {
-            return true;
-          }
-        }
-
-        public override void WriteTo(pb::ICodedOutputStream output) {
-          CalcSerializedSize();
-          string[] field_names = _fooGroupFieldNames;
-          if (hasA) {
-            output.WriteInt32(5, field_names[0], A);
-          }
-          if (hasB) {
-            output.WriteString(6, field_names[1], 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 (hasA) {
-            size += pb::CodedOutputStream.ComputeInt32Size(5, A);
-          }
-          if (hasB) {
-            size += pb::CodedOutputStream.ComputeStringSize(6, B);
-          }
-          size += UnknownFields.SerializedSize;
-          memoizedSerializedSize = size;
-          return size;
-        }
-        public static FooGroup ParseFrom(pb::ByteString data) {
-          return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-        }
-        public static FooGroup ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-        }
-        public static FooGroup ParseFrom(byte[] data) {
-          return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-        }
-        public static FooGroup ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-        }
-        public static FooGroup ParseFrom(global::System.IO.Stream input) {
-          return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-        }
-        public static FooGroup ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-        }
-        public static FooGroup ParseDelimitedFrom(global::System.IO.Stream input) {
-          return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-        }
-        public static FooGroup ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-          return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-        }
-        public static FooGroup ParseFrom(pb::ICodedInputStream input) {
-          return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-        }
-        public static FooGroup ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-        }
-        private FooGroup 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(FooGroup prototype) {
-          return new Builder(prototype);
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-        public sealed partial class Builder : pb::GeneratedBuilder<FooGroup, Builder> {
-          protected override Builder ThisBuilder {
-            get { return this; }
-          }
-          public Builder() {
-            result = DefaultInstance;
-            resultIsReadOnly = true;
-          }
-          internal Builder(FooGroup cloneFrom) {
-            result = cloneFrom;
-            resultIsReadOnly = true;
-          }
-
-          private bool resultIsReadOnly;
-          private FooGroup result;
-
-          private FooGroup PrepareBuilder() {
-            if (resultIsReadOnly) {
-              FooGroup original = result;
-              result = new FooGroup();
-              resultIsReadOnly = false;
-              MergeFrom(original);
-            }
-            return result;
-          }
-
-          public override bool IsInitialized {
-            get { return result.IsInitialized; }
-          }
-
-          protected override FooGroup 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.TestOneof.Types.FooGroup.Descriptor; }
-          }
-
-          public override FooGroup DefaultInstanceForType {
-            get { return global::Google.ProtocolBuffers.TestProtos.TestOneof.Types.FooGroup.DefaultInstance; }
-          }
-
-          public override FooGroup BuildPartial() {
-            if (resultIsReadOnly) {
-              return result;
-            }
-            resultIsReadOnly = true;
-            return result.MakeReadOnly();
-          }
-
-          public override Builder MergeFrom(pb::IMessage other) {
-            if (other is FooGroup) {
-              return MergeFrom((FooGroup) other);
-            } else {
-              base.MergeFrom(other);
-              return this;
-            }
-          }
-
-          public override Builder MergeFrom(FooGroup other) {
-            if (other == global::Google.ProtocolBuffers.TestProtos.TestOneof.Types.FooGroup.DefaultInstance) return this;
-            PrepareBuilder();
-            if (other.HasA) {
-              A = other.A;
-            }
-            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(_fooGroupFieldNames, field_name, global::System.StringComparer.Ordinal);
-                if(field_ordinal >= 0)
-                  tag = _fooGroupFieldTags[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 40: {
-                  result.hasA = input.ReadInt32(ref result.a_);
-                  break;
-                }
-                case 50: {
-                  result.hasB = input.ReadString(ref result.b_);
-                  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;
-          }
-
-          public bool HasB {
-            get { return result.hasB; }
-          }
-          public string B {
-            get { return result.B; }
-            set { SetB(value); }
-          }
-          public Builder SetB(string value) {
-            pb::ThrowHelper.ThrowIfNull(value, "value");
-            PrepareBuilder();
-            result.hasB = true;
-            result.b_ = value;
-            return this;
-          }
-          public Builder ClearB() {
-            PrepareBuilder();
-            result.hasB = false;
-            result.b_ = "";
-            return this;
-          }
-        }
-        static FooGroup() {
-          object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor, null);
-        }
-      }
-
-    }
-    #endregion
-
-    private object foo_;
-    public enum FooOneofCase {
-      FooInt = 1,
-      FooString = 2,
-      FooMessage = 3,
-      FooGroup = 4,
-      None = 0,
-    }
-    private FooOneofCase fooCase_ = FooOneofCase.None;
-    public FooOneofCase FooCase {
-      get { return fooCase_; }
-    }
-
-    public const int FooIntFieldNumber = 1;
-    public bool HasFooInt {
-      get { return fooCase_ == FooOneofCase.FooInt; }
-    }
-    public int FooInt {
-      get { return fooCase_ == FooOneofCase.FooInt ? (int) foo_ : 0; }
-    }
-
-    public const int FooStringFieldNumber = 2;
-    public bool HasFooString {
-      get { return fooCase_ == FooOneofCase.FooString; }
-    }
-    public string FooString {
-      get { return fooCase_ == FooOneofCase.FooString ? (string) foo_ : ""; }
-    }
-
-    public const int FooMessageFieldNumber = 3;
-    public bool HasFooMessage {
-      get { return fooCase_ == FooOneofCase.FooMessage; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.TestAllTypes FooMessage {
-      get { return fooCase_ == FooOneofCase.FooMessage ? (global::Google.ProtocolBuffers.TestProtos.TestAllTypes) foo_ : global::Google.ProtocolBuffers.TestProtos.TestAllTypes.DefaultInstance; }
-    }
-
-    public const int FooGroupFieldNumber = 4;
-    public bool HasFooGroup {
-      get { return fooCase_ == FooOneofCase.FooGroup; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.TestOneof.Types.FooGroup FooGroup {
-      get { return fooCase_ == FooOneofCase.FooGroup ? (global::Google.ProtocolBuffers.TestProtos.TestOneof.Types.FooGroup) foo_ : global::Google.ProtocolBuffers.TestProtos.TestOneof.Types.FooGroup.DefaultInstance; }
-    }
-
-    public override bool IsInitialized {
-      get {
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _testOneofFieldNames;
-      if (fooCase_ == FooOneofCase.FooInt) {
-        output.WriteInt32(1, field_names[0], FooInt);
-      }
-      if (fooCase_ == FooOneofCase.FooString) {
-        output.WriteString(2, field_names[2], FooString);
-      }
-      if (fooCase_ == FooOneofCase.FooMessage) {
-        output.WriteMessage(3, field_names[1], FooMessage);
-      }
-      if (fooCase_ == FooOneofCase.FooGroup) {
-        output.WriteGroup(4, field_names[3], FooGroup);
-      }
-      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 (fooCase_ == FooOneofCase.FooInt) {
-        size += pb::CodedOutputStream.ComputeInt32Size(1, FooInt);
-      }
-      if (fooCase_ == FooOneofCase.FooString) {
-        size += pb::CodedOutputStream.ComputeStringSize(2, FooString);
-      }
-      if (fooCase_ == FooOneofCase.FooMessage) {
-        size += pb::CodedOutputStream.ComputeMessageSize(3, FooMessage);
-      }
-      if (fooCase_ == FooOneofCase.FooGroup) {
-        size += pb::CodedOutputStream.ComputeGroupSize(4, FooGroup);
-      }
-      size += UnknownFields.SerializedSize;
-      memoizedSerializedSize = size;
-      return size;
-    }
-    public static TestOneof ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestOneof ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestOneof ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestOneof ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestOneof ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestOneof ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static TestOneof ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static TestOneof ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static TestOneof ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestOneof ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private TestOneof 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(TestOneof prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilder<TestOneof, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(TestOneof cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private TestOneof result;
-
-      private TestOneof PrepareBuilder() {
-        if (resultIsReadOnly) {
-          TestOneof original = result;
-          result = new TestOneof();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override TestOneof 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.TestOneof.Descriptor; }
-      }
-
-      public override TestOneof DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.TestOneof.DefaultInstance; }
-      }
-
-      public override TestOneof BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is TestOneof) {
-          return MergeFrom((TestOneof) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(TestOneof other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.TestOneof.DefaultInstance) return this;
-        PrepareBuilder();
-        switch (other.FooCase) {
-          case FooOneofCase.FooInt: {
-            SetFooInt(other.FooInt);
-            break;
-          }
-          case FooOneofCase.FooString: {
-            SetFooString(other.FooString);
-            break;
-          }
-          case FooOneofCase.FooMessage: {
-            MergeFooMessage(other.FooMessage);
-            break;
-          }
-          case FooOneofCase.FooGroup: {
-            MergeFooGroup(other.FooGroup);
-            break;
-          }
-          case FooOneofCase.None: { break; }
-        }
-        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(_testOneofFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _testOneofFieldTags[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: {
-              int value = 0;
-              if (input.ReadInt32(ref value)) {
-                result.foo_ = value;
-                result.fooCase_ = FooOneofCase.FooInt;
-              }
-              break;
-            }
-            case 18: {
-              string value = "";
-              if (input.ReadString(ref value)) {
-                result.foo_ = value;
-                result.fooCase_ = FooOneofCase.FooString;
-              }
-              break;
-            }
-            case 26: {
-              global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Builder subBuilder = global::Google.ProtocolBuffers.TestProtos.TestAllTypes.CreateBuilder();
-              if (result.fooCase_ == FooOneofCase.FooMessage) {
-                subBuilder.MergeFrom(FooMessage);
-              }
-              input.ReadMessage(subBuilder, extensionRegistry);
-              result.foo_ = subBuilder.BuildPartial();
-              result.fooCase_ = FooOneofCase.FooMessage;
-              break;
-            }
-            case 35: {
-              global::Google.ProtocolBuffers.TestProtos.TestOneof.Types.FooGroup.Builder subBuilder = global::Google.ProtocolBuffers.TestProtos.TestOneof.Types.FooGroup.CreateBuilder();
-              if (result.fooCase_ == FooOneofCase.FooGroup) {
-                subBuilder.MergeFrom(FooGroup);
-              }
-              input.ReadGroup(4, subBuilder, extensionRegistry);
-              result.foo_ = subBuilder.BuildPartial();
-              result.fooCase_ = FooOneofCase.FooGroup;
-              break;
-            }
-          }
-        }
-
-        if (unknownFields != null) {
-          this.UnknownFields = unknownFields.Build();
-        }
-        return this;
-      }
-
-
-      public bool HasFooInt {
-        get { return result.fooCase_ == FooOneofCase.FooInt; }
-      }
-      public int FooInt {
-        get { return result.fooCase_ == FooOneofCase.FooInt ? (int) result.foo_ : 0; }
-        set { SetFooInt(value); }
-      }
-      public Builder SetFooInt(int value) {
-        PrepareBuilder();
-        result.foo_ = value;
-        result.fooCase_ = FooOneofCase.FooInt;
-        return this;
-      }
-      public Builder ClearFooInt() {
-        PrepareBuilder();
-        if (result.fooCase_ == FooOneofCase.FooInt) {
-          result.fooCase_ = FooOneofCase.None;
-        }
-        return this;
-      }
-
-      public bool HasFooString {
-        get { return result.fooCase_ == FooOneofCase.FooString; }
-      }
-      public string FooString {
-        get { return result.fooCase_ == FooOneofCase.FooString ? (string) result.foo_ : ""; }
-        set { SetFooString(value); }
-      }
-      public Builder SetFooString(string value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.foo_ = value;
-        result.fooCase_ = FooOneofCase.FooString;
-        return this;
-      }
-      public Builder ClearFooString() {
-        PrepareBuilder();
-        if (result.fooCase_ == FooOneofCase.FooString) {
-          result.fooCase_ = FooOneofCase.None;
-        }
-        return this;
-      }
-
-      public bool HasFooMessage {
-        get { return result.fooCase_ == FooOneofCase.FooMessage; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.TestAllTypes FooMessage {
-        get { return result.fooCase_ == FooOneofCase.FooMessage ? (global::Google.ProtocolBuffers.TestProtos.TestAllTypes) result.foo_ : global::Google.ProtocolBuffers.TestProtos.TestAllTypes.DefaultInstance; }
-        set { SetFooMessage(value); }
-      }
-      public Builder SetFooMessage(global::Google.ProtocolBuffers.TestProtos.TestAllTypes value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.fooCase_ = FooOneofCase.FooMessage;
-        result.foo_ = value;
-        return this;
-      }
-      public Builder SetFooMessage(global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.fooCase_ = FooOneofCase.FooMessage;
-        result.foo_ = builderForValue.Build();
-        return this;
-      }
-      public Builder MergeFooMessage(global::Google.ProtocolBuffers.TestProtos.TestAllTypes value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        if (result.fooCase_ == FooOneofCase.FooMessage &&
-            result.FooMessage != global::Google.ProtocolBuffers.TestProtos.TestAllTypes.DefaultInstance) {
-          result.foo_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypes.CreateBuilder(result.FooMessage).MergeFrom(value).BuildPartial();
-        } else {
-          result.foo_ = value;
-        }
-        result.fooCase_ = FooOneofCase.FooMessage;
-        return this;
-      }
-      public Builder ClearFooMessage() {
-        if (result.fooCase_ == FooOneofCase.FooMessage) {
-          PrepareBuilder();
-          result.fooCase_ = FooOneofCase.None;
-          result.foo_ = null;
-        }
-        return this;
-      }
-
-      public bool HasFooGroup {
-        get { return result.fooCase_ == FooOneofCase.FooGroup; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.TestOneof.Types.FooGroup FooGroup {
-        get { return result.fooCase_ == FooOneofCase.FooGroup ? (global::Google.ProtocolBuffers.TestProtos.TestOneof.Types.FooGroup) result.foo_ : global::Google.ProtocolBuffers.TestProtos.TestOneof.Types.FooGroup.DefaultInstance; }
-        set { SetFooGroup(value); }
-      }
-      public Builder SetFooGroup(global::Google.ProtocolBuffers.TestProtos.TestOneof.Types.FooGroup value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.fooCase_ = FooOneofCase.FooGroup;
-        result.foo_ = value;
-        return this;
-      }
-      public Builder SetFooGroup(global::Google.ProtocolBuffers.TestProtos.TestOneof.Types.FooGroup.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.fooCase_ = FooOneofCase.FooGroup;
-        result.foo_ = builderForValue.Build();
-        return this;
-      }
-      public Builder MergeFooGroup(global::Google.ProtocolBuffers.TestProtos.TestOneof.Types.FooGroup value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        if (result.fooCase_ == FooOneofCase.FooGroup &&
-            result.FooGroup != global::Google.ProtocolBuffers.TestProtos.TestOneof.Types.FooGroup.DefaultInstance) {
-          result.foo_ = global::Google.ProtocolBuffers.TestProtos.TestOneof.Types.FooGroup.CreateBuilder(result.FooGroup).MergeFrom(value).BuildPartial();
-        } else {
-          result.foo_ = value;
-        }
-        result.fooCase_ = FooOneofCase.FooGroup;
-        return this;
-      }
-      public Builder ClearFooGroup() {
-        if (result.fooCase_ == FooOneofCase.FooGroup) {
-          PrepareBuilder();
-          result.fooCase_ = FooOneofCase.None;
-          result.foo_ = null;
-        }
-        return this;
-      }
-
-      public FooOneofCase FooCase {
-        get { return result.fooCase_; }
-      }
-      public Builder ClearFoo() {
-        PrepareBuilder();
-        result.foo_ = null;
-        result.fooCase_ = FooOneofCase.None;
-        return this;
-      }
-    }
-    static TestOneof() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class TestOneofBackwardsCompatible : pb::GeneratedMessage<TestOneofBackwardsCompatible, TestOneofBackwardsCompatible.Builder> {
-    private TestOneofBackwardsCompatible() { }
-    private static readonly TestOneofBackwardsCompatible defaultInstance = new TestOneofBackwardsCompatible().MakeReadOnly();
-    private static readonly string[] _testOneofBackwardsCompatibleFieldNames = new string[] { "foo_int", "foo_message", "foo_string", "foogroup" };
-    private static readonly uint[] _testOneofBackwardsCompatibleFieldTags = new uint[] { 8, 26, 18, 35 };
-    public static TestOneofBackwardsCompatible DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override TestOneofBackwardsCompatible DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override TestOneofBackwardsCompatible ThisMessage {
-      get { return this; }
-    }
-
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestOneofBackwardsCompatible__Descriptor; }
-    }
-
-    protected override pb::FieldAccess.FieldAccessorTable<TestOneofBackwardsCompatible, TestOneofBackwardsCompatible.Builder> InternalFieldAccessors {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestOneofBackwardsCompatible__FieldAccessorTable; }
-    }
-
-    #region Nested types
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public static partial class Types {
-      [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-      public sealed partial class FooGroup : pb::GeneratedMessage<FooGroup, FooGroup.Builder> {
-        private FooGroup() { }
-        private static readonly FooGroup defaultInstance = new FooGroup().MakeReadOnly();
-        private static readonly string[] _fooGroupFieldNames = new string[] { "a", "b" };
-        private static readonly uint[] _fooGroupFieldTags = new uint[] { 40, 50 };
-        public static FooGroup DefaultInstance {
-          get { return defaultInstance; }
-        }
-
-        public override FooGroup DefaultInstanceForType {
-          get { return DefaultInstance; }
-        }
-
-        protected override FooGroup ThisMessage {
-          get { return this; }
-        }
-
-        public static pbd::MessageDescriptor Descriptor {
-          get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestOneofBackwardsCompatible_FooGroup__Descriptor; }
-        }
-
-        protected override pb::FieldAccess.FieldAccessorTable<FooGroup, FooGroup.Builder> InternalFieldAccessors {
-          get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestOneofBackwardsCompatible_FooGroup__FieldAccessorTable; }
-        }
-
-        public const int AFieldNumber = 5;
-        private bool hasA;
-        private int a_;
-        public bool HasA {
-          get { return hasA; }
-        }
-        public int A {
-          get { return a_; }
-        }
-
-        public const int BFieldNumber = 6;
-        private bool hasB;
-        private string b_ = "";
-        public bool HasB {
-          get { return hasB; }
-        }
-        public string B {
-          get { return b_; }
-        }
-
-        public override bool IsInitialized {
-          get {
-            return true;
-          }
-        }
-
-        public override void WriteTo(pb::ICodedOutputStream output) {
-          CalcSerializedSize();
-          string[] field_names = _fooGroupFieldNames;
-          if (hasA) {
-            output.WriteInt32(5, field_names[0], A);
-          }
-          if (hasB) {
-            output.WriteString(6, field_names[1], 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 (hasA) {
-            size += pb::CodedOutputStream.ComputeInt32Size(5, A);
-          }
-          if (hasB) {
-            size += pb::CodedOutputStream.ComputeStringSize(6, B);
-          }
-          size += UnknownFields.SerializedSize;
-          memoizedSerializedSize = size;
-          return size;
-        }
-        public static FooGroup ParseFrom(pb::ByteString data) {
-          return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-        }
-        public static FooGroup ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-        }
-        public static FooGroup ParseFrom(byte[] data) {
-          return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-        }
-        public static FooGroup ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-        }
-        public static FooGroup ParseFrom(global::System.IO.Stream input) {
-          return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-        }
-        public static FooGroup ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-        }
-        public static FooGroup ParseDelimitedFrom(global::System.IO.Stream input) {
-          return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-        }
-        public static FooGroup ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-          return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-        }
-        public static FooGroup ParseFrom(pb::ICodedInputStream input) {
-          return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-        }
-        public static FooGroup ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-        }
-        private FooGroup 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(FooGroup prototype) {
-          return new Builder(prototype);
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-        public sealed partial class Builder : pb::GeneratedBuilder<FooGroup, Builder> {
-          protected override Builder ThisBuilder {
-            get { return this; }
-          }
-          public Builder() {
-            result = DefaultInstance;
-            resultIsReadOnly = true;
-          }
-          internal Builder(FooGroup cloneFrom) {
-            result = cloneFrom;
-            resultIsReadOnly = true;
-          }
-
-          private bool resultIsReadOnly;
-          private FooGroup result;
-
-          private FooGroup PrepareBuilder() {
-            if (resultIsReadOnly) {
-              FooGroup original = result;
-              result = new FooGroup();
-              resultIsReadOnly = false;
-              MergeFrom(original);
-            }
-            return result;
-          }
-
-          public override bool IsInitialized {
-            get { return result.IsInitialized; }
-          }
-
-          protected override FooGroup 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.TestOneofBackwardsCompatible.Types.FooGroup.Descriptor; }
-          }
-
-          public override FooGroup DefaultInstanceForType {
-            get { return global::Google.ProtocolBuffers.TestProtos.TestOneofBackwardsCompatible.Types.FooGroup.DefaultInstance; }
-          }
-
-          public override FooGroup BuildPartial() {
-            if (resultIsReadOnly) {
-              return result;
-            }
-            resultIsReadOnly = true;
-            return result.MakeReadOnly();
-          }
-
-          public override Builder MergeFrom(pb::IMessage other) {
-            if (other is FooGroup) {
-              return MergeFrom((FooGroup) other);
-            } else {
-              base.MergeFrom(other);
-              return this;
-            }
-          }
-
-          public override Builder MergeFrom(FooGroup other) {
-            if (other == global::Google.ProtocolBuffers.TestProtos.TestOneofBackwardsCompatible.Types.FooGroup.DefaultInstance) return this;
-            PrepareBuilder();
-            if (other.HasA) {
-              A = other.A;
-            }
-            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(_fooGroupFieldNames, field_name, global::System.StringComparer.Ordinal);
-                if(field_ordinal >= 0)
-                  tag = _fooGroupFieldTags[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 40: {
-                  result.hasA = input.ReadInt32(ref result.a_);
-                  break;
-                }
-                case 50: {
-                  result.hasB = input.ReadString(ref result.b_);
-                  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;
-          }
-
-          public bool HasB {
-            get { return result.hasB; }
-          }
-          public string B {
-            get { return result.B; }
-            set { SetB(value); }
-          }
-          public Builder SetB(string value) {
-            pb::ThrowHelper.ThrowIfNull(value, "value");
-            PrepareBuilder();
-            result.hasB = true;
-            result.b_ = value;
-            return this;
-          }
-          public Builder ClearB() {
-            PrepareBuilder();
-            result.hasB = false;
-            result.b_ = "";
-            return this;
-          }
-        }
-        static FooGroup() {
-          object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor, null);
-        }
-      }
-
-    }
-    #endregion
-
-    public const int FooIntFieldNumber = 1;
-    private bool hasFooInt;
-    private int fooInt_;
-    public bool HasFooInt {
-      get { return hasFooInt; }
-    }
-    public int FooInt {
-      get { return fooInt_; }
-    }
-
-    public const int FooStringFieldNumber = 2;
-    private bool hasFooString;
-    private string fooString_ = "";
-    public bool HasFooString {
-      get { return hasFooString; }
-    }
-    public string FooString {
-      get { return fooString_; }
-    }
-
-    public const int FooMessageFieldNumber = 3;
-    private bool hasFooMessage;
-    private global::Google.ProtocolBuffers.TestProtos.TestAllTypes fooMessage_;
-    public bool HasFooMessage {
-      get { return hasFooMessage; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.TestAllTypes FooMessage {
-      get { return fooMessage_ ?? global::Google.ProtocolBuffers.TestProtos.TestAllTypes.DefaultInstance; }
-    }
-
-    public const int FooGroupFieldNumber = 4;
-    private bool hasFooGroup;
-    private global::Google.ProtocolBuffers.TestProtos.TestOneofBackwardsCompatible.Types.FooGroup fooGroup_;
-    public bool HasFooGroup {
-      get { return hasFooGroup; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.TestOneofBackwardsCompatible.Types.FooGroup FooGroup {
-      get { return fooGroup_ ?? global::Google.ProtocolBuffers.TestProtos.TestOneofBackwardsCompatible.Types.FooGroup.DefaultInstance; }
-    }
-
-    public override bool IsInitialized {
-      get {
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _testOneofBackwardsCompatibleFieldNames;
-      if (hasFooInt) {
-        output.WriteInt32(1, field_names[0], FooInt);
-      }
-      if (hasFooString) {
-        output.WriteString(2, field_names[2], FooString);
-      }
-      if (hasFooMessage) {
-        output.WriteMessage(3, field_names[1], FooMessage);
-      }
-      if (hasFooGroup) {
-        output.WriteGroup(4, field_names[3], FooGroup);
-      }
-      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 (hasFooInt) {
-        size += pb::CodedOutputStream.ComputeInt32Size(1, FooInt);
-      }
-      if (hasFooString) {
-        size += pb::CodedOutputStream.ComputeStringSize(2, FooString);
-      }
-      if (hasFooMessage) {
-        size += pb::CodedOutputStream.ComputeMessageSize(3, FooMessage);
-      }
-      if (hasFooGroup) {
-        size += pb::CodedOutputStream.ComputeGroupSize(4, FooGroup);
-      }
-      size += UnknownFields.SerializedSize;
-      memoizedSerializedSize = size;
-      return size;
-    }
-    public static TestOneofBackwardsCompatible ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestOneofBackwardsCompatible ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestOneofBackwardsCompatible ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestOneofBackwardsCompatible ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestOneofBackwardsCompatible ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestOneofBackwardsCompatible ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static TestOneofBackwardsCompatible ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static TestOneofBackwardsCompatible ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static TestOneofBackwardsCompatible ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestOneofBackwardsCompatible ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private TestOneofBackwardsCompatible 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(TestOneofBackwardsCompatible prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilder<TestOneofBackwardsCompatible, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(TestOneofBackwardsCompatible cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private TestOneofBackwardsCompatible result;
-
-      private TestOneofBackwardsCompatible PrepareBuilder() {
-        if (resultIsReadOnly) {
-          TestOneofBackwardsCompatible original = result;
-          result = new TestOneofBackwardsCompatible();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override TestOneofBackwardsCompatible 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.TestOneofBackwardsCompatible.Descriptor; }
-      }
-
-      public override TestOneofBackwardsCompatible DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.TestOneofBackwardsCompatible.DefaultInstance; }
-      }
-
-      public override TestOneofBackwardsCompatible BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is TestOneofBackwardsCompatible) {
-          return MergeFrom((TestOneofBackwardsCompatible) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(TestOneofBackwardsCompatible other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.TestOneofBackwardsCompatible.DefaultInstance) return this;
-        PrepareBuilder();
-        if (other.HasFooInt) {
-          FooInt = other.FooInt;
-        }
-        if (other.HasFooString) {
-          FooString = other.FooString;
-        }
-        if (other.HasFooMessage) {
-          MergeFooMessage(other.FooMessage);
-        }
-        if (other.HasFooGroup) {
-          MergeFooGroup(other.FooGroup);
-        }
-        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(_testOneofBackwardsCompatibleFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _testOneofBackwardsCompatibleFieldTags[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.hasFooInt = input.ReadInt32(ref result.fooInt_);
-              break;
-            }
-            case 18: {
-              result.hasFooString = input.ReadString(ref result.fooString_);
-              break;
-            }
-            case 26: {
-              global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Builder subBuilder = global::Google.ProtocolBuffers.TestProtos.TestAllTypes.CreateBuilder();
-              if (result.hasFooMessage) {
-                subBuilder.MergeFrom(FooMessage);
-              }
-              input.ReadMessage(subBuilder, extensionRegistry);
-              FooMessage = subBuilder.BuildPartial();
-              break;
-            }
-            case 35: {
-              global::Google.ProtocolBuffers.TestProtos.TestOneofBackwardsCompatible.Types.FooGroup.Builder subBuilder = global::Google.ProtocolBuffers.TestProtos.TestOneofBackwardsCompatible.Types.FooGroup.CreateBuilder();
-              if (result.hasFooGroup) {
-                subBuilder.MergeFrom(FooGroup);
-              }
-              input.ReadGroup(4, subBuilder, extensionRegistry);
-              FooGroup = subBuilder.BuildPartial();
-              break;
-            }
-          }
-        }
-
-        if (unknownFields != null) {
-          this.UnknownFields = unknownFields.Build();
-        }
-        return this;
-      }
-
-
-      public bool HasFooInt {
-        get { return result.hasFooInt; }
-      }
-      public int FooInt {
-        get { return result.FooInt; }
-        set { SetFooInt(value); }
-      }
-      public Builder SetFooInt(int value) {
-        PrepareBuilder();
-        result.hasFooInt = true;
-        result.fooInt_ = value;
-        return this;
-      }
-      public Builder ClearFooInt() {
-        PrepareBuilder();
-        result.hasFooInt = false;
-        result.fooInt_ = 0;
-        return this;
-      }
-
-      public bool HasFooString {
-        get { return result.hasFooString; }
-      }
-      public string FooString {
-        get { return result.FooString; }
-        set { SetFooString(value); }
-      }
-      public Builder SetFooString(string value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasFooString = true;
-        result.fooString_ = value;
-        return this;
-      }
-      public Builder ClearFooString() {
-        PrepareBuilder();
-        result.hasFooString = false;
-        result.fooString_ = "";
-        return this;
-      }
-
-      public bool HasFooMessage {
-       get { return result.hasFooMessage; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.TestAllTypes FooMessage {
-        get { return result.FooMessage; }
-        set { SetFooMessage(value); }
-      }
-      public Builder SetFooMessage(global::Google.ProtocolBuffers.TestProtos.TestAllTypes value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasFooMessage = true;
-        result.fooMessage_ = value;
-        return this;
-      }
-      public Builder SetFooMessage(global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.hasFooMessage = true;
-        result.fooMessage_ = builderForValue.Build();
-        return this;
-      }
-      public Builder MergeFooMessage(global::Google.ProtocolBuffers.TestProtos.TestAllTypes value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        if (result.hasFooMessage &&
-            result.fooMessage_ != global::Google.ProtocolBuffers.TestProtos.TestAllTypes.DefaultInstance) {
-            result.fooMessage_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypes.CreateBuilder(result.fooMessage_).MergeFrom(value).BuildPartial();
-        } else {
-          result.fooMessage_ = value;
-        }
-        result.hasFooMessage = true;
-        return this;
-      }
-      public Builder ClearFooMessage() {
-        PrepareBuilder();
-        result.hasFooMessage = false;
-        result.fooMessage_ = null;
-        return this;
-      }
-
-      public bool HasFooGroup {
-       get { return result.hasFooGroup; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.TestOneofBackwardsCompatible.Types.FooGroup FooGroup {
-        get { return result.FooGroup; }
-        set { SetFooGroup(value); }
-      }
-      public Builder SetFooGroup(global::Google.ProtocolBuffers.TestProtos.TestOneofBackwardsCompatible.Types.FooGroup value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasFooGroup = true;
-        result.fooGroup_ = value;
-        return this;
-      }
-      public Builder SetFooGroup(global::Google.ProtocolBuffers.TestProtos.TestOneofBackwardsCompatible.Types.FooGroup.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.hasFooGroup = true;
-        result.fooGroup_ = builderForValue.Build();
-        return this;
-      }
-      public Builder MergeFooGroup(global::Google.ProtocolBuffers.TestProtos.TestOneofBackwardsCompatible.Types.FooGroup value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        if (result.hasFooGroup &&
-            result.fooGroup_ != global::Google.ProtocolBuffers.TestProtos.TestOneofBackwardsCompatible.Types.FooGroup.DefaultInstance) {
-            result.fooGroup_ = global::Google.ProtocolBuffers.TestProtos.TestOneofBackwardsCompatible.Types.FooGroup.CreateBuilder(result.fooGroup_).MergeFrom(value).BuildPartial();
-        } else {
-          result.fooGroup_ = value;
-        }
-        result.hasFooGroup = true;
-        return this;
-      }
-      public Builder ClearFooGroup() {
-        PrepareBuilder();
-        result.hasFooGroup = false;
-        result.fooGroup_ = null;
-        return this;
-      }
-    }
-    static TestOneofBackwardsCompatible() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class TestOneof2 : pb::GeneratedMessage<TestOneof2, TestOneof2.Builder> {
-    private TestOneof2() { }
-    private static readonly TestOneof2 defaultInstance = new TestOneof2().MakeReadOnly();
-    private static readonly string[] _testOneof2FieldNames = new string[] { "bar_bytes", "bar_cord", "bar_enum", "bar_int", "bar_string", "bar_string_piece", "baz_int", "baz_string", "foo_bytes", "foo_cord", "foo_enum", "foo_int", "foo_lazy_message", "foo_message", "foo_string", "foo_string_piece", "foogroup" };
-    private static readonly uint[] _testOneof2FieldTags = new uint[] { 130, 114, 136, 96, 106, 122, 144, 154, 42, 26, 48, 8, 90, 58, 18, 34, 67 };
-    public static TestOneof2 DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override TestOneof2 DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override TestOneof2 ThisMessage {
-      get { return this; }
-    }
-
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestOneof2__Descriptor; }
-    }
-
-    protected override pb::FieldAccess.FieldAccessorTable<TestOneof2, TestOneof2.Builder> InternalFieldAccessors {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestOneof2__FieldAccessorTable; }
-    }
-
-    #region Nested types
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public static partial class Types {
-      public enum NestedEnum {
-        FOO = 1,
-        BAR = 2,
-        BAZ = 3,
-      }
-
-      [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-      public sealed partial class FooGroup : pb::GeneratedMessage<FooGroup, FooGroup.Builder> {
-        private FooGroup() { }
-        private static readonly FooGroup defaultInstance = new FooGroup().MakeReadOnly();
-        private static readonly string[] _fooGroupFieldNames = new string[] { "a", "b" };
-        private static readonly uint[] _fooGroupFieldTags = new uint[] { 72, 82 };
-        public static FooGroup DefaultInstance {
-          get { return defaultInstance; }
-        }
-
-        public override FooGroup DefaultInstanceForType {
-          get { return DefaultInstance; }
-        }
-
-        protected override FooGroup ThisMessage {
-          get { return this; }
-        }
-
-        public static pbd::MessageDescriptor Descriptor {
-          get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestOneof2_FooGroup__Descriptor; }
-        }
-
-        protected override pb::FieldAccess.FieldAccessorTable<FooGroup, FooGroup.Builder> InternalFieldAccessors {
-          get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestOneof2_FooGroup__FieldAccessorTable; }
-        }
-
-        public const int AFieldNumber = 9;
-        private bool hasA;
-        private int a_;
-        public bool HasA {
-          get { return hasA; }
-        }
-        public int A {
-          get { return a_; }
-        }
-
-        public const int BFieldNumber = 10;
-        private bool hasB;
-        private string b_ = "";
-        public bool HasB {
-          get { return hasB; }
-        }
-        public string B {
-          get { return b_; }
-        }
-
-        public override bool IsInitialized {
-          get {
-            return true;
-          }
-        }
-
-        public override void WriteTo(pb::ICodedOutputStream output) {
-          CalcSerializedSize();
-          string[] field_names = _fooGroupFieldNames;
-          if (hasA) {
-            output.WriteInt32(9, field_names[0], A);
-          }
-          if (hasB) {
-            output.WriteString(10, field_names[1], 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 (hasA) {
-            size += pb::CodedOutputStream.ComputeInt32Size(9, A);
-          }
-          if (hasB) {
-            size += pb::CodedOutputStream.ComputeStringSize(10, B);
-          }
-          size += UnknownFields.SerializedSize;
-          memoizedSerializedSize = size;
-          return size;
-        }
-        public static FooGroup ParseFrom(pb::ByteString data) {
-          return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-        }
-        public static FooGroup ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-        }
-        public static FooGroup ParseFrom(byte[] data) {
-          return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-        }
-        public static FooGroup ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-        }
-        public static FooGroup ParseFrom(global::System.IO.Stream input) {
-          return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-        }
-        public static FooGroup ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-        }
-        public static FooGroup ParseDelimitedFrom(global::System.IO.Stream input) {
-          return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-        }
-        public static FooGroup ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-          return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-        }
-        public static FooGroup ParseFrom(pb::ICodedInputStream input) {
-          return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-        }
-        public static FooGroup ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-        }
-        private FooGroup 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(FooGroup prototype) {
-          return new Builder(prototype);
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-        public sealed partial class Builder : pb::GeneratedBuilder<FooGroup, Builder> {
-          protected override Builder ThisBuilder {
-            get { return this; }
-          }
-          public Builder() {
-            result = DefaultInstance;
-            resultIsReadOnly = true;
-          }
-          internal Builder(FooGroup cloneFrom) {
-            result = cloneFrom;
-            resultIsReadOnly = true;
-          }
-
-          private bool resultIsReadOnly;
-          private FooGroup result;
-
-          private FooGroup PrepareBuilder() {
-            if (resultIsReadOnly) {
-              FooGroup original = result;
-              result = new FooGroup();
-              resultIsReadOnly = false;
-              MergeFrom(original);
-            }
-            return result;
-          }
-
-          public override bool IsInitialized {
-            get { return result.IsInitialized; }
-          }
-
-          protected override FooGroup 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.TestOneof2.Types.FooGroup.Descriptor; }
-          }
-
-          public override FooGroup DefaultInstanceForType {
-            get { return global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.FooGroup.DefaultInstance; }
-          }
-
-          public override FooGroup BuildPartial() {
-            if (resultIsReadOnly) {
-              return result;
-            }
-            resultIsReadOnly = true;
-            return result.MakeReadOnly();
-          }
-
-          public override Builder MergeFrom(pb::IMessage other) {
-            if (other is FooGroup) {
-              return MergeFrom((FooGroup) other);
-            } else {
-              base.MergeFrom(other);
-              return this;
-            }
-          }
-
-          public override Builder MergeFrom(FooGroup other) {
-            if (other == global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.FooGroup.DefaultInstance) return this;
-            PrepareBuilder();
-            if (other.HasA) {
-              A = other.A;
-            }
-            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(_fooGroupFieldNames, field_name, global::System.StringComparer.Ordinal);
-                if(field_ordinal >= 0)
-                  tag = _fooGroupFieldTags[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 72: {
-                  result.hasA = input.ReadInt32(ref result.a_);
-                  break;
-                }
-                case 82: {
-                  result.hasB = input.ReadString(ref result.b_);
-                  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;
-          }
-
-          public bool HasB {
-            get { return result.hasB; }
-          }
-          public string B {
-            get { return result.B; }
-            set { SetB(value); }
-          }
-          public Builder SetB(string value) {
-            pb::ThrowHelper.ThrowIfNull(value, "value");
-            PrepareBuilder();
-            result.hasB = true;
-            result.b_ = value;
-            return this;
-          }
-          public Builder ClearB() {
-            PrepareBuilder();
-            result.hasB = false;
-            result.b_ = "";
-            return this;
-          }
-        }
-        static FooGroup() {
-          object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor, null);
-        }
-      }
-
-      [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[] { "corge_int", "qux_int" };
-        private static readonly uint[] _nestedMessageFieldTags = new uint[] { 16, 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.Unittest.internal__static_protobuf_unittest_TestOneof2_NestedMessage__Descriptor; }
-        }
-
-        protected override pb::FieldAccess.FieldAccessorTable<NestedMessage, NestedMessage.Builder> InternalFieldAccessors {
-          get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestOneof2_NestedMessage__FieldAccessorTable; }
-        }
-
-        public const int QuxIntFieldNumber = 1;
-        private bool hasQuxInt;
-        private long quxInt_;
-        public bool HasQuxInt {
-          get { return hasQuxInt; }
-        }
-        public long QuxInt {
-          get { return quxInt_; }
-        }
-
-        public const int CorgeIntFieldNumber = 2;
-        private pbc::PopsicleList<int> corgeInt_ = new pbc::PopsicleList<int>();
-        public scg::IList<int> CorgeIntList {
-          get { return pbc::Lists.AsReadOnly(corgeInt_); }
-        }
-        public int CorgeIntCount {
-          get { return corgeInt_.Count; }
-        }
-        public int GetCorgeInt(int index) {
-          return corgeInt_[index];
-        }
-
-        public override bool IsInitialized {
-          get {
-            return true;
-          }
-        }
-
-        public override void WriteTo(pb::ICodedOutputStream output) {
-          CalcSerializedSize();
-          string[] field_names = _nestedMessageFieldNames;
-          if (hasQuxInt) {
-            output.WriteInt64(1, field_names[1], QuxInt);
-          }
-          if (corgeInt_.Count > 0) {
-            output.WriteInt32Array(2, field_names[0], corgeInt_);
-          }
-          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 (hasQuxInt) {
-            size += pb::CodedOutputStream.ComputeInt64Size(1, QuxInt);
-          }
-          {
-            int dataSize = 0;
-            foreach (int element in CorgeIntList) {
-              dataSize += pb::CodedOutputStream.ComputeInt32SizeNoTag(element);
-            }
-            size += dataSize;
-            size += 1 * corgeInt_.Count;
-          }
-          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() {
-          corgeInt_.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.TestOneof2.Types.NestedMessage.Descriptor; }
-          }
-
-          public override NestedMessage DefaultInstanceForType {
-            get { return global::Google.ProtocolBuffers.TestProtos.TestOneof2.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.TestOneof2.Types.NestedMessage.DefaultInstance) return this;
-            PrepareBuilder();
-            if (other.HasQuxInt) {
-              QuxInt = other.QuxInt;
-            }
-            if (other.corgeInt_.Count != 0) {
-              result.corgeInt_.Add(other.corgeInt_);
-            }
-            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.hasQuxInt = input.ReadInt64(ref result.quxInt_);
-                  break;
-                }
-                case 18:
-                case 16: {
-                  input.ReadInt32Array(tag, field_name, result.corgeInt_);
-                  break;
-                }
-              }
-            }
-
-            if (unknownFields != null) {
-              this.UnknownFields = unknownFields.Build();
-            }
-            return this;
-          }
-
-
-          public bool HasQuxInt {
-            get { return result.hasQuxInt; }
-          }
-          public long QuxInt {
-            get { return result.QuxInt; }
-            set { SetQuxInt(value); }
-          }
-          public Builder SetQuxInt(long value) {
-            PrepareBuilder();
-            result.hasQuxInt = true;
-            result.quxInt_ = value;
-            return this;
-          }
-          public Builder ClearQuxInt() {
-            PrepareBuilder();
-            result.hasQuxInt = false;
-            result.quxInt_ = 0L;
-            return this;
-          }
-
-          public pbc::IPopsicleList<int> CorgeIntList {
-            get { return PrepareBuilder().corgeInt_; }
-          }
-          public int CorgeIntCount {
-            get { return result.CorgeIntCount; }
-          }
-          public int GetCorgeInt(int index) {
-            return result.GetCorgeInt(index);
-          }
-          public Builder SetCorgeInt(int index, int value) {
-            PrepareBuilder();
-            result.corgeInt_[index] = value;
-            return this;
-          }
-          public Builder AddCorgeInt(int value) {
-            PrepareBuilder();
-            result.corgeInt_.Add(value);
-            return this;
-          }
-          public Builder AddRangeCorgeInt(scg::IEnumerable<int> values) {
-            PrepareBuilder();
-            result.corgeInt_.Add(values);
-            return this;
-          }
-          public Builder ClearCorgeInt() {
-            PrepareBuilder();
-            result.corgeInt_.Clear();
-            return this;
-          }
-        }
-        static NestedMessage() {
-          object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor, null);
-        }
-      }
-
-    }
-    #endregion
-
-    private object foo_;
-    public enum FooOneofCase {
-      FooInt = 1,
-      FooString = 2,
-      FooCord = 3,
-      FooStringPiece = 4,
-      FooBytes = 5,
-      FooEnum = 6,
-      FooMessage = 7,
-      FooGroup = 8,
-      FooLazyMessage = 11,
-      None = 0,
-    }
-    private FooOneofCase fooCase_ = FooOneofCase.None;
-    public FooOneofCase FooCase {
-      get { return fooCase_; }
-    }
-
-    private object bar_;
-    public enum BarOneofCase {
-      BarInt = 12,
-      BarString = 13,
-      BarCord = 14,
-      BarStringPiece = 15,
-      BarBytes = 16,
-      BarEnum = 17,
-      None = 0,
-    }
-    private BarOneofCase barCase_ = BarOneofCase.None;
-    public BarOneofCase BarCase {
-      get { return barCase_; }
-    }
-
-    public const int FooIntFieldNumber = 1;
-    public bool HasFooInt {
-      get { return fooCase_ == FooOneofCase.FooInt; }
-    }
-    public int FooInt {
-      get { return fooCase_ == FooOneofCase.FooInt ? (int) foo_ : 0; }
-    }
-
-    public const int FooStringFieldNumber = 2;
-    public bool HasFooString {
-      get { return fooCase_ == FooOneofCase.FooString; }
-    }
-    public string FooString {
-      get { return fooCase_ == FooOneofCase.FooString ? (string) foo_ : ""; }
-    }
-
-    public const int FooCordFieldNumber = 3;
-    public bool HasFooCord {
-      get { return fooCase_ == FooOneofCase.FooCord; }
-    }
-    public string FooCord {
-      get { return fooCase_ == FooOneofCase.FooCord ? (string) foo_ : ""; }
-    }
-
-    public const int FooStringPieceFieldNumber = 4;
-    public bool HasFooStringPiece {
-      get { return fooCase_ == FooOneofCase.FooStringPiece; }
-    }
-    public string FooStringPiece {
-      get { return fooCase_ == FooOneofCase.FooStringPiece ? (string) foo_ : ""; }
-    }
-
-    public const int FooBytesFieldNumber = 5;
-    public bool HasFooBytes {
-      get { return fooCase_ == FooOneofCase.FooBytes; }
-    }
-    public pb::ByteString FooBytes {
-      get { return fooCase_ == FooOneofCase.FooBytes ? (pb::ByteString) foo_ : pb::ByteString.Empty; }
-    }
-
-    public const int FooEnumFieldNumber = 6;
-    public bool HasFooEnum {
-      get { return fooCase_ == FooOneofCase.FooEnum; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedEnum FooEnum {
-      get { return fooCase_ == FooOneofCase.FooEnum ? (global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedEnum) foo_ : global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedEnum.FOO; }
-    }
-
-    public const int FooMessageFieldNumber = 7;
-    public bool HasFooMessage {
-      get { return fooCase_ == FooOneofCase.FooMessage; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage FooMessage {
-      get { return fooCase_ == FooOneofCase.FooMessage ? (global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage) foo_ : global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage.DefaultInstance; }
-    }
-
-    public const int FooGroupFieldNumber = 8;
-    public bool HasFooGroup {
-      get { return fooCase_ == FooOneofCase.FooGroup; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.FooGroup FooGroup {
-      get { return fooCase_ == FooOneofCase.FooGroup ? (global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.FooGroup) foo_ : global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.FooGroup.DefaultInstance; }
-    }
-
-    public const int FooLazyMessageFieldNumber = 11;
-    public bool HasFooLazyMessage {
-      get { return fooCase_ == FooOneofCase.FooLazyMessage; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage FooLazyMessage {
-      get { return fooCase_ == FooOneofCase.FooLazyMessage ? (global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage) foo_ : global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage.DefaultInstance; }
-    }
-
-    public const int BarIntFieldNumber = 12;
-    public bool HasBarInt {
-      get { return barCase_ == BarOneofCase.BarInt; }
-    }
-    public int BarInt {
-      get { return barCase_ == BarOneofCase.BarInt ? (int) bar_ : 5; }
-    }
-
-    public const int BarStringFieldNumber = 13;
-    public bool HasBarString {
-      get { return barCase_ == BarOneofCase.BarString; }
-    }
-    public string BarString {
-      get { return barCase_ == BarOneofCase.BarString ? (string) bar_ : "STRING"; }
-    }
-
-    public const int BarCordFieldNumber = 14;
-    public bool HasBarCord {
-      get { return barCase_ == BarOneofCase.BarCord; }
-    }
-    public string BarCord {
-      get { return barCase_ == BarOneofCase.BarCord ? (string) bar_ : "CORD"; }
-    }
-
-    public const int BarStringPieceFieldNumber = 15;
-    public bool HasBarStringPiece {
-      get { return barCase_ == BarOneofCase.BarStringPiece; }
-    }
-    public string BarStringPiece {
-      get { return barCase_ == BarOneofCase.BarStringPiece ? (string) bar_ : "SPIECE"; }
-    }
-
-    public const int BarBytesFieldNumber = 16;
-    public bool HasBarBytes {
-      get { return barCase_ == BarOneofCase.BarBytes; }
-    }
-    public pb::ByteString BarBytes {
-      get { return barCase_ == BarOneofCase.BarBytes ? (pb::ByteString) bar_ : (pb::ByteString) global::Google.ProtocolBuffers.TestProtos.TestOneof2.Descriptor.Fields[13].DefaultValue; }
-    }
-
-    public const int BarEnumFieldNumber = 17;
-    public bool HasBarEnum {
-      get { return barCase_ == BarOneofCase.BarEnum; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedEnum BarEnum {
-      get { return barCase_ == BarOneofCase.BarEnum ? (global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedEnum) bar_ : global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedEnum.BAR; }
-    }
-
-    public const int BazIntFieldNumber = 18;
-    private bool hasBazInt;
-    private int bazInt_;
-    public bool HasBazInt {
-      get { return hasBazInt; }
-    }
-    public int BazInt {
-      get { return bazInt_; }
-    }
-
-    public const int BazStringFieldNumber = 19;
-    private bool hasBazString;
-    private string bazString_ = "BAZ";
-    public bool HasBazString {
-      get { return hasBazString; }
-    }
-    public string BazString {
-      get { return bazString_; }
-    }
-
-    public override bool IsInitialized {
-      get {
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _testOneof2FieldNames;
-      if (fooCase_ == FooOneofCase.FooInt) {
-        output.WriteInt32(1, field_names[11], FooInt);
-      }
-      if (fooCase_ == FooOneofCase.FooString) {
-        output.WriteString(2, field_names[14], FooString);
-      }
-      if (fooCase_ == FooOneofCase.FooCord) {
-        output.WriteString(3, field_names[9], FooCord);
-      }
-      if (fooCase_ == FooOneofCase.FooStringPiece) {
-        output.WriteString(4, field_names[15], FooStringPiece);
-      }
-      if (fooCase_ == FooOneofCase.FooBytes) {
-        output.WriteBytes(5, field_names[8], FooBytes);
-      }
-      if (fooCase_ == FooOneofCase.FooEnum) {
-        output.WriteEnum(6, field_names[10], (int) FooEnum, FooEnum);
-      }
-      if (fooCase_ == FooOneofCase.FooMessage) {
-        output.WriteMessage(7, field_names[13], FooMessage);
-      }
-      if (fooCase_ == FooOneofCase.FooGroup) {
-        output.WriteGroup(8, field_names[16], FooGroup);
-      }
-      if (fooCase_ == FooOneofCase.FooLazyMessage) {
-        output.WriteMessage(11, field_names[12], FooLazyMessage);
-      }
-      if (barCase_ == BarOneofCase.BarInt) {
-        output.WriteInt32(12, field_names[3], BarInt);
-      }
-      if (barCase_ == BarOneofCase.BarString) {
-        output.WriteString(13, field_names[4], BarString);
-      }
-      if (barCase_ == BarOneofCase.BarCord) {
-        output.WriteString(14, field_names[1], BarCord);
-      }
-      if (barCase_ == BarOneofCase.BarStringPiece) {
-        output.WriteString(15, field_names[5], BarStringPiece);
-      }
-      if (barCase_ == BarOneofCase.BarBytes) {
-        output.WriteBytes(16, field_names[0], BarBytes);
-      }
-      if (barCase_ == BarOneofCase.BarEnum) {
-        output.WriteEnum(17, field_names[2], (int) BarEnum, BarEnum);
-      }
-      if (hasBazInt) {
-        output.WriteInt32(18, field_names[6], BazInt);
-      }
-      if (hasBazString) {
-        output.WriteString(19, field_names[7], BazString);
-      }
-      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 (fooCase_ == FooOneofCase.FooInt) {
-        size += pb::CodedOutputStream.ComputeInt32Size(1, FooInt);
-      }
-      if (fooCase_ == FooOneofCase.FooString) {
-        size += pb::CodedOutputStream.ComputeStringSize(2, FooString);
-      }
-      if (fooCase_ == FooOneofCase.FooCord) {
-        size += pb::CodedOutputStream.ComputeStringSize(3, FooCord);
-      }
-      if (fooCase_ == FooOneofCase.FooStringPiece) {
-        size += pb::CodedOutputStream.ComputeStringSize(4, FooStringPiece);
-      }
-      if (fooCase_ == FooOneofCase.FooBytes) {
-        size += pb::CodedOutputStream.ComputeBytesSize(5, FooBytes);
-      }
-      if (fooCase_ == FooOneofCase.FooEnum) {
-        size += pb::CodedOutputStream.ComputeEnumSize(6, (int) FooEnum);
-      }
-      if (fooCase_ == FooOneofCase.FooMessage) {
-        size += pb::CodedOutputStream.ComputeMessageSize(7, FooMessage);
-      }
-      if (fooCase_ == FooOneofCase.FooGroup) {
-        size += pb::CodedOutputStream.ComputeGroupSize(8, FooGroup);
-      }
-      if (fooCase_ == FooOneofCase.FooLazyMessage) {
-        size += pb::CodedOutputStream.ComputeMessageSize(11, FooLazyMessage);
-      }
-      if (barCase_ == BarOneofCase.BarInt) {
-        size += pb::CodedOutputStream.ComputeInt32Size(12, BarInt);
-      }
-      if (barCase_ == BarOneofCase.BarString) {
-        size += pb::CodedOutputStream.ComputeStringSize(13, BarString);
-      }
-      if (barCase_ == BarOneofCase.BarCord) {
-        size += pb::CodedOutputStream.ComputeStringSize(14, BarCord);
-      }
-      if (barCase_ == BarOneofCase.BarStringPiece) {
-        size += pb::CodedOutputStream.ComputeStringSize(15, BarStringPiece);
-      }
-      if (barCase_ == BarOneofCase.BarBytes) {
-        size += pb::CodedOutputStream.ComputeBytesSize(16, BarBytes);
-      }
-      if (barCase_ == BarOneofCase.BarEnum) {
-        size += pb::CodedOutputStream.ComputeEnumSize(17, (int) BarEnum);
-      }
-      if (hasBazInt) {
-        size += pb::CodedOutputStream.ComputeInt32Size(18, BazInt);
-      }
-      if (hasBazString) {
-        size += pb::CodedOutputStream.ComputeStringSize(19, BazString);
-      }
-      size += UnknownFields.SerializedSize;
-      memoizedSerializedSize = size;
-      return size;
-    }
-    public static TestOneof2 ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestOneof2 ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestOneof2 ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestOneof2 ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestOneof2 ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestOneof2 ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static TestOneof2 ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static TestOneof2 ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static TestOneof2 ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestOneof2 ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private TestOneof2 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(TestOneof2 prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilder<TestOneof2, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(TestOneof2 cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private TestOneof2 result;
-
-      private TestOneof2 PrepareBuilder() {
-        if (resultIsReadOnly) {
-          TestOneof2 original = result;
-          result = new TestOneof2();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override TestOneof2 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.TestOneof2.Descriptor; }
-      }
-
-      public override TestOneof2 DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.TestOneof2.DefaultInstance; }
-      }
-
-      public override TestOneof2 BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is TestOneof2) {
-          return MergeFrom((TestOneof2) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(TestOneof2 other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.TestOneof2.DefaultInstance) return this;
-        PrepareBuilder();
-        if (other.HasBazInt) {
-          BazInt = other.BazInt;
-        }
-        if (other.HasBazString) {
-          BazString = other.BazString;
-        }
-        switch (other.FooCase) {
-          case FooOneofCase.FooInt: {
-            SetFooInt(other.FooInt);
-            break;
-          }
-          case FooOneofCase.FooString: {
-            SetFooString(other.FooString);
-            break;
-          }
-          case FooOneofCase.FooCord: {
-            SetFooCord(other.FooCord);
-            break;
-          }
-          case FooOneofCase.FooStringPiece: {
-            SetFooStringPiece(other.FooStringPiece);
-            break;
-          }
-          case FooOneofCase.FooBytes: {
-            SetFooBytes(other.FooBytes);
-            break;
-          }
-          case FooOneofCase.FooEnum: {
-            SetFooEnum(other.FooEnum);
-            break;
-          }
-          case FooOneofCase.FooMessage: {
-            MergeFooMessage(other.FooMessage);
-            break;
-          }
-          case FooOneofCase.FooGroup: {
-            MergeFooGroup(other.FooGroup);
-            break;
-          }
-          case FooOneofCase.FooLazyMessage: {
-            MergeFooLazyMessage(other.FooLazyMessage);
-            break;
-          }
-          case FooOneofCase.None: { break; }
-        }
-        switch (other.BarCase) {
-          case BarOneofCase.BarInt: {
-            SetBarInt(other.BarInt);
-            break;
-          }
-          case BarOneofCase.BarString: {
-            SetBarString(other.BarString);
-            break;
-          }
-          case BarOneofCase.BarCord: {
-            SetBarCord(other.BarCord);
-            break;
-          }
-          case BarOneofCase.BarStringPiece: {
-            SetBarStringPiece(other.BarStringPiece);
-            break;
-          }
-          case BarOneofCase.BarBytes: {
-            SetBarBytes(other.BarBytes);
-            break;
-          }
-          case BarOneofCase.BarEnum: {
-            SetBarEnum(other.BarEnum);
-            break;
-          }
-          case BarOneofCase.None: { break; }
-        }
-        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(_testOneof2FieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _testOneof2FieldTags[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: {
-              int value = 0;
-              if (input.ReadInt32(ref value)) {
-                result.foo_ = value;
-                result.fooCase_ = FooOneofCase.FooInt;
-              }
-              break;
-            }
-            case 18: {
-              string value = "";
-              if (input.ReadString(ref value)) {
-                result.foo_ = value;
-                result.fooCase_ = FooOneofCase.FooString;
-              }
-              break;
-            }
-            case 26: {
-              string value = "";
-              if (input.ReadString(ref value)) {
-                result.foo_ = value;
-                result.fooCase_ = FooOneofCase.FooCord;
-              }
-              break;
-            }
-            case 34: {
-              string value = "";
-              if (input.ReadString(ref value)) {
-                result.foo_ = value;
-                result.fooCase_ = FooOneofCase.FooStringPiece;
-              }
-              break;
-            }
-            case 42: {
-              pb::ByteString value = pb::ByteString.Empty;
-              if (input.ReadBytes(ref value)) {
-                result.foo_ = value;
-                result.fooCase_ = FooOneofCase.FooBytes;
-              }
-              break;
-            }
-            case 48: {
-              object unknown;
-              global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedEnum enumValue = global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedEnum.FOO;
-              if(input.ReadEnum(ref enumValue, out unknown)) {
-                result.foo_ = enumValue;
-                result.fooCase_ = FooOneofCase.FooEnum;
-              } else if(unknown is int) {
-                if (unknownFields == null) {
-                  unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-                }
-                unknownFields.MergeVarintField(6, (ulong)(int)unknown);
-              }
-              break;
-            }
-            case 58: {
-              global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage.Builder subBuilder = global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage.CreateBuilder();
-              if (result.fooCase_ == FooOneofCase.FooMessage) {
-                subBuilder.MergeFrom(FooMessage);
-              }
-              input.ReadMessage(subBuilder, extensionRegistry);
-              result.foo_ = subBuilder.BuildPartial();
-              result.fooCase_ = FooOneofCase.FooMessage;
-              break;
-            }
-            case 67: {
-              global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.FooGroup.Builder subBuilder = global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.FooGroup.CreateBuilder();
-              if (result.fooCase_ == FooOneofCase.FooGroup) {
-                subBuilder.MergeFrom(FooGroup);
-              }
-              input.ReadGroup(8, subBuilder, extensionRegistry);
-              result.foo_ = subBuilder.BuildPartial();
-              result.fooCase_ = FooOneofCase.FooGroup;
-              break;
-            }
-            case 90: {
-              global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage.Builder subBuilder = global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage.CreateBuilder();
-              if (result.fooCase_ == FooOneofCase.FooLazyMessage) {
-                subBuilder.MergeFrom(FooLazyMessage);
-              }
-              input.ReadMessage(subBuilder, extensionRegistry);
-              result.foo_ = subBuilder.BuildPartial();
-              result.fooCase_ = FooOneofCase.FooLazyMessage;
-              break;
-            }
-            case 96: {
-              int value = 5;
-              if (input.ReadInt32(ref value)) {
-                result.bar_ = value;
-                result.barCase_ = BarOneofCase.BarInt;
-              }
-              break;
-            }
-            case 106: {
-              string value = "STRING";
-              if (input.ReadString(ref value)) {
-                result.bar_ = value;
-                result.barCase_ = BarOneofCase.BarString;
-              }
-              break;
-            }
-            case 114: {
-              string value = "CORD";
-              if (input.ReadString(ref value)) {
-                result.bar_ = value;
-                result.barCase_ = BarOneofCase.BarCord;
-              }
-              break;
-            }
-            case 122: {
-              string value = "SPIECE";
-              if (input.ReadString(ref value)) {
-                result.bar_ = value;
-                result.barCase_ = BarOneofCase.BarStringPiece;
-              }
-              break;
-            }
-            case 130: {
-              pb::ByteString value = (pb::ByteString) global::Google.ProtocolBuffers.TestProtos.TestOneof2.Descriptor.Fields[13].DefaultValue;
-              if (input.ReadBytes(ref value)) {
-                result.bar_ = value;
-                result.barCase_ = BarOneofCase.BarBytes;
-              }
-              break;
-            }
-            case 136: {
-              object unknown;
-              global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedEnum enumValue = global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedEnum.BAR;
-              if(input.ReadEnum(ref enumValue, out unknown)) {
-                result.bar_ = enumValue;
-                result.barCase_ = BarOneofCase.BarEnum;
-              } else if(unknown is int) {
-                if (unknownFields == null) {
-                  unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-                }
-                unknownFields.MergeVarintField(17, (ulong)(int)unknown);
-              }
-              break;
-            }
-            case 144: {
-              result.hasBazInt = input.ReadInt32(ref result.bazInt_);
-              break;
-            }
-            case 154: {
-              result.hasBazString = input.ReadString(ref result.bazString_);
-              break;
-            }
-          }
-        }
-
-        if (unknownFields != null) {
-          this.UnknownFields = unknownFields.Build();
-        }
-        return this;
-      }
-
-
-      public bool HasFooInt {
-        get { return result.fooCase_ == FooOneofCase.FooInt; }
-      }
-      public int FooInt {
-        get { return result.fooCase_ == FooOneofCase.FooInt ? (int) result.foo_ : 0; }
-        set { SetFooInt(value); }
-      }
-      public Builder SetFooInt(int value) {
-        PrepareBuilder();
-        result.foo_ = value;
-        result.fooCase_ = FooOneofCase.FooInt;
-        return this;
-      }
-      public Builder ClearFooInt() {
-        PrepareBuilder();
-        if (result.fooCase_ == FooOneofCase.FooInt) {
-          result.fooCase_ = FooOneofCase.None;
-        }
-        return this;
-      }
-
-      public bool HasFooString {
-        get { return result.fooCase_ == FooOneofCase.FooString; }
-      }
-      public string FooString {
-        get { return result.fooCase_ == FooOneofCase.FooString ? (string) result.foo_ : ""; }
-        set { SetFooString(value); }
-      }
-      public Builder SetFooString(string value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.foo_ = value;
-        result.fooCase_ = FooOneofCase.FooString;
-        return this;
-      }
-      public Builder ClearFooString() {
-        PrepareBuilder();
-        if (result.fooCase_ == FooOneofCase.FooString) {
-          result.fooCase_ = FooOneofCase.None;
-        }
-        return this;
-      }
-
-      public bool HasFooCord {
-        get { return result.fooCase_ == FooOneofCase.FooCord; }
-      }
-      public string FooCord {
-        get { return result.fooCase_ == FooOneofCase.FooCord ? (string) result.foo_ : ""; }
-        set { SetFooCord(value); }
-      }
-      public Builder SetFooCord(string value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.foo_ = value;
-        result.fooCase_ = FooOneofCase.FooCord;
-        return this;
-      }
-      public Builder ClearFooCord() {
-        PrepareBuilder();
-        if (result.fooCase_ == FooOneofCase.FooCord) {
-          result.fooCase_ = FooOneofCase.None;
-        }
-        return this;
-      }
-
-      public bool HasFooStringPiece {
-        get { return result.fooCase_ == FooOneofCase.FooStringPiece; }
-      }
-      public string FooStringPiece {
-        get { return result.fooCase_ == FooOneofCase.FooStringPiece ? (string) result.foo_ : ""; }
-        set { SetFooStringPiece(value); }
-      }
-      public Builder SetFooStringPiece(string value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.foo_ = value;
-        result.fooCase_ = FooOneofCase.FooStringPiece;
-        return this;
-      }
-      public Builder ClearFooStringPiece() {
-        PrepareBuilder();
-        if (result.fooCase_ == FooOneofCase.FooStringPiece) {
-          result.fooCase_ = FooOneofCase.None;
-        }
-        return this;
-      }
-
-      public bool HasFooBytes {
-        get { return result.fooCase_ == FooOneofCase.FooBytes; }
-      }
-      public pb::ByteString FooBytes {
-        get { return result.fooCase_ == FooOneofCase.FooBytes ? (pb::ByteString) result.foo_ : pb::ByteString.Empty; }
-        set { SetFooBytes(value); }
-      }
-      public Builder SetFooBytes(pb::ByteString value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.foo_ = value;
-        result.fooCase_ = FooOneofCase.FooBytes;
-        return this;
-      }
-      public Builder ClearFooBytes() {
-        PrepareBuilder();
-        if (result.fooCase_ == FooOneofCase.FooBytes) {
-          result.fooCase_ = FooOneofCase.None;
-        }
-        return this;
-      }
-
-      public bool HasFooEnum {
-        get { return result.fooCase_ == FooOneofCase.FooEnum; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedEnum FooEnum {
-        get { return result.fooCase_ == FooOneofCase.FooEnum ? (global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedEnum) result.foo_ : global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedEnum.FOO; }
-        set { SetFooEnum(value); }
-      }
-      public Builder SetFooEnum(global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedEnum value) {
-        PrepareBuilder();
-        result.foo_ = value;
-        result.fooCase_ = FooOneofCase.FooEnum;
-        return this;
-      }
-      public Builder ClearFooEnum() {
-        PrepareBuilder();
-        if (result.fooCase_ == FooOneofCase.FooEnum) {
-          result.fooCase_ = FooOneofCase.None;
-        }
-        return this;
-      }
-
-      public bool HasFooMessage {
-        get { return result.fooCase_ == FooOneofCase.FooMessage; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage FooMessage {
-        get { return result.fooCase_ == FooOneofCase.FooMessage ? (global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage) result.foo_ : global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage.DefaultInstance; }
-        set { SetFooMessage(value); }
-      }
-      public Builder SetFooMessage(global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.fooCase_ = FooOneofCase.FooMessage;
-        result.foo_ = value;
-        return this;
-      }
-      public Builder SetFooMessage(global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.fooCase_ = FooOneofCase.FooMessage;
-        result.foo_ = builderForValue.Build();
-        return this;
-      }
-      public Builder MergeFooMessage(global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        if (result.fooCase_ == FooOneofCase.FooMessage &&
-            result.FooMessage != global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage.DefaultInstance) {
-          result.foo_ = global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage.CreateBuilder(result.FooMessage).MergeFrom(value).BuildPartial();
-        } else {
-          result.foo_ = value;
-        }
-        result.fooCase_ = FooOneofCase.FooMessage;
-        return this;
-      }
-      public Builder ClearFooMessage() {
-        if (result.fooCase_ == FooOneofCase.FooMessage) {
-          PrepareBuilder();
-          result.fooCase_ = FooOneofCase.None;
-          result.foo_ = null;
-        }
-        return this;
-      }
-
-      public bool HasFooGroup {
-        get { return result.fooCase_ == FooOneofCase.FooGroup; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.FooGroup FooGroup {
-        get { return result.fooCase_ == FooOneofCase.FooGroup ? (global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.FooGroup) result.foo_ : global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.FooGroup.DefaultInstance; }
-        set { SetFooGroup(value); }
-      }
-      public Builder SetFooGroup(global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.FooGroup value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.fooCase_ = FooOneofCase.FooGroup;
-        result.foo_ = value;
-        return this;
-      }
-      public Builder SetFooGroup(global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.FooGroup.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.fooCase_ = FooOneofCase.FooGroup;
-        result.foo_ = builderForValue.Build();
-        return this;
-      }
-      public Builder MergeFooGroup(global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.FooGroup value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        if (result.fooCase_ == FooOneofCase.FooGroup &&
-            result.FooGroup != global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.FooGroup.DefaultInstance) {
-          result.foo_ = global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.FooGroup.CreateBuilder(result.FooGroup).MergeFrom(value).BuildPartial();
-        } else {
-          result.foo_ = value;
-        }
-        result.fooCase_ = FooOneofCase.FooGroup;
-        return this;
-      }
-      public Builder ClearFooGroup() {
-        if (result.fooCase_ == FooOneofCase.FooGroup) {
-          PrepareBuilder();
-          result.fooCase_ = FooOneofCase.None;
-          result.foo_ = null;
-        }
-        return this;
-      }
-
-      public bool HasFooLazyMessage {
-        get { return result.fooCase_ == FooOneofCase.FooLazyMessage; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage FooLazyMessage {
-        get { return result.fooCase_ == FooOneofCase.FooLazyMessage ? (global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage) result.foo_ : global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage.DefaultInstance; }
-        set { SetFooLazyMessage(value); }
-      }
-      public Builder SetFooLazyMessage(global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.fooCase_ = FooOneofCase.FooLazyMessage;
-        result.foo_ = value;
-        return this;
-      }
-      public Builder SetFooLazyMessage(global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.fooCase_ = FooOneofCase.FooLazyMessage;
-        result.foo_ = builderForValue.Build();
-        return this;
-      }
-      public Builder MergeFooLazyMessage(global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        if (result.fooCase_ == FooOneofCase.FooLazyMessage &&
-            result.FooLazyMessage != global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage.DefaultInstance) {
-          result.foo_ = global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage.CreateBuilder(result.FooLazyMessage).MergeFrom(value).BuildPartial();
-        } else {
-          result.foo_ = value;
-        }
-        result.fooCase_ = FooOneofCase.FooLazyMessage;
-        return this;
-      }
-      public Builder ClearFooLazyMessage() {
-        if (result.fooCase_ == FooOneofCase.FooLazyMessage) {
-          PrepareBuilder();
-          result.fooCase_ = FooOneofCase.None;
-          result.foo_ = null;
-        }
-        return this;
-      }
-
-      public bool HasBarInt {
-        get { return result.barCase_ == BarOneofCase.BarInt; }
-      }
-      public int BarInt {
-        get { return result.barCase_ == BarOneofCase.BarInt ? (int) result.bar_ : 5; }
-        set { SetBarInt(value); }
-      }
-      public Builder SetBarInt(int value) {
-        PrepareBuilder();
-        result.bar_ = value;
-        result.barCase_ = BarOneofCase.BarInt;
-        return this;
-      }
-      public Builder ClearBarInt() {
-        PrepareBuilder();
-        if (result.barCase_ == BarOneofCase.BarInt) {
-          result.barCase_ = BarOneofCase.None;
-        }
-        return this;
-      }
-
-      public bool HasBarString {
-        get { return result.barCase_ == BarOneofCase.BarString; }
-      }
-      public string BarString {
-        get { return result.barCase_ == BarOneofCase.BarString ? (string) result.bar_ : "STRING"; }
-        set { SetBarString(value); }
-      }
-      public Builder SetBarString(string value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.bar_ = value;
-        result.barCase_ = BarOneofCase.BarString;
-        return this;
-      }
-      public Builder ClearBarString() {
-        PrepareBuilder();
-        if (result.barCase_ == BarOneofCase.BarString) {
-          result.barCase_ = BarOneofCase.None;
-        }
-        return this;
-      }
-
-      public bool HasBarCord {
-        get { return result.barCase_ == BarOneofCase.BarCord; }
-      }
-      public string BarCord {
-        get { return result.barCase_ == BarOneofCase.BarCord ? (string) result.bar_ : "CORD"; }
-        set { SetBarCord(value); }
-      }
-      public Builder SetBarCord(string value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.bar_ = value;
-        result.barCase_ = BarOneofCase.BarCord;
-        return this;
-      }
-      public Builder ClearBarCord() {
-        PrepareBuilder();
-        if (result.barCase_ == BarOneofCase.BarCord) {
-          result.barCase_ = BarOneofCase.None;
-        }
-        return this;
-      }
-
-      public bool HasBarStringPiece {
-        get { return result.barCase_ == BarOneofCase.BarStringPiece; }
-      }
-      public string BarStringPiece {
-        get { return result.barCase_ == BarOneofCase.BarStringPiece ? (string) result.bar_ : "SPIECE"; }
-        set { SetBarStringPiece(value); }
-      }
-      public Builder SetBarStringPiece(string value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.bar_ = value;
-        result.barCase_ = BarOneofCase.BarStringPiece;
-        return this;
-      }
-      public Builder ClearBarStringPiece() {
-        PrepareBuilder();
-        if (result.barCase_ == BarOneofCase.BarStringPiece) {
-          result.barCase_ = BarOneofCase.None;
-        }
-        return this;
-      }
-
-      public bool HasBarBytes {
-        get { return result.barCase_ == BarOneofCase.BarBytes; }
-      }
-      public pb::ByteString BarBytes {
-        get { return result.barCase_ == BarOneofCase.BarBytes ? (pb::ByteString) result.bar_ : (pb::ByteString) global::Google.ProtocolBuffers.TestProtos.TestOneof2.Descriptor.Fields[13].DefaultValue; }
-        set { SetBarBytes(value); }
-      }
-      public Builder SetBarBytes(pb::ByteString value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.bar_ = value;
-        result.barCase_ = BarOneofCase.BarBytes;
-        return this;
-      }
-      public Builder ClearBarBytes() {
-        PrepareBuilder();
-        if (result.barCase_ == BarOneofCase.BarBytes) {
-          result.barCase_ = BarOneofCase.None;
-        }
-        return this;
-      }
-
-      public bool HasBarEnum {
-        get { return result.barCase_ == BarOneofCase.BarEnum; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedEnum BarEnum {
-        get { return result.barCase_ == BarOneofCase.BarEnum ? (global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedEnum) result.bar_ : global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedEnum.BAR; }
-        set { SetBarEnum(value); }
-      }
-      public Builder SetBarEnum(global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedEnum value) {
-        PrepareBuilder();
-        result.bar_ = value;
-        result.barCase_ = BarOneofCase.BarEnum;
-        return this;
-      }
-      public Builder ClearBarEnum() {
-        PrepareBuilder();
-        if (result.barCase_ == BarOneofCase.BarEnum) {
-          result.barCase_ = BarOneofCase.None;
-        }
-        return this;
-      }
-
-      public bool HasBazInt {
-        get { return result.hasBazInt; }
-      }
-      public int BazInt {
-        get { return result.BazInt; }
-        set { SetBazInt(value); }
-      }
-      public Builder SetBazInt(int value) {
-        PrepareBuilder();
-        result.hasBazInt = true;
-        result.bazInt_ = value;
-        return this;
-      }
-      public Builder ClearBazInt() {
-        PrepareBuilder();
-        result.hasBazInt = false;
-        result.bazInt_ = 0;
-        return this;
-      }
-
-      public bool HasBazString {
-        get { return result.hasBazString; }
-      }
-      public string BazString {
-        get { return result.BazString; }
-        set { SetBazString(value); }
-      }
-      public Builder SetBazString(string value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasBazString = true;
-        result.bazString_ = value;
-        return this;
-      }
-      public Builder ClearBazString() {
-        PrepareBuilder();
-        result.hasBazString = false;
-        result.bazString_ = "BAZ";
-        return this;
-      }
-
-      public FooOneofCase FooCase {
-        get { return result.fooCase_; }
-      }
-      public Builder ClearFoo() {
-        PrepareBuilder();
-        result.foo_ = null;
-        result.fooCase_ = FooOneofCase.None;
-        return this;
-      }
-
-      public BarOneofCase BarCase {
-        get { return result.barCase_; }
-      }
-      public Builder ClearBar() {
-        PrepareBuilder();
-        result.bar_ = null;
-        result.barCase_ = BarOneofCase.None;
-        return this;
-      }
-    }
-    static TestOneof2() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class TestRequiredOneof : pb::GeneratedMessage<TestRequiredOneof, TestRequiredOneof.Builder> {
-    private TestRequiredOneof() { }
-    private static readonly TestRequiredOneof defaultInstance = new TestRequiredOneof().MakeReadOnly();
-    private static readonly string[] _testRequiredOneofFieldNames = new string[] { "foo_int", "foo_message", "foo_string" };
-    private static readonly uint[] _testRequiredOneofFieldTags = new uint[] { 8, 26, 18 };
-    public static TestRequiredOneof DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override TestRequiredOneof DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override TestRequiredOneof ThisMessage {
-      get { return this; }
-    }
-
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestRequiredOneof__Descriptor; }
-    }
-
-    protected override pb::FieldAccess.FieldAccessorTable<TestRequiredOneof, TestRequiredOneof.Builder> InternalFieldAccessors {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestRequiredOneof__FieldAccessorTable; }
-    }
-
-    #region Nested types
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public static partial class Types {
-      [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[] { "required_double" };
-        private static readonly uint[] _nestedMessageFieldTags = new uint[] { 9 };
-        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.Unittest.internal__static_protobuf_unittest_TestRequiredOneof_NestedMessage__Descriptor; }
-        }
-
-        protected override pb::FieldAccess.FieldAccessorTable<NestedMessage, NestedMessage.Builder> InternalFieldAccessors {
-          get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestRequiredOneof_NestedMessage__FieldAccessorTable; }
-        }
-
-        public const int RequiredDoubleFieldNumber = 1;
-        private bool hasRequiredDouble;
-        private double requiredDouble_;
-        public bool HasRequiredDouble {
-          get { return hasRequiredDouble; }
-        }
-        public double RequiredDouble {
-          get { return requiredDouble_; }
-        }
-
-        public override bool IsInitialized {
-          get {
-            if (!hasRequiredDouble) return false;
-            return true;
-          }
-        }
-
-        public override void WriteTo(pb::ICodedOutputStream output) {
-          CalcSerializedSize();
-          string[] field_names = _nestedMessageFieldNames;
-          if (hasRequiredDouble) {
-            output.WriteDouble(1, field_names[0], RequiredDouble);
-          }
-          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 (hasRequiredDouble) {
-            size += pb::CodedOutputStream.ComputeDoubleSize(1, RequiredDouble);
-          }
-          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.TestRequiredOneof.Types.NestedMessage.Descriptor; }
-          }
-
-          public override NestedMessage DefaultInstanceForType {
-            get { return global::Google.ProtocolBuffers.TestProtos.TestRequiredOneof.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.TestRequiredOneof.Types.NestedMessage.DefaultInstance) return this;
-            PrepareBuilder();
-            if (other.HasRequiredDouble) {
-              RequiredDouble = other.RequiredDouble;
-            }
-            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 9: {
-                  result.hasRequiredDouble = input.ReadDouble(ref result.requiredDouble_);
-                  break;
-                }
-              }
-            }
-
-            if (unknownFields != null) {
-              this.UnknownFields = unknownFields.Build();
-            }
-            return this;
-          }
-
-
-          public bool HasRequiredDouble {
-            get { return result.hasRequiredDouble; }
-          }
-          public double RequiredDouble {
-            get { return result.RequiredDouble; }
-            set { SetRequiredDouble(value); }
-          }
-          public Builder SetRequiredDouble(double value) {
-            PrepareBuilder();
-            result.hasRequiredDouble = true;
-            result.requiredDouble_ = value;
-            return this;
-          }
-          public Builder ClearRequiredDouble() {
-            PrepareBuilder();
-            result.hasRequiredDouble = false;
-            result.requiredDouble_ = 0D;
-            return this;
-          }
-        }
-        static NestedMessage() {
-          object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor, null);
-        }
-      }
-
-    }
-    #endregion
-
-    private object foo_;
-    public enum FooOneofCase {
-      FooInt = 1,
-      FooString = 2,
-      FooMessage = 3,
-      None = 0,
-    }
-    private FooOneofCase fooCase_ = FooOneofCase.None;
-    public FooOneofCase FooCase {
-      get { return fooCase_; }
-    }
-
-    public const int FooIntFieldNumber = 1;
-    public bool HasFooInt {
-      get { return fooCase_ == FooOneofCase.FooInt; }
-    }
-    public int FooInt {
-      get { return fooCase_ == FooOneofCase.FooInt ? (int) foo_ : 0; }
-    }
-
-    public const int FooStringFieldNumber = 2;
-    public bool HasFooString {
-      get { return fooCase_ == FooOneofCase.FooString; }
-    }
-    public string FooString {
-      get { return fooCase_ == FooOneofCase.FooString ? (string) foo_ : ""; }
-    }
-
-    public const int FooMessageFieldNumber = 3;
-    public bool HasFooMessage {
-      get { return fooCase_ == FooOneofCase.FooMessage; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.TestRequiredOneof.Types.NestedMessage FooMessage {
-      get { return fooCase_ == FooOneofCase.FooMessage ? (global::Google.ProtocolBuffers.TestProtos.TestRequiredOneof.Types.NestedMessage) foo_ : global::Google.ProtocolBuffers.TestProtos.TestRequiredOneof.Types.NestedMessage.DefaultInstance; }
-    }
-
-    public override bool IsInitialized {
-      get {
-        if (HasFooMessage) {
-          if (!FooMessage.IsInitialized) return false;
-        }
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _testRequiredOneofFieldNames;
-      if (fooCase_ == FooOneofCase.FooInt) {
-        output.WriteInt32(1, field_names[0], FooInt);
-      }
-      if (fooCase_ == FooOneofCase.FooString) {
-        output.WriteString(2, field_names[2], FooString);
-      }
-      if (fooCase_ == FooOneofCase.FooMessage) {
-        output.WriteMessage(3, field_names[1], FooMessage);
-      }
-      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 (fooCase_ == FooOneofCase.FooInt) {
-        size += pb::CodedOutputStream.ComputeInt32Size(1, FooInt);
-      }
-      if (fooCase_ == FooOneofCase.FooString) {
-        size += pb::CodedOutputStream.ComputeStringSize(2, FooString);
-      }
-      if (fooCase_ == FooOneofCase.FooMessage) {
-        size += pb::CodedOutputStream.ComputeMessageSize(3, FooMessage);
-      }
-      size += UnknownFields.SerializedSize;
-      memoizedSerializedSize = size;
-      return size;
-    }
-    public static TestRequiredOneof ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestRequiredOneof ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestRequiredOneof ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestRequiredOneof ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestRequiredOneof ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestRequiredOneof ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static TestRequiredOneof ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static TestRequiredOneof ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static TestRequiredOneof ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestRequiredOneof ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private TestRequiredOneof 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(TestRequiredOneof prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilder<TestRequiredOneof, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(TestRequiredOneof cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private TestRequiredOneof result;
-
-      private TestRequiredOneof PrepareBuilder() {
-        if (resultIsReadOnly) {
-          TestRequiredOneof original = result;
-          result = new TestRequiredOneof();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override TestRequiredOneof 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.TestRequiredOneof.Descriptor; }
-      }
-
-      public override TestRequiredOneof DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.TestRequiredOneof.DefaultInstance; }
-      }
-
-      public override TestRequiredOneof BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is TestRequiredOneof) {
-          return MergeFrom((TestRequiredOneof) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(TestRequiredOneof other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.TestRequiredOneof.DefaultInstance) return this;
-        PrepareBuilder();
-        switch (other.FooCase) {
-          case FooOneofCase.FooInt: {
-            SetFooInt(other.FooInt);
-            break;
-          }
-          case FooOneofCase.FooString: {
-            SetFooString(other.FooString);
-            break;
-          }
-          case FooOneofCase.FooMessage: {
-            MergeFooMessage(other.FooMessage);
-            break;
-          }
-          case FooOneofCase.None: { break; }
-        }
-        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(_testRequiredOneofFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _testRequiredOneofFieldTags[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: {
-              int value = 0;
-              if (input.ReadInt32(ref value)) {
-                result.foo_ = value;
-                result.fooCase_ = FooOneofCase.FooInt;
-              }
-              break;
-            }
-            case 18: {
-              string value = "";
-              if (input.ReadString(ref value)) {
-                result.foo_ = value;
-                result.fooCase_ = FooOneofCase.FooString;
-              }
-              break;
-            }
-            case 26: {
-              global::Google.ProtocolBuffers.TestProtos.TestRequiredOneof.Types.NestedMessage.Builder subBuilder = global::Google.ProtocolBuffers.TestProtos.TestRequiredOneof.Types.NestedMessage.CreateBuilder();
-              if (result.fooCase_ == FooOneofCase.FooMessage) {
-                subBuilder.MergeFrom(FooMessage);
-              }
-              input.ReadMessage(subBuilder, extensionRegistry);
-              result.foo_ = subBuilder.BuildPartial();
-              result.fooCase_ = FooOneofCase.FooMessage;
-              break;
-            }
-          }
-        }
-
-        if (unknownFields != null) {
-          this.UnknownFields = unknownFields.Build();
-        }
-        return this;
-      }
-
-
-      public bool HasFooInt {
-        get { return result.fooCase_ == FooOneofCase.FooInt; }
-      }
-      public int FooInt {
-        get { return result.fooCase_ == FooOneofCase.FooInt ? (int) result.foo_ : 0; }
-        set { SetFooInt(value); }
-      }
-      public Builder SetFooInt(int value) {
-        PrepareBuilder();
-        result.foo_ = value;
-        result.fooCase_ = FooOneofCase.FooInt;
-        return this;
-      }
-      public Builder ClearFooInt() {
-        PrepareBuilder();
-        if (result.fooCase_ == FooOneofCase.FooInt) {
-          result.fooCase_ = FooOneofCase.None;
-        }
-        return this;
-      }
-
-      public bool HasFooString {
-        get { return result.fooCase_ == FooOneofCase.FooString; }
-      }
-      public string FooString {
-        get { return result.fooCase_ == FooOneofCase.FooString ? (string) result.foo_ : ""; }
-        set { SetFooString(value); }
-      }
-      public Builder SetFooString(string value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.foo_ = value;
-        result.fooCase_ = FooOneofCase.FooString;
-        return this;
-      }
-      public Builder ClearFooString() {
-        PrepareBuilder();
-        if (result.fooCase_ == FooOneofCase.FooString) {
-          result.fooCase_ = FooOneofCase.None;
-        }
-        return this;
-      }
-
-      public bool HasFooMessage {
-        get { return result.fooCase_ == FooOneofCase.FooMessage; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.TestRequiredOneof.Types.NestedMessage FooMessage {
-        get { return result.fooCase_ == FooOneofCase.FooMessage ? (global::Google.ProtocolBuffers.TestProtos.TestRequiredOneof.Types.NestedMessage) result.foo_ : global::Google.ProtocolBuffers.TestProtos.TestRequiredOneof.Types.NestedMessage.DefaultInstance; }
-        set { SetFooMessage(value); }
-      }
-      public Builder SetFooMessage(global::Google.ProtocolBuffers.TestProtos.TestRequiredOneof.Types.NestedMessage value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.fooCase_ = FooOneofCase.FooMessage;
-        result.foo_ = value;
-        return this;
-      }
-      public Builder SetFooMessage(global::Google.ProtocolBuffers.TestProtos.TestRequiredOneof.Types.NestedMessage.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.fooCase_ = FooOneofCase.FooMessage;
-        result.foo_ = builderForValue.Build();
-        return this;
-      }
-      public Builder MergeFooMessage(global::Google.ProtocolBuffers.TestProtos.TestRequiredOneof.Types.NestedMessage value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        if (result.fooCase_ == FooOneofCase.FooMessage &&
-            result.FooMessage != global::Google.ProtocolBuffers.TestProtos.TestRequiredOneof.Types.NestedMessage.DefaultInstance) {
-          result.foo_ = global::Google.ProtocolBuffers.TestProtos.TestRequiredOneof.Types.NestedMessage.CreateBuilder(result.FooMessage).MergeFrom(value).BuildPartial();
-        } else {
-          result.foo_ = value;
-        }
-        result.fooCase_ = FooOneofCase.FooMessage;
-        return this;
-      }
-      public Builder ClearFooMessage() {
-        if (result.fooCase_ == FooOneofCase.FooMessage) {
-          PrepareBuilder();
-          result.fooCase_ = FooOneofCase.None;
-          result.foo_ = null;
-        }
-        return this;
-      }
-
-      public FooOneofCase FooCase {
-        get { return result.fooCase_; }
-      }
-      public Builder ClearFoo() {
-        PrepareBuilder();
-        result.foo_ = null;
-        result.fooCase_ = FooOneofCase.None;
-        return this;
-      }
-    }
-    static TestRequiredOneof() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class TestPackedTypes : pb::GeneratedMessage<TestPackedTypes, TestPackedTypes.Builder> {
-    private TestPackedTypes() { }
-    private static readonly TestPackedTypes defaultInstance = new TestPackedTypes().MakeReadOnly();
-    private static readonly string[] _testPackedTypesFieldNames = new string[] { "packed_bool", "packed_double", "packed_enum", "packed_fixed32", "packed_fixed64", "packed_float", "packed_int32", "packed_int64", "packed_sfixed32", "packed_sfixed64", "packed_sint32", "packed_sint64", "packed_uint32", "packed_uint64" };
-    private static readonly uint[] _testPackedTypesFieldTags = new uint[] { 818, 810, 826, 770, 778, 802, 722, 730, 786, 794, 754, 762, 738, 746 };
-    public static TestPackedTypes DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override TestPackedTypes DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override TestPackedTypes ThisMessage {
-      get { return this; }
-    }
-
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestPackedTypes__Descriptor; }
-    }
-
-    protected override pb::FieldAccess.FieldAccessorTable<TestPackedTypes, TestPackedTypes.Builder> InternalFieldAccessors {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestPackedTypes__FieldAccessorTable; }
-    }
-
-    public const int PackedInt32FieldNumber = 90;
-    private int packedInt32MemoizedSerializedSize;
-    private pbc::PopsicleList<int> packedInt32_ = new pbc::PopsicleList<int>();
-    public scg::IList<int> PackedInt32List {
-      get { return pbc::Lists.AsReadOnly(packedInt32_); }
-    }
-    public int PackedInt32Count {
-      get { return packedInt32_.Count; }
-    }
-    public int GetPackedInt32(int index) {
-      return packedInt32_[index];
-    }
-
-    public const int PackedInt64FieldNumber = 91;
-    private int packedInt64MemoizedSerializedSize;
-    private pbc::PopsicleList<long> packedInt64_ = new pbc::PopsicleList<long>();
-    public scg::IList<long> PackedInt64List {
-      get { return pbc::Lists.AsReadOnly(packedInt64_); }
-    }
-    public int PackedInt64Count {
-      get { return packedInt64_.Count; }
-    }
-    public long GetPackedInt64(int index) {
-      return packedInt64_[index];
-    }
-
-    public const int PackedUint32FieldNumber = 92;
-    private int packedUint32MemoizedSerializedSize;
-    private pbc::PopsicleList<uint> packedUint32_ = new pbc::PopsicleList<uint>();
-    public scg::IList<uint> PackedUint32List {
-      get { return pbc::Lists.AsReadOnly(packedUint32_); }
-    }
-    public int PackedUint32Count {
-      get { return packedUint32_.Count; }
-    }
-    public uint GetPackedUint32(int index) {
-      return packedUint32_[index];
-    }
-
-    public const int PackedUint64FieldNumber = 93;
-    private int packedUint64MemoizedSerializedSize;
-    private pbc::PopsicleList<ulong> packedUint64_ = new pbc::PopsicleList<ulong>();
-    public scg::IList<ulong> PackedUint64List {
-      get { return pbc::Lists.AsReadOnly(packedUint64_); }
-    }
-    public int PackedUint64Count {
-      get { return packedUint64_.Count; }
-    }
-    public ulong GetPackedUint64(int index) {
-      return packedUint64_[index];
-    }
-
-    public const int PackedSint32FieldNumber = 94;
-    private int packedSint32MemoizedSerializedSize;
-    private pbc::PopsicleList<int> packedSint32_ = new pbc::PopsicleList<int>();
-    public scg::IList<int> PackedSint32List {
-      get { return pbc::Lists.AsReadOnly(packedSint32_); }
-    }
-    public int PackedSint32Count {
-      get { return packedSint32_.Count; }
-    }
-    public int GetPackedSint32(int index) {
-      return packedSint32_[index];
-    }
-
-    public const int PackedSint64FieldNumber = 95;
-    private int packedSint64MemoizedSerializedSize;
-    private pbc::PopsicleList<long> packedSint64_ = new pbc::PopsicleList<long>();
-    public scg::IList<long> PackedSint64List {
-      get { return pbc::Lists.AsReadOnly(packedSint64_); }
-    }
-    public int PackedSint64Count {
-      get { return packedSint64_.Count; }
-    }
-    public long GetPackedSint64(int index) {
-      return packedSint64_[index];
-    }
-
-    public const int PackedFixed32FieldNumber = 96;
-    private int packedFixed32MemoizedSerializedSize;
-    private pbc::PopsicleList<uint> packedFixed32_ = new pbc::PopsicleList<uint>();
-    public scg::IList<uint> PackedFixed32List {
-      get { return pbc::Lists.AsReadOnly(packedFixed32_); }
-    }
-    public int PackedFixed32Count {
-      get { return packedFixed32_.Count; }
-    }
-    public uint GetPackedFixed32(int index) {
-      return packedFixed32_[index];
-    }
-
-    public const int PackedFixed64FieldNumber = 97;
-    private int packedFixed64MemoizedSerializedSize;
-    private pbc::PopsicleList<ulong> packedFixed64_ = new pbc::PopsicleList<ulong>();
-    public scg::IList<ulong> PackedFixed64List {
-      get { return pbc::Lists.AsReadOnly(packedFixed64_); }
-    }
-    public int PackedFixed64Count {
-      get { return packedFixed64_.Count; }
-    }
-    public ulong GetPackedFixed64(int index) {
-      return packedFixed64_[index];
-    }
-
-    public const int PackedSfixed32FieldNumber = 98;
-    private int packedSfixed32MemoizedSerializedSize;
-    private pbc::PopsicleList<int> packedSfixed32_ = new pbc::PopsicleList<int>();
-    public scg::IList<int> PackedSfixed32List {
-      get { return pbc::Lists.AsReadOnly(packedSfixed32_); }
-    }
-    public int PackedSfixed32Count {
-      get { return packedSfixed32_.Count; }
-    }
-    public int GetPackedSfixed32(int index) {
-      return packedSfixed32_[index];
-    }
-
-    public const int PackedSfixed64FieldNumber = 99;
-    private int packedSfixed64MemoizedSerializedSize;
-    private pbc::PopsicleList<long> packedSfixed64_ = new pbc::PopsicleList<long>();
-    public scg::IList<long> PackedSfixed64List {
-      get { return pbc::Lists.AsReadOnly(packedSfixed64_); }
-    }
-    public int PackedSfixed64Count {
-      get { return packedSfixed64_.Count; }
-    }
-    public long GetPackedSfixed64(int index) {
-      return packedSfixed64_[index];
-    }
-
-    public const int PackedFloatFieldNumber = 100;
-    private int packedFloatMemoizedSerializedSize;
-    private pbc::PopsicleList<float> packedFloat_ = new pbc::PopsicleList<float>();
-    public scg::IList<float> PackedFloatList {
-      get { return pbc::Lists.AsReadOnly(packedFloat_); }
-    }
-    public int PackedFloatCount {
-      get { return packedFloat_.Count; }
-    }
-    public float GetPackedFloat(int index) {
-      return packedFloat_[index];
-    }
-
-    public const int PackedDoubleFieldNumber = 101;
-    private int packedDoubleMemoizedSerializedSize;
-    private pbc::PopsicleList<double> packedDouble_ = new pbc::PopsicleList<double>();
-    public scg::IList<double> PackedDoubleList {
-      get { return pbc::Lists.AsReadOnly(packedDouble_); }
-    }
-    public int PackedDoubleCount {
-      get { return packedDouble_.Count; }
-    }
-    public double GetPackedDouble(int index) {
-      return packedDouble_[index];
-    }
-
-    public const int PackedBoolFieldNumber = 102;
-    private int packedBoolMemoizedSerializedSize;
-    private pbc::PopsicleList<bool> packedBool_ = new pbc::PopsicleList<bool>();
-    public scg::IList<bool> PackedBoolList {
-      get { return pbc::Lists.AsReadOnly(packedBool_); }
-    }
-    public int PackedBoolCount {
-      get { return packedBool_.Count; }
-    }
-    public bool GetPackedBool(int index) {
-      return packedBool_[index];
-    }
-
-    public const int PackedEnumFieldNumber = 103;
-    private int packedEnumMemoizedSerializedSize;
-    private pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.ForeignEnum> packedEnum_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.ForeignEnum>();
-    public scg::IList<global::Google.ProtocolBuffers.TestProtos.ForeignEnum> PackedEnumList {
-      get { return pbc::Lists.AsReadOnly(packedEnum_); }
-    }
-    public int PackedEnumCount {
-      get { return packedEnum_.Count; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.ForeignEnum GetPackedEnum(int index) {
-      return packedEnum_[index];
-    }
-
-    public override bool IsInitialized {
-      get {
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _testPackedTypesFieldNames;
-      if (packedInt32_.Count > 0) {
-        output.WritePackedInt32Array(90, field_names[6], packedInt32MemoizedSerializedSize, packedInt32_);
-      }
-      if (packedInt64_.Count > 0) {
-        output.WritePackedInt64Array(91, field_names[7], packedInt64MemoizedSerializedSize, packedInt64_);
-      }
-      if (packedUint32_.Count > 0) {
-        output.WritePackedUInt32Array(92, field_names[12], packedUint32MemoizedSerializedSize, packedUint32_);
-      }
-      if (packedUint64_.Count > 0) {
-        output.WritePackedUInt64Array(93, field_names[13], packedUint64MemoizedSerializedSize, packedUint64_);
-      }
-      if (packedSint32_.Count > 0) {
-        output.WritePackedSInt32Array(94, field_names[10], packedSint32MemoizedSerializedSize, packedSint32_);
-      }
-      if (packedSint64_.Count > 0) {
-        output.WritePackedSInt64Array(95, field_names[11], packedSint64MemoizedSerializedSize, packedSint64_);
-      }
-      if (packedFixed32_.Count > 0) {
-        output.WritePackedFixed32Array(96, field_names[3], packedFixed32MemoizedSerializedSize, packedFixed32_);
-      }
-      if (packedFixed64_.Count > 0) {
-        output.WritePackedFixed64Array(97, field_names[4], packedFixed64MemoizedSerializedSize, packedFixed64_);
-      }
-      if (packedSfixed32_.Count > 0) {
-        output.WritePackedSFixed32Array(98, field_names[8], packedSfixed32MemoizedSerializedSize, packedSfixed32_);
-      }
-      if (packedSfixed64_.Count > 0) {
-        output.WritePackedSFixed64Array(99, field_names[9], packedSfixed64MemoizedSerializedSize, packedSfixed64_);
-      }
-      if (packedFloat_.Count > 0) {
-        output.WritePackedFloatArray(100, field_names[5], packedFloatMemoizedSerializedSize, packedFloat_);
-      }
-      if (packedDouble_.Count > 0) {
-        output.WritePackedDoubleArray(101, field_names[1], packedDoubleMemoizedSerializedSize, packedDouble_);
-      }
-      if (packedBool_.Count > 0) {
-        output.WritePackedBoolArray(102, field_names[0], packedBoolMemoizedSerializedSize, packedBool_);
-      }
-      if (packedEnum_.Count > 0) {
-        output.WritePackedEnumArray(103, field_names[2], packedEnumMemoizedSerializedSize, packedEnum_);
-      }
-      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;
-        foreach (int element in PackedInt32List) {
-          dataSize += pb::CodedOutputStream.ComputeInt32SizeNoTag(element);
-        }
-        size += dataSize;
-        if (packedInt32_.Count != 0) {
-          size += 2 + pb::CodedOutputStream.ComputeInt32SizeNoTag(dataSize);
-        }
-        packedInt32MemoizedSerializedSize = dataSize;
-      }
-      {
-        int dataSize = 0;
-        foreach (long element in PackedInt64List) {
-          dataSize += pb::CodedOutputStream.ComputeInt64SizeNoTag(element);
-        }
-        size += dataSize;
-        if (packedInt64_.Count != 0) {
-          size += 2 + pb::CodedOutputStream.ComputeInt32SizeNoTag(dataSize);
-        }
-        packedInt64MemoizedSerializedSize = dataSize;
-      }
-      {
-        int dataSize = 0;
-        foreach (uint element in PackedUint32List) {
-          dataSize += pb::CodedOutputStream.ComputeUInt32SizeNoTag(element);
-        }
-        size += dataSize;
-        if (packedUint32_.Count != 0) {
-          size += 2 + pb::CodedOutputStream.ComputeInt32SizeNoTag(dataSize);
-        }
-        packedUint32MemoizedSerializedSize = dataSize;
-      }
-      {
-        int dataSize = 0;
-        foreach (ulong element in PackedUint64List) {
-          dataSize += pb::CodedOutputStream.ComputeUInt64SizeNoTag(element);
-        }
-        size += dataSize;
-        if (packedUint64_.Count != 0) {
-          size += 2 + pb::CodedOutputStream.ComputeInt32SizeNoTag(dataSize);
-        }
-        packedUint64MemoizedSerializedSize = dataSize;
-      }
-      {
-        int dataSize = 0;
-        foreach (int element in PackedSint32List) {
-          dataSize += pb::CodedOutputStream.ComputeSInt32SizeNoTag(element);
-        }
-        size += dataSize;
-        if (packedSint32_.Count != 0) {
-          size += 2 + pb::CodedOutputStream.ComputeInt32SizeNoTag(dataSize);
-        }
-        packedSint32MemoizedSerializedSize = dataSize;
-      }
-      {
-        int dataSize = 0;
-        foreach (long element in PackedSint64List) {
-          dataSize += pb::CodedOutputStream.ComputeSInt64SizeNoTag(element);
-        }
-        size += dataSize;
-        if (packedSint64_.Count != 0) {
-          size += 2 + pb::CodedOutputStream.ComputeInt32SizeNoTag(dataSize);
-        }
-        packedSint64MemoizedSerializedSize = dataSize;
-      }
-      {
-        int dataSize = 0;
-        dataSize = 4 * packedFixed32_.Count;
-        size += dataSize;
-        if (packedFixed32_.Count != 0) {
-          size += 2 + pb::CodedOutputStream.ComputeInt32SizeNoTag(dataSize);
-        }
-        packedFixed32MemoizedSerializedSize = dataSize;
-      }
-      {
-        int dataSize = 0;
-        dataSize = 8 * packedFixed64_.Count;
-        size += dataSize;
-        if (packedFixed64_.Count != 0) {
-          size += 2 + pb::CodedOutputStream.ComputeInt32SizeNoTag(dataSize);
-        }
-        packedFixed64MemoizedSerializedSize = dataSize;
-      }
-      {
-        int dataSize = 0;
-        dataSize = 4 * packedSfixed32_.Count;
-        size += dataSize;
-        if (packedSfixed32_.Count != 0) {
-          size += 2 + pb::CodedOutputStream.ComputeInt32SizeNoTag(dataSize);
-        }
-        packedSfixed32MemoizedSerializedSize = dataSize;
-      }
-      {
-        int dataSize = 0;
-        dataSize = 8 * packedSfixed64_.Count;
-        size += dataSize;
-        if (packedSfixed64_.Count != 0) {
-          size += 2 + pb::CodedOutputStream.ComputeInt32SizeNoTag(dataSize);
-        }
-        packedSfixed64MemoizedSerializedSize = dataSize;
-      }
-      {
-        int dataSize = 0;
-        dataSize = 4 * packedFloat_.Count;
-        size += dataSize;
-        if (packedFloat_.Count != 0) {
-          size += 2 + pb::CodedOutputStream.ComputeInt32SizeNoTag(dataSize);
-        }
-        packedFloatMemoizedSerializedSize = dataSize;
-      }
-      {
-        int dataSize = 0;
-        dataSize = 8 * packedDouble_.Count;
-        size += dataSize;
-        if (packedDouble_.Count != 0) {
-          size += 2 + pb::CodedOutputStream.ComputeInt32SizeNoTag(dataSize);
-        }
-        packedDoubleMemoizedSerializedSize = dataSize;
-      }
-      {
-        int dataSize = 0;
-        dataSize = 1 * packedBool_.Count;
-        size += dataSize;
-        if (packedBool_.Count != 0) {
-          size += 2 + pb::CodedOutputStream.ComputeInt32SizeNoTag(dataSize);
-        }
-        packedBoolMemoizedSerializedSize = dataSize;
-      }
-      {
-        int dataSize = 0;
-        if (packedEnum_.Count > 0) {
-          foreach (global::Google.ProtocolBuffers.TestProtos.ForeignEnum element in packedEnum_) {
-            dataSize += pb::CodedOutputStream.ComputeEnumSizeNoTag((int) element);
-          }
-          size += dataSize;
-          size += 2;
-          size += pb::CodedOutputStream.ComputeRawVarint32Size((uint) dataSize);
-        }
-        packedEnumMemoizedSerializedSize = dataSize;
-      }
-      size += UnknownFields.SerializedSize;
-      memoizedSerializedSize = size;
-      return size;
-    }
-    public static TestPackedTypes ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestPackedTypes ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestPackedTypes ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestPackedTypes ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestPackedTypes ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestPackedTypes ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static TestPackedTypes ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static TestPackedTypes ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static TestPackedTypes ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestPackedTypes ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private TestPackedTypes MakeReadOnly() {
-      packedInt32_.MakeReadOnly();
-      packedInt64_.MakeReadOnly();
-      packedUint32_.MakeReadOnly();
-      packedUint64_.MakeReadOnly();
-      packedSint32_.MakeReadOnly();
-      packedSint64_.MakeReadOnly();
-      packedFixed32_.MakeReadOnly();
-      packedFixed64_.MakeReadOnly();
-      packedSfixed32_.MakeReadOnly();
-      packedSfixed64_.MakeReadOnly();
-      packedFloat_.MakeReadOnly();
-      packedDouble_.MakeReadOnly();
-      packedBool_.MakeReadOnly();
-      packedEnum_.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(TestPackedTypes prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilder<TestPackedTypes, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(TestPackedTypes cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private TestPackedTypes result;
-
-      private TestPackedTypes PrepareBuilder() {
-        if (resultIsReadOnly) {
-          TestPackedTypes original = result;
-          result = new TestPackedTypes();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override TestPackedTypes 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.TestPackedTypes.Descriptor; }
-      }
-
-      public override TestPackedTypes DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.TestPackedTypes.DefaultInstance; }
-      }
-
-      public override TestPackedTypes BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is TestPackedTypes) {
-          return MergeFrom((TestPackedTypes) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(TestPackedTypes other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.TestPackedTypes.DefaultInstance) return this;
-        PrepareBuilder();
-        if (other.packedInt32_.Count != 0) {
-          result.packedInt32_.Add(other.packedInt32_);
-        }
-        if (other.packedInt64_.Count != 0) {
-          result.packedInt64_.Add(other.packedInt64_);
-        }
-        if (other.packedUint32_.Count != 0) {
-          result.packedUint32_.Add(other.packedUint32_);
-        }
-        if (other.packedUint64_.Count != 0) {
-          result.packedUint64_.Add(other.packedUint64_);
-        }
-        if (other.packedSint32_.Count != 0) {
-          result.packedSint32_.Add(other.packedSint32_);
-        }
-        if (other.packedSint64_.Count != 0) {
-          result.packedSint64_.Add(other.packedSint64_);
-        }
-        if (other.packedFixed32_.Count != 0) {
-          result.packedFixed32_.Add(other.packedFixed32_);
-        }
-        if (other.packedFixed64_.Count != 0) {
-          result.packedFixed64_.Add(other.packedFixed64_);
-        }
-        if (other.packedSfixed32_.Count != 0) {
-          result.packedSfixed32_.Add(other.packedSfixed32_);
-        }
-        if (other.packedSfixed64_.Count != 0) {
-          result.packedSfixed64_.Add(other.packedSfixed64_);
-        }
-        if (other.packedFloat_.Count != 0) {
-          result.packedFloat_.Add(other.packedFloat_);
-        }
-        if (other.packedDouble_.Count != 0) {
-          result.packedDouble_.Add(other.packedDouble_);
-        }
-        if (other.packedBool_.Count != 0) {
-          result.packedBool_.Add(other.packedBool_);
-        }
-        if (other.packedEnum_.Count != 0) {
-          result.packedEnum_.Add(other.packedEnum_);
-        }
-        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(_testPackedTypesFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _testPackedTypesFieldTags[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 722:
-            case 720: {
-              input.ReadInt32Array(tag, field_name, result.packedInt32_);
-              break;
-            }
-            case 730:
-            case 728: {
-              input.ReadInt64Array(tag, field_name, result.packedInt64_);
-              break;
-            }
-            case 738:
-            case 736: {
-              input.ReadUInt32Array(tag, field_name, result.packedUint32_);
-              break;
-            }
-            case 746:
-            case 744: {
-              input.ReadUInt64Array(tag, field_name, result.packedUint64_);
-              break;
-            }
-            case 754:
-            case 752: {
-              input.ReadSInt32Array(tag, field_name, result.packedSint32_);
-              break;
-            }
-            case 762:
-            case 760: {
-              input.ReadSInt64Array(tag, field_name, result.packedSint64_);
-              break;
-            }
-            case 770:
-            case 773: {
-              input.ReadFixed32Array(tag, field_name, result.packedFixed32_);
-              break;
-            }
-            case 778:
-            case 777: {
-              input.ReadFixed64Array(tag, field_name, result.packedFixed64_);
-              break;
-            }
-            case 786:
-            case 789: {
-              input.ReadSFixed32Array(tag, field_name, result.packedSfixed32_);
-              break;
-            }
-            case 794:
-            case 793: {
-              input.ReadSFixed64Array(tag, field_name, result.packedSfixed64_);
-              break;
-            }
-            case 802:
-            case 805: {
-              input.ReadFloatArray(tag, field_name, result.packedFloat_);
-              break;
-            }
-            case 810:
-            case 809: {
-              input.ReadDoubleArray(tag, field_name, result.packedDouble_);
-              break;
-            }
-            case 818:
-            case 816: {
-              input.ReadBoolArray(tag, field_name, result.packedBool_);
-              break;
-            }
-            case 826:
-            case 824: {
-              scg::ICollection<object> unknownItems;
-              input.ReadEnumArray<global::Google.ProtocolBuffers.TestProtos.ForeignEnum>(tag, field_name, result.packedEnum_, 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(103, (ulong)(int)rawValue);
-              }
-              break;
-            }
-          }
-        }
-
-        if (unknownFields != null) {
-          this.UnknownFields = unknownFields.Build();
-        }
-        return this;
-      }
-
-
-      public pbc::IPopsicleList<int> PackedInt32List {
-        get { return PrepareBuilder().packedInt32_; }
-      }
-      public int PackedInt32Count {
-        get { return result.PackedInt32Count; }
-      }
-      public int GetPackedInt32(int index) {
-        return result.GetPackedInt32(index);
-      }
-      public Builder SetPackedInt32(int index, int value) {
-        PrepareBuilder();
-        result.packedInt32_[index] = value;
-        return this;
-      }
-      public Builder AddPackedInt32(int value) {
-        PrepareBuilder();
-        result.packedInt32_.Add(value);
-        return this;
-      }
-      public Builder AddRangePackedInt32(scg::IEnumerable<int> values) {
-        PrepareBuilder();
-        result.packedInt32_.Add(values);
-        return this;
-      }
-      public Builder ClearPackedInt32() {
-        PrepareBuilder();
-        result.packedInt32_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<long> PackedInt64List {
-        get { return PrepareBuilder().packedInt64_; }
-      }
-      public int PackedInt64Count {
-        get { return result.PackedInt64Count; }
-      }
-      public long GetPackedInt64(int index) {
-        return result.GetPackedInt64(index);
-      }
-      public Builder SetPackedInt64(int index, long value) {
-        PrepareBuilder();
-        result.packedInt64_[index] = value;
-        return this;
-      }
-      public Builder AddPackedInt64(long value) {
-        PrepareBuilder();
-        result.packedInt64_.Add(value);
-        return this;
-      }
-      public Builder AddRangePackedInt64(scg::IEnumerable<long> values) {
-        PrepareBuilder();
-        result.packedInt64_.Add(values);
-        return this;
-      }
-      public Builder ClearPackedInt64() {
-        PrepareBuilder();
-        result.packedInt64_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<uint> PackedUint32List {
-        get { return PrepareBuilder().packedUint32_; }
-      }
-      public int PackedUint32Count {
-        get { return result.PackedUint32Count; }
-      }
-      public uint GetPackedUint32(int index) {
-        return result.GetPackedUint32(index);
-      }
-      public Builder SetPackedUint32(int index, uint value) {
-        PrepareBuilder();
-        result.packedUint32_[index] = value;
-        return this;
-      }
-      public Builder AddPackedUint32(uint value) {
-        PrepareBuilder();
-        result.packedUint32_.Add(value);
-        return this;
-      }
-      public Builder AddRangePackedUint32(scg::IEnumerable<uint> values) {
-        PrepareBuilder();
-        result.packedUint32_.Add(values);
-        return this;
-      }
-      public Builder ClearPackedUint32() {
-        PrepareBuilder();
-        result.packedUint32_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<ulong> PackedUint64List {
-        get { return PrepareBuilder().packedUint64_; }
-      }
-      public int PackedUint64Count {
-        get { return result.PackedUint64Count; }
-      }
-      public ulong GetPackedUint64(int index) {
-        return result.GetPackedUint64(index);
-      }
-      public Builder SetPackedUint64(int index, ulong value) {
-        PrepareBuilder();
-        result.packedUint64_[index] = value;
-        return this;
-      }
-      public Builder AddPackedUint64(ulong value) {
-        PrepareBuilder();
-        result.packedUint64_.Add(value);
-        return this;
-      }
-      public Builder AddRangePackedUint64(scg::IEnumerable<ulong> values) {
-        PrepareBuilder();
-        result.packedUint64_.Add(values);
-        return this;
-      }
-      public Builder ClearPackedUint64() {
-        PrepareBuilder();
-        result.packedUint64_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<int> PackedSint32List {
-        get { return PrepareBuilder().packedSint32_; }
-      }
-      public int PackedSint32Count {
-        get { return result.PackedSint32Count; }
-      }
-      public int GetPackedSint32(int index) {
-        return result.GetPackedSint32(index);
-      }
-      public Builder SetPackedSint32(int index, int value) {
-        PrepareBuilder();
-        result.packedSint32_[index] = value;
-        return this;
-      }
-      public Builder AddPackedSint32(int value) {
-        PrepareBuilder();
-        result.packedSint32_.Add(value);
-        return this;
-      }
-      public Builder AddRangePackedSint32(scg::IEnumerable<int> values) {
-        PrepareBuilder();
-        result.packedSint32_.Add(values);
-        return this;
-      }
-      public Builder ClearPackedSint32() {
-        PrepareBuilder();
-        result.packedSint32_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<long> PackedSint64List {
-        get { return PrepareBuilder().packedSint64_; }
-      }
-      public int PackedSint64Count {
-        get { return result.PackedSint64Count; }
-      }
-      public long GetPackedSint64(int index) {
-        return result.GetPackedSint64(index);
-      }
-      public Builder SetPackedSint64(int index, long value) {
-        PrepareBuilder();
-        result.packedSint64_[index] = value;
-        return this;
-      }
-      public Builder AddPackedSint64(long value) {
-        PrepareBuilder();
-        result.packedSint64_.Add(value);
-        return this;
-      }
-      public Builder AddRangePackedSint64(scg::IEnumerable<long> values) {
-        PrepareBuilder();
-        result.packedSint64_.Add(values);
-        return this;
-      }
-      public Builder ClearPackedSint64() {
-        PrepareBuilder();
-        result.packedSint64_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<uint> PackedFixed32List {
-        get { return PrepareBuilder().packedFixed32_; }
-      }
-      public int PackedFixed32Count {
-        get { return result.PackedFixed32Count; }
-      }
-      public uint GetPackedFixed32(int index) {
-        return result.GetPackedFixed32(index);
-      }
-      public Builder SetPackedFixed32(int index, uint value) {
-        PrepareBuilder();
-        result.packedFixed32_[index] = value;
-        return this;
-      }
-      public Builder AddPackedFixed32(uint value) {
-        PrepareBuilder();
-        result.packedFixed32_.Add(value);
-        return this;
-      }
-      public Builder AddRangePackedFixed32(scg::IEnumerable<uint> values) {
-        PrepareBuilder();
-        result.packedFixed32_.Add(values);
-        return this;
-      }
-      public Builder ClearPackedFixed32() {
-        PrepareBuilder();
-        result.packedFixed32_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<ulong> PackedFixed64List {
-        get { return PrepareBuilder().packedFixed64_; }
-      }
-      public int PackedFixed64Count {
-        get { return result.PackedFixed64Count; }
-      }
-      public ulong GetPackedFixed64(int index) {
-        return result.GetPackedFixed64(index);
-      }
-      public Builder SetPackedFixed64(int index, ulong value) {
-        PrepareBuilder();
-        result.packedFixed64_[index] = value;
-        return this;
-      }
-      public Builder AddPackedFixed64(ulong value) {
-        PrepareBuilder();
-        result.packedFixed64_.Add(value);
-        return this;
-      }
-      public Builder AddRangePackedFixed64(scg::IEnumerable<ulong> values) {
-        PrepareBuilder();
-        result.packedFixed64_.Add(values);
-        return this;
-      }
-      public Builder ClearPackedFixed64() {
-        PrepareBuilder();
-        result.packedFixed64_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<int> PackedSfixed32List {
-        get { return PrepareBuilder().packedSfixed32_; }
-      }
-      public int PackedSfixed32Count {
-        get { return result.PackedSfixed32Count; }
-      }
-      public int GetPackedSfixed32(int index) {
-        return result.GetPackedSfixed32(index);
-      }
-      public Builder SetPackedSfixed32(int index, int value) {
-        PrepareBuilder();
-        result.packedSfixed32_[index] = value;
-        return this;
-      }
-      public Builder AddPackedSfixed32(int value) {
-        PrepareBuilder();
-        result.packedSfixed32_.Add(value);
-        return this;
-      }
-      public Builder AddRangePackedSfixed32(scg::IEnumerable<int> values) {
-        PrepareBuilder();
-        result.packedSfixed32_.Add(values);
-        return this;
-      }
-      public Builder ClearPackedSfixed32() {
-        PrepareBuilder();
-        result.packedSfixed32_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<long> PackedSfixed64List {
-        get { return PrepareBuilder().packedSfixed64_; }
-      }
-      public int PackedSfixed64Count {
-        get { return result.PackedSfixed64Count; }
-      }
-      public long GetPackedSfixed64(int index) {
-        return result.GetPackedSfixed64(index);
-      }
-      public Builder SetPackedSfixed64(int index, long value) {
-        PrepareBuilder();
-        result.packedSfixed64_[index] = value;
-        return this;
-      }
-      public Builder AddPackedSfixed64(long value) {
-        PrepareBuilder();
-        result.packedSfixed64_.Add(value);
-        return this;
-      }
-      public Builder AddRangePackedSfixed64(scg::IEnumerable<long> values) {
-        PrepareBuilder();
-        result.packedSfixed64_.Add(values);
-        return this;
-      }
-      public Builder ClearPackedSfixed64() {
-        PrepareBuilder();
-        result.packedSfixed64_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<float> PackedFloatList {
-        get { return PrepareBuilder().packedFloat_; }
-      }
-      public int PackedFloatCount {
-        get { return result.PackedFloatCount; }
-      }
-      public float GetPackedFloat(int index) {
-        return result.GetPackedFloat(index);
-      }
-      public Builder SetPackedFloat(int index, float value) {
-        PrepareBuilder();
-        result.packedFloat_[index] = value;
-        return this;
-      }
-      public Builder AddPackedFloat(float value) {
-        PrepareBuilder();
-        result.packedFloat_.Add(value);
-        return this;
-      }
-      public Builder AddRangePackedFloat(scg::IEnumerable<float> values) {
-        PrepareBuilder();
-        result.packedFloat_.Add(values);
-        return this;
-      }
-      public Builder ClearPackedFloat() {
-        PrepareBuilder();
-        result.packedFloat_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<double> PackedDoubleList {
-        get { return PrepareBuilder().packedDouble_; }
-      }
-      public int PackedDoubleCount {
-        get { return result.PackedDoubleCount; }
-      }
-      public double GetPackedDouble(int index) {
-        return result.GetPackedDouble(index);
-      }
-      public Builder SetPackedDouble(int index, double value) {
-        PrepareBuilder();
-        result.packedDouble_[index] = value;
-        return this;
-      }
-      public Builder AddPackedDouble(double value) {
-        PrepareBuilder();
-        result.packedDouble_.Add(value);
-        return this;
-      }
-      public Builder AddRangePackedDouble(scg::IEnumerable<double> values) {
-        PrepareBuilder();
-        result.packedDouble_.Add(values);
-        return this;
-      }
-      public Builder ClearPackedDouble() {
-        PrepareBuilder();
-        result.packedDouble_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<bool> PackedBoolList {
-        get { return PrepareBuilder().packedBool_; }
-      }
-      public int PackedBoolCount {
-        get { return result.PackedBoolCount; }
-      }
-      public bool GetPackedBool(int index) {
-        return result.GetPackedBool(index);
-      }
-      public Builder SetPackedBool(int index, bool value) {
-        PrepareBuilder();
-        result.packedBool_[index] = value;
-        return this;
-      }
-      public Builder AddPackedBool(bool value) {
-        PrepareBuilder();
-        result.packedBool_.Add(value);
-        return this;
-      }
-      public Builder AddRangePackedBool(scg::IEnumerable<bool> values) {
-        PrepareBuilder();
-        result.packedBool_.Add(values);
-        return this;
-      }
-      public Builder ClearPackedBool() {
-        PrepareBuilder();
-        result.packedBool_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<global::Google.ProtocolBuffers.TestProtos.ForeignEnum> PackedEnumList {
-        get { return PrepareBuilder().packedEnum_; }
-      }
-      public int PackedEnumCount {
-        get { return result.PackedEnumCount; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.ForeignEnum GetPackedEnum(int index) {
-        return result.GetPackedEnum(index);
-      }
-      public Builder SetPackedEnum(int index, global::Google.ProtocolBuffers.TestProtos.ForeignEnum value) {
-        PrepareBuilder();
-        result.packedEnum_[index] = value;
-        return this;
-      }
-      public Builder AddPackedEnum(global::Google.ProtocolBuffers.TestProtos.ForeignEnum value) {
-        PrepareBuilder();
-        result.packedEnum_.Add(value);
-        return this;
-      }
-      public Builder AddRangePackedEnum(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.ForeignEnum> values) {
-        PrepareBuilder();
-        result.packedEnum_.Add(values);
-        return this;
-      }
-      public Builder ClearPackedEnum() {
-        PrepareBuilder();
-        result.packedEnum_.Clear();
-        return this;
-      }
-    }
-    static TestPackedTypes() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class TestUnpackedTypes : pb::GeneratedMessage<TestUnpackedTypes, TestUnpackedTypes.Builder> {
-    private TestUnpackedTypes() { }
-    private static readonly TestUnpackedTypes defaultInstance = new TestUnpackedTypes().MakeReadOnly();
-    private static readonly string[] _testUnpackedTypesFieldNames = new string[] { "unpacked_bool", "unpacked_double", "unpacked_enum", "unpacked_fixed32", "unpacked_fixed64", "unpacked_float", "unpacked_int32", "unpacked_int64", "unpacked_sfixed32", "unpacked_sfixed64", "unpacked_sint32", "unpacked_sint64", "unpacked_uint32", "unpacked_uint64" };
-    private static readonly uint[] _testUnpackedTypesFieldTags = new uint[] { 816, 809, 824, 773, 777, 805, 720, 728, 789, 793, 752, 760, 736, 744 };
-    public static TestUnpackedTypes DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override TestUnpackedTypes DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override TestUnpackedTypes ThisMessage {
-      get { return this; }
-    }
-
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestUnpackedTypes__Descriptor; }
-    }
-
-    protected override pb::FieldAccess.FieldAccessorTable<TestUnpackedTypes, TestUnpackedTypes.Builder> InternalFieldAccessors {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestUnpackedTypes__FieldAccessorTable; }
-    }
-
-    public const int UnpackedInt32FieldNumber = 90;
-    private pbc::PopsicleList<int> unpackedInt32_ = new pbc::PopsicleList<int>();
-    public scg::IList<int> UnpackedInt32List {
-      get { return pbc::Lists.AsReadOnly(unpackedInt32_); }
-    }
-    public int UnpackedInt32Count {
-      get { return unpackedInt32_.Count; }
-    }
-    public int GetUnpackedInt32(int index) {
-      return unpackedInt32_[index];
-    }
-
-    public const int UnpackedInt64FieldNumber = 91;
-    private pbc::PopsicleList<long> unpackedInt64_ = new pbc::PopsicleList<long>();
-    public scg::IList<long> UnpackedInt64List {
-      get { return pbc::Lists.AsReadOnly(unpackedInt64_); }
-    }
-    public int UnpackedInt64Count {
-      get { return unpackedInt64_.Count; }
-    }
-    public long GetUnpackedInt64(int index) {
-      return unpackedInt64_[index];
-    }
-
-    public const int UnpackedUint32FieldNumber = 92;
-    private pbc::PopsicleList<uint> unpackedUint32_ = new pbc::PopsicleList<uint>();
-    public scg::IList<uint> UnpackedUint32List {
-      get { return pbc::Lists.AsReadOnly(unpackedUint32_); }
-    }
-    public int UnpackedUint32Count {
-      get { return unpackedUint32_.Count; }
-    }
-    public uint GetUnpackedUint32(int index) {
-      return unpackedUint32_[index];
-    }
-
-    public const int UnpackedUint64FieldNumber = 93;
-    private pbc::PopsicleList<ulong> unpackedUint64_ = new pbc::PopsicleList<ulong>();
-    public scg::IList<ulong> UnpackedUint64List {
-      get { return pbc::Lists.AsReadOnly(unpackedUint64_); }
-    }
-    public int UnpackedUint64Count {
-      get { return unpackedUint64_.Count; }
-    }
-    public ulong GetUnpackedUint64(int index) {
-      return unpackedUint64_[index];
-    }
-
-    public const int UnpackedSint32FieldNumber = 94;
-    private pbc::PopsicleList<int> unpackedSint32_ = new pbc::PopsicleList<int>();
-    public scg::IList<int> UnpackedSint32List {
-      get { return pbc::Lists.AsReadOnly(unpackedSint32_); }
-    }
-    public int UnpackedSint32Count {
-      get { return unpackedSint32_.Count; }
-    }
-    public int GetUnpackedSint32(int index) {
-      return unpackedSint32_[index];
-    }
-
-    public const int UnpackedSint64FieldNumber = 95;
-    private pbc::PopsicleList<long> unpackedSint64_ = new pbc::PopsicleList<long>();
-    public scg::IList<long> UnpackedSint64List {
-      get { return pbc::Lists.AsReadOnly(unpackedSint64_); }
-    }
-    public int UnpackedSint64Count {
-      get { return unpackedSint64_.Count; }
-    }
-    public long GetUnpackedSint64(int index) {
-      return unpackedSint64_[index];
-    }
-
-    public const int UnpackedFixed32FieldNumber = 96;
-    private pbc::PopsicleList<uint> unpackedFixed32_ = new pbc::PopsicleList<uint>();
-    public scg::IList<uint> UnpackedFixed32List {
-      get { return pbc::Lists.AsReadOnly(unpackedFixed32_); }
-    }
-    public int UnpackedFixed32Count {
-      get { return unpackedFixed32_.Count; }
-    }
-    public uint GetUnpackedFixed32(int index) {
-      return unpackedFixed32_[index];
-    }
-
-    public const int UnpackedFixed64FieldNumber = 97;
-    private pbc::PopsicleList<ulong> unpackedFixed64_ = new pbc::PopsicleList<ulong>();
-    public scg::IList<ulong> UnpackedFixed64List {
-      get { return pbc::Lists.AsReadOnly(unpackedFixed64_); }
-    }
-    public int UnpackedFixed64Count {
-      get { return unpackedFixed64_.Count; }
-    }
-    public ulong GetUnpackedFixed64(int index) {
-      return unpackedFixed64_[index];
-    }
-
-    public const int UnpackedSfixed32FieldNumber = 98;
-    private pbc::PopsicleList<int> unpackedSfixed32_ = new pbc::PopsicleList<int>();
-    public scg::IList<int> UnpackedSfixed32List {
-      get { return pbc::Lists.AsReadOnly(unpackedSfixed32_); }
-    }
-    public int UnpackedSfixed32Count {
-      get { return unpackedSfixed32_.Count; }
-    }
-    public int GetUnpackedSfixed32(int index) {
-      return unpackedSfixed32_[index];
-    }
-
-    public const int UnpackedSfixed64FieldNumber = 99;
-    private pbc::PopsicleList<long> unpackedSfixed64_ = new pbc::PopsicleList<long>();
-    public scg::IList<long> UnpackedSfixed64List {
-      get { return pbc::Lists.AsReadOnly(unpackedSfixed64_); }
-    }
-    public int UnpackedSfixed64Count {
-      get { return unpackedSfixed64_.Count; }
-    }
-    public long GetUnpackedSfixed64(int index) {
-      return unpackedSfixed64_[index];
-    }
-
-    public const int UnpackedFloatFieldNumber = 100;
-    private pbc::PopsicleList<float> unpackedFloat_ = new pbc::PopsicleList<float>();
-    public scg::IList<float> UnpackedFloatList {
-      get { return pbc::Lists.AsReadOnly(unpackedFloat_); }
-    }
-    public int UnpackedFloatCount {
-      get { return unpackedFloat_.Count; }
-    }
-    public float GetUnpackedFloat(int index) {
-      return unpackedFloat_[index];
-    }
-
-    public const int UnpackedDoubleFieldNumber = 101;
-    private pbc::PopsicleList<double> unpackedDouble_ = new pbc::PopsicleList<double>();
-    public scg::IList<double> UnpackedDoubleList {
-      get { return pbc::Lists.AsReadOnly(unpackedDouble_); }
-    }
-    public int UnpackedDoubleCount {
-      get { return unpackedDouble_.Count; }
-    }
-    public double GetUnpackedDouble(int index) {
-      return unpackedDouble_[index];
-    }
-
-    public const int UnpackedBoolFieldNumber = 102;
-    private pbc::PopsicleList<bool> unpackedBool_ = new pbc::PopsicleList<bool>();
-    public scg::IList<bool> UnpackedBoolList {
-      get { return pbc::Lists.AsReadOnly(unpackedBool_); }
-    }
-    public int UnpackedBoolCount {
-      get { return unpackedBool_.Count; }
-    }
-    public bool GetUnpackedBool(int index) {
-      return unpackedBool_[index];
-    }
-
-    public const int UnpackedEnumFieldNumber = 103;
-    private pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.ForeignEnum> unpackedEnum_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.ForeignEnum>();
-    public scg::IList<global::Google.ProtocolBuffers.TestProtos.ForeignEnum> UnpackedEnumList {
-      get { return pbc::Lists.AsReadOnly(unpackedEnum_); }
-    }
-    public int UnpackedEnumCount {
-      get { return unpackedEnum_.Count; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.ForeignEnum GetUnpackedEnum(int index) {
-      return unpackedEnum_[index];
-    }
-
-    public override bool IsInitialized {
-      get {
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _testUnpackedTypesFieldNames;
-      if (unpackedInt32_.Count > 0) {
-        output.WriteInt32Array(90, field_names[6], unpackedInt32_);
-      }
-      if (unpackedInt64_.Count > 0) {
-        output.WriteInt64Array(91, field_names[7], unpackedInt64_);
-      }
-      if (unpackedUint32_.Count > 0) {
-        output.WriteUInt32Array(92, field_names[12], unpackedUint32_);
-      }
-      if (unpackedUint64_.Count > 0) {
-        output.WriteUInt64Array(93, field_names[13], unpackedUint64_);
-      }
-      if (unpackedSint32_.Count > 0) {
-        output.WriteSInt32Array(94, field_names[10], unpackedSint32_);
-      }
-      if (unpackedSint64_.Count > 0) {
-        output.WriteSInt64Array(95, field_names[11], unpackedSint64_);
-      }
-      if (unpackedFixed32_.Count > 0) {
-        output.WriteFixed32Array(96, field_names[3], unpackedFixed32_);
-      }
-      if (unpackedFixed64_.Count > 0) {
-        output.WriteFixed64Array(97, field_names[4], unpackedFixed64_);
-      }
-      if (unpackedSfixed32_.Count > 0) {
-        output.WriteSFixed32Array(98, field_names[8], unpackedSfixed32_);
-      }
-      if (unpackedSfixed64_.Count > 0) {
-        output.WriteSFixed64Array(99, field_names[9], unpackedSfixed64_);
-      }
-      if (unpackedFloat_.Count > 0) {
-        output.WriteFloatArray(100, field_names[5], unpackedFloat_);
-      }
-      if (unpackedDouble_.Count > 0) {
-        output.WriteDoubleArray(101, field_names[1], unpackedDouble_);
-      }
-      if (unpackedBool_.Count > 0) {
-        output.WriteBoolArray(102, field_names[0], unpackedBool_);
-      }
-      if (unpackedEnum_.Count > 0) {
-        output.WriteEnumArray(103, field_names[2], unpackedEnum_);
-      }
-      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;
-        foreach (int element in UnpackedInt32List) {
-          dataSize += pb::CodedOutputStream.ComputeInt32SizeNoTag(element);
-        }
-        size += dataSize;
-        size += 2 * unpackedInt32_.Count;
-      }
-      {
-        int dataSize = 0;
-        foreach (long element in UnpackedInt64List) {
-          dataSize += pb::CodedOutputStream.ComputeInt64SizeNoTag(element);
-        }
-        size += dataSize;
-        size += 2 * unpackedInt64_.Count;
-      }
-      {
-        int dataSize = 0;
-        foreach (uint element in UnpackedUint32List) {
-          dataSize += pb::CodedOutputStream.ComputeUInt32SizeNoTag(element);
-        }
-        size += dataSize;
-        size += 2 * unpackedUint32_.Count;
-      }
-      {
-        int dataSize = 0;
-        foreach (ulong element in UnpackedUint64List) {
-          dataSize += pb::CodedOutputStream.ComputeUInt64SizeNoTag(element);
-        }
-        size += dataSize;
-        size += 2 * unpackedUint64_.Count;
-      }
-      {
-        int dataSize = 0;
-        foreach (int element in UnpackedSint32List) {
-          dataSize += pb::CodedOutputStream.ComputeSInt32SizeNoTag(element);
-        }
-        size += dataSize;
-        size += 2 * unpackedSint32_.Count;
-      }
-      {
-        int dataSize = 0;
-        foreach (long element in UnpackedSint64List) {
-          dataSize += pb::CodedOutputStream.ComputeSInt64SizeNoTag(element);
-        }
-        size += dataSize;
-        size += 2 * unpackedSint64_.Count;
-      }
-      {
-        int dataSize = 0;
-        dataSize = 4 * unpackedFixed32_.Count;
-        size += dataSize;
-        size += 2 * unpackedFixed32_.Count;
-      }
-      {
-        int dataSize = 0;
-        dataSize = 8 * unpackedFixed64_.Count;
-        size += dataSize;
-        size += 2 * unpackedFixed64_.Count;
-      }
-      {
-        int dataSize = 0;
-        dataSize = 4 * unpackedSfixed32_.Count;
-        size += dataSize;
-        size += 2 * unpackedSfixed32_.Count;
-      }
-      {
-        int dataSize = 0;
-        dataSize = 8 * unpackedSfixed64_.Count;
-        size += dataSize;
-        size += 2 * unpackedSfixed64_.Count;
-      }
-      {
-        int dataSize = 0;
-        dataSize = 4 * unpackedFloat_.Count;
-        size += dataSize;
-        size += 2 * unpackedFloat_.Count;
-      }
-      {
-        int dataSize = 0;
-        dataSize = 8 * unpackedDouble_.Count;
-        size += dataSize;
-        size += 2 * unpackedDouble_.Count;
-      }
-      {
-        int dataSize = 0;
-        dataSize = 1 * unpackedBool_.Count;
-        size += dataSize;
-        size += 2 * unpackedBool_.Count;
-      }
-      {
-        int dataSize = 0;
-        if (unpackedEnum_.Count > 0) {
-          foreach (global::Google.ProtocolBuffers.TestProtos.ForeignEnum element in unpackedEnum_) {
-            dataSize += pb::CodedOutputStream.ComputeEnumSizeNoTag((int) element);
-          }
-          size += dataSize;
-          size += 2 * unpackedEnum_.Count;
-        }
-      }
-      size += UnknownFields.SerializedSize;
-      memoizedSerializedSize = size;
-      return size;
-    }
-    public static TestUnpackedTypes ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestUnpackedTypes ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestUnpackedTypes ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestUnpackedTypes ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestUnpackedTypes ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestUnpackedTypes ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static TestUnpackedTypes ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static TestUnpackedTypes ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static TestUnpackedTypes ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestUnpackedTypes ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private TestUnpackedTypes MakeReadOnly() {
-      unpackedInt32_.MakeReadOnly();
-      unpackedInt64_.MakeReadOnly();
-      unpackedUint32_.MakeReadOnly();
-      unpackedUint64_.MakeReadOnly();
-      unpackedSint32_.MakeReadOnly();
-      unpackedSint64_.MakeReadOnly();
-      unpackedFixed32_.MakeReadOnly();
-      unpackedFixed64_.MakeReadOnly();
-      unpackedSfixed32_.MakeReadOnly();
-      unpackedSfixed64_.MakeReadOnly();
-      unpackedFloat_.MakeReadOnly();
-      unpackedDouble_.MakeReadOnly();
-      unpackedBool_.MakeReadOnly();
-      unpackedEnum_.MakeReadOnly();
-      return this;
-    }
-
-    public static Builder CreateBuilder() { return new Builder(); }
-    public override Builder ToBuilder() { return CreateBuilder(this); }
-    public override Builder CreateBuilderForType() { return new Builder(); }
-    public static Builder CreateBuilder(TestUnpackedTypes prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilder<TestUnpackedTypes, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(TestUnpackedTypes cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private TestUnpackedTypes result;
-
-      private TestUnpackedTypes PrepareBuilder() {
-        if (resultIsReadOnly) {
-          TestUnpackedTypes original = result;
-          result = new TestUnpackedTypes();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override TestUnpackedTypes 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.TestUnpackedTypes.Descriptor; }
-      }
-
-      public override TestUnpackedTypes DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.TestUnpackedTypes.DefaultInstance; }
-      }
-
-      public override TestUnpackedTypes BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is TestUnpackedTypes) {
-          return MergeFrom((TestUnpackedTypes) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(TestUnpackedTypes other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.TestUnpackedTypes.DefaultInstance) return this;
-        PrepareBuilder();
-        if (other.unpackedInt32_.Count != 0) {
-          result.unpackedInt32_.Add(other.unpackedInt32_);
-        }
-        if (other.unpackedInt64_.Count != 0) {
-          result.unpackedInt64_.Add(other.unpackedInt64_);
-        }
-        if (other.unpackedUint32_.Count != 0) {
-          result.unpackedUint32_.Add(other.unpackedUint32_);
-        }
-        if (other.unpackedUint64_.Count != 0) {
-          result.unpackedUint64_.Add(other.unpackedUint64_);
-        }
-        if (other.unpackedSint32_.Count != 0) {
-          result.unpackedSint32_.Add(other.unpackedSint32_);
-        }
-        if (other.unpackedSint64_.Count != 0) {
-          result.unpackedSint64_.Add(other.unpackedSint64_);
-        }
-        if (other.unpackedFixed32_.Count != 0) {
-          result.unpackedFixed32_.Add(other.unpackedFixed32_);
-        }
-        if (other.unpackedFixed64_.Count != 0) {
-          result.unpackedFixed64_.Add(other.unpackedFixed64_);
-        }
-        if (other.unpackedSfixed32_.Count != 0) {
-          result.unpackedSfixed32_.Add(other.unpackedSfixed32_);
-        }
-        if (other.unpackedSfixed64_.Count != 0) {
-          result.unpackedSfixed64_.Add(other.unpackedSfixed64_);
-        }
-        if (other.unpackedFloat_.Count != 0) {
-          result.unpackedFloat_.Add(other.unpackedFloat_);
-        }
-        if (other.unpackedDouble_.Count != 0) {
-          result.unpackedDouble_.Add(other.unpackedDouble_);
-        }
-        if (other.unpackedBool_.Count != 0) {
-          result.unpackedBool_.Add(other.unpackedBool_);
-        }
-        if (other.unpackedEnum_.Count != 0) {
-          result.unpackedEnum_.Add(other.unpackedEnum_);
-        }
-        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(_testUnpackedTypesFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _testUnpackedTypesFieldTags[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 722:
-            case 720: {
-              input.ReadInt32Array(tag, field_name, result.unpackedInt32_);
-              break;
-            }
-            case 730:
-            case 728: {
-              input.ReadInt64Array(tag, field_name, result.unpackedInt64_);
-              break;
-            }
-            case 738:
-            case 736: {
-              input.ReadUInt32Array(tag, field_name, result.unpackedUint32_);
-              break;
-            }
-            case 746:
-            case 744: {
-              input.ReadUInt64Array(tag, field_name, result.unpackedUint64_);
-              break;
-            }
-            case 754:
-            case 752: {
-              input.ReadSInt32Array(tag, field_name, result.unpackedSint32_);
-              break;
-            }
-            case 762:
-            case 760: {
-              input.ReadSInt64Array(tag, field_name, result.unpackedSint64_);
-              break;
-            }
-            case 770:
-            case 773: {
-              input.ReadFixed32Array(tag, field_name, result.unpackedFixed32_);
-              break;
-            }
-            case 778:
-            case 777: {
-              input.ReadFixed64Array(tag, field_name, result.unpackedFixed64_);
-              break;
-            }
-            case 786:
-            case 789: {
-              input.ReadSFixed32Array(tag, field_name, result.unpackedSfixed32_);
-              break;
-            }
-            case 794:
-            case 793: {
-              input.ReadSFixed64Array(tag, field_name, result.unpackedSfixed64_);
-              break;
-            }
-            case 802:
-            case 805: {
-              input.ReadFloatArray(tag, field_name, result.unpackedFloat_);
-              break;
-            }
-            case 810:
-            case 809: {
-              input.ReadDoubleArray(tag, field_name, result.unpackedDouble_);
-              break;
-            }
-            case 818:
-            case 816: {
-              input.ReadBoolArray(tag, field_name, result.unpackedBool_);
-              break;
-            }
-            case 826:
-            case 824: {
-              scg::ICollection<object> unknownItems;
-              input.ReadEnumArray<global::Google.ProtocolBuffers.TestProtos.ForeignEnum>(tag, field_name, result.unpackedEnum_, 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(103, (ulong)(int)rawValue);
-              }
-              break;
-            }
-          }
-        }
-
-        if (unknownFields != null) {
-          this.UnknownFields = unknownFields.Build();
-        }
-        return this;
-      }
-
-
-      public pbc::IPopsicleList<int> UnpackedInt32List {
-        get { return PrepareBuilder().unpackedInt32_; }
-      }
-      public int UnpackedInt32Count {
-        get { return result.UnpackedInt32Count; }
-      }
-      public int GetUnpackedInt32(int index) {
-        return result.GetUnpackedInt32(index);
-      }
-      public Builder SetUnpackedInt32(int index, int value) {
-        PrepareBuilder();
-        result.unpackedInt32_[index] = value;
-        return this;
-      }
-      public Builder AddUnpackedInt32(int value) {
-        PrepareBuilder();
-        result.unpackedInt32_.Add(value);
-        return this;
-      }
-      public Builder AddRangeUnpackedInt32(scg::IEnumerable<int> values) {
-        PrepareBuilder();
-        result.unpackedInt32_.Add(values);
-        return this;
-      }
-      public Builder ClearUnpackedInt32() {
-        PrepareBuilder();
-        result.unpackedInt32_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<long> UnpackedInt64List {
-        get { return PrepareBuilder().unpackedInt64_; }
-      }
-      public int UnpackedInt64Count {
-        get { return result.UnpackedInt64Count; }
-      }
-      public long GetUnpackedInt64(int index) {
-        return result.GetUnpackedInt64(index);
-      }
-      public Builder SetUnpackedInt64(int index, long value) {
-        PrepareBuilder();
-        result.unpackedInt64_[index] = value;
-        return this;
-      }
-      public Builder AddUnpackedInt64(long value) {
-        PrepareBuilder();
-        result.unpackedInt64_.Add(value);
-        return this;
-      }
-      public Builder AddRangeUnpackedInt64(scg::IEnumerable<long> values) {
-        PrepareBuilder();
-        result.unpackedInt64_.Add(values);
-        return this;
-      }
-      public Builder ClearUnpackedInt64() {
-        PrepareBuilder();
-        result.unpackedInt64_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<uint> UnpackedUint32List {
-        get { return PrepareBuilder().unpackedUint32_; }
-      }
-      public int UnpackedUint32Count {
-        get { return result.UnpackedUint32Count; }
-      }
-      public uint GetUnpackedUint32(int index) {
-        return result.GetUnpackedUint32(index);
-      }
-      public Builder SetUnpackedUint32(int index, uint value) {
-        PrepareBuilder();
-        result.unpackedUint32_[index] = value;
-        return this;
-      }
-      public Builder AddUnpackedUint32(uint value) {
-        PrepareBuilder();
-        result.unpackedUint32_.Add(value);
-        return this;
-      }
-      public Builder AddRangeUnpackedUint32(scg::IEnumerable<uint> values) {
-        PrepareBuilder();
-        result.unpackedUint32_.Add(values);
-        return this;
-      }
-      public Builder ClearUnpackedUint32() {
-        PrepareBuilder();
-        result.unpackedUint32_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<ulong> UnpackedUint64List {
-        get { return PrepareBuilder().unpackedUint64_; }
-      }
-      public int UnpackedUint64Count {
-        get { return result.UnpackedUint64Count; }
-      }
-      public ulong GetUnpackedUint64(int index) {
-        return result.GetUnpackedUint64(index);
-      }
-      public Builder SetUnpackedUint64(int index, ulong value) {
-        PrepareBuilder();
-        result.unpackedUint64_[index] = value;
-        return this;
-      }
-      public Builder AddUnpackedUint64(ulong value) {
-        PrepareBuilder();
-        result.unpackedUint64_.Add(value);
-        return this;
-      }
-      public Builder AddRangeUnpackedUint64(scg::IEnumerable<ulong> values) {
-        PrepareBuilder();
-        result.unpackedUint64_.Add(values);
-        return this;
-      }
-      public Builder ClearUnpackedUint64() {
-        PrepareBuilder();
-        result.unpackedUint64_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<int> UnpackedSint32List {
-        get { return PrepareBuilder().unpackedSint32_; }
-      }
-      public int UnpackedSint32Count {
-        get { return result.UnpackedSint32Count; }
-      }
-      public int GetUnpackedSint32(int index) {
-        return result.GetUnpackedSint32(index);
-      }
-      public Builder SetUnpackedSint32(int index, int value) {
-        PrepareBuilder();
-        result.unpackedSint32_[index] = value;
-        return this;
-      }
-      public Builder AddUnpackedSint32(int value) {
-        PrepareBuilder();
-        result.unpackedSint32_.Add(value);
-        return this;
-      }
-      public Builder AddRangeUnpackedSint32(scg::IEnumerable<int> values) {
-        PrepareBuilder();
-        result.unpackedSint32_.Add(values);
-        return this;
-      }
-      public Builder ClearUnpackedSint32() {
-        PrepareBuilder();
-        result.unpackedSint32_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<long> UnpackedSint64List {
-        get { return PrepareBuilder().unpackedSint64_; }
-      }
-      public int UnpackedSint64Count {
-        get { return result.UnpackedSint64Count; }
-      }
-      public long GetUnpackedSint64(int index) {
-        return result.GetUnpackedSint64(index);
-      }
-      public Builder SetUnpackedSint64(int index, long value) {
-        PrepareBuilder();
-        result.unpackedSint64_[index] = value;
-        return this;
-      }
-      public Builder AddUnpackedSint64(long value) {
-        PrepareBuilder();
-        result.unpackedSint64_.Add(value);
-        return this;
-      }
-      public Builder AddRangeUnpackedSint64(scg::IEnumerable<long> values) {
-        PrepareBuilder();
-        result.unpackedSint64_.Add(values);
-        return this;
-      }
-      public Builder ClearUnpackedSint64() {
-        PrepareBuilder();
-        result.unpackedSint64_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<uint> UnpackedFixed32List {
-        get { return PrepareBuilder().unpackedFixed32_; }
-      }
-      public int UnpackedFixed32Count {
-        get { return result.UnpackedFixed32Count; }
-      }
-      public uint GetUnpackedFixed32(int index) {
-        return result.GetUnpackedFixed32(index);
-      }
-      public Builder SetUnpackedFixed32(int index, uint value) {
-        PrepareBuilder();
-        result.unpackedFixed32_[index] = value;
-        return this;
-      }
-      public Builder AddUnpackedFixed32(uint value) {
-        PrepareBuilder();
-        result.unpackedFixed32_.Add(value);
-        return this;
-      }
-      public Builder AddRangeUnpackedFixed32(scg::IEnumerable<uint> values) {
-        PrepareBuilder();
-        result.unpackedFixed32_.Add(values);
-        return this;
-      }
-      public Builder ClearUnpackedFixed32() {
-        PrepareBuilder();
-        result.unpackedFixed32_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<ulong> UnpackedFixed64List {
-        get { return PrepareBuilder().unpackedFixed64_; }
-      }
-      public int UnpackedFixed64Count {
-        get { return result.UnpackedFixed64Count; }
-      }
-      public ulong GetUnpackedFixed64(int index) {
-        return result.GetUnpackedFixed64(index);
-      }
-      public Builder SetUnpackedFixed64(int index, ulong value) {
-        PrepareBuilder();
-        result.unpackedFixed64_[index] = value;
-        return this;
-      }
-      public Builder AddUnpackedFixed64(ulong value) {
-        PrepareBuilder();
-        result.unpackedFixed64_.Add(value);
-        return this;
-      }
-      public Builder AddRangeUnpackedFixed64(scg::IEnumerable<ulong> values) {
-        PrepareBuilder();
-        result.unpackedFixed64_.Add(values);
-        return this;
-      }
-      public Builder ClearUnpackedFixed64() {
-        PrepareBuilder();
-        result.unpackedFixed64_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<int> UnpackedSfixed32List {
-        get { return PrepareBuilder().unpackedSfixed32_; }
-      }
-      public int UnpackedSfixed32Count {
-        get { return result.UnpackedSfixed32Count; }
-      }
-      public int GetUnpackedSfixed32(int index) {
-        return result.GetUnpackedSfixed32(index);
-      }
-      public Builder SetUnpackedSfixed32(int index, int value) {
-        PrepareBuilder();
-        result.unpackedSfixed32_[index] = value;
-        return this;
-      }
-      public Builder AddUnpackedSfixed32(int value) {
-        PrepareBuilder();
-        result.unpackedSfixed32_.Add(value);
-        return this;
-      }
-      public Builder AddRangeUnpackedSfixed32(scg::IEnumerable<int> values) {
-        PrepareBuilder();
-        result.unpackedSfixed32_.Add(values);
-        return this;
-      }
-      public Builder ClearUnpackedSfixed32() {
-        PrepareBuilder();
-        result.unpackedSfixed32_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<long> UnpackedSfixed64List {
-        get { return PrepareBuilder().unpackedSfixed64_; }
-      }
-      public int UnpackedSfixed64Count {
-        get { return result.UnpackedSfixed64Count; }
-      }
-      public long GetUnpackedSfixed64(int index) {
-        return result.GetUnpackedSfixed64(index);
-      }
-      public Builder SetUnpackedSfixed64(int index, long value) {
-        PrepareBuilder();
-        result.unpackedSfixed64_[index] = value;
-        return this;
-      }
-      public Builder AddUnpackedSfixed64(long value) {
-        PrepareBuilder();
-        result.unpackedSfixed64_.Add(value);
-        return this;
-      }
-      public Builder AddRangeUnpackedSfixed64(scg::IEnumerable<long> values) {
-        PrepareBuilder();
-        result.unpackedSfixed64_.Add(values);
-        return this;
-      }
-      public Builder ClearUnpackedSfixed64() {
-        PrepareBuilder();
-        result.unpackedSfixed64_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<float> UnpackedFloatList {
-        get { return PrepareBuilder().unpackedFloat_; }
-      }
-      public int UnpackedFloatCount {
-        get { return result.UnpackedFloatCount; }
-      }
-      public float GetUnpackedFloat(int index) {
-        return result.GetUnpackedFloat(index);
-      }
-      public Builder SetUnpackedFloat(int index, float value) {
-        PrepareBuilder();
-        result.unpackedFloat_[index] = value;
-        return this;
-      }
-      public Builder AddUnpackedFloat(float value) {
-        PrepareBuilder();
-        result.unpackedFloat_.Add(value);
-        return this;
-      }
-      public Builder AddRangeUnpackedFloat(scg::IEnumerable<float> values) {
-        PrepareBuilder();
-        result.unpackedFloat_.Add(values);
-        return this;
-      }
-      public Builder ClearUnpackedFloat() {
-        PrepareBuilder();
-        result.unpackedFloat_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<double> UnpackedDoubleList {
-        get { return PrepareBuilder().unpackedDouble_; }
-      }
-      public int UnpackedDoubleCount {
-        get { return result.UnpackedDoubleCount; }
-      }
-      public double GetUnpackedDouble(int index) {
-        return result.GetUnpackedDouble(index);
-      }
-      public Builder SetUnpackedDouble(int index, double value) {
-        PrepareBuilder();
-        result.unpackedDouble_[index] = value;
-        return this;
-      }
-      public Builder AddUnpackedDouble(double value) {
-        PrepareBuilder();
-        result.unpackedDouble_.Add(value);
-        return this;
-      }
-      public Builder AddRangeUnpackedDouble(scg::IEnumerable<double> values) {
-        PrepareBuilder();
-        result.unpackedDouble_.Add(values);
-        return this;
-      }
-      public Builder ClearUnpackedDouble() {
-        PrepareBuilder();
-        result.unpackedDouble_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<bool> UnpackedBoolList {
-        get { return PrepareBuilder().unpackedBool_; }
-      }
-      public int UnpackedBoolCount {
-        get { return result.UnpackedBoolCount; }
-      }
-      public bool GetUnpackedBool(int index) {
-        return result.GetUnpackedBool(index);
-      }
-      public Builder SetUnpackedBool(int index, bool value) {
-        PrepareBuilder();
-        result.unpackedBool_[index] = value;
-        return this;
-      }
-      public Builder AddUnpackedBool(bool value) {
-        PrepareBuilder();
-        result.unpackedBool_.Add(value);
-        return this;
-      }
-      public Builder AddRangeUnpackedBool(scg::IEnumerable<bool> values) {
-        PrepareBuilder();
-        result.unpackedBool_.Add(values);
-        return this;
-      }
-      public Builder ClearUnpackedBool() {
-        PrepareBuilder();
-        result.unpackedBool_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<global::Google.ProtocolBuffers.TestProtos.ForeignEnum> UnpackedEnumList {
-        get { return PrepareBuilder().unpackedEnum_; }
-      }
-      public int UnpackedEnumCount {
-        get { return result.UnpackedEnumCount; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.ForeignEnum GetUnpackedEnum(int index) {
-        return result.GetUnpackedEnum(index);
-      }
-      public Builder SetUnpackedEnum(int index, global::Google.ProtocolBuffers.TestProtos.ForeignEnum value) {
-        PrepareBuilder();
-        result.unpackedEnum_[index] = value;
-        return this;
-      }
-      public Builder AddUnpackedEnum(global::Google.ProtocolBuffers.TestProtos.ForeignEnum value) {
-        PrepareBuilder();
-        result.unpackedEnum_.Add(value);
-        return this;
-      }
-      public Builder AddRangeUnpackedEnum(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.ForeignEnum> values) {
-        PrepareBuilder();
-        result.unpackedEnum_.Add(values);
-        return this;
-      }
-      public Builder ClearUnpackedEnum() {
-        PrepareBuilder();
-        result.unpackedEnum_.Clear();
-        return this;
-      }
-    }
-    static TestUnpackedTypes() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class TestPackedExtensions : pb::ExtendableMessage<TestPackedExtensions, TestPackedExtensions.Builder> {
-    private TestPackedExtensions() { }
-    private static readonly TestPackedExtensions defaultInstance = new TestPackedExtensions().MakeReadOnly();
-    private static readonly string[] _testPackedExtensionsFieldNames = new string[] {  };
-    private static readonly uint[] _testPackedExtensionsFieldTags = new uint[] {  };
-    public static TestPackedExtensions DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override TestPackedExtensions DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override TestPackedExtensions ThisMessage {
-      get { return this; }
-    }
-
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestPackedExtensions__Descriptor; }
-    }
-
-    protected override pb::FieldAccess.FieldAccessorTable<TestPackedExtensions, TestPackedExtensions.Builder> InternalFieldAccessors {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestPackedExtensions__FieldAccessorTable; }
-    }
-
-    public override bool IsInitialized {
-      get {
-        if (!ExtensionsAreInitialized) return false;
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _testPackedExtensionsFieldNames;
-      pb::ExtendableMessage<TestPackedExtensions, TestPackedExtensions.Builder>.ExtensionWriter extensionWriter = CreateExtensionWriter(this);
-      extensionWriter.WriteUntil(536870912, output);
-      UnknownFields.WriteTo(output);
-    }
-
-    private int memoizedSerializedSize = -1;
-    public override int SerializedSize {
-      get {
-        int size = memoizedSerializedSize;
-        if (size != -1) return size;
-        return CalcSerializedSize();
-      }
-    }
-
-    private int CalcSerializedSize() {
-      int size = memoizedSerializedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      size += ExtensionsSerializedSize;
-      size += UnknownFields.SerializedSize;
-      memoizedSerializedSize = size;
-      return size;
-    }
-    public static TestPackedExtensions ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestPackedExtensions ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestPackedExtensions ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestPackedExtensions ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestPackedExtensions ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestPackedExtensions ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static TestPackedExtensions ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static TestPackedExtensions ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static TestPackedExtensions ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestPackedExtensions ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private TestPackedExtensions 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(TestPackedExtensions prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::ExtendableBuilder<TestPackedExtensions, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(TestPackedExtensions cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private TestPackedExtensions result;
-
-      private TestPackedExtensions PrepareBuilder() {
-        if (resultIsReadOnly) {
-          TestPackedExtensions original = result;
-          result = new TestPackedExtensions();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override TestPackedExtensions 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.TestPackedExtensions.Descriptor; }
-      }
-
-      public override TestPackedExtensions DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.TestPackedExtensions.DefaultInstance; }
-      }
-
-      public override TestPackedExtensions BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is TestPackedExtensions) {
-          return MergeFrom((TestPackedExtensions) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(TestPackedExtensions other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.TestPackedExtensions.DefaultInstance) return this;
-        PrepareBuilder();
-          this.MergeExtensionFields(other);
-        this.MergeUnknownFields(other.UnknownFields);
-        return this;
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input) {
-        return MergeFrom(input, pb::ExtensionRegistry.Empty);
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-        PrepareBuilder();
-        pb::UnknownFieldSet.Builder unknownFields = null;
-        uint tag;
-        string field_name;
-        while (input.ReadTag(out tag, out field_name)) {
-          if(tag == 0 && field_name != null) {
-            int field_ordinal = global::System.Array.BinarySearch(_testPackedExtensionsFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _testPackedExtensionsFieldTags[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 TestPackedExtensions() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class TestUnpackedExtensions : pb::ExtendableMessage<TestUnpackedExtensions, TestUnpackedExtensions.Builder> {
-    private TestUnpackedExtensions() { }
-    private static readonly TestUnpackedExtensions defaultInstance = new TestUnpackedExtensions().MakeReadOnly();
-    private static readonly string[] _testUnpackedExtensionsFieldNames = new string[] {  };
-    private static readonly uint[] _testUnpackedExtensionsFieldTags = new uint[] {  };
-    public static TestUnpackedExtensions DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override TestUnpackedExtensions DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override TestUnpackedExtensions ThisMessage {
-      get { return this; }
-    }
-
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestUnpackedExtensions__Descriptor; }
-    }
-
-    protected override pb::FieldAccess.FieldAccessorTable<TestUnpackedExtensions, TestUnpackedExtensions.Builder> InternalFieldAccessors {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestUnpackedExtensions__FieldAccessorTable; }
-    }
-
-    public override bool IsInitialized {
-      get {
-        if (!ExtensionsAreInitialized) return false;
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _testUnpackedExtensionsFieldNames;
-      pb::ExtendableMessage<TestUnpackedExtensions, TestUnpackedExtensions.Builder>.ExtensionWriter extensionWriter = CreateExtensionWriter(this);
-      extensionWriter.WriteUntil(536870912, output);
-      UnknownFields.WriteTo(output);
-    }
-
-    private int memoizedSerializedSize = -1;
-    public override int SerializedSize {
-      get {
-        int size = memoizedSerializedSize;
-        if (size != -1) return size;
-        return CalcSerializedSize();
-      }
-    }
-
-    private int CalcSerializedSize() {
-      int size = memoizedSerializedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      size += ExtensionsSerializedSize;
-      size += UnknownFields.SerializedSize;
-      memoizedSerializedSize = size;
-      return size;
-    }
-    public static TestUnpackedExtensions ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestUnpackedExtensions ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestUnpackedExtensions ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestUnpackedExtensions ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestUnpackedExtensions ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestUnpackedExtensions ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static TestUnpackedExtensions ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static TestUnpackedExtensions ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static TestUnpackedExtensions ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestUnpackedExtensions ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private TestUnpackedExtensions MakeReadOnly() {
-      return this;
-    }
-
-    public static Builder CreateBuilder() { return new Builder(); }
-    public override Builder ToBuilder() { return CreateBuilder(this); }
-    public override Builder CreateBuilderForType() { return new Builder(); }
-    public static Builder CreateBuilder(TestUnpackedExtensions prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::ExtendableBuilder<TestUnpackedExtensions, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(TestUnpackedExtensions cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private TestUnpackedExtensions result;
-
-      private TestUnpackedExtensions PrepareBuilder() {
-        if (resultIsReadOnly) {
-          TestUnpackedExtensions original = result;
-          result = new TestUnpackedExtensions();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override TestUnpackedExtensions MessageBeingBuilt {
-        get { return PrepareBuilder(); }
-      }
-
-      public override Builder Clear() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-        return this;
-      }
-
-      public override Builder Clone() {
-        if (resultIsReadOnly) {
-          return new Builder(result);
-        } else {
-          return new Builder().MergeFrom(result);
-        }
-      }
-
-      public override pbd::MessageDescriptor DescriptorForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensions.Descriptor; }
-      }
-
-      public override TestUnpackedExtensions DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensions.DefaultInstance; }
-      }
-
-      public override TestUnpackedExtensions BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is TestUnpackedExtensions) {
-          return MergeFrom((TestUnpackedExtensions) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(TestUnpackedExtensions other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensions.DefaultInstance) return this;
-        PrepareBuilder();
-          this.MergeExtensionFields(other);
-        this.MergeUnknownFields(other.UnknownFields);
-        return this;
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input) {
-        return MergeFrom(input, pb::ExtensionRegistry.Empty);
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-        PrepareBuilder();
-        pb::UnknownFieldSet.Builder unknownFields = null;
-        uint tag;
-        string field_name;
-        while (input.ReadTag(out tag, out field_name)) {
-          if(tag == 0 && field_name != null) {
-            int field_ordinal = global::System.Array.BinarySearch(_testUnpackedExtensionsFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _testUnpackedExtensionsFieldTags[field_ordinal];
-            else {
-              if (unknownFields == null) {
-                unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-              }
-              ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name);
-              continue;
-            }
-          }
-          switch (tag) {
-            case 0: {
-              throw pb::InvalidProtocolBufferException.InvalidTag();
-            }
-            default: {
-              if (pb::WireFormat.IsEndGroupTag(tag)) {
-                if (unknownFields != null) {
-                  this.UnknownFields = unknownFields.Build();
-                }
-                return this;
-              }
-              if (unknownFields == null) {
-                unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-              }
-              ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name);
-              break;
-            }
-          }
-        }
-
-        if (unknownFields != null) {
-          this.UnknownFields = unknownFields.Build();
-        }
-        return this;
-      }
-
-    }
-    static TestUnpackedExtensions() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class TestDynamicExtensions : pb::GeneratedMessage<TestDynamicExtensions, TestDynamicExtensions.Builder> {
-    private TestDynamicExtensions() { }
-    private static readonly TestDynamicExtensions defaultInstance = new TestDynamicExtensions().MakeReadOnly();
-    private static readonly string[] _testDynamicExtensionsFieldNames = new string[] { "dynamic_enum_extension", "dynamic_message_extension", "enum_extension", "message_extension", "packed_extension", "repeated_extension", "scalar_extension" };
-    private static readonly uint[] _testDynamicExtensionsFieldTags = new uint[] { 16016, 16034, 16008, 16026, 16050, 16042, 16005 };
-    public static TestDynamicExtensions DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override TestDynamicExtensions DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override TestDynamicExtensions ThisMessage {
-      get { return this; }
-    }
-
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestDynamicExtensions__Descriptor; }
-    }
-
-    protected override pb::FieldAccess.FieldAccessorTable<TestDynamicExtensions, TestDynamicExtensions.Builder> InternalFieldAccessors {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestDynamicExtensions__FieldAccessorTable; }
-    }
-
-    #region Nested types
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public static partial class Types {
-      public enum DynamicEnumType {
-        DYNAMIC_FOO = 2200,
-        DYNAMIC_BAR = 2201,
-        DYNAMIC_BAZ = 2202,
-      }
-
-      [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-      public sealed partial class DynamicMessageType : pb::GeneratedMessage<DynamicMessageType, DynamicMessageType.Builder> {
-        private DynamicMessageType() { }
-        private static readonly DynamicMessageType defaultInstance = new DynamicMessageType().MakeReadOnly();
-        private static readonly string[] _dynamicMessageTypeFieldNames = new string[] { "dynamic_field" };
-        private static readonly uint[] _dynamicMessageTypeFieldTags = new uint[] { 16800 };
-        public static DynamicMessageType DefaultInstance {
-          get { return defaultInstance; }
-        }
-
-        public override DynamicMessageType DefaultInstanceForType {
-          get { return DefaultInstance; }
-        }
-
-        protected override DynamicMessageType ThisMessage {
-          get { return this; }
-        }
-
-        public static pbd::MessageDescriptor Descriptor {
-          get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestDynamicExtensions_DynamicMessageType__Descriptor; }
-        }
-
-        protected override pb::FieldAccess.FieldAccessorTable<DynamicMessageType, DynamicMessageType.Builder> InternalFieldAccessors {
-          get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestDynamicExtensions_DynamicMessageType__FieldAccessorTable; }
-        }
-
-        public const int DynamicFieldFieldNumber = 2100;
-        private bool hasDynamicField;
-        private int dynamicField_;
-        public bool HasDynamicField {
-          get { return hasDynamicField; }
-        }
-        public int DynamicField {
-          get { return dynamicField_; }
-        }
-
-        public override bool IsInitialized {
-          get {
-            return true;
-          }
-        }
-
-        public override void WriteTo(pb::ICodedOutputStream output) {
-          CalcSerializedSize();
-          string[] field_names = _dynamicMessageTypeFieldNames;
-          if (hasDynamicField) {
-            output.WriteInt32(2100, field_names[0], DynamicField);
-          }
-          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 (hasDynamicField) {
-            size += pb::CodedOutputStream.ComputeInt32Size(2100, DynamicField);
-          }
-          size += UnknownFields.SerializedSize;
-          memoizedSerializedSize = size;
-          return size;
-        }
-        public static DynamicMessageType ParseFrom(pb::ByteString data) {
-          return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-        }
-        public static DynamicMessageType ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-        }
-        public static DynamicMessageType ParseFrom(byte[] data) {
-          return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-        }
-        public static DynamicMessageType ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-        }
-        public static DynamicMessageType ParseFrom(global::System.IO.Stream input) {
-          return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-        }
-        public static DynamicMessageType ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-        }
-        public static DynamicMessageType ParseDelimitedFrom(global::System.IO.Stream input) {
-          return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-        }
-        public static DynamicMessageType ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-          return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-        }
-        public static DynamicMessageType ParseFrom(pb::ICodedInputStream input) {
-          return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-        }
-        public static DynamicMessageType ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-        }
-        private DynamicMessageType 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(DynamicMessageType prototype) {
-          return new Builder(prototype);
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-        public sealed partial class Builder : pb::GeneratedBuilder<DynamicMessageType, Builder> {
-          protected override Builder ThisBuilder {
-            get { return this; }
-          }
-          public Builder() {
-            result = DefaultInstance;
-            resultIsReadOnly = true;
-          }
-          internal Builder(DynamicMessageType cloneFrom) {
-            result = cloneFrom;
-            resultIsReadOnly = true;
-          }
-
-          private bool resultIsReadOnly;
-          private DynamicMessageType result;
-
-          private DynamicMessageType PrepareBuilder() {
-            if (resultIsReadOnly) {
-              DynamicMessageType original = result;
-              result = new DynamicMessageType();
-              resultIsReadOnly = false;
-              MergeFrom(original);
-            }
-            return result;
-          }
-
-          public override bool IsInitialized {
-            get { return result.IsInitialized; }
-          }
-
-          protected override DynamicMessageType 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.TestDynamicExtensions.Types.DynamicMessageType.Descriptor; }
-          }
-
-          public override DynamicMessageType DefaultInstanceForType {
-            get { return global::Google.ProtocolBuffers.TestProtos.TestDynamicExtensions.Types.DynamicMessageType.DefaultInstance; }
-          }
-
-          public override DynamicMessageType BuildPartial() {
-            if (resultIsReadOnly) {
-              return result;
-            }
-            resultIsReadOnly = true;
-            return result.MakeReadOnly();
-          }
-
-          public override Builder MergeFrom(pb::IMessage other) {
-            if (other is DynamicMessageType) {
-              return MergeFrom((DynamicMessageType) other);
-            } else {
-              base.MergeFrom(other);
-              return this;
-            }
-          }
-
-          public override Builder MergeFrom(DynamicMessageType other) {
-            if (other == global::Google.ProtocolBuffers.TestProtos.TestDynamicExtensions.Types.DynamicMessageType.DefaultInstance) return this;
-            PrepareBuilder();
-            if (other.HasDynamicField) {
-              DynamicField = other.DynamicField;
-            }
-            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(_dynamicMessageTypeFieldNames, field_name, global::System.StringComparer.Ordinal);
-                if(field_ordinal >= 0)
-                  tag = _dynamicMessageTypeFieldTags[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 16800: {
-                  result.hasDynamicField = input.ReadInt32(ref result.dynamicField_);
-                  break;
-                }
-              }
-            }
-
-            if (unknownFields != null) {
-              this.UnknownFields = unknownFields.Build();
-            }
-            return this;
-          }
-
-
-          public bool HasDynamicField {
-            get { return result.hasDynamicField; }
-          }
-          public int DynamicField {
-            get { return result.DynamicField; }
-            set { SetDynamicField(value); }
-          }
-          public Builder SetDynamicField(int value) {
-            PrepareBuilder();
-            result.hasDynamicField = true;
-            result.dynamicField_ = value;
-            return this;
-          }
-          public Builder ClearDynamicField() {
-            PrepareBuilder();
-            result.hasDynamicField = false;
-            result.dynamicField_ = 0;
-            return this;
-          }
-        }
-        static DynamicMessageType() {
-          object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor, null);
-        }
-      }
-
-    }
-    #endregion
-
-    public const int ScalarExtensionFieldNumber = 2000;
-    private bool hasScalarExtension;
-    private uint scalarExtension_;
-    public bool HasScalarExtension {
-      get { return hasScalarExtension; }
-    }
-    public uint ScalarExtension {
-      get { return scalarExtension_; }
-    }
-
-    public const int EnumExtensionFieldNumber = 2001;
-    private bool hasEnumExtension;
-    private global::Google.ProtocolBuffers.TestProtos.ForeignEnum enumExtension_ = global::Google.ProtocolBuffers.TestProtos.ForeignEnum.FOREIGN_FOO;
-    public bool HasEnumExtension {
-      get { return hasEnumExtension; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.ForeignEnum EnumExtension {
-      get { return enumExtension_; }
-    }
-
-    public const int DynamicEnumExtensionFieldNumber = 2002;
-    private bool hasDynamicEnumExtension;
-    private global::Google.ProtocolBuffers.TestProtos.TestDynamicExtensions.Types.DynamicEnumType dynamicEnumExtension_ = global::Google.ProtocolBuffers.TestProtos.TestDynamicExtensions.Types.DynamicEnumType.DYNAMIC_FOO;
-    public bool HasDynamicEnumExtension {
-      get { return hasDynamicEnumExtension; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.TestDynamicExtensions.Types.DynamicEnumType DynamicEnumExtension {
-      get { return dynamicEnumExtension_; }
-    }
-
-    public const int MessageExtensionFieldNumber = 2003;
-    private bool hasMessageExtension;
-    private global::Google.ProtocolBuffers.TestProtos.ForeignMessage messageExtension_;
-    public bool HasMessageExtension {
-      get { return hasMessageExtension; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.ForeignMessage MessageExtension {
-      get { return messageExtension_ ?? global::Google.ProtocolBuffers.TestProtos.ForeignMessage.DefaultInstance; }
-    }
-
-    public const int DynamicMessageExtensionFieldNumber = 2004;
-    private bool hasDynamicMessageExtension;
-    private global::Google.ProtocolBuffers.TestProtos.TestDynamicExtensions.Types.DynamicMessageType dynamicMessageExtension_;
-    public bool HasDynamicMessageExtension {
-      get { return hasDynamicMessageExtension; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.TestDynamicExtensions.Types.DynamicMessageType DynamicMessageExtension {
-      get { return dynamicMessageExtension_ ?? global::Google.ProtocolBuffers.TestProtos.TestDynamicExtensions.Types.DynamicMessageType.DefaultInstance; }
-    }
-
-    public const int RepeatedExtensionFieldNumber = 2005;
-    private pbc::PopsicleList<string> repeatedExtension_ = new pbc::PopsicleList<string>();
-    public scg::IList<string> RepeatedExtensionList {
-      get { return pbc::Lists.AsReadOnly(repeatedExtension_); }
-    }
-    public int RepeatedExtensionCount {
-      get { return repeatedExtension_.Count; }
-    }
-    public string GetRepeatedExtension(int index) {
-      return repeatedExtension_[index];
-    }
-
-    public const int PackedExtensionFieldNumber = 2006;
-    private int packedExtensionMemoizedSerializedSize;
-    private pbc::PopsicleList<int> packedExtension_ = new pbc::PopsicleList<int>();
-    public scg::IList<int> PackedExtensionList {
-      get { return pbc::Lists.AsReadOnly(packedExtension_); }
-    }
-    public int PackedExtensionCount {
-      get { return packedExtension_.Count; }
-    }
-    public int GetPackedExtension(int index) {
-      return packedExtension_[index];
-    }
-
-    public override bool IsInitialized {
-      get {
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _testDynamicExtensionsFieldNames;
-      if (hasScalarExtension) {
-        output.WriteFixed32(2000, field_names[6], ScalarExtension);
-      }
-      if (hasEnumExtension) {
-        output.WriteEnum(2001, field_names[2], (int) EnumExtension, EnumExtension);
-      }
-      if (hasDynamicEnumExtension) {
-        output.WriteEnum(2002, field_names[0], (int) DynamicEnumExtension, DynamicEnumExtension);
-      }
-      if (hasMessageExtension) {
-        output.WriteMessage(2003, field_names[3], MessageExtension);
-      }
-      if (hasDynamicMessageExtension) {
-        output.WriteMessage(2004, field_names[1], DynamicMessageExtension);
-      }
-      if (repeatedExtension_.Count > 0) {
-        output.WriteStringArray(2005, field_names[5], repeatedExtension_);
-      }
-      if (packedExtension_.Count > 0) {
-        output.WritePackedSInt32Array(2006, field_names[4], packedExtensionMemoizedSerializedSize, packedExtension_);
-      }
-      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 (hasScalarExtension) {
-        size += pb::CodedOutputStream.ComputeFixed32Size(2000, ScalarExtension);
-      }
-      if (hasEnumExtension) {
-        size += pb::CodedOutputStream.ComputeEnumSize(2001, (int) EnumExtension);
-      }
-      if (hasDynamicEnumExtension) {
-        size += pb::CodedOutputStream.ComputeEnumSize(2002, (int) DynamicEnumExtension);
-      }
-      if (hasMessageExtension) {
-        size += pb::CodedOutputStream.ComputeMessageSize(2003, MessageExtension);
-      }
-      if (hasDynamicMessageExtension) {
-        size += pb::CodedOutputStream.ComputeMessageSize(2004, DynamicMessageExtension);
-      }
-      {
-        int dataSize = 0;
-        foreach (string element in RepeatedExtensionList) {
-          dataSize += pb::CodedOutputStream.ComputeStringSizeNoTag(element);
-        }
-        size += dataSize;
-        size += 2 * repeatedExtension_.Count;
-      }
-      {
-        int dataSize = 0;
-        foreach (int element in PackedExtensionList) {
-          dataSize += pb::CodedOutputStream.ComputeSInt32SizeNoTag(element);
-        }
-        size += dataSize;
-        if (packedExtension_.Count != 0) {
-          size += 2 + pb::CodedOutputStream.ComputeInt32SizeNoTag(dataSize);
-        }
-        packedExtensionMemoizedSerializedSize = dataSize;
-      }
-      size += UnknownFields.SerializedSize;
-      memoizedSerializedSize = size;
-      return size;
-    }
-    public static TestDynamicExtensions ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestDynamicExtensions ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestDynamicExtensions ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestDynamicExtensions ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestDynamicExtensions ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestDynamicExtensions ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static TestDynamicExtensions ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static TestDynamicExtensions ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static TestDynamicExtensions ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestDynamicExtensions ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private TestDynamicExtensions MakeReadOnly() {
-      repeatedExtension_.MakeReadOnly();
-      packedExtension_.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(TestDynamicExtensions prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilder<TestDynamicExtensions, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(TestDynamicExtensions cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private TestDynamicExtensions result;
-
-      private TestDynamicExtensions PrepareBuilder() {
-        if (resultIsReadOnly) {
-          TestDynamicExtensions original = result;
-          result = new TestDynamicExtensions();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override TestDynamicExtensions 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.TestDynamicExtensions.Descriptor; }
-      }
-
-      public override TestDynamicExtensions DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.TestDynamicExtensions.DefaultInstance; }
-      }
-
-      public override TestDynamicExtensions BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is TestDynamicExtensions) {
-          return MergeFrom((TestDynamicExtensions) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(TestDynamicExtensions other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.TestDynamicExtensions.DefaultInstance) return this;
-        PrepareBuilder();
-        if (other.HasScalarExtension) {
-          ScalarExtension = other.ScalarExtension;
-        }
-        if (other.HasEnumExtension) {
-          EnumExtension = other.EnumExtension;
-        }
-        if (other.HasDynamicEnumExtension) {
-          DynamicEnumExtension = other.DynamicEnumExtension;
-        }
-        if (other.HasMessageExtension) {
-          MergeMessageExtension(other.MessageExtension);
-        }
-        if (other.HasDynamicMessageExtension) {
-          MergeDynamicMessageExtension(other.DynamicMessageExtension);
-        }
-        if (other.repeatedExtension_.Count != 0) {
-          result.repeatedExtension_.Add(other.repeatedExtension_);
-        }
-        if (other.packedExtension_.Count != 0) {
-          result.packedExtension_.Add(other.packedExtension_);
-        }
-        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(_testDynamicExtensionsFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _testDynamicExtensionsFieldTags[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 16005: {
-              result.hasScalarExtension = input.ReadFixed32(ref result.scalarExtension_);
-              break;
-            }
-            case 16008: {
-              object unknown;
-              if(input.ReadEnum(ref result.enumExtension_, out unknown)) {
-                result.hasEnumExtension = true;
-              } else if(unknown is int) {
-                if (unknownFields == null) {
-                  unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-                }
-                unknownFields.MergeVarintField(2001, (ulong)(int)unknown);
-              }
-              break;
-            }
-            case 16016: {
-              object unknown;
-              if(input.ReadEnum(ref result.dynamicEnumExtension_, out unknown)) {
-                result.hasDynamicEnumExtension = true;
-              } else if(unknown is int) {
-                if (unknownFields == null) {
-                  unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
-                }
-                unknownFields.MergeVarintField(2002, (ulong)(int)unknown);
-              }
-              break;
-            }
-            case 16026: {
-              global::Google.ProtocolBuffers.TestProtos.ForeignMessage.Builder subBuilder = global::Google.ProtocolBuffers.TestProtos.ForeignMessage.CreateBuilder();
-              if (result.hasMessageExtension) {
-                subBuilder.MergeFrom(MessageExtension);
-              }
-              input.ReadMessage(subBuilder, extensionRegistry);
-              MessageExtension = subBuilder.BuildPartial();
-              break;
-            }
-            case 16034: {
-              global::Google.ProtocolBuffers.TestProtos.TestDynamicExtensions.Types.DynamicMessageType.Builder subBuilder = global::Google.ProtocolBuffers.TestProtos.TestDynamicExtensions.Types.DynamicMessageType.CreateBuilder();
-              if (result.hasDynamicMessageExtension) {
-                subBuilder.MergeFrom(DynamicMessageExtension);
-              }
-              input.ReadMessage(subBuilder, extensionRegistry);
-              DynamicMessageExtension = subBuilder.BuildPartial();
-              break;
-            }
-            case 16042: {
-              input.ReadStringArray(tag, field_name, result.repeatedExtension_);
-              break;
-            }
-            case 16050:
-            case 16048: {
-              input.ReadSInt32Array(tag, field_name, result.packedExtension_);
-              break;
-            }
-          }
-        }
-
-        if (unknownFields != null) {
-          this.UnknownFields = unknownFields.Build();
-        }
-        return this;
-      }
-
-
-      public bool HasScalarExtension {
-        get { return result.hasScalarExtension; }
-      }
-      public uint ScalarExtension {
-        get { return result.ScalarExtension; }
-        set { SetScalarExtension(value); }
-      }
-      public Builder SetScalarExtension(uint value) {
-        PrepareBuilder();
-        result.hasScalarExtension = true;
-        result.scalarExtension_ = value;
-        return this;
-      }
-      public Builder ClearScalarExtension() {
-        PrepareBuilder();
-        result.hasScalarExtension = false;
-        result.scalarExtension_ = 0;
-        return this;
-      }
-
-      public bool HasEnumExtension {
-        get { return result.hasEnumExtension; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.ForeignEnum EnumExtension {
-        get { return result.EnumExtension; }
-        set { SetEnumExtension(value); }
-      }
-      public Builder SetEnumExtension(global::Google.ProtocolBuffers.TestProtos.ForeignEnum value) {
-        PrepareBuilder();
-        result.hasEnumExtension = true;
-        result.enumExtension_ = value;
-        return this;
-      }
-      public Builder ClearEnumExtension() {
-        PrepareBuilder();
-        result.hasEnumExtension = false;
-        result.enumExtension_ = global::Google.ProtocolBuffers.TestProtos.ForeignEnum.FOREIGN_FOO;
-        return this;
-      }
-
-      public bool HasDynamicEnumExtension {
-        get { return result.hasDynamicEnumExtension; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.TestDynamicExtensions.Types.DynamicEnumType DynamicEnumExtension {
-        get { return result.DynamicEnumExtension; }
-        set { SetDynamicEnumExtension(value); }
-      }
-      public Builder SetDynamicEnumExtension(global::Google.ProtocolBuffers.TestProtos.TestDynamicExtensions.Types.DynamicEnumType value) {
-        PrepareBuilder();
-        result.hasDynamicEnumExtension = true;
-        result.dynamicEnumExtension_ = value;
-        return this;
-      }
-      public Builder ClearDynamicEnumExtension() {
-        PrepareBuilder();
-        result.hasDynamicEnumExtension = false;
-        result.dynamicEnumExtension_ = global::Google.ProtocolBuffers.TestProtos.TestDynamicExtensions.Types.DynamicEnumType.DYNAMIC_FOO;
-        return this;
-      }
-
-      public bool HasMessageExtension {
-       get { return result.hasMessageExtension; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.ForeignMessage MessageExtension {
-        get { return result.MessageExtension; }
-        set { SetMessageExtension(value); }
-      }
-      public Builder SetMessageExtension(global::Google.ProtocolBuffers.TestProtos.ForeignMessage value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasMessageExtension = true;
-        result.messageExtension_ = value;
-        return this;
-      }
-      public Builder SetMessageExtension(global::Google.ProtocolBuffers.TestProtos.ForeignMessage.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.hasMessageExtension = true;
-        result.messageExtension_ = builderForValue.Build();
-        return this;
-      }
-      public Builder MergeMessageExtension(global::Google.ProtocolBuffers.TestProtos.ForeignMessage value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        if (result.hasMessageExtension &&
-            result.messageExtension_ != global::Google.ProtocolBuffers.TestProtos.ForeignMessage.DefaultInstance) {
-            result.messageExtension_ = global::Google.ProtocolBuffers.TestProtos.ForeignMessage.CreateBuilder(result.messageExtension_).MergeFrom(value).BuildPartial();
-        } else {
-          result.messageExtension_ = value;
-        }
-        result.hasMessageExtension = true;
-        return this;
-      }
-      public Builder ClearMessageExtension() {
-        PrepareBuilder();
-        result.hasMessageExtension = false;
-        result.messageExtension_ = null;
-        return this;
-      }
-
-      public bool HasDynamicMessageExtension {
-       get { return result.hasDynamicMessageExtension; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.TestDynamicExtensions.Types.DynamicMessageType DynamicMessageExtension {
-        get { return result.DynamicMessageExtension; }
-        set { SetDynamicMessageExtension(value); }
-      }
-      public Builder SetDynamicMessageExtension(global::Google.ProtocolBuffers.TestProtos.TestDynamicExtensions.Types.DynamicMessageType value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasDynamicMessageExtension = true;
-        result.dynamicMessageExtension_ = value;
-        return this;
-      }
-      public Builder SetDynamicMessageExtension(global::Google.ProtocolBuffers.TestProtos.TestDynamicExtensions.Types.DynamicMessageType.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.hasDynamicMessageExtension = true;
-        result.dynamicMessageExtension_ = builderForValue.Build();
-        return this;
-      }
-      public Builder MergeDynamicMessageExtension(global::Google.ProtocolBuffers.TestProtos.TestDynamicExtensions.Types.DynamicMessageType value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        if (result.hasDynamicMessageExtension &&
-            result.dynamicMessageExtension_ != global::Google.ProtocolBuffers.TestProtos.TestDynamicExtensions.Types.DynamicMessageType.DefaultInstance) {
-            result.dynamicMessageExtension_ = global::Google.ProtocolBuffers.TestProtos.TestDynamicExtensions.Types.DynamicMessageType.CreateBuilder(result.dynamicMessageExtension_).MergeFrom(value).BuildPartial();
-        } else {
-          result.dynamicMessageExtension_ = value;
-        }
-        result.hasDynamicMessageExtension = true;
-        return this;
-      }
-      public Builder ClearDynamicMessageExtension() {
-        PrepareBuilder();
-        result.hasDynamicMessageExtension = false;
-        result.dynamicMessageExtension_ = null;
-        return this;
-      }
-
-      public pbc::IPopsicleList<string> RepeatedExtensionList {
-        get { return PrepareBuilder().repeatedExtension_; }
-      }
-      public int RepeatedExtensionCount {
-        get { return result.RepeatedExtensionCount; }
-      }
-      public string GetRepeatedExtension(int index) {
-        return result.GetRepeatedExtension(index);
-      }
-      public Builder SetRepeatedExtension(int index, string value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.repeatedExtension_[index] = value;
-        return this;
-      }
-      public Builder AddRepeatedExtension(string value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.repeatedExtension_.Add(value);
-        return this;
-      }
-      public Builder AddRangeRepeatedExtension(scg::IEnumerable<string> values) {
-        PrepareBuilder();
-        result.repeatedExtension_.Add(values);
-        return this;
-      }
-      public Builder ClearRepeatedExtension() {
-        PrepareBuilder();
-        result.repeatedExtension_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<int> PackedExtensionList {
-        get { return PrepareBuilder().packedExtension_; }
-      }
-      public int PackedExtensionCount {
-        get { return result.PackedExtensionCount; }
-      }
-      public int GetPackedExtension(int index) {
-        return result.GetPackedExtension(index);
-      }
-      public Builder SetPackedExtension(int index, int value) {
-        PrepareBuilder();
-        result.packedExtension_[index] = value;
-        return this;
-      }
-      public Builder AddPackedExtension(int value) {
-        PrepareBuilder();
-        result.packedExtension_.Add(value);
-        return this;
-      }
-      public Builder AddRangePackedExtension(scg::IEnumerable<int> values) {
-        PrepareBuilder();
-        result.packedExtension_.Add(values);
-        return this;
-      }
-      public Builder ClearPackedExtension() {
-        PrepareBuilder();
-        result.packedExtension_.Clear();
-        return this;
-      }
-    }
-    static TestDynamicExtensions() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class TestRepeatedScalarDifferentTagSizes : pb::GeneratedMessage<TestRepeatedScalarDifferentTagSizes, TestRepeatedScalarDifferentTagSizes.Builder> {
-    private TestRepeatedScalarDifferentTagSizes() { }
-    private static readonly TestRepeatedScalarDifferentTagSizes defaultInstance = new TestRepeatedScalarDifferentTagSizes().MakeReadOnly();
-    private static readonly string[] _testRepeatedScalarDifferentTagSizesFieldNames = new string[] { "repeated_fixed32", "repeated_fixed64", "repeated_float", "repeated_int32", "repeated_int64", "repeated_uint64" };
-    private static readonly uint[] _testRepeatedScalarDifferentTagSizesFieldTags = new uint[] { 101, 16369, 2097141, 104, 16376, 2097144 };
-    public static TestRepeatedScalarDifferentTagSizes DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override TestRepeatedScalarDifferentTagSizes DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override TestRepeatedScalarDifferentTagSizes ThisMessage {
-      get { return this; }
-    }
-
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestRepeatedScalarDifferentTagSizes__Descriptor; }
-    }
-
-    protected override pb::FieldAccess.FieldAccessorTable<TestRepeatedScalarDifferentTagSizes, TestRepeatedScalarDifferentTagSizes.Builder> InternalFieldAccessors {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestRepeatedScalarDifferentTagSizes__FieldAccessorTable; }
-    }
-
-    public const int RepeatedFixed32FieldNumber = 12;
-    private pbc::PopsicleList<uint> repeatedFixed32_ = new pbc::PopsicleList<uint>();
-    public scg::IList<uint> RepeatedFixed32List {
-      get { return pbc::Lists.AsReadOnly(repeatedFixed32_); }
-    }
-    public int RepeatedFixed32Count {
-      get { return repeatedFixed32_.Count; }
-    }
-    public uint GetRepeatedFixed32(int index) {
-      return repeatedFixed32_[index];
-    }
-
-    public const int RepeatedInt32FieldNumber = 13;
-    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 RepeatedFixed64FieldNumber = 2046;
-    private pbc::PopsicleList<ulong> repeatedFixed64_ = new pbc::PopsicleList<ulong>();
-    public scg::IList<ulong> RepeatedFixed64List {
-      get { return pbc::Lists.AsReadOnly(repeatedFixed64_); }
-    }
-    public int RepeatedFixed64Count {
-      get { return repeatedFixed64_.Count; }
-    }
-    public ulong GetRepeatedFixed64(int index) {
-      return repeatedFixed64_[index];
-    }
-
-    public const int RepeatedInt64FieldNumber = 2047;
-    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 RepeatedFloatFieldNumber = 262142;
-    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 RepeatedUint64FieldNumber = 262143;
-    private pbc::PopsicleList<ulong> repeatedUint64_ = new pbc::PopsicleList<ulong>();
-    public scg::IList<ulong> RepeatedUint64List {
-      get { return pbc::Lists.AsReadOnly(repeatedUint64_); }
-    }
-    public int RepeatedUint64Count {
-      get { return repeatedUint64_.Count; }
-    }
-    public ulong GetRepeatedUint64(int index) {
-      return repeatedUint64_[index];
-    }
-
-    public override bool IsInitialized {
-      get {
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _testRepeatedScalarDifferentTagSizesFieldNames;
-      if (repeatedFixed32_.Count > 0) {
-        output.WriteFixed32Array(12, field_names[0], repeatedFixed32_);
-      }
-      if (repeatedInt32_.Count > 0) {
-        output.WriteInt32Array(13, field_names[3], repeatedInt32_);
-      }
-      if (repeatedFixed64_.Count > 0) {
-        output.WriteFixed64Array(2046, field_names[1], repeatedFixed64_);
-      }
-      if (repeatedInt64_.Count > 0) {
-        output.WriteInt64Array(2047, field_names[4], repeatedInt64_);
-      }
-      if (repeatedFloat_.Count > 0) {
-        output.WriteFloatArray(262142, field_names[2], repeatedFloat_);
-      }
-      if (repeatedUint64_.Count > 0) {
-        output.WriteUInt64Array(262143, field_names[5], repeatedUint64_);
-      }
-      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;
-        dataSize = 4 * repeatedFixed32_.Count;
-        size += dataSize;
-        size += 1 * repeatedFixed32_.Count;
-      }
-      {
-        int dataSize = 0;
-        foreach (int element in RepeatedInt32List) {
-          dataSize += pb::CodedOutputStream.ComputeInt32SizeNoTag(element);
-        }
-        size += dataSize;
-        size += 1 * repeatedInt32_.Count;
-      }
-      {
-        int dataSize = 0;
-        dataSize = 8 * repeatedFixed64_.Count;
-        size += dataSize;
-        size += 2 * repeatedFixed64_.Count;
-      }
-      {
-        int dataSize = 0;
-        foreach (long element in RepeatedInt64List) {
-          dataSize += pb::CodedOutputStream.ComputeInt64SizeNoTag(element);
-        }
-        size += dataSize;
-        size += 2 * repeatedInt64_.Count;
-      }
-      {
-        int dataSize = 0;
-        dataSize = 4 * repeatedFloat_.Count;
-        size += dataSize;
-        size += 3 * repeatedFloat_.Count;
-      }
-      {
-        int dataSize = 0;
-        foreach (ulong element in RepeatedUint64List) {
-          dataSize += pb::CodedOutputStream.ComputeUInt64SizeNoTag(element);
-        }
-        size += dataSize;
-        size += 3 * repeatedUint64_.Count;
-      }
-      size += UnknownFields.SerializedSize;
-      memoizedSerializedSize = size;
-      return size;
-    }
-    public static TestRepeatedScalarDifferentTagSizes ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestRepeatedScalarDifferentTagSizes ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestRepeatedScalarDifferentTagSizes ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestRepeatedScalarDifferentTagSizes ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestRepeatedScalarDifferentTagSizes ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestRepeatedScalarDifferentTagSizes ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static TestRepeatedScalarDifferentTagSizes ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static TestRepeatedScalarDifferentTagSizes ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static TestRepeatedScalarDifferentTagSizes ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestRepeatedScalarDifferentTagSizes ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private TestRepeatedScalarDifferentTagSizes MakeReadOnly() {
-      repeatedFixed32_.MakeReadOnly();
-      repeatedInt32_.MakeReadOnly();
-      repeatedFixed64_.MakeReadOnly();
-      repeatedInt64_.MakeReadOnly();
-      repeatedFloat_.MakeReadOnly();
-      repeatedUint64_.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(TestRepeatedScalarDifferentTagSizes prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilder<TestRepeatedScalarDifferentTagSizes, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(TestRepeatedScalarDifferentTagSizes cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private TestRepeatedScalarDifferentTagSizes result;
-
-      private TestRepeatedScalarDifferentTagSizes PrepareBuilder() {
-        if (resultIsReadOnly) {
-          TestRepeatedScalarDifferentTagSizes original = result;
-          result = new TestRepeatedScalarDifferentTagSizes();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override TestRepeatedScalarDifferentTagSizes 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.TestRepeatedScalarDifferentTagSizes.Descriptor; }
-      }
-
-      public override TestRepeatedScalarDifferentTagSizes DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.TestRepeatedScalarDifferentTagSizes.DefaultInstance; }
-      }
-
-      public override TestRepeatedScalarDifferentTagSizes BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is TestRepeatedScalarDifferentTagSizes) {
-          return MergeFrom((TestRepeatedScalarDifferentTagSizes) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(TestRepeatedScalarDifferentTagSizes other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.TestRepeatedScalarDifferentTagSizes.DefaultInstance) return this;
-        PrepareBuilder();
-        if (other.repeatedFixed32_.Count != 0) {
-          result.repeatedFixed32_.Add(other.repeatedFixed32_);
-        }
-        if (other.repeatedInt32_.Count != 0) {
-          result.repeatedInt32_.Add(other.repeatedInt32_);
-        }
-        if (other.repeatedFixed64_.Count != 0) {
-          result.repeatedFixed64_.Add(other.repeatedFixed64_);
-        }
-        if (other.repeatedInt64_.Count != 0) {
-          result.repeatedInt64_.Add(other.repeatedInt64_);
-        }
-        if (other.repeatedFloat_.Count != 0) {
-          result.repeatedFloat_.Add(other.repeatedFloat_);
-        }
-        if (other.repeatedUint64_.Count != 0) {
-          result.repeatedUint64_.Add(other.repeatedUint64_);
-        }
-        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(_testRepeatedScalarDifferentTagSizesFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _testRepeatedScalarDifferentTagSizesFieldTags[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 98:
-            case 101: {
-              input.ReadFixed32Array(tag, field_name, result.repeatedFixed32_);
-              break;
-            }
-            case 106:
-            case 104: {
-              input.ReadInt32Array(tag, field_name, result.repeatedInt32_);
-              break;
-            }
-            case 16370:
-            case 16369: {
-              input.ReadFixed64Array(tag, field_name, result.repeatedFixed64_);
-              break;
-            }
-            case 16378:
-            case 16376: {
-              input.ReadInt64Array(tag, field_name, result.repeatedInt64_);
-              break;
-            }
-            case 2097138:
-            case 2097141: {
-              input.ReadFloatArray(tag, field_name, result.repeatedFloat_);
-              break;
-            }
-            case 2097146:
-            case 2097144: {
-              input.ReadUInt64Array(tag, field_name, result.repeatedUint64_);
-              break;
-            }
-          }
-        }
-
-        if (unknownFields != null) {
-          this.UnknownFields = unknownFields.Build();
-        }
-        return this;
-      }
-
-
-      public pbc::IPopsicleList<uint> RepeatedFixed32List {
-        get { return PrepareBuilder().repeatedFixed32_; }
-      }
-      public int RepeatedFixed32Count {
-        get { return result.RepeatedFixed32Count; }
-      }
-      public uint GetRepeatedFixed32(int index) {
-        return result.GetRepeatedFixed32(index);
-      }
-      public Builder SetRepeatedFixed32(int index, uint value) {
-        PrepareBuilder();
-        result.repeatedFixed32_[index] = value;
-        return this;
-      }
-      public Builder AddRepeatedFixed32(uint value) {
-        PrepareBuilder();
-        result.repeatedFixed32_.Add(value);
-        return this;
-      }
-      public Builder AddRangeRepeatedFixed32(scg::IEnumerable<uint> values) {
-        PrepareBuilder();
-        result.repeatedFixed32_.Add(values);
-        return this;
-      }
-      public Builder ClearRepeatedFixed32() {
-        PrepareBuilder();
-        result.repeatedFixed32_.Clear();
-        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<ulong> RepeatedFixed64List {
-        get { return PrepareBuilder().repeatedFixed64_; }
-      }
-      public int RepeatedFixed64Count {
-        get { return result.RepeatedFixed64Count; }
-      }
-      public ulong GetRepeatedFixed64(int index) {
-        return result.GetRepeatedFixed64(index);
-      }
-      public Builder SetRepeatedFixed64(int index, ulong value) {
-        PrepareBuilder();
-        result.repeatedFixed64_[index] = value;
-        return this;
-      }
-      public Builder AddRepeatedFixed64(ulong value) {
-        PrepareBuilder();
-        result.repeatedFixed64_.Add(value);
-        return this;
-      }
-      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<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;
-      }
-
-      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<ulong> RepeatedUint64List {
-        get { return PrepareBuilder().repeatedUint64_; }
-      }
-      public int RepeatedUint64Count {
-        get { return result.RepeatedUint64Count; }
-      }
-      public ulong GetRepeatedUint64(int index) {
-        return result.GetRepeatedUint64(index);
-      }
-      public Builder SetRepeatedUint64(int index, ulong value) {
-        PrepareBuilder();
-        result.repeatedUint64_[index] = value;
-        return this;
-      }
-      public Builder AddRepeatedUint64(ulong value) {
-        PrepareBuilder();
-        result.repeatedUint64_.Add(value);
-        return this;
-      }
-      public Builder AddRangeRepeatedUint64(scg::IEnumerable<ulong> values) {
-        PrepareBuilder();
-        result.repeatedUint64_.Add(values);
-        return this;
-      }
-      public Builder ClearRepeatedUint64() {
-        PrepareBuilder();
-        result.repeatedUint64_.Clear();
-        return this;
-      }
-    }
-    static TestRepeatedScalarDifferentTagSizes() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class TestParsingMerge : pb::ExtendableMessage<TestParsingMerge, TestParsingMerge.Builder> {
-    private TestParsingMerge() { }
-    private static readonly TestParsingMerge defaultInstance = new TestParsingMerge().MakeReadOnly();
-    private static readonly string[] _testParsingMergeFieldNames = new string[] { "optional_all_types", "optionalgroup", "repeated_all_types", "repeatedgroup", "required_all_types" };
-    private static readonly uint[] _testParsingMergeFieldTags = new uint[] { 18, 83, 26, 163, 10 };
-    public static TestParsingMerge DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override TestParsingMerge DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override TestParsingMerge ThisMessage {
-      get { return this; }
-    }
-
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestParsingMerge__Descriptor; }
-    }
-
-    protected override pb::FieldAccess.FieldAccessorTable<TestParsingMerge, TestParsingMerge.Builder> InternalFieldAccessors {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestParsingMerge__FieldAccessorTable; }
-    }
-
-    public const int OptionalExtFieldNumber = 1000;
-    public static pb::GeneratedExtensionBase<global::Google.ProtocolBuffers.TestProtos.TestAllTypes> OptionalExt;
-    public const int RepeatedExtFieldNumber = 1001;
-    public static pb::GeneratedExtensionBase<scg::IList<global::Google.ProtocolBuffers.TestProtos.TestAllTypes>> RepeatedExt;
-    #region Nested types
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public static partial class Types {
-      [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-      public sealed partial class RepeatedFieldsGenerator : pb::GeneratedMessage<RepeatedFieldsGenerator, RepeatedFieldsGenerator.Builder> {
-        private RepeatedFieldsGenerator() { }
-        private static readonly RepeatedFieldsGenerator defaultInstance = new RepeatedFieldsGenerator().MakeReadOnly();
-        private static readonly string[] _repeatedFieldsGeneratorFieldNames = new string[] { "ext1", "ext2", "field1", "field2", "field3", "group1", "group2" };
-        private static readonly uint[] _repeatedFieldsGeneratorFieldTags = new uint[] { 8002, 8010, 10, 18, 26, 83, 163 };
-        public static RepeatedFieldsGenerator DefaultInstance {
-          get { return defaultInstance; }
-        }
-
-        public override RepeatedFieldsGenerator DefaultInstanceForType {
-          get { return DefaultInstance; }
-        }
-
-        protected override RepeatedFieldsGenerator ThisMessage {
-          get { return this; }
-        }
-
-        public static pbd::MessageDescriptor Descriptor {
-          get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestParsingMerge_RepeatedFieldsGenerator__Descriptor; }
-        }
-
-        protected override pb::FieldAccess.FieldAccessorTable<RepeatedFieldsGenerator, RepeatedFieldsGenerator.Builder> InternalFieldAccessors {
-          get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestParsingMerge_RepeatedFieldsGenerator__FieldAccessorTable; }
-        }
-
-        #region Nested types
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-        public static partial class Types {
-          [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-          public sealed partial class Group1 : pb::GeneratedMessage<Group1, Group1.Builder> {
-            private Group1() { }
-            private static readonly Group1 defaultInstance = new Group1().MakeReadOnly();
-            private static readonly string[] _group1FieldNames = new string[] { "field1" };
-            private static readonly uint[] _group1FieldTags = new uint[] { 90 };
-            public static Group1 DefaultInstance {
-              get { return defaultInstance; }
-            }
-
-            public override Group1 DefaultInstanceForType {
-              get { return DefaultInstance; }
-            }
-
-            protected override Group1 ThisMessage {
-              get { return this; }
-            }
-
-            public static pbd::MessageDescriptor Descriptor {
-              get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestParsingMerge_RepeatedFieldsGenerator_Group1__Descriptor; }
-            }
-
-            protected override pb::FieldAccess.FieldAccessorTable<Group1, Group1.Builder> InternalFieldAccessors {
-              get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestParsingMerge_RepeatedFieldsGenerator_Group1__FieldAccessorTable; }
-            }
-
-            public const int Field1FieldNumber = 11;
-            private bool hasField1;
-            private global::Google.ProtocolBuffers.TestProtos.TestAllTypes field1_;
-            public bool HasField1 {
-              get { return hasField1; }
-            }
-            public global::Google.ProtocolBuffers.TestProtos.TestAllTypes Field1 {
-              get { return field1_ ?? global::Google.ProtocolBuffers.TestProtos.TestAllTypes.DefaultInstance; }
-            }
-
-            public override bool IsInitialized {
-              get {
-                return true;
-              }
-            }
-
-            public override void WriteTo(pb::ICodedOutputStream output) {
-              CalcSerializedSize();
-              string[] field_names = _group1FieldNames;
-              if (hasField1) {
-                output.WriteMessage(11, field_names[0], Field1);
-              }
-              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 (hasField1) {
-                size += pb::CodedOutputStream.ComputeMessageSize(11, Field1);
-              }
-              size += UnknownFields.SerializedSize;
-              memoizedSerializedSize = size;
-              return size;
-            }
-            public static Group1 ParseFrom(pb::ByteString data) {
-              return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-            }
-            public static Group1 ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-              return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-            }
-            public static Group1 ParseFrom(byte[] data) {
-              return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-            }
-            public static Group1 ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-              return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-            }
-            public static Group1 ParseFrom(global::System.IO.Stream input) {
-              return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-            }
-            public static Group1 ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-              return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-            }
-            public static Group1 ParseDelimitedFrom(global::System.IO.Stream input) {
-              return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-            }
-            public static Group1 ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-              return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-            }
-            public static Group1 ParseFrom(pb::ICodedInputStream input) {
-              return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-            }
-            public static Group1 ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-              return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-            }
-            private Group1 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(Group1 prototype) {
-              return new Builder(prototype);
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-            public sealed partial class Builder : pb::GeneratedBuilder<Group1, Builder> {
-              protected override Builder ThisBuilder {
-                get { return this; }
-              }
-              public Builder() {
-                result = DefaultInstance;
-                resultIsReadOnly = true;
-              }
-              internal Builder(Group1 cloneFrom) {
-                result = cloneFrom;
-                resultIsReadOnly = true;
-              }
-
-              private bool resultIsReadOnly;
-              private Group1 result;
-
-              private Group1 PrepareBuilder() {
-                if (resultIsReadOnly) {
-                  Group1 original = result;
-                  result = new Group1();
-                  resultIsReadOnly = false;
-                  MergeFrom(original);
-                }
-                return result;
-              }
-
-              public override bool IsInitialized {
-                get { return result.IsInitialized; }
-              }
-
-              protected override Group1 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.TestParsingMerge.Types.RepeatedFieldsGenerator.Types.Group1.Descriptor; }
-              }
-
-              public override Group1 DefaultInstanceForType {
-                get { return global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Types.RepeatedFieldsGenerator.Types.Group1.DefaultInstance; }
-              }
-
-              public override Group1 BuildPartial() {
-                if (resultIsReadOnly) {
-                  return result;
-                }
-                resultIsReadOnly = true;
-                return result.MakeReadOnly();
-              }
-
-              public override Builder MergeFrom(pb::IMessage other) {
-                if (other is Group1) {
-                  return MergeFrom((Group1) other);
-                } else {
-                  base.MergeFrom(other);
-                  return this;
-                }
-              }
-
-              public override Builder MergeFrom(Group1 other) {
-                if (other == global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Types.RepeatedFieldsGenerator.Types.Group1.DefaultInstance) return this;
-                PrepareBuilder();
-                if (other.HasField1) {
-                  MergeField1(other.Field1);
-                }
-                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(_group1FieldNames, field_name, global::System.StringComparer.Ordinal);
-                    if(field_ordinal >= 0)
-                      tag = _group1FieldTags[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 90: {
-                      global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Builder subBuilder = global::Google.ProtocolBuffers.TestProtos.TestAllTypes.CreateBuilder();
-                      if (result.hasField1) {
-                        subBuilder.MergeFrom(Field1);
-                      }
-                      input.ReadMessage(subBuilder, extensionRegistry);
-                      Field1 = subBuilder.BuildPartial();
-                      break;
-                    }
-                  }
-                }
-
-                if (unknownFields != null) {
-                  this.UnknownFields = unknownFields.Build();
-                }
-                return this;
-              }
-
-
-              public bool HasField1 {
-               get { return result.hasField1; }
-              }
-              public global::Google.ProtocolBuffers.TestProtos.TestAllTypes Field1 {
-                get { return result.Field1; }
-                set { SetField1(value); }
-              }
-              public Builder SetField1(global::Google.ProtocolBuffers.TestProtos.TestAllTypes value) {
-                pb::ThrowHelper.ThrowIfNull(value, "value");
-                PrepareBuilder();
-                result.hasField1 = true;
-                result.field1_ = value;
-                return this;
-              }
-              public Builder SetField1(global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Builder builderForValue) {
-                pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-                PrepareBuilder();
-                result.hasField1 = true;
-                result.field1_ = builderForValue.Build();
-                return this;
-              }
-              public Builder MergeField1(global::Google.ProtocolBuffers.TestProtos.TestAllTypes value) {
-                pb::ThrowHelper.ThrowIfNull(value, "value");
-                PrepareBuilder();
-                if (result.hasField1 &&
-                    result.field1_ != global::Google.ProtocolBuffers.TestProtos.TestAllTypes.DefaultInstance) {
-                    result.field1_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypes.CreateBuilder(result.field1_).MergeFrom(value).BuildPartial();
-                } else {
-                  result.field1_ = value;
-                }
-                result.hasField1 = true;
-                return this;
-              }
-              public Builder ClearField1() {
-                PrepareBuilder();
-                result.hasField1 = false;
-                result.field1_ = null;
-                return this;
-              }
-            }
-            static Group1() {
-              object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor, null);
-            }
-          }
-
-          [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-          public sealed partial class Group2 : pb::GeneratedMessage<Group2, Group2.Builder> {
-            private Group2() { }
-            private static readonly Group2 defaultInstance = new Group2().MakeReadOnly();
-            private static readonly string[] _group2FieldNames = new string[] { "field1" };
-            private static readonly uint[] _group2FieldTags = new uint[] { 170 };
-            public static Group2 DefaultInstance {
-              get { return defaultInstance; }
-            }
-
-            public override Group2 DefaultInstanceForType {
-              get { return DefaultInstance; }
-            }
-
-            protected override Group2 ThisMessage {
-              get { return this; }
-            }
-
-            public static pbd::MessageDescriptor Descriptor {
-              get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestParsingMerge_RepeatedFieldsGenerator_Group2__Descriptor; }
-            }
-
-            protected override pb::FieldAccess.FieldAccessorTable<Group2, Group2.Builder> InternalFieldAccessors {
-              get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestParsingMerge_RepeatedFieldsGenerator_Group2__FieldAccessorTable; }
-            }
-
-            public const int Field1FieldNumber = 21;
-            private bool hasField1;
-            private global::Google.ProtocolBuffers.TestProtos.TestAllTypes field1_;
-            public bool HasField1 {
-              get { return hasField1; }
-            }
-            public global::Google.ProtocolBuffers.TestProtos.TestAllTypes Field1 {
-              get { return field1_ ?? global::Google.ProtocolBuffers.TestProtos.TestAllTypes.DefaultInstance; }
-            }
-
-            public override bool IsInitialized {
-              get {
-                return true;
-              }
-            }
-
-            public override void WriteTo(pb::ICodedOutputStream output) {
-              CalcSerializedSize();
-              string[] field_names = _group2FieldNames;
-              if (hasField1) {
-                output.WriteMessage(21, field_names[0], Field1);
-              }
-              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 (hasField1) {
-                size += pb::CodedOutputStream.ComputeMessageSize(21, Field1);
-              }
-              size += UnknownFields.SerializedSize;
-              memoizedSerializedSize = size;
-              return size;
-            }
-            public static Group2 ParseFrom(pb::ByteString data) {
-              return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-            }
-            public static Group2 ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-              return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-            }
-            public static Group2 ParseFrom(byte[] data) {
-              return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-            }
-            public static Group2 ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-              return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-            }
-            public static Group2 ParseFrom(global::System.IO.Stream input) {
-              return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-            }
-            public static Group2 ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-              return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-            }
-            public static Group2 ParseDelimitedFrom(global::System.IO.Stream input) {
-              return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-            }
-            public static Group2 ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-              return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-            }
-            public static Group2 ParseFrom(pb::ICodedInputStream input) {
-              return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-            }
-            public static Group2 ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-              return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-            }
-            private Group2 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(Group2 prototype) {
-              return new Builder(prototype);
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-            public sealed partial class Builder : pb::GeneratedBuilder<Group2, Builder> {
-              protected override Builder ThisBuilder {
-                get { return this; }
-              }
-              public Builder() {
-                result = DefaultInstance;
-                resultIsReadOnly = true;
-              }
-              internal Builder(Group2 cloneFrom) {
-                result = cloneFrom;
-                resultIsReadOnly = true;
-              }
-
-              private bool resultIsReadOnly;
-              private Group2 result;
-
-              private Group2 PrepareBuilder() {
-                if (resultIsReadOnly) {
-                  Group2 original = result;
-                  result = new Group2();
-                  resultIsReadOnly = false;
-                  MergeFrom(original);
-                }
-                return result;
-              }
-
-              public override bool IsInitialized {
-                get { return result.IsInitialized; }
-              }
-
-              protected override Group2 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.TestParsingMerge.Types.RepeatedFieldsGenerator.Types.Group2.Descriptor; }
-              }
-
-              public override Group2 DefaultInstanceForType {
-                get { return global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Types.RepeatedFieldsGenerator.Types.Group2.DefaultInstance; }
-              }
-
-              public override Group2 BuildPartial() {
-                if (resultIsReadOnly) {
-                  return result;
-                }
-                resultIsReadOnly = true;
-                return result.MakeReadOnly();
-              }
-
-              public override Builder MergeFrom(pb::IMessage other) {
-                if (other is Group2) {
-                  return MergeFrom((Group2) other);
-                } else {
-                  base.MergeFrom(other);
-                  return this;
-                }
-              }
-
-              public override Builder MergeFrom(Group2 other) {
-                if (other == global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Types.RepeatedFieldsGenerator.Types.Group2.DefaultInstance) return this;
-                PrepareBuilder();
-                if (other.HasField1) {
-                  MergeField1(other.Field1);
-                }
-                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(_group2FieldNames, field_name, global::System.StringComparer.Ordinal);
-                    if(field_ordinal >= 0)
-                      tag = _group2FieldTags[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 170: {
-                      global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Builder subBuilder = global::Google.ProtocolBuffers.TestProtos.TestAllTypes.CreateBuilder();
-                      if (result.hasField1) {
-                        subBuilder.MergeFrom(Field1);
-                      }
-                      input.ReadMessage(subBuilder, extensionRegistry);
-                      Field1 = subBuilder.BuildPartial();
-                      break;
-                    }
-                  }
-                }
-
-                if (unknownFields != null) {
-                  this.UnknownFields = unknownFields.Build();
-                }
-                return this;
-              }
-
-
-              public bool HasField1 {
-               get { return result.hasField1; }
-              }
-              public global::Google.ProtocolBuffers.TestProtos.TestAllTypes Field1 {
-                get { return result.Field1; }
-                set { SetField1(value); }
-              }
-              public Builder SetField1(global::Google.ProtocolBuffers.TestProtos.TestAllTypes value) {
-                pb::ThrowHelper.ThrowIfNull(value, "value");
-                PrepareBuilder();
-                result.hasField1 = true;
-                result.field1_ = value;
-                return this;
-              }
-              public Builder SetField1(global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Builder builderForValue) {
-                pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-                PrepareBuilder();
-                result.hasField1 = true;
-                result.field1_ = builderForValue.Build();
-                return this;
-              }
-              public Builder MergeField1(global::Google.ProtocolBuffers.TestProtos.TestAllTypes value) {
-                pb::ThrowHelper.ThrowIfNull(value, "value");
-                PrepareBuilder();
-                if (result.hasField1 &&
-                    result.field1_ != global::Google.ProtocolBuffers.TestProtos.TestAllTypes.DefaultInstance) {
-                    result.field1_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypes.CreateBuilder(result.field1_).MergeFrom(value).BuildPartial();
-                } else {
-                  result.field1_ = value;
-                }
-                result.hasField1 = true;
-                return this;
-              }
-              public Builder ClearField1() {
-                PrepareBuilder();
-                result.hasField1 = false;
-                result.field1_ = null;
-                return this;
-              }
-            }
-            static Group2() {
-              object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor, null);
-            }
-          }
-
-        }
-        #endregion
-
-        public const int Field1FieldNumber = 1;
-        private pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.TestAllTypes> field1_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.TestAllTypes>();
-        public scg::IList<global::Google.ProtocolBuffers.TestProtos.TestAllTypes> Field1List {
-          get { return field1_; }
-        }
-        public int Field1Count {
-          get { return field1_.Count; }
-        }
-        public global::Google.ProtocolBuffers.TestProtos.TestAllTypes GetField1(int index) {
-          return field1_[index];
-        }
-
-        public const int Field2FieldNumber = 2;
-        private pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.TestAllTypes> field2_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.TestAllTypes>();
-        public scg::IList<global::Google.ProtocolBuffers.TestProtos.TestAllTypes> Field2List {
-          get { return field2_; }
-        }
-        public int Field2Count {
-          get { return field2_.Count; }
-        }
-        public global::Google.ProtocolBuffers.TestProtos.TestAllTypes GetField2(int index) {
-          return field2_[index];
-        }
-
-        public const int Field3FieldNumber = 3;
-        private pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.TestAllTypes> field3_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.TestAllTypes>();
-        public scg::IList<global::Google.ProtocolBuffers.TestProtos.TestAllTypes> Field3List {
-          get { return field3_; }
-        }
-        public int Field3Count {
-          get { return field3_.Count; }
-        }
-        public global::Google.ProtocolBuffers.TestProtos.TestAllTypes GetField3(int index) {
-          return field3_[index];
-        }
-
-        public const int Group1FieldNumber = 10;
-        private pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Types.RepeatedFieldsGenerator.Types.Group1> group1_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Types.RepeatedFieldsGenerator.Types.Group1>();
-        public scg::IList<global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Types.RepeatedFieldsGenerator.Types.Group1> Group1List {
-          get { return group1_; }
-        }
-        public int Group1Count {
-          get { return group1_.Count; }
-        }
-        public global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Types.RepeatedFieldsGenerator.Types.Group1 GetGroup1(int index) {
-          return group1_[index];
-        }
-
-        public const int Group2FieldNumber = 20;
-        private pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Types.RepeatedFieldsGenerator.Types.Group2> group2_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Types.RepeatedFieldsGenerator.Types.Group2>();
-        public scg::IList<global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Types.RepeatedFieldsGenerator.Types.Group2> Group2List {
-          get { return group2_; }
-        }
-        public int Group2Count {
-          get { return group2_.Count; }
-        }
-        public global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Types.RepeatedFieldsGenerator.Types.Group2 GetGroup2(int index) {
-          return group2_[index];
-        }
-
-        public const int Ext1FieldNumber = 1000;
-        private pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.TestAllTypes> ext1_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.TestAllTypes>();
-        public scg::IList<global::Google.ProtocolBuffers.TestProtos.TestAllTypes> Ext1List {
-          get { return ext1_; }
-        }
-        public int Ext1Count {
-          get { return ext1_.Count; }
-        }
-        public global::Google.ProtocolBuffers.TestProtos.TestAllTypes GetExt1(int index) {
-          return ext1_[index];
-        }
-
-        public const int Ext2FieldNumber = 1001;
-        private pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.TestAllTypes> ext2_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.TestAllTypes>();
-        public scg::IList<global::Google.ProtocolBuffers.TestProtos.TestAllTypes> Ext2List {
-          get { return ext2_; }
-        }
-        public int Ext2Count {
-          get { return ext2_.Count; }
-        }
-        public global::Google.ProtocolBuffers.TestProtos.TestAllTypes GetExt2(int index) {
-          return ext2_[index];
-        }
-
-        public override bool IsInitialized {
-          get {
-            return true;
-          }
-        }
-
-        public override void WriteTo(pb::ICodedOutputStream output) {
-          CalcSerializedSize();
-          string[] field_names = _repeatedFieldsGeneratorFieldNames;
-          if (field1_.Count > 0) {
-            output.WriteMessageArray(1, field_names[2], field1_);
-          }
-          if (field2_.Count > 0) {
-            output.WriteMessageArray(2, field_names[3], field2_);
-          }
-          if (field3_.Count > 0) {
-            output.WriteMessageArray(3, field_names[4], field3_);
-          }
-          if (group1_.Count > 0) {
-            output.WriteGroupArray(10, field_names[5], group1_);
-          }
-          if (group2_.Count > 0) {
-            output.WriteGroupArray(20, field_names[6], group2_);
-          }
-          if (ext1_.Count > 0) {
-            output.WriteMessageArray(1000, field_names[0], ext1_);
-          }
-          if (ext2_.Count > 0) {
-            output.WriteMessageArray(1001, field_names[1], ext2_);
-          }
-          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;
-          foreach (global::Google.ProtocolBuffers.TestProtos.TestAllTypes element in Field1List) {
-            size += pb::CodedOutputStream.ComputeMessageSize(1, element);
-          }
-          foreach (global::Google.ProtocolBuffers.TestProtos.TestAllTypes element in Field2List) {
-            size += pb::CodedOutputStream.ComputeMessageSize(2, element);
-          }
-          foreach (global::Google.ProtocolBuffers.TestProtos.TestAllTypes element in Field3List) {
-            size += pb::CodedOutputStream.ComputeMessageSize(3, element);
-          }
-          foreach (global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Types.RepeatedFieldsGenerator.Types.Group1 element in Group1List) {
-            size += pb::CodedOutputStream.ComputeGroupSize(10, element);
-          }
-          foreach (global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Types.RepeatedFieldsGenerator.Types.Group2 element in Group2List) {
-            size += pb::CodedOutputStream.ComputeGroupSize(20, element);
-          }
-          foreach (global::Google.ProtocolBuffers.TestProtos.TestAllTypes element in Ext1List) {
-            size += pb::CodedOutputStream.ComputeMessageSize(1000, element);
-          }
-          foreach (global::Google.ProtocolBuffers.TestProtos.TestAllTypes element in Ext2List) {
-            size += pb::CodedOutputStream.ComputeMessageSize(1001, element);
-          }
-          size += UnknownFields.SerializedSize;
-          memoizedSerializedSize = size;
-          return size;
-        }
-        public static RepeatedFieldsGenerator ParseFrom(pb::ByteString data) {
-          return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-        }
-        public static RepeatedFieldsGenerator ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-        }
-        public static RepeatedFieldsGenerator ParseFrom(byte[] data) {
-          return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-        }
-        public static RepeatedFieldsGenerator ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-        }
-        public static RepeatedFieldsGenerator ParseFrom(global::System.IO.Stream input) {
-          return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-        }
-        public static RepeatedFieldsGenerator ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-        }
-        public static RepeatedFieldsGenerator ParseDelimitedFrom(global::System.IO.Stream input) {
-          return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-        }
-        public static RepeatedFieldsGenerator ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-          return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-        }
-        public static RepeatedFieldsGenerator ParseFrom(pb::ICodedInputStream input) {
-          return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-        }
-        public static RepeatedFieldsGenerator ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-        }
-        private RepeatedFieldsGenerator MakeReadOnly() {
-          field1_.MakeReadOnly();
-          field2_.MakeReadOnly();
-          field3_.MakeReadOnly();
-          group1_.MakeReadOnly();
-          group2_.MakeReadOnly();
-          ext1_.MakeReadOnly();
-          ext2_.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(RepeatedFieldsGenerator prototype) {
-          return new Builder(prototype);
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-        public sealed partial class Builder : pb::GeneratedBuilder<RepeatedFieldsGenerator, Builder> {
-          protected override Builder ThisBuilder {
-            get { return this; }
-          }
-          public Builder() {
-            result = DefaultInstance;
-            resultIsReadOnly = true;
-          }
-          internal Builder(RepeatedFieldsGenerator cloneFrom) {
-            result = cloneFrom;
-            resultIsReadOnly = true;
-          }
-
-          private bool resultIsReadOnly;
-          private RepeatedFieldsGenerator result;
-
-          private RepeatedFieldsGenerator PrepareBuilder() {
-            if (resultIsReadOnly) {
-              RepeatedFieldsGenerator original = result;
-              result = new RepeatedFieldsGenerator();
-              resultIsReadOnly = false;
-              MergeFrom(original);
-            }
-            return result;
-          }
-
-          public override bool IsInitialized {
-            get { return result.IsInitialized; }
-          }
-
-          protected override RepeatedFieldsGenerator 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.TestParsingMerge.Types.RepeatedFieldsGenerator.Descriptor; }
-          }
-
-          public override RepeatedFieldsGenerator DefaultInstanceForType {
-            get { return global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Types.RepeatedFieldsGenerator.DefaultInstance; }
-          }
-
-          public override RepeatedFieldsGenerator BuildPartial() {
-            if (resultIsReadOnly) {
-              return result;
-            }
-            resultIsReadOnly = true;
-            return result.MakeReadOnly();
-          }
-
-          public override Builder MergeFrom(pb::IMessage other) {
-            if (other is RepeatedFieldsGenerator) {
-              return MergeFrom((RepeatedFieldsGenerator) other);
-            } else {
-              base.MergeFrom(other);
-              return this;
-            }
-          }
-
-          public override Builder MergeFrom(RepeatedFieldsGenerator other) {
-            if (other == global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Types.RepeatedFieldsGenerator.DefaultInstance) return this;
-            PrepareBuilder();
-            if (other.field1_.Count != 0) {
-              result.field1_.Add(other.field1_);
-            }
-            if (other.field2_.Count != 0) {
-              result.field2_.Add(other.field2_);
-            }
-            if (other.field3_.Count != 0) {
-              result.field3_.Add(other.field3_);
-            }
-            if (other.group1_.Count != 0) {
-              result.group1_.Add(other.group1_);
-            }
-            if (other.group2_.Count != 0) {
-              result.group2_.Add(other.group2_);
-            }
-            if (other.ext1_.Count != 0) {
-              result.ext1_.Add(other.ext1_);
-            }
-            if (other.ext2_.Count != 0) {
-              result.ext2_.Add(other.ext2_);
-            }
-            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(_repeatedFieldsGeneratorFieldNames, field_name, global::System.StringComparer.Ordinal);
-                if(field_ordinal >= 0)
-                  tag = _repeatedFieldsGeneratorFieldTags[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: {
-                  input.ReadMessageArray(tag, field_name, result.field1_, global::Google.ProtocolBuffers.TestProtos.TestAllTypes.DefaultInstance, extensionRegistry);
-                  break;
-                }
-                case 18: {
-                  input.ReadMessageArray(tag, field_name, result.field2_, global::Google.ProtocolBuffers.TestProtos.TestAllTypes.DefaultInstance, extensionRegistry);
-                  break;
-                }
-                case 26: {
-                  input.ReadMessageArray(tag, field_name, result.field3_, global::Google.ProtocolBuffers.TestProtos.TestAllTypes.DefaultInstance, extensionRegistry);
-                  break;
-                }
-                case 83: {
-                  input.ReadGroupArray(tag, field_name, result.group1_, global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Types.RepeatedFieldsGenerator.Types.Group1.DefaultInstance, extensionRegistry);
-                  break;
-                }
-                case 163: {
-                  input.ReadGroupArray(tag, field_name, result.group2_, global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Types.RepeatedFieldsGenerator.Types.Group2.DefaultInstance, extensionRegistry);
-                  break;
-                }
-                case 8002: {
-                  input.ReadMessageArray(tag, field_name, result.ext1_, global::Google.ProtocolBuffers.TestProtos.TestAllTypes.DefaultInstance, extensionRegistry);
-                  break;
-                }
-                case 8010: {
-                  input.ReadMessageArray(tag, field_name, result.ext2_, global::Google.ProtocolBuffers.TestProtos.TestAllTypes.DefaultInstance, extensionRegistry);
-                  break;
-                }
-              }
-            }
-
-            if (unknownFields != null) {
-              this.UnknownFields = unknownFields.Build();
-            }
-            return this;
-          }
-
-
-          public pbc::IPopsicleList<global::Google.ProtocolBuffers.TestProtos.TestAllTypes> Field1List {
-            get { return PrepareBuilder().field1_; }
-          }
-          public int Field1Count {
-            get { return result.Field1Count; }
-          }
-          public global::Google.ProtocolBuffers.TestProtos.TestAllTypes GetField1(int index) {
-            return result.GetField1(index);
-          }
-          public Builder SetField1(int index, global::Google.ProtocolBuffers.TestProtos.TestAllTypes value) {
-            pb::ThrowHelper.ThrowIfNull(value, "value");
-            PrepareBuilder();
-            result.field1_[index] = value;
-            return this;
-          }
-          public Builder SetField1(int index, global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Builder builderForValue) {
-            pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-            PrepareBuilder();
-            result.field1_[index] = builderForValue.Build();
-            return this;
-          }
-          public Builder AddField1(global::Google.ProtocolBuffers.TestProtos.TestAllTypes value) {
-            pb::ThrowHelper.ThrowIfNull(value, "value");
-            PrepareBuilder();
-            result.field1_.Add(value);
-            return this;
-          }
-          public Builder AddField1(global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Builder builderForValue) {
-            pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-            PrepareBuilder();
-            result.field1_.Add(builderForValue.Build());
-            return this;
-          }
-          public Builder AddRangeField1(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.TestAllTypes> values) {
-            PrepareBuilder();
-            result.field1_.Add(values);
-            return this;
-          }
-          public Builder ClearField1() {
-            PrepareBuilder();
-            result.field1_.Clear();
-            return this;
-          }
-
-          public pbc::IPopsicleList<global::Google.ProtocolBuffers.TestProtos.TestAllTypes> Field2List {
-            get { return PrepareBuilder().field2_; }
-          }
-          public int Field2Count {
-            get { return result.Field2Count; }
-          }
-          public global::Google.ProtocolBuffers.TestProtos.TestAllTypes GetField2(int index) {
-            return result.GetField2(index);
-          }
-          public Builder SetField2(int index, global::Google.ProtocolBuffers.TestProtos.TestAllTypes value) {
-            pb::ThrowHelper.ThrowIfNull(value, "value");
-            PrepareBuilder();
-            result.field2_[index] = value;
-            return this;
-          }
-          public Builder SetField2(int index, global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Builder builderForValue) {
-            pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-            PrepareBuilder();
-            result.field2_[index] = builderForValue.Build();
-            return this;
-          }
-          public Builder AddField2(global::Google.ProtocolBuffers.TestProtos.TestAllTypes value) {
-            pb::ThrowHelper.ThrowIfNull(value, "value");
-            PrepareBuilder();
-            result.field2_.Add(value);
-            return this;
-          }
-          public Builder AddField2(global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Builder builderForValue) {
-            pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-            PrepareBuilder();
-            result.field2_.Add(builderForValue.Build());
-            return this;
-          }
-          public Builder AddRangeField2(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.TestAllTypes> values) {
-            PrepareBuilder();
-            result.field2_.Add(values);
-            return this;
-          }
-          public Builder ClearField2() {
-            PrepareBuilder();
-            result.field2_.Clear();
-            return this;
-          }
-
-          public pbc::IPopsicleList<global::Google.ProtocolBuffers.TestProtos.TestAllTypes> Field3List {
-            get { return PrepareBuilder().field3_; }
-          }
-          public int Field3Count {
-            get { return result.Field3Count; }
-          }
-          public global::Google.ProtocolBuffers.TestProtos.TestAllTypes GetField3(int index) {
-            return result.GetField3(index);
-          }
-          public Builder SetField3(int index, global::Google.ProtocolBuffers.TestProtos.TestAllTypes value) {
-            pb::ThrowHelper.ThrowIfNull(value, "value");
-            PrepareBuilder();
-            result.field3_[index] = value;
-            return this;
-          }
-          public Builder SetField3(int index, global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Builder builderForValue) {
-            pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-            PrepareBuilder();
-            result.field3_[index] = builderForValue.Build();
-            return this;
-          }
-          public Builder AddField3(global::Google.ProtocolBuffers.TestProtos.TestAllTypes value) {
-            pb::ThrowHelper.ThrowIfNull(value, "value");
-            PrepareBuilder();
-            result.field3_.Add(value);
-            return this;
-          }
-          public Builder AddField3(global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Builder builderForValue) {
-            pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-            PrepareBuilder();
-            result.field3_.Add(builderForValue.Build());
-            return this;
-          }
-          public Builder AddRangeField3(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.TestAllTypes> values) {
-            PrepareBuilder();
-            result.field3_.Add(values);
-            return this;
-          }
-          public Builder ClearField3() {
-            PrepareBuilder();
-            result.field3_.Clear();
-            return this;
-          }
-
-          public pbc::IPopsicleList<global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Types.RepeatedFieldsGenerator.Types.Group1> Group1List {
-            get { return PrepareBuilder().group1_; }
-          }
-          public int Group1Count {
-            get { return result.Group1Count; }
-          }
-          public global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Types.RepeatedFieldsGenerator.Types.Group1 GetGroup1(int index) {
-            return result.GetGroup1(index);
-          }
-          public Builder SetGroup1(int index, global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Types.RepeatedFieldsGenerator.Types.Group1 value) {
-            pb::ThrowHelper.ThrowIfNull(value, "value");
-            PrepareBuilder();
-            result.group1_[index] = value;
-            return this;
-          }
-          public Builder SetGroup1(int index, global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Types.RepeatedFieldsGenerator.Types.Group1.Builder builderForValue) {
-            pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-            PrepareBuilder();
-            result.group1_[index] = builderForValue.Build();
-            return this;
-          }
-          public Builder AddGroup1(global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Types.RepeatedFieldsGenerator.Types.Group1 value) {
-            pb::ThrowHelper.ThrowIfNull(value, "value");
-            PrepareBuilder();
-            result.group1_.Add(value);
-            return this;
-          }
-          public Builder AddGroup1(global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Types.RepeatedFieldsGenerator.Types.Group1.Builder builderForValue) {
-            pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-            PrepareBuilder();
-            result.group1_.Add(builderForValue.Build());
-            return this;
-          }
-          public Builder AddRangeGroup1(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Types.RepeatedFieldsGenerator.Types.Group1> values) {
-            PrepareBuilder();
-            result.group1_.Add(values);
-            return this;
-          }
-          public Builder ClearGroup1() {
-            PrepareBuilder();
-            result.group1_.Clear();
-            return this;
-          }
-
-          public pbc::IPopsicleList<global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Types.RepeatedFieldsGenerator.Types.Group2> Group2List {
-            get { return PrepareBuilder().group2_; }
-          }
-          public int Group2Count {
-            get { return result.Group2Count; }
-          }
-          public global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Types.RepeatedFieldsGenerator.Types.Group2 GetGroup2(int index) {
-            return result.GetGroup2(index);
-          }
-          public Builder SetGroup2(int index, global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Types.RepeatedFieldsGenerator.Types.Group2 value) {
-            pb::ThrowHelper.ThrowIfNull(value, "value");
-            PrepareBuilder();
-            result.group2_[index] = value;
-            return this;
-          }
-          public Builder SetGroup2(int index, global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Types.RepeatedFieldsGenerator.Types.Group2.Builder builderForValue) {
-            pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-            PrepareBuilder();
-            result.group2_[index] = builderForValue.Build();
-            return this;
-          }
-          public Builder AddGroup2(global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Types.RepeatedFieldsGenerator.Types.Group2 value) {
-            pb::ThrowHelper.ThrowIfNull(value, "value");
-            PrepareBuilder();
-            result.group2_.Add(value);
-            return this;
-          }
-          public Builder AddGroup2(global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Types.RepeatedFieldsGenerator.Types.Group2.Builder builderForValue) {
-            pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-            PrepareBuilder();
-            result.group2_.Add(builderForValue.Build());
-            return this;
-          }
-          public Builder AddRangeGroup2(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Types.RepeatedFieldsGenerator.Types.Group2> values) {
-            PrepareBuilder();
-            result.group2_.Add(values);
-            return this;
-          }
-          public Builder ClearGroup2() {
-            PrepareBuilder();
-            result.group2_.Clear();
-            return this;
-          }
-
-          public pbc::IPopsicleList<global::Google.ProtocolBuffers.TestProtos.TestAllTypes> Ext1List {
-            get { return PrepareBuilder().ext1_; }
-          }
-          public int Ext1Count {
-            get { return result.Ext1Count; }
-          }
-          public global::Google.ProtocolBuffers.TestProtos.TestAllTypes GetExt1(int index) {
-            return result.GetExt1(index);
-          }
-          public Builder SetExt1(int index, global::Google.ProtocolBuffers.TestProtos.TestAllTypes value) {
-            pb::ThrowHelper.ThrowIfNull(value, "value");
-            PrepareBuilder();
-            result.ext1_[index] = value;
-            return this;
-          }
-          public Builder SetExt1(int index, global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Builder builderForValue) {
-            pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-            PrepareBuilder();
-            result.ext1_[index] = builderForValue.Build();
-            return this;
-          }
-          public Builder AddExt1(global::Google.ProtocolBuffers.TestProtos.TestAllTypes value) {
-            pb::ThrowHelper.ThrowIfNull(value, "value");
-            PrepareBuilder();
-            result.ext1_.Add(value);
-            return this;
-          }
-          public Builder AddExt1(global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Builder builderForValue) {
-            pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-            PrepareBuilder();
-            result.ext1_.Add(builderForValue.Build());
-            return this;
-          }
-          public Builder AddRangeExt1(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.TestAllTypes> values) {
-            PrepareBuilder();
-            result.ext1_.Add(values);
-            return this;
-          }
-          public Builder ClearExt1() {
-            PrepareBuilder();
-            result.ext1_.Clear();
-            return this;
-          }
-
-          public pbc::IPopsicleList<global::Google.ProtocolBuffers.TestProtos.TestAllTypes> Ext2List {
-            get { return PrepareBuilder().ext2_; }
-          }
-          public int Ext2Count {
-            get { return result.Ext2Count; }
-          }
-          public global::Google.ProtocolBuffers.TestProtos.TestAllTypes GetExt2(int index) {
-            return result.GetExt2(index);
-          }
-          public Builder SetExt2(int index, global::Google.ProtocolBuffers.TestProtos.TestAllTypes value) {
-            pb::ThrowHelper.ThrowIfNull(value, "value");
-            PrepareBuilder();
-            result.ext2_[index] = value;
-            return this;
-          }
-          public Builder SetExt2(int index, global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Builder builderForValue) {
-            pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-            PrepareBuilder();
-            result.ext2_[index] = builderForValue.Build();
-            return this;
-          }
-          public Builder AddExt2(global::Google.ProtocolBuffers.TestProtos.TestAllTypes value) {
-            pb::ThrowHelper.ThrowIfNull(value, "value");
-            PrepareBuilder();
-            result.ext2_.Add(value);
-            return this;
-          }
-          public Builder AddExt2(global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Builder builderForValue) {
-            pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-            PrepareBuilder();
-            result.ext2_.Add(builderForValue.Build());
-            return this;
-          }
-          public Builder AddRangeExt2(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.TestAllTypes> values) {
-            PrepareBuilder();
-            result.ext2_.Add(values);
-            return this;
-          }
-          public Builder ClearExt2() {
-            PrepareBuilder();
-            result.ext2_.Clear();
-            return this;
-          }
-        }
-        static RepeatedFieldsGenerator() {
-          object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor, null);
-        }
-      }
-
-      [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-      public sealed partial class OptionalGroup : pb::GeneratedMessage<OptionalGroup, OptionalGroup.Builder> {
-        private OptionalGroup() { }
-        private static readonly OptionalGroup defaultInstance = new OptionalGroup().MakeReadOnly();
-        private static readonly string[] _optionalGroupFieldNames = new string[] { "optional_group_all_types" };
-        private static readonly uint[] _optionalGroupFieldTags = new uint[] { 90 };
-        public static OptionalGroup DefaultInstance {
-          get { return defaultInstance; }
-        }
-
-        public override OptionalGroup DefaultInstanceForType {
-          get { return DefaultInstance; }
-        }
-
-        protected override OptionalGroup ThisMessage {
-          get { return this; }
-        }
-
-        public static pbd::MessageDescriptor Descriptor {
-          get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestParsingMerge_OptionalGroup__Descriptor; }
-        }
-
-        protected override pb::FieldAccess.FieldAccessorTable<OptionalGroup, OptionalGroup.Builder> InternalFieldAccessors {
-          get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestParsingMerge_OptionalGroup__FieldAccessorTable; }
-        }
-
-        public const int OptionalGroupAllTypesFieldNumber = 11;
-        private bool hasOptionalGroupAllTypes;
-        private global::Google.ProtocolBuffers.TestProtos.TestAllTypes optionalGroupAllTypes_;
-        public bool HasOptionalGroupAllTypes {
-          get { return hasOptionalGroupAllTypes; }
-        }
-        public global::Google.ProtocolBuffers.TestProtos.TestAllTypes OptionalGroupAllTypes {
-          get { return optionalGroupAllTypes_ ?? global::Google.ProtocolBuffers.TestProtos.TestAllTypes.DefaultInstance; }
-        }
-
-        public override bool IsInitialized {
-          get {
-            return true;
-          }
-        }
-
-        public override void WriteTo(pb::ICodedOutputStream output) {
-          CalcSerializedSize();
-          string[] field_names = _optionalGroupFieldNames;
-          if (hasOptionalGroupAllTypes) {
-            output.WriteMessage(11, field_names[0], OptionalGroupAllTypes);
-          }
-          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 (hasOptionalGroupAllTypes) {
-            size += pb::CodedOutputStream.ComputeMessageSize(11, OptionalGroupAllTypes);
-          }
-          size += UnknownFields.SerializedSize;
-          memoizedSerializedSize = size;
-          return size;
-        }
-        public static OptionalGroup ParseFrom(pb::ByteString data) {
-          return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-        }
-        public static OptionalGroup ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-        }
-        public static OptionalGroup ParseFrom(byte[] data) {
-          return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-        }
-        public static OptionalGroup ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-        }
-        public static OptionalGroup ParseFrom(global::System.IO.Stream input) {
-          return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-        }
-        public static OptionalGroup ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-        }
-        public static OptionalGroup ParseDelimitedFrom(global::System.IO.Stream input) {
-          return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-        }
-        public static OptionalGroup ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-          return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-        }
-        public static OptionalGroup ParseFrom(pb::ICodedInputStream input) {
-          return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-        }
-        public static OptionalGroup ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-        }
-        private OptionalGroup 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(OptionalGroup prototype) {
-          return new Builder(prototype);
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-        public sealed partial class Builder : pb::GeneratedBuilder<OptionalGroup, Builder> {
-          protected override Builder ThisBuilder {
-            get { return this; }
-          }
-          public Builder() {
-            result = DefaultInstance;
-            resultIsReadOnly = true;
-          }
-          internal Builder(OptionalGroup cloneFrom) {
-            result = cloneFrom;
-            resultIsReadOnly = true;
-          }
-
-          private bool resultIsReadOnly;
-          private OptionalGroup result;
-
-          private OptionalGroup PrepareBuilder() {
-            if (resultIsReadOnly) {
-              OptionalGroup original = result;
-              result = new OptionalGroup();
-              resultIsReadOnly = false;
-              MergeFrom(original);
-            }
-            return result;
-          }
-
-          public override bool IsInitialized {
-            get { return result.IsInitialized; }
-          }
-
-          protected override OptionalGroup 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.TestParsingMerge.Types.OptionalGroup.Descriptor; }
-          }
-
-          public override OptionalGroup DefaultInstanceForType {
-            get { return global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Types.OptionalGroup.DefaultInstance; }
-          }
-
-          public override OptionalGroup BuildPartial() {
-            if (resultIsReadOnly) {
-              return result;
-            }
-            resultIsReadOnly = true;
-            return result.MakeReadOnly();
-          }
-
-          public override Builder MergeFrom(pb::IMessage other) {
-            if (other is OptionalGroup) {
-              return MergeFrom((OptionalGroup) other);
-            } else {
-              base.MergeFrom(other);
-              return this;
-            }
-          }
-
-          public override Builder MergeFrom(OptionalGroup other) {
-            if (other == global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Types.OptionalGroup.DefaultInstance) return this;
-            PrepareBuilder();
-            if (other.HasOptionalGroupAllTypes) {
-              MergeOptionalGroupAllTypes(other.OptionalGroupAllTypes);
-            }
-            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(_optionalGroupFieldNames, field_name, global::System.StringComparer.Ordinal);
-                if(field_ordinal >= 0)
-                  tag = _optionalGroupFieldTags[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 90: {
-                  global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Builder subBuilder = global::Google.ProtocolBuffers.TestProtos.TestAllTypes.CreateBuilder();
-                  if (result.hasOptionalGroupAllTypes) {
-                    subBuilder.MergeFrom(OptionalGroupAllTypes);
-                  }
-                  input.ReadMessage(subBuilder, extensionRegistry);
-                  OptionalGroupAllTypes = subBuilder.BuildPartial();
-                  break;
-                }
-              }
-            }
-
-            if (unknownFields != null) {
-              this.UnknownFields = unknownFields.Build();
-            }
-            return this;
-          }
-
-
-          public bool HasOptionalGroupAllTypes {
-           get { return result.hasOptionalGroupAllTypes; }
-          }
-          public global::Google.ProtocolBuffers.TestProtos.TestAllTypes OptionalGroupAllTypes {
-            get { return result.OptionalGroupAllTypes; }
-            set { SetOptionalGroupAllTypes(value); }
-          }
-          public Builder SetOptionalGroupAllTypes(global::Google.ProtocolBuffers.TestProtos.TestAllTypes value) {
-            pb::ThrowHelper.ThrowIfNull(value, "value");
-            PrepareBuilder();
-            result.hasOptionalGroupAllTypes = true;
-            result.optionalGroupAllTypes_ = value;
-            return this;
-          }
-          public Builder SetOptionalGroupAllTypes(global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Builder builderForValue) {
-            pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-            PrepareBuilder();
-            result.hasOptionalGroupAllTypes = true;
-            result.optionalGroupAllTypes_ = builderForValue.Build();
-            return this;
-          }
-          public Builder MergeOptionalGroupAllTypes(global::Google.ProtocolBuffers.TestProtos.TestAllTypes value) {
-            pb::ThrowHelper.ThrowIfNull(value, "value");
-            PrepareBuilder();
-            if (result.hasOptionalGroupAllTypes &&
-                result.optionalGroupAllTypes_ != global::Google.ProtocolBuffers.TestProtos.TestAllTypes.DefaultInstance) {
-                result.optionalGroupAllTypes_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypes.CreateBuilder(result.optionalGroupAllTypes_).MergeFrom(value).BuildPartial();
-            } else {
-              result.optionalGroupAllTypes_ = value;
-            }
-            result.hasOptionalGroupAllTypes = true;
-            return this;
-          }
-          public Builder ClearOptionalGroupAllTypes() {
-            PrepareBuilder();
-            result.hasOptionalGroupAllTypes = false;
-            result.optionalGroupAllTypes_ = null;
-            return this;
-          }
-        }
-        static OptionalGroup() {
-          object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor, null);
-        }
-      }
-
-      [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-      public sealed partial class RepeatedGroup : pb::GeneratedMessage<RepeatedGroup, RepeatedGroup.Builder> {
-        private RepeatedGroup() { }
-        private static readonly RepeatedGroup defaultInstance = new RepeatedGroup().MakeReadOnly();
-        private static readonly string[] _repeatedGroupFieldNames = new string[] { "repeated_group_all_types" };
-        private static readonly uint[] _repeatedGroupFieldTags = new uint[] { 170 };
-        public static RepeatedGroup DefaultInstance {
-          get { return defaultInstance; }
-        }
-
-        public override RepeatedGroup DefaultInstanceForType {
-          get { return DefaultInstance; }
-        }
-
-        protected override RepeatedGroup ThisMessage {
-          get { return this; }
-        }
-
-        public static pbd::MessageDescriptor Descriptor {
-          get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestParsingMerge_RepeatedGroup__Descriptor; }
-        }
-
-        protected override pb::FieldAccess.FieldAccessorTable<RepeatedGroup, RepeatedGroup.Builder> InternalFieldAccessors {
-          get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestParsingMerge_RepeatedGroup__FieldAccessorTable; }
-        }
-
-        public const int RepeatedGroupAllTypesFieldNumber = 21;
-        private bool hasRepeatedGroupAllTypes;
-        private global::Google.ProtocolBuffers.TestProtos.TestAllTypes repeatedGroupAllTypes_;
-        public bool HasRepeatedGroupAllTypes {
-          get { return hasRepeatedGroupAllTypes; }
-        }
-        public global::Google.ProtocolBuffers.TestProtos.TestAllTypes RepeatedGroupAllTypes {
-          get { return repeatedGroupAllTypes_ ?? global::Google.ProtocolBuffers.TestProtos.TestAllTypes.DefaultInstance; }
-        }
-
-        public override bool IsInitialized {
-          get {
-            return true;
-          }
-        }
-
-        public override void WriteTo(pb::ICodedOutputStream output) {
-          CalcSerializedSize();
-          string[] field_names = _repeatedGroupFieldNames;
-          if (hasRepeatedGroupAllTypes) {
-            output.WriteMessage(21, field_names[0], RepeatedGroupAllTypes);
-          }
-          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 (hasRepeatedGroupAllTypes) {
-            size += pb::CodedOutputStream.ComputeMessageSize(21, RepeatedGroupAllTypes);
-          }
-          size += UnknownFields.SerializedSize;
-          memoizedSerializedSize = size;
-          return size;
-        }
-        public static RepeatedGroup ParseFrom(pb::ByteString data) {
-          return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-        }
-        public static RepeatedGroup ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-        }
-        public static RepeatedGroup ParseFrom(byte[] data) {
-          return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-        }
-        public static RepeatedGroup ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-        }
-        public static RepeatedGroup ParseFrom(global::System.IO.Stream input) {
-          return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-        }
-        public static RepeatedGroup ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-        }
-        public static RepeatedGroup ParseDelimitedFrom(global::System.IO.Stream input) {
-          return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-        }
-        public static RepeatedGroup ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-          return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-        }
-        public static RepeatedGroup ParseFrom(pb::ICodedInputStream input) {
-          return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-        }
-        public static RepeatedGroup ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-        }
-        private RepeatedGroup 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(RepeatedGroup prototype) {
-          return new Builder(prototype);
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-        public sealed partial class Builder : pb::GeneratedBuilder<RepeatedGroup, Builder> {
-          protected override Builder ThisBuilder {
-            get { return this; }
-          }
-          public Builder() {
-            result = DefaultInstance;
-            resultIsReadOnly = true;
-          }
-          internal Builder(RepeatedGroup cloneFrom) {
-            result = cloneFrom;
-            resultIsReadOnly = true;
-          }
-
-          private bool resultIsReadOnly;
-          private RepeatedGroup result;
-
-          private RepeatedGroup PrepareBuilder() {
-            if (resultIsReadOnly) {
-              RepeatedGroup original = result;
-              result = new RepeatedGroup();
-              resultIsReadOnly = false;
-              MergeFrom(original);
-            }
-            return result;
-          }
-
-          public override bool IsInitialized {
-            get { return result.IsInitialized; }
-          }
-
-          protected override RepeatedGroup 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.TestParsingMerge.Types.RepeatedGroup.Descriptor; }
-          }
-
-          public override RepeatedGroup DefaultInstanceForType {
-            get { return global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Types.RepeatedGroup.DefaultInstance; }
-          }
-
-          public override RepeatedGroup BuildPartial() {
-            if (resultIsReadOnly) {
-              return result;
-            }
-            resultIsReadOnly = true;
-            return result.MakeReadOnly();
-          }
-
-          public override Builder MergeFrom(pb::IMessage other) {
-            if (other is RepeatedGroup) {
-              return MergeFrom((RepeatedGroup) other);
-            } else {
-              base.MergeFrom(other);
-              return this;
-            }
-          }
-
-          public override Builder MergeFrom(RepeatedGroup other) {
-            if (other == global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Types.RepeatedGroup.DefaultInstance) return this;
-            PrepareBuilder();
-            if (other.HasRepeatedGroupAllTypes) {
-              MergeRepeatedGroupAllTypes(other.RepeatedGroupAllTypes);
-            }
-            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(_repeatedGroupFieldNames, field_name, global::System.StringComparer.Ordinal);
-                if(field_ordinal >= 0)
-                  tag = _repeatedGroupFieldTags[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 170: {
-                  global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Builder subBuilder = global::Google.ProtocolBuffers.TestProtos.TestAllTypes.CreateBuilder();
-                  if (result.hasRepeatedGroupAllTypes) {
-                    subBuilder.MergeFrom(RepeatedGroupAllTypes);
-                  }
-                  input.ReadMessage(subBuilder, extensionRegistry);
-                  RepeatedGroupAllTypes = subBuilder.BuildPartial();
-                  break;
-                }
-              }
-            }
-
-            if (unknownFields != null) {
-              this.UnknownFields = unknownFields.Build();
-            }
-            return this;
-          }
-
-
-          public bool HasRepeatedGroupAllTypes {
-           get { return result.hasRepeatedGroupAllTypes; }
-          }
-          public global::Google.ProtocolBuffers.TestProtos.TestAllTypes RepeatedGroupAllTypes {
-            get { return result.RepeatedGroupAllTypes; }
-            set { SetRepeatedGroupAllTypes(value); }
-          }
-          public Builder SetRepeatedGroupAllTypes(global::Google.ProtocolBuffers.TestProtos.TestAllTypes value) {
-            pb::ThrowHelper.ThrowIfNull(value, "value");
-            PrepareBuilder();
-            result.hasRepeatedGroupAllTypes = true;
-            result.repeatedGroupAllTypes_ = value;
-            return this;
-          }
-          public Builder SetRepeatedGroupAllTypes(global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Builder builderForValue) {
-            pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-            PrepareBuilder();
-            result.hasRepeatedGroupAllTypes = true;
-            result.repeatedGroupAllTypes_ = builderForValue.Build();
-            return this;
-          }
-          public Builder MergeRepeatedGroupAllTypes(global::Google.ProtocolBuffers.TestProtos.TestAllTypes value) {
-            pb::ThrowHelper.ThrowIfNull(value, "value");
-            PrepareBuilder();
-            if (result.hasRepeatedGroupAllTypes &&
-                result.repeatedGroupAllTypes_ != global::Google.ProtocolBuffers.TestProtos.TestAllTypes.DefaultInstance) {
-                result.repeatedGroupAllTypes_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypes.CreateBuilder(result.repeatedGroupAllTypes_).MergeFrom(value).BuildPartial();
-            } else {
-              result.repeatedGroupAllTypes_ = value;
-            }
-            result.hasRepeatedGroupAllTypes = true;
-            return this;
-          }
-          public Builder ClearRepeatedGroupAllTypes() {
-            PrepareBuilder();
-            result.hasRepeatedGroupAllTypes = false;
-            result.repeatedGroupAllTypes_ = null;
-            return this;
-          }
-        }
-        static RepeatedGroup() {
-          object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor, null);
-        }
-      }
-
-    }
-    #endregion
-
-    public const int RequiredAllTypesFieldNumber = 1;
-    private bool hasRequiredAllTypes;
-    private global::Google.ProtocolBuffers.TestProtos.TestAllTypes requiredAllTypes_;
-    public bool HasRequiredAllTypes {
-      get { return hasRequiredAllTypes; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.TestAllTypes RequiredAllTypes {
-      get { return requiredAllTypes_ ?? global::Google.ProtocolBuffers.TestProtos.TestAllTypes.DefaultInstance; }
-    }
-
-    public const int OptionalAllTypesFieldNumber = 2;
-    private bool hasOptionalAllTypes;
-    private global::Google.ProtocolBuffers.TestProtos.TestAllTypes optionalAllTypes_;
-    public bool HasOptionalAllTypes {
-      get { return hasOptionalAllTypes; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.TestAllTypes OptionalAllTypes {
-      get { return optionalAllTypes_ ?? global::Google.ProtocolBuffers.TestProtos.TestAllTypes.DefaultInstance; }
-    }
-
-    public const int RepeatedAllTypesFieldNumber = 3;
-    private pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.TestAllTypes> repeatedAllTypes_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.TestAllTypes>();
-    public scg::IList<global::Google.ProtocolBuffers.TestProtos.TestAllTypes> RepeatedAllTypesList {
-      get { return repeatedAllTypes_; }
-    }
-    public int RepeatedAllTypesCount {
-      get { return repeatedAllTypes_.Count; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.TestAllTypes GetRepeatedAllTypes(int index) {
-      return repeatedAllTypes_[index];
-    }
-
-    public const int OptionalGroupFieldNumber = 10;
-    private bool hasOptionalGroup;
-    private global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Types.OptionalGroup optionalGroup_;
-    public bool HasOptionalGroup {
-      get { return hasOptionalGroup; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Types.OptionalGroup OptionalGroup {
-      get { return optionalGroup_ ?? global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Types.OptionalGroup.DefaultInstance; }
-    }
-
-    public const int RepeatedGroupFieldNumber = 20;
-    private pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Types.RepeatedGroup> repeatedGroup_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Types.RepeatedGroup>();
-    public scg::IList<global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Types.RepeatedGroup> RepeatedGroupList {
-      get { return repeatedGroup_; }
-    }
-    public int RepeatedGroupCount {
-      get { return repeatedGroup_.Count; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Types.RepeatedGroup GetRepeatedGroup(int index) {
-      return repeatedGroup_[index];
-    }
-
-    public override bool IsInitialized {
-      get {
-        if (!hasRequiredAllTypes) return false;
-        if (!ExtensionsAreInitialized) return false;
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _testParsingMergeFieldNames;
-      pb::ExtendableMessage<TestParsingMerge, TestParsingMerge.Builder>.ExtensionWriter extensionWriter = CreateExtensionWriter(this);
-      if (hasRequiredAllTypes) {
-        output.WriteMessage(1, field_names[4], RequiredAllTypes);
-      }
-      if (hasOptionalAllTypes) {
-        output.WriteMessage(2, field_names[0], OptionalAllTypes);
-      }
-      if (repeatedAllTypes_.Count > 0) {
-        output.WriteMessageArray(3, field_names[2], repeatedAllTypes_);
-      }
-      if (hasOptionalGroup) {
-        output.WriteGroup(10, field_names[1], OptionalGroup);
-      }
-      if (repeatedGroup_.Count > 0) {
-        output.WriteGroupArray(20, field_names[3], repeatedGroup_);
-      }
-      extensionWriter.WriteUntil(536870912, output);
-      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 (hasRequiredAllTypes) {
-        size += pb::CodedOutputStream.ComputeMessageSize(1, RequiredAllTypes);
-      }
-      if (hasOptionalAllTypes) {
-        size += pb::CodedOutputStream.ComputeMessageSize(2, OptionalAllTypes);
-      }
-      foreach (global::Google.ProtocolBuffers.TestProtos.TestAllTypes element in RepeatedAllTypesList) {
-        size += pb::CodedOutputStream.ComputeMessageSize(3, element);
-      }
-      if (hasOptionalGroup) {
-        size += pb::CodedOutputStream.ComputeGroupSize(10, OptionalGroup);
-      }
-      foreach (global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Types.RepeatedGroup element in RepeatedGroupList) {
-        size += pb::CodedOutputStream.ComputeGroupSize(20, element);
-      }
-      size += ExtensionsSerializedSize;
-      size += UnknownFields.SerializedSize;
-      memoizedSerializedSize = size;
-      return size;
-    }
-    public static TestParsingMerge ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestParsingMerge ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestParsingMerge ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestParsingMerge ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestParsingMerge ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestParsingMerge ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static TestParsingMerge ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static TestParsingMerge ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static TestParsingMerge ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestParsingMerge ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private TestParsingMerge MakeReadOnly() {
-      repeatedAllTypes_.MakeReadOnly();
-      repeatedGroup_.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(TestParsingMerge prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::ExtendableBuilder<TestParsingMerge, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(TestParsingMerge cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private TestParsingMerge result;
-
-      private TestParsingMerge PrepareBuilder() {
-        if (resultIsReadOnly) {
-          TestParsingMerge original = result;
-          result = new TestParsingMerge();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override TestParsingMerge 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.TestParsingMerge.Descriptor; }
-      }
-
-      public override TestParsingMerge DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.DefaultInstance; }
-      }
-
-      public override TestParsingMerge BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is TestParsingMerge) {
-          return MergeFrom((TestParsingMerge) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(TestParsingMerge other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.DefaultInstance) return this;
-        PrepareBuilder();
-        if (other.HasRequiredAllTypes) {
-          MergeRequiredAllTypes(other.RequiredAllTypes);
-        }
-        if (other.HasOptionalAllTypes) {
-          MergeOptionalAllTypes(other.OptionalAllTypes);
-        }
-        if (other.repeatedAllTypes_.Count != 0) {
-          result.repeatedAllTypes_.Add(other.repeatedAllTypes_);
-        }
-        if (other.HasOptionalGroup) {
-          MergeOptionalGroup(other.OptionalGroup);
-        }
-        if (other.repeatedGroup_.Count != 0) {
-          result.repeatedGroup_.Add(other.repeatedGroup_);
-        }
-          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(_testParsingMergeFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _testParsingMergeFieldTags[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.TestAllTypes.Builder subBuilder = global::Google.ProtocolBuffers.TestProtos.TestAllTypes.CreateBuilder();
-              if (result.hasRequiredAllTypes) {
-                subBuilder.MergeFrom(RequiredAllTypes);
-              }
-              input.ReadMessage(subBuilder, extensionRegistry);
-              RequiredAllTypes = subBuilder.BuildPartial();
-              break;
-            }
-            case 18: {
-              global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Builder subBuilder = global::Google.ProtocolBuffers.TestProtos.TestAllTypes.CreateBuilder();
-              if (result.hasOptionalAllTypes) {
-                subBuilder.MergeFrom(OptionalAllTypes);
-              }
-              input.ReadMessage(subBuilder, extensionRegistry);
-              OptionalAllTypes = subBuilder.BuildPartial();
-              break;
-            }
-            case 26: {
-              input.ReadMessageArray(tag, field_name, result.repeatedAllTypes_, global::Google.ProtocolBuffers.TestProtos.TestAllTypes.DefaultInstance, extensionRegistry);
-              break;
-            }
-            case 83: {
-              global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Types.OptionalGroup.Builder subBuilder = global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Types.OptionalGroup.CreateBuilder();
-              if (result.hasOptionalGroup) {
-                subBuilder.MergeFrom(OptionalGroup);
-              }
-              input.ReadGroup(10, subBuilder, extensionRegistry);
-              OptionalGroup = subBuilder.BuildPartial();
-              break;
-            }
-            case 163: {
-              input.ReadGroupArray(tag, field_name, result.repeatedGroup_, global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Types.RepeatedGroup.DefaultInstance, extensionRegistry);
-              break;
-            }
-          }
-        }
-
-        if (unknownFields != null) {
-          this.UnknownFields = unknownFields.Build();
-        }
-        return this;
-      }
-
-
-      public bool HasRequiredAllTypes {
-       get { return result.hasRequiredAllTypes; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.TestAllTypes RequiredAllTypes {
-        get { return result.RequiredAllTypes; }
-        set { SetRequiredAllTypes(value); }
-      }
-      public Builder SetRequiredAllTypes(global::Google.ProtocolBuffers.TestProtos.TestAllTypes value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasRequiredAllTypes = true;
-        result.requiredAllTypes_ = value;
-        return this;
-      }
-      public Builder SetRequiredAllTypes(global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.hasRequiredAllTypes = true;
-        result.requiredAllTypes_ = builderForValue.Build();
-        return this;
-      }
-      public Builder MergeRequiredAllTypes(global::Google.ProtocolBuffers.TestProtos.TestAllTypes value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        if (result.hasRequiredAllTypes &&
-            result.requiredAllTypes_ != global::Google.ProtocolBuffers.TestProtos.TestAllTypes.DefaultInstance) {
-            result.requiredAllTypes_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypes.CreateBuilder(result.requiredAllTypes_).MergeFrom(value).BuildPartial();
-        } else {
-          result.requiredAllTypes_ = value;
-        }
-        result.hasRequiredAllTypes = true;
-        return this;
-      }
-      public Builder ClearRequiredAllTypes() {
-        PrepareBuilder();
-        result.hasRequiredAllTypes = false;
-        result.requiredAllTypes_ = null;
-        return this;
-      }
-
-      public bool HasOptionalAllTypes {
-       get { return result.hasOptionalAllTypes; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.TestAllTypes OptionalAllTypes {
-        get { return result.OptionalAllTypes; }
-        set { SetOptionalAllTypes(value); }
-      }
-      public Builder SetOptionalAllTypes(global::Google.ProtocolBuffers.TestProtos.TestAllTypes value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasOptionalAllTypes = true;
-        result.optionalAllTypes_ = value;
-        return this;
-      }
-      public Builder SetOptionalAllTypes(global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.hasOptionalAllTypes = true;
-        result.optionalAllTypes_ = builderForValue.Build();
-        return this;
-      }
-      public Builder MergeOptionalAllTypes(global::Google.ProtocolBuffers.TestProtos.TestAllTypes value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        if (result.hasOptionalAllTypes &&
-            result.optionalAllTypes_ != global::Google.ProtocolBuffers.TestProtos.TestAllTypes.DefaultInstance) {
-            result.optionalAllTypes_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypes.CreateBuilder(result.optionalAllTypes_).MergeFrom(value).BuildPartial();
-        } else {
-          result.optionalAllTypes_ = value;
-        }
-        result.hasOptionalAllTypes = true;
-        return this;
-      }
-      public Builder ClearOptionalAllTypes() {
-        PrepareBuilder();
-        result.hasOptionalAllTypes = false;
-        result.optionalAllTypes_ = null;
-        return this;
-      }
-
-      public pbc::IPopsicleList<global::Google.ProtocolBuffers.TestProtos.TestAllTypes> RepeatedAllTypesList {
-        get { return PrepareBuilder().repeatedAllTypes_; }
-      }
-      public int RepeatedAllTypesCount {
-        get { return result.RepeatedAllTypesCount; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.TestAllTypes GetRepeatedAllTypes(int index) {
-        return result.GetRepeatedAllTypes(index);
-      }
-      public Builder SetRepeatedAllTypes(int index, global::Google.ProtocolBuffers.TestProtos.TestAllTypes value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.repeatedAllTypes_[index] = value;
-        return this;
-      }
-      public Builder SetRepeatedAllTypes(int index, global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.repeatedAllTypes_[index] = builderForValue.Build();
-        return this;
-      }
-      public Builder AddRepeatedAllTypes(global::Google.ProtocolBuffers.TestProtos.TestAllTypes value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.repeatedAllTypes_.Add(value);
-        return this;
-      }
-      public Builder AddRepeatedAllTypes(global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.repeatedAllTypes_.Add(builderForValue.Build());
-        return this;
-      }
-      public Builder AddRangeRepeatedAllTypes(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.TestAllTypes> values) {
-        PrepareBuilder();
-        result.repeatedAllTypes_.Add(values);
-        return this;
-      }
-      public Builder ClearRepeatedAllTypes() {
-        PrepareBuilder();
-        result.repeatedAllTypes_.Clear();
-        return this;
-      }
-
-      public bool HasOptionalGroup {
-       get { return result.hasOptionalGroup; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Types.OptionalGroup OptionalGroup {
-        get { return result.OptionalGroup; }
-        set { SetOptionalGroup(value); }
-      }
-      public Builder SetOptionalGroup(global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Types.OptionalGroup value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasOptionalGroup = true;
-        result.optionalGroup_ = value;
-        return this;
-      }
-      public Builder SetOptionalGroup(global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Types.OptionalGroup.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.hasOptionalGroup = true;
-        result.optionalGroup_ = builderForValue.Build();
-        return this;
-      }
-      public Builder MergeOptionalGroup(global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Types.OptionalGroup value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        if (result.hasOptionalGroup &&
-            result.optionalGroup_ != global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Types.OptionalGroup.DefaultInstance) {
-            result.optionalGroup_ = global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Types.OptionalGroup.CreateBuilder(result.optionalGroup_).MergeFrom(value).BuildPartial();
-        } else {
-          result.optionalGroup_ = value;
-        }
-        result.hasOptionalGroup = true;
-        return this;
-      }
-      public Builder ClearOptionalGroup() {
-        PrepareBuilder();
-        result.hasOptionalGroup = false;
-        result.optionalGroup_ = null;
-        return this;
-      }
-
-      public pbc::IPopsicleList<global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Types.RepeatedGroup> RepeatedGroupList {
-        get { return PrepareBuilder().repeatedGroup_; }
-      }
-      public int RepeatedGroupCount {
-        get { return result.RepeatedGroupCount; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Types.RepeatedGroup GetRepeatedGroup(int index) {
-        return result.GetRepeatedGroup(index);
-      }
-      public Builder SetRepeatedGroup(int index, global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Types.RepeatedGroup value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.repeatedGroup_[index] = value;
-        return this;
-      }
-      public Builder SetRepeatedGroup(int index, global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Types.RepeatedGroup.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.repeatedGroup_[index] = builderForValue.Build();
-        return this;
-      }
-      public Builder AddRepeatedGroup(global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Types.RepeatedGroup value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.repeatedGroup_.Add(value);
-        return this;
-      }
-      public Builder AddRepeatedGroup(global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Types.RepeatedGroup.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.repeatedGroup_.Add(builderForValue.Build());
-        return this;
-      }
-      public Builder AddRangeRepeatedGroup(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Types.RepeatedGroup> values) {
-        PrepareBuilder();
-        result.repeatedGroup_.Add(values);
-        return this;
-      }
-      public Builder ClearRepeatedGroup() {
-        PrepareBuilder();
-        result.repeatedGroup_.Clear();
-        return this;
-      }
-    }
-    static TestParsingMerge() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class TestCommentInjectionMessage : pb::GeneratedMessage<TestCommentInjectionMessage, TestCommentInjectionMessage.Builder> {
-    private TestCommentInjectionMessage() { }
-    private static readonly TestCommentInjectionMessage defaultInstance = new TestCommentInjectionMessage().MakeReadOnly();
-    private static readonly string[] _testCommentInjectionMessageFieldNames = new string[] { "a" };
-    private static readonly uint[] _testCommentInjectionMessageFieldTags = new uint[] { 10 };
-    public static TestCommentInjectionMessage DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override TestCommentInjectionMessage DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override TestCommentInjectionMessage ThisMessage {
-      get { return this; }
-    }
-
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestCommentInjectionMessage__Descriptor; }
-    }
-
-    protected override pb::FieldAccess.FieldAccessorTable<TestCommentInjectionMessage, TestCommentInjectionMessage.Builder> InternalFieldAccessors {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestCommentInjectionMessage__FieldAccessorTable; }
-    }
-
-    public const int AFieldNumber = 1;
-    private bool hasA;
-    private string a_ = "*/ <- Neither should this.";
-    public bool HasA {
-      get { return hasA; }
-    }
-    public string A {
-      get { return a_; }
-    }
-
-    public override bool IsInitialized {
-      get {
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _testCommentInjectionMessageFieldNames;
-      if (hasA) {
-        output.WriteString(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.ComputeStringSize(1, A);
-      }
-      size += UnknownFields.SerializedSize;
-      memoizedSerializedSize = size;
-      return size;
-    }
-    public static TestCommentInjectionMessage ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestCommentInjectionMessage ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestCommentInjectionMessage ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestCommentInjectionMessage ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestCommentInjectionMessage ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestCommentInjectionMessage ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static TestCommentInjectionMessage ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static TestCommentInjectionMessage ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static TestCommentInjectionMessage ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestCommentInjectionMessage ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private TestCommentInjectionMessage 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(TestCommentInjectionMessage prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilder<TestCommentInjectionMessage, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(TestCommentInjectionMessage cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private TestCommentInjectionMessage result;
-
-      private TestCommentInjectionMessage PrepareBuilder() {
-        if (resultIsReadOnly) {
-          TestCommentInjectionMessage original = result;
-          result = new TestCommentInjectionMessage();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override TestCommentInjectionMessage 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.TestCommentInjectionMessage.Descriptor; }
-      }
-
-      public override TestCommentInjectionMessage DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.TestCommentInjectionMessage.DefaultInstance; }
-      }
-
-      public override TestCommentInjectionMessage BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is TestCommentInjectionMessage) {
-          return MergeFrom((TestCommentInjectionMessage) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(TestCommentInjectionMessage other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.TestCommentInjectionMessage.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(_testCommentInjectionMessageFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _testCommentInjectionMessageFieldTags[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: {
-              result.hasA = input.ReadString(ref result.a_);
-              break;
-            }
-          }
-        }
-
-        if (unknownFields != null) {
-          this.UnknownFields = unknownFields.Build();
-        }
-        return this;
-      }
-
-
-      public bool HasA {
-        get { return result.hasA; }
-      }
-      public string A {
-        get { return result.A; }
-        set { SetA(value); }
-      }
-      public Builder SetA(string value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasA = true;
-        result.a_ = value;
-        return this;
-      }
-      public Builder ClearA() {
-        PrepareBuilder();
-        result.hasA = false;
-        result.a_ = "*/ <- Neither should this.";
-        return this;
-      }
-    }
-    static TestCommentInjectionMessage() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class FooRequest : pb::GeneratedMessage<FooRequest, FooRequest.Builder> {
-    private FooRequest() { }
-    private static readonly FooRequest defaultInstance = new FooRequest().MakeReadOnly();
-    private static readonly string[] _fooRequestFieldNames = new string[] {  };
-    private static readonly uint[] _fooRequestFieldTags = new uint[] {  };
-    public static FooRequest DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override FooRequest DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override FooRequest ThisMessage {
-      get { return this; }
-    }
-
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_FooRequest__Descriptor; }
-    }
-
-    protected override pb::FieldAccess.FieldAccessorTable<FooRequest, FooRequest.Builder> InternalFieldAccessors {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_FooRequest__FieldAccessorTable; }
-    }
-
-    public override bool IsInitialized {
-      get {
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _fooRequestFieldNames;
-      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 FooRequest ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static FooRequest ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static FooRequest ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static FooRequest ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static FooRequest ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static FooRequest ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static FooRequest ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static FooRequest ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static FooRequest ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static FooRequest ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private FooRequest 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(FooRequest prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilder<FooRequest, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(FooRequest cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private FooRequest result;
-
-      private FooRequest PrepareBuilder() {
-        if (resultIsReadOnly) {
-          FooRequest original = result;
-          result = new FooRequest();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override FooRequest 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.FooRequest.Descriptor; }
-      }
-
-      public override FooRequest DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.FooRequest.DefaultInstance; }
-      }
-
-      public override FooRequest BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is FooRequest) {
-          return MergeFrom((FooRequest) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(FooRequest other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.FooRequest.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(_fooRequestFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _fooRequestFieldTags[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 FooRequest() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class FooResponse : pb::GeneratedMessage<FooResponse, FooResponse.Builder> {
-    private FooResponse() { }
-    private static readonly FooResponse defaultInstance = new FooResponse().MakeReadOnly();
-    private static readonly string[] _fooResponseFieldNames = new string[] {  };
-    private static readonly uint[] _fooResponseFieldTags = new uint[] {  };
-    public static FooResponse DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override FooResponse DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override FooResponse ThisMessage {
-      get { return this; }
-    }
-
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_FooResponse__Descriptor; }
-    }
-
-    protected override pb::FieldAccess.FieldAccessorTable<FooResponse, FooResponse.Builder> InternalFieldAccessors {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_FooResponse__FieldAccessorTable; }
-    }
-
-    public override bool IsInitialized {
-      get {
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _fooResponseFieldNames;
-      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 FooResponse ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static FooResponse ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static FooResponse ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static FooResponse ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static FooResponse ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static FooResponse ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static FooResponse ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static FooResponse ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static FooResponse ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static FooResponse ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private FooResponse 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(FooResponse prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilder<FooResponse, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(FooResponse cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private FooResponse result;
-
-      private FooResponse PrepareBuilder() {
-        if (resultIsReadOnly) {
-          FooResponse original = result;
-          result = new FooResponse();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override FooResponse 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.FooResponse.Descriptor; }
-      }
-
-      public override FooResponse DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.FooResponse.DefaultInstance; }
-      }
-
-      public override FooResponse BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is FooResponse) {
-          return MergeFrom((FooResponse) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(FooResponse other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.FooResponse.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(_fooResponseFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _fooResponseFieldTags[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 FooResponse() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class FooClientMessage : pb::GeneratedMessage<FooClientMessage, FooClientMessage.Builder> {
-    private FooClientMessage() { }
-    private static readonly FooClientMessage defaultInstance = new FooClientMessage().MakeReadOnly();
-    private static readonly string[] _fooClientMessageFieldNames = new string[] {  };
-    private static readonly uint[] _fooClientMessageFieldTags = new uint[] {  };
-    public static FooClientMessage DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override FooClientMessage DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override FooClientMessage ThisMessage {
-      get { return this; }
-    }
-
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_FooClientMessage__Descriptor; }
-    }
-
-    protected override pb::FieldAccess.FieldAccessorTable<FooClientMessage, FooClientMessage.Builder> InternalFieldAccessors {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_FooClientMessage__FieldAccessorTable; }
-    }
-
-    public override bool IsInitialized {
-      get {
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _fooClientMessageFieldNames;
-      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 FooClientMessage ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static FooClientMessage ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static FooClientMessage ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static FooClientMessage ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static FooClientMessage ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static FooClientMessage ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static FooClientMessage ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static FooClientMessage ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static FooClientMessage ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static FooClientMessage ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private FooClientMessage 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(FooClientMessage prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilder<FooClientMessage, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(FooClientMessage cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private FooClientMessage result;
-
-      private FooClientMessage PrepareBuilder() {
-        if (resultIsReadOnly) {
-          FooClientMessage original = result;
-          result = new FooClientMessage();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override FooClientMessage 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.FooClientMessage.Descriptor; }
-      }
-
-      public override FooClientMessage DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.FooClientMessage.DefaultInstance; }
-      }
-
-      public override FooClientMessage BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is FooClientMessage) {
-          return MergeFrom((FooClientMessage) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(FooClientMessage other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.FooClientMessage.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(_fooClientMessageFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _fooClientMessageFieldTags[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 FooClientMessage() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class FooServerMessage : pb::GeneratedMessage<FooServerMessage, FooServerMessage.Builder> {
-    private FooServerMessage() { }
-    private static readonly FooServerMessage defaultInstance = new FooServerMessage().MakeReadOnly();
-    private static readonly string[] _fooServerMessageFieldNames = new string[] {  };
-    private static readonly uint[] _fooServerMessageFieldTags = new uint[] {  };
-    public static FooServerMessage DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override FooServerMessage DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override FooServerMessage ThisMessage {
-      get { return this; }
-    }
-
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_FooServerMessage__Descriptor; }
-    }
-
-    protected override pb::FieldAccess.FieldAccessorTable<FooServerMessage, FooServerMessage.Builder> InternalFieldAccessors {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_FooServerMessage__FieldAccessorTable; }
-    }
-
-    public override bool IsInitialized {
-      get {
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _fooServerMessageFieldNames;
-      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 FooServerMessage ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static FooServerMessage ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static FooServerMessage ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static FooServerMessage ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static FooServerMessage ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static FooServerMessage ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static FooServerMessage ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static FooServerMessage ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static FooServerMessage ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static FooServerMessage ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private FooServerMessage 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(FooServerMessage prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilder<FooServerMessage, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(FooServerMessage cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private FooServerMessage result;
-
-      private FooServerMessage PrepareBuilder() {
-        if (resultIsReadOnly) {
-          FooServerMessage original = result;
-          result = new FooServerMessage();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override FooServerMessage 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.FooServerMessage.Descriptor; }
-      }
-
-      public override FooServerMessage DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.FooServerMessage.DefaultInstance; }
-      }
-
-      public override FooServerMessage BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is FooServerMessage) {
-          return MergeFrom((FooServerMessage) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(FooServerMessage other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.FooServerMessage.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(_fooServerMessageFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _fooServerMessageFieldTags[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 FooServerMessage() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class BarRequest : pb::GeneratedMessage<BarRequest, BarRequest.Builder> {
-    private BarRequest() { }
-    private static readonly BarRequest defaultInstance = new BarRequest().MakeReadOnly();
-    private static readonly string[] _barRequestFieldNames = new string[] {  };
-    private static readonly uint[] _barRequestFieldTags = new uint[] {  };
-    public static BarRequest DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override BarRequest DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override BarRequest ThisMessage {
-      get { return this; }
-    }
-
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_BarRequest__Descriptor; }
-    }
-
-    protected override pb::FieldAccess.FieldAccessorTable<BarRequest, BarRequest.Builder> InternalFieldAccessors {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_BarRequest__FieldAccessorTable; }
-    }
-
-    public override bool IsInitialized {
-      get {
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _barRequestFieldNames;
-      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 BarRequest ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static BarRequest ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static BarRequest ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static BarRequest ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static BarRequest ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static BarRequest ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static BarRequest ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static BarRequest ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static BarRequest ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static BarRequest ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private BarRequest 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(BarRequest prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilder<BarRequest, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(BarRequest cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private BarRequest result;
-
-      private BarRequest PrepareBuilder() {
-        if (resultIsReadOnly) {
-          BarRequest original = result;
-          result = new BarRequest();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override BarRequest 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.BarRequest.Descriptor; }
-      }
-
-      public override BarRequest DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.BarRequest.DefaultInstance; }
-      }
-
-      public override BarRequest BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is BarRequest) {
-          return MergeFrom((BarRequest) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(BarRequest other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.BarRequest.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(_barRequestFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _barRequestFieldTags[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 BarRequest() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class BarResponse : pb::GeneratedMessage<BarResponse, BarResponse.Builder> {
-    private BarResponse() { }
-    private static readonly BarResponse defaultInstance = new BarResponse().MakeReadOnly();
-    private static readonly string[] _barResponseFieldNames = new string[] {  };
-    private static readonly uint[] _barResponseFieldTags = new uint[] {  };
-    public static BarResponse DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override BarResponse DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override BarResponse ThisMessage {
-      get { return this; }
-    }
-
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_BarResponse__Descriptor; }
-    }
-
-    protected override pb::FieldAccess.FieldAccessorTable<BarResponse, BarResponse.Builder> InternalFieldAccessors {
-      get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_BarResponse__FieldAccessorTable; }
-    }
-
-    public override bool IsInitialized {
-      get {
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _barResponseFieldNames;
-      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 BarResponse ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static BarResponse ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static BarResponse ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static BarResponse ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static BarResponse ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static BarResponse ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static BarResponse ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static BarResponse ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static BarResponse ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static BarResponse ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private BarResponse 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(BarResponse prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilder<BarResponse, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(BarResponse cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private BarResponse result;
-
-      private BarResponse PrepareBuilder() {
-        if (resultIsReadOnly) {
-          BarResponse original = result;
-          result = new BarResponse();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override BarResponse 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.BarResponse.Descriptor; }
-      }
-
-      public override BarResponse DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.BarResponse.DefaultInstance; }
-      }
-
-      public override BarResponse BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is BarResponse) {
-          return MergeFrom((BarResponse) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(BarResponse other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.BarResponse.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(_barResponseFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _barResponseFieldTags[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 BarResponse() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor, null);
-    }
-  }
-
-  #endregion
-
-}
-
-#endregion Designer generated code

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

@@ -1,2138 +0,0 @@
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
-// source: unittest_extras_full.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 UnittestExtrasFull {
-
-    #region Extension registration
-    public static void RegisterAllExtensions(pb::ExtensionRegistry registry) {
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestExtrasFull.EmployeeId);
-    }
-    #endregion
-    #region Extensions
-    public const int EmployeeIdFieldNumber = 126;
-    public static pb::GeneratedExtensionBase<global::Google.ProtocolBuffers.TestProtos.TestInteropEmployeeId> EmployeeId;
-    #endregion
-
-    #region Static variables
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_extra_TestInteropPerson__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestInteropPerson, global::Google.ProtocolBuffers.TestProtos.TestInteropPerson.Builder> internal__static_protobuf_unittest_extra_TestInteropPerson__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_extra_TestInteropPerson_PhoneNumber__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestInteropPerson.Types.PhoneNumber, global::Google.ProtocolBuffers.TestProtos.TestInteropPerson.Types.PhoneNumber.Builder> internal__static_protobuf_unittest_extra_TestInteropPerson_PhoneNumber__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_extra_TestInteropPerson_Addresses__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestInteropPerson.Types.Addresses, global::Google.ProtocolBuffers.TestProtos.TestInteropPerson.Types.Addresses.Builder> internal__static_protobuf_unittest_extra_TestInteropPerson_Addresses__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_extra_TestInteropEmployeeId__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestInteropEmployeeId, global::Google.ProtocolBuffers.TestProtos.TestInteropEmployeeId.Builder> internal__static_protobuf_unittest_extra_TestInteropEmployeeId__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_extra_TestMissingFieldsA__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestMissingFieldsA, global::Google.ProtocolBuffers.TestProtos.TestMissingFieldsA.Builder> internal__static_protobuf_unittest_extra_TestMissingFieldsA__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_extra_TestMissingFieldsA_SubA__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestMissingFieldsA.Types.SubA, global::Google.ProtocolBuffers.TestProtos.TestMissingFieldsA.Types.SubA.Builder> internal__static_protobuf_unittest_extra_TestMissingFieldsA_SubA__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_extra_TestMissingFieldsB__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestMissingFieldsB, global::Google.ProtocolBuffers.TestProtos.TestMissingFieldsB.Builder> internal__static_protobuf_unittest_extra_TestMissingFieldsB__FieldAccessorTable;
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_extra_TestMissingFieldsB_SubB__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestMissingFieldsB.Types.SubB, global::Google.ProtocolBuffers.TestProtos.TestMissingFieldsB.Types.SubB.Builder> internal__static_protobuf_unittest_extra_TestMissingFieldsB_SubB__FieldAccessorTable;
-    #endregion
-    #region Descriptor
-    public static pbd::FileDescriptor Descriptor {
-      get { return descriptor; }
-    }
-    private static pbd::FileDescriptor descriptor;
-
-    static UnittestExtrasFull() {
-      byte[] descriptorData = global::System.Convert.FromBase64String(
-          string.Concat(
-            "Chp1bml0dGVzdF9leHRyYXNfZnVsbC5wcm90bxIXcHJvdG9idWZfdW5pdHRl", 
-            "c3RfZXh0cmEi1gMKEVRlc3RJbnRlcm9wUGVyc29uEgwKBG5hbWUYASACKAkS", 
-            "CgoCaWQYAiACKAUSDQoFZW1haWwYAyABKAkSEQoFY29kZXMYCiADKAVCAhAB", 
-            "EkUKBXBob25lGAQgAygLMjYucHJvdG9idWZfdW5pdHRlc3RfZXh0cmEuVGVz", 
-            "dEludGVyb3BQZXJzb24uUGhvbmVOdW1iZXISRwoJYWRkcmVzc2VzGAUgAygK", 
-            "MjQucHJvdG9idWZfdW5pdHRlc3RfZXh0cmEuVGVzdEludGVyb3BQZXJzb24u", 
-            "QWRkcmVzc2VzGmcKC1Bob25lTnVtYmVyEg4KBm51bWJlchgBIAIoCRJICgR0", 
-            "eXBlGAIgASgOMjQucHJvdG9idWZfdW5pdHRlc3RfZXh0cmEuVGVzdEludGVy", 
-            "b3BQZXJzb24uUGhvbmVUeXBlOgRIT01FGlgKCUFkZHJlc3NlcxIPCgdhZGRy", 
-            "ZXNzGAEgAigJEhAKCGFkZHJlc3MyGAIgASgJEgwKBGNpdHkYAyACKAkSDQoF", 
-            "c3RhdGUYBCACKAkSCwoDemlwGAUgAigHIisKCVBob25lVHlwZRIKCgZNT0JJ", 
-            "TEUQABIICgRIT01FEAESCAoEV09SSxACKgUIZBDIASInChVUZXN0SW50ZXJv", 
-            "cEVtcGxveWVlSWQSDgoGbnVtYmVyGAEgAigJIqUBChJUZXN0TWlzc2luZ0Zp", 
-            "ZWxkc0ESDAoEbmFtZRgBIAIoCRIKCgJpZBgCIAIoBRINCgVlbWFpbBgDIAEo", 
-            "CRI/CgV0ZXN0QRgLIAEoCzIwLnByb3RvYnVmX3VuaXR0ZXN0X2V4dHJhLlRl", 
-            "c3RNaXNzaW5nRmllbGRzQS5TdWJBGiUKBFN1YkESDQoFY291bnQYBSACKAUS", 
-            "DgoGdmFsdWVzGAYgAygJIpgBChJUZXN0TWlzc2luZ0ZpZWxkc0ISDAoEbmFt", 
-            "ZRgBIAIoCRIKCgJpZBgCIAIoBRIPCgd3ZWJzaXRlGAQgASgJEj8KBXRlc3RC", 
-            "GAwgASgLMjAucHJvdG9idWZfdW5pdHRlc3RfZXh0cmEuVGVzdE1pc3NpbmdG", 
-            "aWVsZHNCLlN1YkIaFgoEU3ViQhIOCgZ2YWx1ZXMYByADKAk6bwoLZW1wbG95", 
-            "ZWVfaWQSKi5wcm90b2J1Zl91bml0dGVzdF9leHRyYS5UZXN0SW50ZXJvcFBl", 
-            "cnNvbhh+IAEoCzIuLnByb3RvYnVmX3VuaXR0ZXN0X2V4dHJhLlRlc3RJbnRl", 
-            "cm9wRW1wbG95ZWVJZEI7ChNjb20uZ29vZ2xlLnByb3RvYnVmSAKqAiFHb29n", 
-          "bGUuUHJvdG9jb2xCdWZmZXJzLlRlc3RQcm90b3M="));
-      pbd::FileDescriptor.InternalDescriptorAssigner assigner = delegate(pbd::FileDescriptor root) {
-        descriptor = root;
-        internal__static_protobuf_unittest_extra_TestInteropPerson__Descriptor = Descriptor.MessageTypes[0];
-        internal__static_protobuf_unittest_extra_TestInteropPerson__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestInteropPerson, global::Google.ProtocolBuffers.TestProtos.TestInteropPerson.Builder>(internal__static_protobuf_unittest_extra_TestInteropPerson__Descriptor,
-                new string[] { "Name", "Id", "Email", "Codes", "Phone", "Addresses", });
-        internal__static_protobuf_unittest_extra_TestInteropPerson_PhoneNumber__Descriptor = internal__static_protobuf_unittest_extra_TestInteropPerson__Descriptor.NestedTypes[0];
-        internal__static_protobuf_unittest_extra_TestInteropPerson_PhoneNumber__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestInteropPerson.Types.PhoneNumber, global::Google.ProtocolBuffers.TestProtos.TestInteropPerson.Types.PhoneNumber.Builder>(internal__static_protobuf_unittest_extra_TestInteropPerson_PhoneNumber__Descriptor,
-                new string[] { "Number", "Type", });
-        internal__static_protobuf_unittest_extra_TestInteropPerson_Addresses__Descriptor = internal__static_protobuf_unittest_extra_TestInteropPerson__Descriptor.NestedTypes[1];
-        internal__static_protobuf_unittest_extra_TestInteropPerson_Addresses__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestInteropPerson.Types.Addresses, global::Google.ProtocolBuffers.TestProtos.TestInteropPerson.Types.Addresses.Builder>(internal__static_protobuf_unittest_extra_TestInteropPerson_Addresses__Descriptor,
-                new string[] { "Address", "Address2", "City", "State", "Zip", });
-        internal__static_protobuf_unittest_extra_TestInteropEmployeeId__Descriptor = Descriptor.MessageTypes[1];
-        internal__static_protobuf_unittest_extra_TestInteropEmployeeId__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestInteropEmployeeId, global::Google.ProtocolBuffers.TestProtos.TestInteropEmployeeId.Builder>(internal__static_protobuf_unittest_extra_TestInteropEmployeeId__Descriptor,
-                new string[] { "Number", });
-        internal__static_protobuf_unittest_extra_TestMissingFieldsA__Descriptor = Descriptor.MessageTypes[2];
-        internal__static_protobuf_unittest_extra_TestMissingFieldsA__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestMissingFieldsA, global::Google.ProtocolBuffers.TestProtos.TestMissingFieldsA.Builder>(internal__static_protobuf_unittest_extra_TestMissingFieldsA__Descriptor,
-                new string[] { "Name", "Id", "Email", "TestA", });
-        internal__static_protobuf_unittest_extra_TestMissingFieldsA_SubA__Descriptor = internal__static_protobuf_unittest_extra_TestMissingFieldsA__Descriptor.NestedTypes[0];
-        internal__static_protobuf_unittest_extra_TestMissingFieldsA_SubA__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestMissingFieldsA.Types.SubA, global::Google.ProtocolBuffers.TestProtos.TestMissingFieldsA.Types.SubA.Builder>(internal__static_protobuf_unittest_extra_TestMissingFieldsA_SubA__Descriptor,
-                new string[] { "Count", "Values", });
-        internal__static_protobuf_unittest_extra_TestMissingFieldsB__Descriptor = Descriptor.MessageTypes[3];
-        internal__static_protobuf_unittest_extra_TestMissingFieldsB__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestMissingFieldsB, global::Google.ProtocolBuffers.TestProtos.TestMissingFieldsB.Builder>(internal__static_protobuf_unittest_extra_TestMissingFieldsB__Descriptor,
-                new string[] { "Name", "Id", "Website", "TestB", });
-        internal__static_protobuf_unittest_extra_TestMissingFieldsB_SubB__Descriptor = internal__static_protobuf_unittest_extra_TestMissingFieldsB__Descriptor.NestedTypes[0];
-        internal__static_protobuf_unittest_extra_TestMissingFieldsB_SubB__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestMissingFieldsB.Types.SubB, global::Google.ProtocolBuffers.TestProtos.TestMissingFieldsB.Types.SubB.Builder>(internal__static_protobuf_unittest_extra_TestMissingFieldsB_SubB__Descriptor,
-                new string[] { "Values", });
-        global::Google.ProtocolBuffers.TestProtos.UnittestExtrasFull.EmployeeId = pb::GeneratedSingleExtension<global::Google.ProtocolBuffers.TestProtos.TestInteropEmployeeId>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnittestExtrasFull.Descriptor.Extensions[0]);
-        pb::ExtensionRegistry registry = pb::ExtensionRegistry.CreateInstance();
-        RegisterAllExtensions(registry);
-        return registry;
-      };
-      pbd::FileDescriptor.InternalBuildGeneratedFileFrom(descriptorData,
-          new pbd::FileDescriptor[] {
-          }, assigner);
-    }
-    #endregion
-
-  }
-  #region Messages
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class TestInteropPerson : pb::ExtendableMessage<TestInteropPerson, TestInteropPerson.Builder> {
-    private TestInteropPerson() { }
-    private static readonly TestInteropPerson defaultInstance = new TestInteropPerson().MakeReadOnly();
-    public static TestInteropPerson DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override TestInteropPerson DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override TestInteropPerson ThisMessage {
-      get { return this; }
-    }
-
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::Google.ProtocolBuffers.TestProtos.UnittestExtrasFull.internal__static_protobuf_unittest_extra_TestInteropPerson__Descriptor; }
-    }
-
-    protected override pb::FieldAccess.FieldAccessorTable<TestInteropPerson, TestInteropPerson.Builder> InternalFieldAccessors {
-      get { return global::Google.ProtocolBuffers.TestProtos.UnittestExtrasFull.internal__static_protobuf_unittest_extra_TestInteropPerson__FieldAccessorTable; }
-    }
-
-    #region Nested types
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public static partial class Types {
-      public enum PhoneType {
-        MOBILE = 0,
-        HOME = 1,
-        WORK = 2,
-      }
-
-      [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-      public sealed partial class PhoneNumber : pb::GeneratedMessage<PhoneNumber, PhoneNumber.Builder> {
-        private PhoneNumber() { }
-        private static readonly PhoneNumber defaultInstance = new PhoneNumber().MakeReadOnly();
-        public static PhoneNumber DefaultInstance {
-          get { return defaultInstance; }
-        }
-
-        public override PhoneNumber DefaultInstanceForType {
-          get { return DefaultInstance; }
-        }
-
-        protected override PhoneNumber ThisMessage {
-          get { return this; }
-        }
-
-        public static pbd::MessageDescriptor Descriptor {
-          get { return global::Google.ProtocolBuffers.TestProtos.UnittestExtrasFull.internal__static_protobuf_unittest_extra_TestInteropPerson_PhoneNumber__Descriptor; }
-        }
-
-        protected override pb::FieldAccess.FieldAccessorTable<PhoneNumber, PhoneNumber.Builder> InternalFieldAccessors {
-          get { return global::Google.ProtocolBuffers.TestProtos.UnittestExtrasFull.internal__static_protobuf_unittest_extra_TestInteropPerson_PhoneNumber__FieldAccessorTable; }
-        }
-
-        public const int NumberFieldNumber = 1;
-        private bool hasNumber;
-        private string number_ = "";
-        public bool HasNumber {
-          get { return hasNumber; }
-        }
-        public string Number {
-          get { return number_; }
-        }
-
-        public const int TypeFieldNumber = 2;
-        private bool hasType;
-        private global::Google.ProtocolBuffers.TestProtos.TestInteropPerson.Types.PhoneType type_ = global::Google.ProtocolBuffers.TestProtos.TestInteropPerson.Types.PhoneType.HOME;
-        public bool HasType {
-          get { return hasType; }
-        }
-        public global::Google.ProtocolBuffers.TestProtos.TestInteropPerson.Types.PhoneType Type {
-          get { return type_; }
-        }
-
-        public static PhoneNumber ParseFrom(pb::ByteString data) {
-          return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-        }
-        public static PhoneNumber ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-        }
-        public static PhoneNumber ParseFrom(byte[] data) {
-          return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-        }
-        public static PhoneNumber ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-        }
-        public static PhoneNumber ParseFrom(global::System.IO.Stream input) {
-          return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-        }
-        public static PhoneNumber ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-        }
-        public static PhoneNumber ParseDelimitedFrom(global::System.IO.Stream input) {
-          return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-        }
-        public static PhoneNumber ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-          return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-        }
-        public static PhoneNumber ParseFrom(pb::ICodedInputStream input) {
-          return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-        }
-        public static PhoneNumber ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-        }
-        private PhoneNumber 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(PhoneNumber prototype) {
-          return new Builder(prototype);
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-        public sealed partial class Builder : pb::GeneratedBuilder<PhoneNumber, Builder> {
-          protected override Builder ThisBuilder {
-            get { return this; }
-          }
-          public Builder() {
-            result = DefaultInstance;
-            resultIsReadOnly = true;
-          }
-          internal Builder(PhoneNumber cloneFrom) {
-            result = cloneFrom;
-            resultIsReadOnly = true;
-          }
-
-          private bool resultIsReadOnly;
-          private PhoneNumber result;
-
-          private PhoneNumber PrepareBuilder() {
-            if (resultIsReadOnly) {
-              PhoneNumber original = result;
-              result = new PhoneNumber();
-              resultIsReadOnly = false;
-              MergeFrom(original);
-            }
-            return result;
-          }
-
-          public override bool IsInitialized {
-            get { return result.IsInitialized; }
-          }
-
-          protected override PhoneNumber 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.TestInteropPerson.Types.PhoneNumber.Descriptor; }
-          }
-
-          public override PhoneNumber DefaultInstanceForType {
-            get { return global::Google.ProtocolBuffers.TestProtos.TestInteropPerson.Types.PhoneNumber.DefaultInstance; }
-          }
-
-          public override PhoneNumber BuildPartial() {
-            if (resultIsReadOnly) {
-              return result;
-            }
-            resultIsReadOnly = true;
-            return result.MakeReadOnly();
-          }
-
-
-          public bool HasNumber {
-            get { return result.hasNumber; }
-          }
-          public string Number {
-            get { return result.Number; }
-            set { SetNumber(value); }
-          }
-          public Builder SetNumber(string value) {
-            pb::ThrowHelper.ThrowIfNull(value, "value");
-            PrepareBuilder();
-            result.hasNumber = true;
-            result.number_ = value;
-            return this;
-          }
-          public Builder ClearNumber() {
-            PrepareBuilder();
-            result.hasNumber = false;
-            result.number_ = "";
-            return this;
-          }
-
-          public bool HasType {
-            get { return result.hasType; }
-          }
-          public global::Google.ProtocolBuffers.TestProtos.TestInteropPerson.Types.PhoneType Type {
-            get { return result.Type; }
-            set { SetType(value); }
-          }
-          public Builder SetType(global::Google.ProtocolBuffers.TestProtos.TestInteropPerson.Types.PhoneType value) {
-            PrepareBuilder();
-            result.hasType = true;
-            result.type_ = value;
-            return this;
-          }
-          public Builder ClearType() {
-            PrepareBuilder();
-            result.hasType = false;
-            result.type_ = global::Google.ProtocolBuffers.TestProtos.TestInteropPerson.Types.PhoneType.HOME;
-            return this;
-          }
-        }
-        static PhoneNumber() {
-          object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnittestExtrasFull.Descriptor, null);
-        }
-      }
-
-      [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-      public sealed partial class Addresses : pb::GeneratedMessage<Addresses, Addresses.Builder> {
-        private Addresses() { }
-        private static readonly Addresses defaultInstance = new Addresses().MakeReadOnly();
-        public static Addresses DefaultInstance {
-          get { return defaultInstance; }
-        }
-
-        public override Addresses DefaultInstanceForType {
-          get { return DefaultInstance; }
-        }
-
-        protected override Addresses ThisMessage {
-          get { return this; }
-        }
-
-        public static pbd::MessageDescriptor Descriptor {
-          get { return global::Google.ProtocolBuffers.TestProtos.UnittestExtrasFull.internal__static_protobuf_unittest_extra_TestInteropPerson_Addresses__Descriptor; }
-        }
-
-        protected override pb::FieldAccess.FieldAccessorTable<Addresses, Addresses.Builder> InternalFieldAccessors {
-          get { return global::Google.ProtocolBuffers.TestProtos.UnittestExtrasFull.internal__static_protobuf_unittest_extra_TestInteropPerson_Addresses__FieldAccessorTable; }
-        }
-
-        public const int AddressFieldNumber = 1;
-        private bool hasAddress;
-        private string address_ = "";
-        public bool HasAddress {
-          get { return hasAddress; }
-        }
-        public string Address {
-          get { return address_; }
-        }
-
-        public const int Address2FieldNumber = 2;
-        private bool hasAddress2;
-        private string address2_ = "";
-        public bool HasAddress2 {
-          get { return hasAddress2; }
-        }
-        public string Address2 {
-          get { return address2_; }
-        }
-
-        public const int CityFieldNumber = 3;
-        private bool hasCity;
-        private string city_ = "";
-        public bool HasCity {
-          get { return hasCity; }
-        }
-        public string City {
-          get { return city_; }
-        }
-
-        public const int StateFieldNumber = 4;
-        private bool hasState;
-        private string state_ = "";
-        public bool HasState {
-          get { return hasState; }
-        }
-        public string State {
-          get { return state_; }
-        }
-
-        public const int ZipFieldNumber = 5;
-        private bool hasZip;
-        private uint zip_;
-        public bool HasZip {
-          get { return hasZip; }
-        }
-        public uint Zip {
-          get { return zip_; }
-        }
-
-        public static Addresses ParseFrom(pb::ByteString data) {
-          return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-        }
-        public static Addresses ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-        }
-        public static Addresses ParseFrom(byte[] data) {
-          return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-        }
-        public static Addresses ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-        }
-        public static Addresses ParseFrom(global::System.IO.Stream input) {
-          return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-        }
-        public static Addresses ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-        }
-        public static Addresses ParseDelimitedFrom(global::System.IO.Stream input) {
-          return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-        }
-        public static Addresses ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-          return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-        }
-        public static Addresses ParseFrom(pb::ICodedInputStream input) {
-          return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-        }
-        public static Addresses ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-        }
-        private Addresses 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(Addresses prototype) {
-          return new Builder(prototype);
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-        public sealed partial class Builder : pb::GeneratedBuilder<Addresses, Builder> {
-          protected override Builder ThisBuilder {
-            get { return this; }
-          }
-          public Builder() {
-            result = DefaultInstance;
-            resultIsReadOnly = true;
-          }
-          internal Builder(Addresses cloneFrom) {
-            result = cloneFrom;
-            resultIsReadOnly = true;
-          }
-
-          private bool resultIsReadOnly;
-          private Addresses result;
-
-          private Addresses PrepareBuilder() {
-            if (resultIsReadOnly) {
-              Addresses original = result;
-              result = new Addresses();
-              resultIsReadOnly = false;
-              MergeFrom(original);
-            }
-            return result;
-          }
-
-          public override bool IsInitialized {
-            get { return result.IsInitialized; }
-          }
-
-          protected override Addresses 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.TestInteropPerson.Types.Addresses.Descriptor; }
-          }
-
-          public override Addresses DefaultInstanceForType {
-            get { return global::Google.ProtocolBuffers.TestProtos.TestInteropPerson.Types.Addresses.DefaultInstance; }
-          }
-
-          public override Addresses BuildPartial() {
-            if (resultIsReadOnly) {
-              return result;
-            }
-            resultIsReadOnly = true;
-            return result.MakeReadOnly();
-          }
-
-
-          public bool HasAddress {
-            get { return result.hasAddress; }
-          }
-          public string Address {
-            get { return result.Address; }
-            set { SetAddress(value); }
-          }
-          public Builder SetAddress(string value) {
-            pb::ThrowHelper.ThrowIfNull(value, "value");
-            PrepareBuilder();
-            result.hasAddress = true;
-            result.address_ = value;
-            return this;
-          }
-          public Builder ClearAddress() {
-            PrepareBuilder();
-            result.hasAddress = false;
-            result.address_ = "";
-            return this;
-          }
-
-          public bool HasAddress2 {
-            get { return result.hasAddress2; }
-          }
-          public string Address2 {
-            get { return result.Address2; }
-            set { SetAddress2(value); }
-          }
-          public Builder SetAddress2(string value) {
-            pb::ThrowHelper.ThrowIfNull(value, "value");
-            PrepareBuilder();
-            result.hasAddress2 = true;
-            result.address2_ = value;
-            return this;
-          }
-          public Builder ClearAddress2() {
-            PrepareBuilder();
-            result.hasAddress2 = false;
-            result.address2_ = "";
-            return this;
-          }
-
-          public bool HasCity {
-            get { return result.hasCity; }
-          }
-          public string City {
-            get { return result.City; }
-            set { SetCity(value); }
-          }
-          public Builder SetCity(string value) {
-            pb::ThrowHelper.ThrowIfNull(value, "value");
-            PrepareBuilder();
-            result.hasCity = true;
-            result.city_ = value;
-            return this;
-          }
-          public Builder ClearCity() {
-            PrepareBuilder();
-            result.hasCity = false;
-            result.city_ = "";
-            return this;
-          }
-
-          public bool HasState {
-            get { return result.hasState; }
-          }
-          public string State {
-            get { return result.State; }
-            set { SetState(value); }
-          }
-          public Builder SetState(string value) {
-            pb::ThrowHelper.ThrowIfNull(value, "value");
-            PrepareBuilder();
-            result.hasState = true;
-            result.state_ = value;
-            return this;
-          }
-          public Builder ClearState() {
-            PrepareBuilder();
-            result.hasState = false;
-            result.state_ = "";
-            return this;
-          }
-
-          public bool HasZip {
-            get { return result.hasZip; }
-          }
-          public uint Zip {
-            get { return result.Zip; }
-            set { SetZip(value); }
-          }
-          public Builder SetZip(uint value) {
-            PrepareBuilder();
-            result.hasZip = true;
-            result.zip_ = value;
-            return this;
-          }
-          public Builder ClearZip() {
-            PrepareBuilder();
-            result.hasZip = false;
-            result.zip_ = 0;
-            return this;
-          }
-        }
-        static Addresses() {
-          object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnittestExtrasFull.Descriptor, null);
-        }
-      }
-
-    }
-    #endregion
-
-    public const int NameFieldNumber = 1;
-    private bool hasName;
-    private string name_ = "";
-    public bool HasName {
-      get { return hasName; }
-    }
-    public string Name {
-      get { return name_; }
-    }
-
-    public const int IdFieldNumber = 2;
-    private bool hasId;
-    private int id_;
-    public bool HasId {
-      get { return hasId; }
-    }
-    public int Id {
-      get { return id_; }
-    }
-
-    public const int EmailFieldNumber = 3;
-    private bool hasEmail;
-    private string email_ = "";
-    public bool HasEmail {
-      get { return hasEmail; }
-    }
-    public string Email {
-      get { return email_; }
-    }
-
-    public const int CodesFieldNumber = 10;
-    private pbc::PopsicleList<int> codes_ = new pbc::PopsicleList<int>();
-    public scg::IList<int> CodesList {
-      get { return pbc::Lists.AsReadOnly(codes_); }
-    }
-    public int CodesCount {
-      get { return codes_.Count; }
-    }
-    public int GetCodes(int index) {
-      return codes_[index];
-    }
-
-    public const int PhoneFieldNumber = 4;
-    private pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.TestInteropPerson.Types.PhoneNumber> phone_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.TestInteropPerson.Types.PhoneNumber>();
-    public scg::IList<global::Google.ProtocolBuffers.TestProtos.TestInteropPerson.Types.PhoneNumber> PhoneList {
-      get { return phone_; }
-    }
-    public int PhoneCount {
-      get { return phone_.Count; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.TestInteropPerson.Types.PhoneNumber GetPhone(int index) {
-      return phone_[index];
-    }
-
-    public const int AddressesFieldNumber = 5;
-    private pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.TestInteropPerson.Types.Addresses> addresses_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.TestInteropPerson.Types.Addresses>();
-    public scg::IList<global::Google.ProtocolBuffers.TestProtos.TestInteropPerson.Types.Addresses> AddressesList {
-      get { return addresses_; }
-    }
-    public int AddressesCount {
-      get { return addresses_.Count; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.TestInteropPerson.Types.Addresses GetAddresses(int index) {
-      return addresses_[index];
-    }
-
-    public static TestInteropPerson ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestInteropPerson ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestInteropPerson ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestInteropPerson ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestInteropPerson ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestInteropPerson ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static TestInteropPerson ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static TestInteropPerson ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static TestInteropPerson ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestInteropPerson ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private TestInteropPerson MakeReadOnly() {
-      codes_.MakeReadOnly();
-      phone_.MakeReadOnly();
-      addresses_.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(TestInteropPerson prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::ExtendableBuilder<TestInteropPerson, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(TestInteropPerson cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private TestInteropPerson result;
-
-      private TestInteropPerson PrepareBuilder() {
-        if (resultIsReadOnly) {
-          TestInteropPerson original = result;
-          result = new TestInteropPerson();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override TestInteropPerson 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.TestInteropPerson.Descriptor; }
-      }
-
-      public override TestInteropPerson DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.TestInteropPerson.DefaultInstance; }
-      }
-
-      public override TestInteropPerson BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-
-      public bool HasName {
-        get { return result.hasName; }
-      }
-      public string Name {
-        get { return result.Name; }
-        set { SetName(value); }
-      }
-      public Builder SetName(string value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasName = true;
-        result.name_ = value;
-        return this;
-      }
-      public Builder ClearName() {
-        PrepareBuilder();
-        result.hasName = false;
-        result.name_ = "";
-        return this;
-      }
-
-      public bool HasId {
-        get { return result.hasId; }
-      }
-      public int Id {
-        get { return result.Id; }
-        set { SetId(value); }
-      }
-      public Builder SetId(int value) {
-        PrepareBuilder();
-        result.hasId = true;
-        result.id_ = value;
-        return this;
-      }
-      public Builder ClearId() {
-        PrepareBuilder();
-        result.hasId = false;
-        result.id_ = 0;
-        return this;
-      }
-
-      public bool HasEmail {
-        get { return result.hasEmail; }
-      }
-      public string Email {
-        get { return result.Email; }
-        set { SetEmail(value); }
-      }
-      public Builder SetEmail(string value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasEmail = true;
-        result.email_ = value;
-        return this;
-      }
-      public Builder ClearEmail() {
-        PrepareBuilder();
-        result.hasEmail = false;
-        result.email_ = "";
-        return this;
-      }
-
-      public pbc::IPopsicleList<int> CodesList {
-        get { return PrepareBuilder().codes_; }
-      }
-      public int CodesCount {
-        get { return result.CodesCount; }
-      }
-      public int GetCodes(int index) {
-        return result.GetCodes(index);
-      }
-      public Builder SetCodes(int index, int value) {
-        PrepareBuilder();
-        result.codes_[index] = value;
-        return this;
-      }
-      public Builder AddCodes(int value) {
-        PrepareBuilder();
-        result.codes_.Add(value);
-        return this;
-      }
-      public Builder AddRangeCodes(scg::IEnumerable<int> values) {
-        PrepareBuilder();
-        result.codes_.Add(values);
-        return this;
-      }
-      public Builder ClearCodes() {
-        PrepareBuilder();
-        result.codes_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<global::Google.ProtocolBuffers.TestProtos.TestInteropPerson.Types.PhoneNumber> PhoneList {
-        get { return PrepareBuilder().phone_; }
-      }
-      public int PhoneCount {
-        get { return result.PhoneCount; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.TestInteropPerson.Types.PhoneNumber GetPhone(int index) {
-        return result.GetPhone(index);
-      }
-      public Builder SetPhone(int index, global::Google.ProtocolBuffers.TestProtos.TestInteropPerson.Types.PhoneNumber value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.phone_[index] = value;
-        return this;
-      }
-      public Builder SetPhone(int index, global::Google.ProtocolBuffers.TestProtos.TestInteropPerson.Types.PhoneNumber.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.phone_[index] = builderForValue.Build();
-        return this;
-      }
-      public Builder AddPhone(global::Google.ProtocolBuffers.TestProtos.TestInteropPerson.Types.PhoneNumber value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.phone_.Add(value);
-        return this;
-      }
-      public Builder AddPhone(global::Google.ProtocolBuffers.TestProtos.TestInteropPerson.Types.PhoneNumber.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.phone_.Add(builderForValue.Build());
-        return this;
-      }
-      public Builder AddRangePhone(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.TestInteropPerson.Types.PhoneNumber> values) {
-        PrepareBuilder();
-        result.phone_.Add(values);
-        return this;
-      }
-      public Builder ClearPhone() {
-        PrepareBuilder();
-        result.phone_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<global::Google.ProtocolBuffers.TestProtos.TestInteropPerson.Types.Addresses> AddressesList {
-        get { return PrepareBuilder().addresses_; }
-      }
-      public int AddressesCount {
-        get { return result.AddressesCount; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.TestInteropPerson.Types.Addresses GetAddresses(int index) {
-        return result.GetAddresses(index);
-      }
-      public Builder SetAddresses(int index, global::Google.ProtocolBuffers.TestProtos.TestInteropPerson.Types.Addresses value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.addresses_[index] = value;
-        return this;
-      }
-      public Builder SetAddresses(int index, global::Google.ProtocolBuffers.TestProtos.TestInteropPerson.Types.Addresses.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.addresses_[index] = builderForValue.Build();
-        return this;
-      }
-      public Builder AddAddresses(global::Google.ProtocolBuffers.TestProtos.TestInteropPerson.Types.Addresses value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.addresses_.Add(value);
-        return this;
-      }
-      public Builder AddAddresses(global::Google.ProtocolBuffers.TestProtos.TestInteropPerson.Types.Addresses.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.addresses_.Add(builderForValue.Build());
-        return this;
-      }
-      public Builder AddRangeAddresses(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.TestInteropPerson.Types.Addresses> values) {
-        PrepareBuilder();
-        result.addresses_.Add(values);
-        return this;
-      }
-      public Builder ClearAddresses() {
-        PrepareBuilder();
-        result.addresses_.Clear();
-        return this;
-      }
-    }
-    static TestInteropPerson() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnittestExtrasFull.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class TestInteropEmployeeId : pb::GeneratedMessage<TestInteropEmployeeId, TestInteropEmployeeId.Builder> {
-    private TestInteropEmployeeId() { }
-    private static readonly TestInteropEmployeeId defaultInstance = new TestInteropEmployeeId().MakeReadOnly();
-    public static TestInteropEmployeeId DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override TestInteropEmployeeId DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override TestInteropEmployeeId ThisMessage {
-      get { return this; }
-    }
-
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::Google.ProtocolBuffers.TestProtos.UnittestExtrasFull.internal__static_protobuf_unittest_extra_TestInteropEmployeeId__Descriptor; }
-    }
-
-    protected override pb::FieldAccess.FieldAccessorTable<TestInteropEmployeeId, TestInteropEmployeeId.Builder> InternalFieldAccessors {
-      get { return global::Google.ProtocolBuffers.TestProtos.UnittestExtrasFull.internal__static_protobuf_unittest_extra_TestInteropEmployeeId__FieldAccessorTable; }
-    }
-
-    public const int NumberFieldNumber = 1;
-    private bool hasNumber;
-    private string number_ = "";
-    public bool HasNumber {
-      get { return hasNumber; }
-    }
-    public string Number {
-      get { return number_; }
-    }
-
-    public static TestInteropEmployeeId ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestInteropEmployeeId ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestInteropEmployeeId ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestInteropEmployeeId ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestInteropEmployeeId ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestInteropEmployeeId ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static TestInteropEmployeeId ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static TestInteropEmployeeId ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static TestInteropEmployeeId ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestInteropEmployeeId ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private TestInteropEmployeeId 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(TestInteropEmployeeId prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilder<TestInteropEmployeeId, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(TestInteropEmployeeId cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private TestInteropEmployeeId result;
-
-      private TestInteropEmployeeId PrepareBuilder() {
-        if (resultIsReadOnly) {
-          TestInteropEmployeeId original = result;
-          result = new TestInteropEmployeeId();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override TestInteropEmployeeId 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.TestInteropEmployeeId.Descriptor; }
-      }
-
-      public override TestInteropEmployeeId DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.TestInteropEmployeeId.DefaultInstance; }
-      }
-
-      public override TestInteropEmployeeId BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-
-      public bool HasNumber {
-        get { return result.hasNumber; }
-      }
-      public string Number {
-        get { return result.Number; }
-        set { SetNumber(value); }
-      }
-      public Builder SetNumber(string value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasNumber = true;
-        result.number_ = value;
-        return this;
-      }
-      public Builder ClearNumber() {
-        PrepareBuilder();
-        result.hasNumber = false;
-        result.number_ = "";
-        return this;
-      }
-    }
-    static TestInteropEmployeeId() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnittestExtrasFull.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class TestMissingFieldsA : pb::GeneratedMessage<TestMissingFieldsA, TestMissingFieldsA.Builder> {
-    private TestMissingFieldsA() { }
-    private static readonly TestMissingFieldsA defaultInstance = new TestMissingFieldsA().MakeReadOnly();
-    public static TestMissingFieldsA DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override TestMissingFieldsA DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override TestMissingFieldsA ThisMessage {
-      get { return this; }
-    }
-
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::Google.ProtocolBuffers.TestProtos.UnittestExtrasFull.internal__static_protobuf_unittest_extra_TestMissingFieldsA__Descriptor; }
-    }
-
-    protected override pb::FieldAccess.FieldAccessorTable<TestMissingFieldsA, TestMissingFieldsA.Builder> InternalFieldAccessors {
-      get { return global::Google.ProtocolBuffers.TestProtos.UnittestExtrasFull.internal__static_protobuf_unittest_extra_TestMissingFieldsA__FieldAccessorTable; }
-    }
-
-    #region Nested types
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public static partial class Types {
-      [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-      public sealed partial class SubA : pb::GeneratedMessage<SubA, SubA.Builder> {
-        private SubA() { }
-        private static readonly SubA defaultInstance = new SubA().MakeReadOnly();
-        public static SubA DefaultInstance {
-          get { return defaultInstance; }
-        }
-
-        public override SubA DefaultInstanceForType {
-          get { return DefaultInstance; }
-        }
-
-        protected override SubA ThisMessage {
-          get { return this; }
-        }
-
-        public static pbd::MessageDescriptor Descriptor {
-          get { return global::Google.ProtocolBuffers.TestProtos.UnittestExtrasFull.internal__static_protobuf_unittest_extra_TestMissingFieldsA_SubA__Descriptor; }
-        }
-
-        protected override pb::FieldAccess.FieldAccessorTable<SubA, SubA.Builder> InternalFieldAccessors {
-          get { return global::Google.ProtocolBuffers.TestProtos.UnittestExtrasFull.internal__static_protobuf_unittest_extra_TestMissingFieldsA_SubA__FieldAccessorTable; }
-        }
-
-        public const int CountFieldNumber = 5;
-        private bool hasCount;
-        private int count_;
-        public bool HasCount {
-          get { return hasCount; }
-        }
-        public int Count {
-          get { return count_; }
-        }
-
-        public const int ValuesFieldNumber = 6;
-        private pbc::PopsicleList<string> values_ = new pbc::PopsicleList<string>();
-        public scg::IList<string> ValuesList {
-          get { return pbc::Lists.AsReadOnly(values_); }
-        }
-        public int ValuesCount {
-          get { return values_.Count; }
-        }
-        public string GetValues(int index) {
-          return values_[index];
-        }
-
-        public static SubA ParseFrom(pb::ByteString data) {
-          return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-        }
-        public static SubA ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-        }
-        public static SubA ParseFrom(byte[] data) {
-          return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-        }
-        public static SubA ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-        }
-        public static SubA ParseFrom(global::System.IO.Stream input) {
-          return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-        }
-        public static SubA ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-        }
-        public static SubA ParseDelimitedFrom(global::System.IO.Stream input) {
-          return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-        }
-        public static SubA ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-          return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-        }
-        public static SubA ParseFrom(pb::ICodedInputStream input) {
-          return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-        }
-        public static SubA ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-        }
-        private SubA MakeReadOnly() {
-          values_.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(SubA prototype) {
-          return new Builder(prototype);
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-        public sealed partial class Builder : pb::GeneratedBuilder<SubA, Builder> {
-          protected override Builder ThisBuilder {
-            get { return this; }
-          }
-          public Builder() {
-            result = DefaultInstance;
-            resultIsReadOnly = true;
-          }
-          internal Builder(SubA cloneFrom) {
-            result = cloneFrom;
-            resultIsReadOnly = true;
-          }
-
-          private bool resultIsReadOnly;
-          private SubA result;
-
-          private SubA PrepareBuilder() {
-            if (resultIsReadOnly) {
-              SubA original = result;
-              result = new SubA();
-              resultIsReadOnly = false;
-              MergeFrom(original);
-            }
-            return result;
-          }
-
-          public override bool IsInitialized {
-            get { return result.IsInitialized; }
-          }
-
-          protected override SubA 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.TestMissingFieldsA.Types.SubA.Descriptor; }
-          }
-
-          public override SubA DefaultInstanceForType {
-            get { return global::Google.ProtocolBuffers.TestProtos.TestMissingFieldsA.Types.SubA.DefaultInstance; }
-          }
-
-          public override SubA BuildPartial() {
-            if (resultIsReadOnly) {
-              return result;
-            }
-            resultIsReadOnly = true;
-            return result.MakeReadOnly();
-          }
-
-
-          public bool HasCount {
-            get { return result.hasCount; }
-          }
-          public int Count {
-            get { return result.Count; }
-            set { SetCount(value); }
-          }
-          public Builder SetCount(int value) {
-            PrepareBuilder();
-            result.hasCount = true;
-            result.count_ = value;
-            return this;
-          }
-          public Builder ClearCount() {
-            PrepareBuilder();
-            result.hasCount = false;
-            result.count_ = 0;
-            return this;
-          }
-
-          public pbc::IPopsicleList<string> ValuesList {
-            get { return PrepareBuilder().values_; }
-          }
-          public int ValuesCount {
-            get { return result.ValuesCount; }
-          }
-          public string GetValues(int index) {
-            return result.GetValues(index);
-          }
-          public Builder SetValues(int index, string value) {
-            pb::ThrowHelper.ThrowIfNull(value, "value");
-            PrepareBuilder();
-            result.values_[index] = value;
-            return this;
-          }
-          public Builder AddValues(string value) {
-            pb::ThrowHelper.ThrowIfNull(value, "value");
-            PrepareBuilder();
-            result.values_.Add(value);
-            return this;
-          }
-          public Builder AddRangeValues(scg::IEnumerable<string> values) {
-            PrepareBuilder();
-            result.values_.Add(values);
-            return this;
-          }
-          public Builder ClearValues() {
-            PrepareBuilder();
-            result.values_.Clear();
-            return this;
-          }
-        }
-        static SubA() {
-          object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnittestExtrasFull.Descriptor, null);
-        }
-      }
-
-    }
-    #endregion
-
-    public const int NameFieldNumber = 1;
-    private bool hasName;
-    private string name_ = "";
-    public bool HasName {
-      get { return hasName; }
-    }
-    public string Name {
-      get { return name_; }
-    }
-
-    public const int IdFieldNumber = 2;
-    private bool hasId;
-    private int id_;
-    public bool HasId {
-      get { return hasId; }
-    }
-    public int Id {
-      get { return id_; }
-    }
-
-    public const int EmailFieldNumber = 3;
-    private bool hasEmail;
-    private string email_ = "";
-    public bool HasEmail {
-      get { return hasEmail; }
-    }
-    public string Email {
-      get { return email_; }
-    }
-
-    public const int TestAFieldNumber = 11;
-    private bool hasTestA;
-    private global::Google.ProtocolBuffers.TestProtos.TestMissingFieldsA.Types.SubA testA_;
-    public bool HasTestA {
-      get { return hasTestA; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.TestMissingFieldsA.Types.SubA TestA {
-      get { return testA_ ?? global::Google.ProtocolBuffers.TestProtos.TestMissingFieldsA.Types.SubA.DefaultInstance; }
-    }
-
-    public static TestMissingFieldsA ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestMissingFieldsA ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestMissingFieldsA ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestMissingFieldsA ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestMissingFieldsA ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestMissingFieldsA ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static TestMissingFieldsA ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static TestMissingFieldsA ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static TestMissingFieldsA ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestMissingFieldsA ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private TestMissingFieldsA 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(TestMissingFieldsA prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilder<TestMissingFieldsA, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(TestMissingFieldsA cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private TestMissingFieldsA result;
-
-      private TestMissingFieldsA PrepareBuilder() {
-        if (resultIsReadOnly) {
-          TestMissingFieldsA original = result;
-          result = new TestMissingFieldsA();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override TestMissingFieldsA 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.TestMissingFieldsA.Descriptor; }
-      }
-
-      public override TestMissingFieldsA DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.TestMissingFieldsA.DefaultInstance; }
-      }
-
-      public override TestMissingFieldsA BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-
-      public bool HasName {
-        get { return result.hasName; }
-      }
-      public string Name {
-        get { return result.Name; }
-        set { SetName(value); }
-      }
-      public Builder SetName(string value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasName = true;
-        result.name_ = value;
-        return this;
-      }
-      public Builder ClearName() {
-        PrepareBuilder();
-        result.hasName = false;
-        result.name_ = "";
-        return this;
-      }
-
-      public bool HasId {
-        get { return result.hasId; }
-      }
-      public int Id {
-        get { return result.Id; }
-        set { SetId(value); }
-      }
-      public Builder SetId(int value) {
-        PrepareBuilder();
-        result.hasId = true;
-        result.id_ = value;
-        return this;
-      }
-      public Builder ClearId() {
-        PrepareBuilder();
-        result.hasId = false;
-        result.id_ = 0;
-        return this;
-      }
-
-      public bool HasEmail {
-        get { return result.hasEmail; }
-      }
-      public string Email {
-        get { return result.Email; }
-        set { SetEmail(value); }
-      }
-      public Builder SetEmail(string value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasEmail = true;
-        result.email_ = value;
-        return this;
-      }
-      public Builder ClearEmail() {
-        PrepareBuilder();
-        result.hasEmail = false;
-        result.email_ = "";
-        return this;
-      }
-
-      public bool HasTestA {
-       get { return result.hasTestA; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.TestMissingFieldsA.Types.SubA TestA {
-        get { return result.TestA; }
-        set { SetTestA(value); }
-      }
-      public Builder SetTestA(global::Google.ProtocolBuffers.TestProtos.TestMissingFieldsA.Types.SubA value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasTestA = true;
-        result.testA_ = value;
-        return this;
-      }
-      public Builder SetTestA(global::Google.ProtocolBuffers.TestProtos.TestMissingFieldsA.Types.SubA.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.hasTestA = true;
-        result.testA_ = builderForValue.Build();
-        return this;
-      }
-      public Builder MergeTestA(global::Google.ProtocolBuffers.TestProtos.TestMissingFieldsA.Types.SubA value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        if (result.hasTestA &&
-            result.testA_ != global::Google.ProtocolBuffers.TestProtos.TestMissingFieldsA.Types.SubA.DefaultInstance) {
-            result.testA_ = global::Google.ProtocolBuffers.TestProtos.TestMissingFieldsA.Types.SubA.CreateBuilder(result.testA_).MergeFrom(value).BuildPartial();
-        } else {
-          result.testA_ = value;
-        }
-        result.hasTestA = true;
-        return this;
-      }
-      public Builder ClearTestA() {
-        PrepareBuilder();
-        result.hasTestA = false;
-        result.testA_ = null;
-        return this;
-      }
-    }
-    static TestMissingFieldsA() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnittestExtrasFull.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class TestMissingFieldsB : pb::GeneratedMessage<TestMissingFieldsB, TestMissingFieldsB.Builder> {
-    private TestMissingFieldsB() { }
-    private static readonly TestMissingFieldsB defaultInstance = new TestMissingFieldsB().MakeReadOnly();
-    public static TestMissingFieldsB DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override TestMissingFieldsB DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override TestMissingFieldsB ThisMessage {
-      get { return this; }
-    }
-
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::Google.ProtocolBuffers.TestProtos.UnittestExtrasFull.internal__static_protobuf_unittest_extra_TestMissingFieldsB__Descriptor; }
-    }
-
-    protected override pb::FieldAccess.FieldAccessorTable<TestMissingFieldsB, TestMissingFieldsB.Builder> InternalFieldAccessors {
-      get { return global::Google.ProtocolBuffers.TestProtos.UnittestExtrasFull.internal__static_protobuf_unittest_extra_TestMissingFieldsB__FieldAccessorTable; }
-    }
-
-    #region Nested types
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public static partial class Types {
-      [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-      public sealed partial class SubB : pb::GeneratedMessage<SubB, SubB.Builder> {
-        private SubB() { }
-        private static readonly SubB defaultInstance = new SubB().MakeReadOnly();
-        public static SubB DefaultInstance {
-          get { return defaultInstance; }
-        }
-
-        public override SubB DefaultInstanceForType {
-          get { return DefaultInstance; }
-        }
-
-        protected override SubB ThisMessage {
-          get { return this; }
-        }
-
-        public static pbd::MessageDescriptor Descriptor {
-          get { return global::Google.ProtocolBuffers.TestProtos.UnittestExtrasFull.internal__static_protobuf_unittest_extra_TestMissingFieldsB_SubB__Descriptor; }
-        }
-
-        protected override pb::FieldAccess.FieldAccessorTable<SubB, SubB.Builder> InternalFieldAccessors {
-          get { return global::Google.ProtocolBuffers.TestProtos.UnittestExtrasFull.internal__static_protobuf_unittest_extra_TestMissingFieldsB_SubB__FieldAccessorTable; }
-        }
-
-        public const int ValuesFieldNumber = 7;
-        private pbc::PopsicleList<string> values_ = new pbc::PopsicleList<string>();
-        public scg::IList<string> ValuesList {
-          get { return pbc::Lists.AsReadOnly(values_); }
-        }
-        public int ValuesCount {
-          get { return values_.Count; }
-        }
-        public string GetValues(int index) {
-          return values_[index];
-        }
-
-        public static SubB ParseFrom(pb::ByteString data) {
-          return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-        }
-        public static SubB ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-        }
-        public static SubB ParseFrom(byte[] data) {
-          return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-        }
-        public static SubB ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-        }
-        public static SubB ParseFrom(global::System.IO.Stream input) {
-          return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-        }
-        public static SubB ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-        }
-        public static SubB ParseDelimitedFrom(global::System.IO.Stream input) {
-          return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-        }
-        public static SubB ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-          return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-        }
-        public static SubB ParseFrom(pb::ICodedInputStream input) {
-          return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-        }
-        public static SubB ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-        }
-        private SubB MakeReadOnly() {
-          values_.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(SubB prototype) {
-          return new Builder(prototype);
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-        public sealed partial class Builder : pb::GeneratedBuilder<SubB, Builder> {
-          protected override Builder ThisBuilder {
-            get { return this; }
-          }
-          public Builder() {
-            result = DefaultInstance;
-            resultIsReadOnly = true;
-          }
-          internal Builder(SubB cloneFrom) {
-            result = cloneFrom;
-            resultIsReadOnly = true;
-          }
-
-          private bool resultIsReadOnly;
-          private SubB result;
-
-          private SubB PrepareBuilder() {
-            if (resultIsReadOnly) {
-              SubB original = result;
-              result = new SubB();
-              resultIsReadOnly = false;
-              MergeFrom(original);
-            }
-            return result;
-          }
-
-          public override bool IsInitialized {
-            get { return result.IsInitialized; }
-          }
-
-          protected override SubB 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.TestMissingFieldsB.Types.SubB.Descriptor; }
-          }
-
-          public override SubB DefaultInstanceForType {
-            get { return global::Google.ProtocolBuffers.TestProtos.TestMissingFieldsB.Types.SubB.DefaultInstance; }
-          }
-
-          public override SubB BuildPartial() {
-            if (resultIsReadOnly) {
-              return result;
-            }
-            resultIsReadOnly = true;
-            return result.MakeReadOnly();
-          }
-
-
-          public pbc::IPopsicleList<string> ValuesList {
-            get { return PrepareBuilder().values_; }
-          }
-          public int ValuesCount {
-            get { return result.ValuesCount; }
-          }
-          public string GetValues(int index) {
-            return result.GetValues(index);
-          }
-          public Builder SetValues(int index, string value) {
-            pb::ThrowHelper.ThrowIfNull(value, "value");
-            PrepareBuilder();
-            result.values_[index] = value;
-            return this;
-          }
-          public Builder AddValues(string value) {
-            pb::ThrowHelper.ThrowIfNull(value, "value");
-            PrepareBuilder();
-            result.values_.Add(value);
-            return this;
-          }
-          public Builder AddRangeValues(scg::IEnumerable<string> values) {
-            PrepareBuilder();
-            result.values_.Add(values);
-            return this;
-          }
-          public Builder ClearValues() {
-            PrepareBuilder();
-            result.values_.Clear();
-            return this;
-          }
-        }
-        static SubB() {
-          object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnittestExtrasFull.Descriptor, null);
-        }
-      }
-
-    }
-    #endregion
-
-    public const int NameFieldNumber = 1;
-    private bool hasName;
-    private string name_ = "";
-    public bool HasName {
-      get { return hasName; }
-    }
-    public string Name {
-      get { return name_; }
-    }
-
-    public const int IdFieldNumber = 2;
-    private bool hasId;
-    private int id_;
-    public bool HasId {
-      get { return hasId; }
-    }
-    public int Id {
-      get { return id_; }
-    }
-
-    public const int WebsiteFieldNumber = 4;
-    private bool hasWebsite;
-    private string website_ = "";
-    public bool HasWebsite {
-      get { return hasWebsite; }
-    }
-    public string Website {
-      get { return website_; }
-    }
-
-    public const int TestBFieldNumber = 12;
-    private bool hasTestB;
-    private global::Google.ProtocolBuffers.TestProtos.TestMissingFieldsB.Types.SubB testB_;
-    public bool HasTestB {
-      get { return hasTestB; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.TestMissingFieldsB.Types.SubB TestB {
-      get { return testB_ ?? global::Google.ProtocolBuffers.TestProtos.TestMissingFieldsB.Types.SubB.DefaultInstance; }
-    }
-
-    public static TestMissingFieldsB ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestMissingFieldsB ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestMissingFieldsB ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestMissingFieldsB ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestMissingFieldsB ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestMissingFieldsB ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static TestMissingFieldsB ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static TestMissingFieldsB ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static TestMissingFieldsB ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestMissingFieldsB ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private TestMissingFieldsB 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(TestMissingFieldsB prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilder<TestMissingFieldsB, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(TestMissingFieldsB cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private TestMissingFieldsB result;
-
-      private TestMissingFieldsB PrepareBuilder() {
-        if (resultIsReadOnly) {
-          TestMissingFieldsB original = result;
-          result = new TestMissingFieldsB();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override TestMissingFieldsB 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.TestMissingFieldsB.Descriptor; }
-      }
-
-      public override TestMissingFieldsB DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.TestMissingFieldsB.DefaultInstance; }
-      }
-
-      public override TestMissingFieldsB BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-
-      public bool HasName {
-        get { return result.hasName; }
-      }
-      public string Name {
-        get { return result.Name; }
-        set { SetName(value); }
-      }
-      public Builder SetName(string value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasName = true;
-        result.name_ = value;
-        return this;
-      }
-      public Builder ClearName() {
-        PrepareBuilder();
-        result.hasName = false;
-        result.name_ = "";
-        return this;
-      }
-
-      public bool HasId {
-        get { return result.hasId; }
-      }
-      public int Id {
-        get { return result.Id; }
-        set { SetId(value); }
-      }
-      public Builder SetId(int value) {
-        PrepareBuilder();
-        result.hasId = true;
-        result.id_ = value;
-        return this;
-      }
-      public Builder ClearId() {
-        PrepareBuilder();
-        result.hasId = false;
-        result.id_ = 0;
-        return this;
-      }
-
-      public bool HasWebsite {
-        get { return result.hasWebsite; }
-      }
-      public string Website {
-        get { return result.Website; }
-        set { SetWebsite(value); }
-      }
-      public Builder SetWebsite(string value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasWebsite = true;
-        result.website_ = value;
-        return this;
-      }
-      public Builder ClearWebsite() {
-        PrepareBuilder();
-        result.hasWebsite = false;
-        result.website_ = "";
-        return this;
-      }
-
-      public bool HasTestB {
-       get { return result.hasTestB; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.TestMissingFieldsB.Types.SubB TestB {
-        get { return result.TestB; }
-        set { SetTestB(value); }
-      }
-      public Builder SetTestB(global::Google.ProtocolBuffers.TestProtos.TestMissingFieldsB.Types.SubB value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasTestB = true;
-        result.testB_ = value;
-        return this;
-      }
-      public Builder SetTestB(global::Google.ProtocolBuffers.TestProtos.TestMissingFieldsB.Types.SubB.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.hasTestB = true;
-        result.testB_ = builderForValue.Build();
-        return this;
-      }
-      public Builder MergeTestB(global::Google.ProtocolBuffers.TestProtos.TestMissingFieldsB.Types.SubB value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        if (result.hasTestB &&
-            result.testB_ != global::Google.ProtocolBuffers.TestProtos.TestMissingFieldsB.Types.SubB.DefaultInstance) {
-            result.testB_ = global::Google.ProtocolBuffers.TestProtos.TestMissingFieldsB.Types.SubB.CreateBuilder(result.testB_).MergeFrom(value).BuildPartial();
-        } else {
-          result.testB_ = value;
-        }
-        result.hasTestB = true;
-        return this;
-      }
-      public Builder ClearTestB() {
-        PrepareBuilder();
-        result.hasTestB = false;
-        result.testB_ = null;
-        return this;
-      }
-    }
-    static TestMissingFieldsB() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnittestExtrasFull.Descriptor, null);
-    }
-  }
-
-  #endregion
-
-}
-
-#endregion Designer generated code

+ 0 - 4206
csharp/src/ProtocolBuffersLite.Test/TestProtos/UnittestExtrasLite.cs

@@ -1,4206 +0,0 @@
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
-// source: unittest_extras_lite.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 UnittestExtrasLite {
-
-    #region Extension registration
-    public static void RegisterAllExtensions(pb::ExtensionRegistry registry) {
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestExtrasLite.EmployeeIdLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestExtrasLite.UnpackedInt32ExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestExtrasLite.UnpackedInt64ExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestExtrasLite.UnpackedUint32ExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestExtrasLite.UnpackedUint64ExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestExtrasLite.UnpackedSint32ExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestExtrasLite.UnpackedSint64ExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestExtrasLite.UnpackedFixed32ExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestExtrasLite.UnpackedFixed64ExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestExtrasLite.UnpackedSfixed32ExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestExtrasLite.UnpackedSfixed64ExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestExtrasLite.UnpackedFloatExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestExtrasLite.UnpackedDoubleExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestExtrasLite.UnpackedBoolExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestExtrasLite.UnpackedEnumExtensionLite);
-    }
-    #endregion
-    #region Extensions
-    public const int EmployeeIdLiteFieldNumber = 126;
-    public static pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestInteropPersonLite, global::Google.ProtocolBuffers.TestProtos.TestInteropEmployeeIdLite> EmployeeIdLite;
-    public const int UnpackedInt32ExtensionLiteFieldNumber = 90;
-    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, int> UnpackedInt32ExtensionLite;
-    public const int UnpackedInt64ExtensionLiteFieldNumber = 91;
-    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, long> UnpackedInt64ExtensionLite;
-    public const int UnpackedUint32ExtensionLiteFieldNumber = 92;
-    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, uint> UnpackedUint32ExtensionLite;
-    public const int UnpackedUint64ExtensionLiteFieldNumber = 93;
-    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, ulong> UnpackedUint64ExtensionLite;
-    public const int UnpackedSint32ExtensionLiteFieldNumber = 94;
-    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, int> UnpackedSint32ExtensionLite;
-    public const int UnpackedSint64ExtensionLiteFieldNumber = 95;
-    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, long> UnpackedSint64ExtensionLite;
-    public const int UnpackedFixed32ExtensionLiteFieldNumber = 96;
-    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, uint> UnpackedFixed32ExtensionLite;
-    public const int UnpackedFixed64ExtensionLiteFieldNumber = 97;
-    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, ulong> UnpackedFixed64ExtensionLite;
-    public const int UnpackedSfixed32ExtensionLiteFieldNumber = 98;
-    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, int> UnpackedSfixed32ExtensionLite;
-    public const int UnpackedSfixed64ExtensionLiteFieldNumber = 99;
-    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, long> UnpackedSfixed64ExtensionLite;
-    public const int UnpackedFloatExtensionLiteFieldNumber = 100;
-    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, float> UnpackedFloatExtensionLite;
-    public const int UnpackedDoubleExtensionLiteFieldNumber = 101;
-    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, double> UnpackedDoubleExtensionLite;
-    public const int UnpackedBoolExtensionLiteFieldNumber = 102;
-    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, bool> UnpackedBoolExtensionLite;
-    public const int UnpackedEnumExtensionLiteFieldNumber = 103;
-    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, global::Google.ProtocolBuffers.TestProtos.UnpackedTypesForeignEnumLite> UnpackedEnumExtensionLite;
-    #endregion
-
-    #region Static variables
-    #endregion
-    #region Extensions
-    internal static readonly object Descriptor;
-    static UnittestExtrasLite() {
-      Descriptor = null;
-      global::Google.ProtocolBuffers.TestProtos.UnittestExtrasLite.EmployeeIdLite = 
-        new pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestInteropPersonLite, global::Google.ProtocolBuffers.TestProtos.TestInteropEmployeeIdLite>(
-          "protobuf_unittest_extra.employee_id_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestInteropPersonLite.DefaultInstance,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.TestInteropEmployeeIdLite.DefaultInstance,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestExtrasLite.EmployeeIdLiteFieldNumber,
-          pbd::FieldType.Message);
-      global::Google.ProtocolBuffers.TestProtos.UnittestExtrasLite.UnpackedInt32ExtensionLite = 
-        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, int>(
-          "protobuf_unittest_extra.unpacked_int32_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite.DefaultInstance,
-          null,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestExtrasLite.UnpackedInt32ExtensionLiteFieldNumber,
-          pbd::FieldType.Int32,
-          false);
-      global::Google.ProtocolBuffers.TestProtos.UnittestExtrasLite.UnpackedInt64ExtensionLite = 
-        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, long>(
-          "protobuf_unittest_extra.unpacked_int64_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite.DefaultInstance,
-          null,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestExtrasLite.UnpackedInt64ExtensionLiteFieldNumber,
-          pbd::FieldType.Int64,
-          false);
-      global::Google.ProtocolBuffers.TestProtos.UnittestExtrasLite.UnpackedUint32ExtensionLite = 
-        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, uint>(
-          "protobuf_unittest_extra.unpacked_uint32_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite.DefaultInstance,
-          null,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestExtrasLite.UnpackedUint32ExtensionLiteFieldNumber,
-          pbd::FieldType.UInt32,
-          false);
-      global::Google.ProtocolBuffers.TestProtos.UnittestExtrasLite.UnpackedUint64ExtensionLite = 
-        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, ulong>(
-          "protobuf_unittest_extra.unpacked_uint64_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite.DefaultInstance,
-          null,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestExtrasLite.UnpackedUint64ExtensionLiteFieldNumber,
-          pbd::FieldType.UInt64,
-          false);
-      global::Google.ProtocolBuffers.TestProtos.UnittestExtrasLite.UnpackedSint32ExtensionLite = 
-        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, int>(
-          "protobuf_unittest_extra.unpacked_sint32_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite.DefaultInstance,
-          null,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestExtrasLite.UnpackedSint32ExtensionLiteFieldNumber,
-          pbd::FieldType.SInt32,
-          false);
-      global::Google.ProtocolBuffers.TestProtos.UnittestExtrasLite.UnpackedSint64ExtensionLite = 
-        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, long>(
-          "protobuf_unittest_extra.unpacked_sint64_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite.DefaultInstance,
-          null,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestExtrasLite.UnpackedSint64ExtensionLiteFieldNumber,
-          pbd::FieldType.SInt64,
-          false);
-      global::Google.ProtocolBuffers.TestProtos.UnittestExtrasLite.UnpackedFixed32ExtensionLite = 
-        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, uint>(
-          "protobuf_unittest_extra.unpacked_fixed32_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite.DefaultInstance,
-          null,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestExtrasLite.UnpackedFixed32ExtensionLiteFieldNumber,
-          pbd::FieldType.Fixed32,
-          false);
-      global::Google.ProtocolBuffers.TestProtos.UnittestExtrasLite.UnpackedFixed64ExtensionLite = 
-        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, ulong>(
-          "protobuf_unittest_extra.unpacked_fixed64_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite.DefaultInstance,
-          null,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestExtrasLite.UnpackedFixed64ExtensionLiteFieldNumber,
-          pbd::FieldType.Fixed64,
-          false);
-      global::Google.ProtocolBuffers.TestProtos.UnittestExtrasLite.UnpackedSfixed32ExtensionLite = 
-        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, int>(
-          "protobuf_unittest_extra.unpacked_sfixed32_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite.DefaultInstance,
-          null,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestExtrasLite.UnpackedSfixed32ExtensionLiteFieldNumber,
-          pbd::FieldType.SFixed32,
-          false);
-      global::Google.ProtocolBuffers.TestProtos.UnittestExtrasLite.UnpackedSfixed64ExtensionLite = 
-        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, long>(
-          "protobuf_unittest_extra.unpacked_sfixed64_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite.DefaultInstance,
-          null,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestExtrasLite.UnpackedSfixed64ExtensionLiteFieldNumber,
-          pbd::FieldType.SFixed64,
-          false);
-      global::Google.ProtocolBuffers.TestProtos.UnittestExtrasLite.UnpackedFloatExtensionLite = 
-        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, float>(
-          "protobuf_unittest_extra.unpacked_float_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite.DefaultInstance,
-          null,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestExtrasLite.UnpackedFloatExtensionLiteFieldNumber,
-          pbd::FieldType.Float,
-          false);
-      global::Google.ProtocolBuffers.TestProtos.UnittestExtrasLite.UnpackedDoubleExtensionLite = 
-        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, double>(
-          "protobuf_unittest_extra.unpacked_double_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite.DefaultInstance,
-          null,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestExtrasLite.UnpackedDoubleExtensionLiteFieldNumber,
-          pbd::FieldType.Double,
-          false);
-      global::Google.ProtocolBuffers.TestProtos.UnittestExtrasLite.UnpackedBoolExtensionLite = 
-        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, bool>(
-          "protobuf_unittest_extra.unpacked_bool_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite.DefaultInstance,
-          null,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestExtrasLite.UnpackedBoolExtensionLiteFieldNumber,
-          pbd::FieldType.Bool,
-          false);
-      global::Google.ProtocolBuffers.TestProtos.UnittestExtrasLite.UnpackedEnumExtensionLite = 
-        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite, global::Google.ProtocolBuffers.TestProtos.UnpackedTypesForeignEnumLite>(
-          "protobuf_unittest_extra.unpacked_enum_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite.DefaultInstance,
-          null,
-          new EnumLiteMap<global::Google.ProtocolBuffers.TestProtos.UnpackedTypesForeignEnumLite>(),
-          global::Google.ProtocolBuffers.TestProtos.UnittestExtrasLite.UnpackedEnumExtensionLiteFieldNumber,
-          pbd::FieldType.Enum,
-          false);
-    }
-    #endregion
-
-  }
-  #region Enums
-  public enum ExtraEnum {
-    DEFAULT = 10,
-    EXLITE_FOO = 7,
-    EXLITE_BAR = 8,
-    EXLITE_BAZ = 9,
-  }
-
-  public enum UnpackedTypesForeignEnumLite {
-    FOREIGN_LITE_FOO = 4,
-    FOREIGN_LITE_BAR = 5,
-    FOREIGN_LITE_BAZ = 6,
-  }
-
-  #endregion
-
-  #region Messages
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class TestRequiredLite : pb::GeneratedMessageLite<TestRequiredLite, TestRequiredLite.Builder> {
-    private TestRequiredLite() { }
-    private static readonly TestRequiredLite defaultInstance = new TestRequiredLite().MakeReadOnly();
-    private static readonly string[] _testRequiredLiteFieldNames = new string[] { "d", "en" };
-    private static readonly uint[] _testRequiredLiteFieldTags = new uint[] { 8, 16 };
-    public static TestRequiredLite DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override TestRequiredLite DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override TestRequiredLite ThisMessage {
-      get { return this; }
-    }
-
-    public const int DFieldNumber = 1;
-    private bool hasD;
-    private int d_;
-    public bool HasD {
-      get { return hasD; }
-    }
-    public int D {
-      get { return d_; }
-    }
-
-    public const int EnFieldNumber = 2;
-    private bool hasEn;
-    private global::Google.ProtocolBuffers.TestProtos.ExtraEnum en_ = global::Google.ProtocolBuffers.TestProtos.ExtraEnum.DEFAULT;
-    public bool HasEn {
-      get { return hasEn; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.ExtraEnum En {
-      get { return en_; }
-    }
-
-    public override bool IsInitialized {
-      get {
-        if (!hasD) return false;
-        if (!hasEn) return false;
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _testRequiredLiteFieldNames;
-      if (hasD) {
-        output.WriteInt32(1, field_names[0], D);
-      }
-      if (hasEn) {
-        output.WriteEnum(2, field_names[1], (int) En, En);
-      }
-    }
-
-    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 (hasD) {
-        size += pb::CodedOutputStream.ComputeInt32Size(1, D);
-      }
-      if (hasEn) {
-        size += pb::CodedOutputStream.ComputeEnumSize(2, (int) En);
-      }
-      memoizedSerializedSize = size;
-      return size;
-    }
-    #region Lite runtime methods
-    public override int GetHashCode() {
-      int hash = GetType().GetHashCode();
-      if (hasD) {
-        hash ^= d_.GetHashCode();
-      }
-      if (hasEn) {
-        hash ^= en_.GetHashCode();
-      }
-      return hash;
-    }
-
-    public override bool Equals(object obj) {
-      TestRequiredLite other = obj as TestRequiredLite;
-      if (other == null) return false;
-      if (hasD != other.hasD || (hasD && !d_.Equals(other.d_))) return false;
-      if (hasEn != other.hasEn || (hasEn && !en_.Equals(other.en_))) return false;
-      return true;
-    }
-
-    public override void PrintTo(global::System.IO.TextWriter writer) {
-      PrintField("d", hasD, d_, writer);
-      PrintField("en", hasEn, en_, writer);
-    }
-    #endregion
-
-    public static TestRequiredLite ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestRequiredLite ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestRequiredLite ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestRequiredLite ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestRequiredLite ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestRequiredLite ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static TestRequiredLite ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static TestRequiredLite ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static TestRequiredLite ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestRequiredLite ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private TestRequiredLite 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(TestRequiredLite prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilderLite<TestRequiredLite, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(TestRequiredLite cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private TestRequiredLite result;
-
-      private TestRequiredLite PrepareBuilder() {
-        if (resultIsReadOnly) {
-          TestRequiredLite original = result;
-          result = new TestRequiredLite();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override TestRequiredLite 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 TestRequiredLite DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.TestRequiredLite.DefaultInstance; }
-      }
-
-      public override TestRequiredLite BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessageLite other) {
-        if (other is TestRequiredLite) {
-          return MergeFrom((TestRequiredLite) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(TestRequiredLite other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.TestRequiredLite.DefaultInstance) return this;
-        PrepareBuilder();
-        if (other.HasD) {
-          D = other.D;
-        }
-        if (other.HasEn) {
-          En = other.En;
-        }
-        return this;
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input) {
-        return MergeFrom(input, pb::ExtensionRegistry.Empty);
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-        PrepareBuilder();
-        uint tag;
-        string field_name;
-        while (input.ReadTag(out tag, out field_name)) {
-          if(tag == 0 && field_name != null) {
-            int field_ordinal = global::System.Array.BinarySearch(_testRequiredLiteFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _testRequiredLiteFieldTags[field_ordinal];
-            else {
-              ParseUnknownField(input, extensionRegistry, tag, field_name);
-              continue;
-            }
-          }
-          switch (tag) {
-            case 0: {
-              throw pb::InvalidProtocolBufferException.InvalidTag();
-            }
-            default: {
-              if (pb::WireFormat.IsEndGroupTag(tag)) {
-                return this;
-              }
-              ParseUnknownField(input, extensionRegistry, tag, field_name);
-              break;
-            }
-            case 8: {
-              result.hasD = input.ReadInt32(ref result.d_);
-              break;
-            }
-            case 16: {
-              object unknown;
-              if(input.ReadEnum(ref result.en_, out unknown)) {
-                result.hasEn = true;
-              } else if(unknown is int) {
-              }
-              break;
-            }
-          }
-        }
-
-        return this;
-      }
-
-
-      public bool HasD {
-        get { return result.hasD; }
-      }
-      public int D {
-        get { return result.D; }
-        set { SetD(value); }
-      }
-      public Builder SetD(int value) {
-        PrepareBuilder();
-        result.hasD = true;
-        result.d_ = value;
-        return this;
-      }
-      public Builder ClearD() {
-        PrepareBuilder();
-        result.hasD = false;
-        result.d_ = 0;
-        return this;
-      }
-
-      public bool HasEn {
-        get { return result.hasEn; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.ExtraEnum En {
-        get { return result.En; }
-        set { SetEn(value); }
-      }
-      public Builder SetEn(global::Google.ProtocolBuffers.TestProtos.ExtraEnum value) {
-        PrepareBuilder();
-        result.hasEn = true;
-        result.en_ = value;
-        return this;
-      }
-      public Builder ClearEn() {
-        PrepareBuilder();
-        result.hasEn = false;
-        result.en_ = global::Google.ProtocolBuffers.TestProtos.ExtraEnum.DEFAULT;
-        return this;
-      }
-    }
-    static TestRequiredLite() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnittestExtrasLite.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class TestInteropPersonLite : pb::ExtendableMessageLite<TestInteropPersonLite, TestInteropPersonLite.Builder> {
-    private TestInteropPersonLite() { }
-    private static readonly TestInteropPersonLite defaultInstance = new TestInteropPersonLite().MakeReadOnly();
-    private static readonly string[] _testInteropPersonLiteFieldNames = new string[] { "addresses", "codes", "email", "id", "name", "phone" };
-    private static readonly uint[] _testInteropPersonLiteFieldTags = new uint[] { 43, 82, 26, 16, 10, 34 };
-    public static TestInteropPersonLite DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override TestInteropPersonLite DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override TestInteropPersonLite ThisMessage {
-      get { return this; }
-    }
-
-    #region Nested types
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public static partial class Types {
-      public enum PhoneType {
-        MOBILE = 0,
-        HOME = 1,
-        WORK = 2,
-      }
-
-      [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-      public sealed partial class PhoneNumber : pb::GeneratedMessageLite<PhoneNumber, PhoneNumber.Builder> {
-        private PhoneNumber() { }
-        private static readonly PhoneNumber defaultInstance = new PhoneNumber().MakeReadOnly();
-        private static readonly string[] _phoneNumberFieldNames = new string[] { "number", "type" };
-        private static readonly uint[] _phoneNumberFieldTags = new uint[] { 10, 16 };
-        public static PhoneNumber DefaultInstance {
-          get { return defaultInstance; }
-        }
-
-        public override PhoneNumber DefaultInstanceForType {
-          get { return DefaultInstance; }
-        }
-
-        protected override PhoneNumber ThisMessage {
-          get { return this; }
-        }
-
-        public const int NumberFieldNumber = 1;
-        private bool hasNumber;
-        private string number_ = "";
-        public bool HasNumber {
-          get { return hasNumber; }
-        }
-        public string Number {
-          get { return number_; }
-        }
-
-        public const int TypeFieldNumber = 2;
-        private bool hasType;
-        private global::Google.ProtocolBuffers.TestProtos.TestInteropPersonLite.Types.PhoneType type_ = global::Google.ProtocolBuffers.TestProtos.TestInteropPersonLite.Types.PhoneType.HOME;
-        public bool HasType {
-          get { return hasType; }
-        }
-        public global::Google.ProtocolBuffers.TestProtos.TestInteropPersonLite.Types.PhoneType Type {
-          get { return type_; }
-        }
-
-        public override bool IsInitialized {
-          get {
-            if (!hasNumber) return false;
-            return true;
-          }
-        }
-
-        public override void WriteTo(pb::ICodedOutputStream output) {
-          CalcSerializedSize();
-          string[] field_names = _phoneNumberFieldNames;
-          if (hasNumber) {
-            output.WriteString(1, field_names[0], Number);
-          }
-          if (hasType) {
-            output.WriteEnum(2, field_names[1], (int) Type, Type);
-          }
-        }
-
-        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.ComputeStringSize(1, Number);
-          }
-          if (hasType) {
-            size += pb::CodedOutputStream.ComputeEnumSize(2, (int) Type);
-          }
-          memoizedSerializedSize = size;
-          return size;
-        }
-        #region Lite runtime methods
-        public override int GetHashCode() {
-          int hash = GetType().GetHashCode();
-          if (hasNumber) {
-            hash ^= number_.GetHashCode();
-          }
-          if (hasType) {
-            hash ^= type_.GetHashCode();
-          }
-          return hash;
-        }
-
-        public override bool Equals(object obj) {
-          PhoneNumber other = obj as PhoneNumber;
-          if (other == null) return false;
-          if (hasNumber != other.hasNumber || (hasNumber && !number_.Equals(other.number_))) return false;
-          if (hasType != other.hasType || (hasType && !type_.Equals(other.type_))) return false;
-          return true;
-        }
-
-        public override void PrintTo(global::System.IO.TextWriter writer) {
-          PrintField("number", hasNumber, number_, writer);
-          PrintField("type", hasType, type_, writer);
-        }
-        #endregion
-
-        public static PhoneNumber ParseFrom(pb::ByteString data) {
-          return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-        }
-        public static PhoneNumber ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-        }
-        public static PhoneNumber ParseFrom(byte[] data) {
-          return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-        }
-        public static PhoneNumber ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-        }
-        public static PhoneNumber ParseFrom(global::System.IO.Stream input) {
-          return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-        }
-        public static PhoneNumber ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-        }
-        public static PhoneNumber ParseDelimitedFrom(global::System.IO.Stream input) {
-          return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-        }
-        public static PhoneNumber ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-          return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-        }
-        public static PhoneNumber ParseFrom(pb::ICodedInputStream input) {
-          return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-        }
-        public static PhoneNumber ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-        }
-        private PhoneNumber 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(PhoneNumber prototype) {
-          return new Builder(prototype);
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-        public sealed partial class Builder : pb::GeneratedBuilderLite<PhoneNumber, Builder> {
-          protected override Builder ThisBuilder {
-            get { return this; }
-          }
-          public Builder() {
-            result = DefaultInstance;
-            resultIsReadOnly = true;
-          }
-          internal Builder(PhoneNumber cloneFrom) {
-            result = cloneFrom;
-            resultIsReadOnly = true;
-          }
-
-          private bool resultIsReadOnly;
-          private PhoneNumber result;
-
-          private PhoneNumber PrepareBuilder() {
-            if (resultIsReadOnly) {
-              PhoneNumber original = result;
-              result = new PhoneNumber();
-              resultIsReadOnly = false;
-              MergeFrom(original);
-            }
-            return result;
-          }
-
-          public override bool IsInitialized {
-            get { return result.IsInitialized; }
-          }
-
-          protected override PhoneNumber 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 PhoneNumber DefaultInstanceForType {
-            get { return global::Google.ProtocolBuffers.TestProtos.TestInteropPersonLite.Types.PhoneNumber.DefaultInstance; }
-          }
-
-          public override PhoneNumber BuildPartial() {
-            if (resultIsReadOnly) {
-              return result;
-            }
-            resultIsReadOnly = true;
-            return result.MakeReadOnly();
-          }
-
-          public override Builder MergeFrom(pb::IMessageLite other) {
-            if (other is PhoneNumber) {
-              return MergeFrom((PhoneNumber) other);
-            } else {
-              base.MergeFrom(other);
-              return this;
-            }
-          }
-
-          public override Builder MergeFrom(PhoneNumber other) {
-            if (other == global::Google.ProtocolBuffers.TestProtos.TestInteropPersonLite.Types.PhoneNumber.DefaultInstance) return this;
-            PrepareBuilder();
-            if (other.HasNumber) {
-              Number = other.Number;
-            }
-            if (other.HasType) {
-              Type = other.Type;
-            }
-            return this;
-          }
-
-          public override Builder MergeFrom(pb::ICodedInputStream input) {
-            return MergeFrom(input, pb::ExtensionRegistry.Empty);
-          }
-
-          public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-            PrepareBuilder();
-            uint tag;
-            string field_name;
-            while (input.ReadTag(out tag, out field_name)) {
-              if(tag == 0 && field_name != null) {
-                int field_ordinal = global::System.Array.BinarySearch(_phoneNumberFieldNames, field_name, global::System.StringComparer.Ordinal);
-                if(field_ordinal >= 0)
-                  tag = _phoneNumberFieldTags[field_ordinal];
-                else {
-                  ParseUnknownField(input, extensionRegistry, tag, field_name);
-                  continue;
-                }
-              }
-              switch (tag) {
-                case 0: {
-                  throw pb::InvalidProtocolBufferException.InvalidTag();
-                }
-                default: {
-                  if (pb::WireFormat.IsEndGroupTag(tag)) {
-                    return this;
-                  }
-                  ParseUnknownField(input, extensionRegistry, tag, field_name);
-                  break;
-                }
-                case 10: {
-                  result.hasNumber = input.ReadString(ref result.number_);
-                  break;
-                }
-                case 16: {
-                  object unknown;
-                  if(input.ReadEnum(ref result.type_, out unknown)) {
-                    result.hasType = true;
-                  } else if(unknown is int) {
-                  }
-                  break;
-                }
-              }
-            }
-
-            return this;
-          }
-
-
-          public bool HasNumber {
-            get { return result.hasNumber; }
-          }
-          public string Number {
-            get { return result.Number; }
-            set { SetNumber(value); }
-          }
-          public Builder SetNumber(string value) {
-            pb::ThrowHelper.ThrowIfNull(value, "value");
-            PrepareBuilder();
-            result.hasNumber = true;
-            result.number_ = value;
-            return this;
-          }
-          public Builder ClearNumber() {
-            PrepareBuilder();
-            result.hasNumber = false;
-            result.number_ = "";
-            return this;
-          }
-
-          public bool HasType {
-            get { return result.hasType; }
-          }
-          public global::Google.ProtocolBuffers.TestProtos.TestInteropPersonLite.Types.PhoneType Type {
-            get { return result.Type; }
-            set { SetType(value); }
-          }
-          public Builder SetType(global::Google.ProtocolBuffers.TestProtos.TestInteropPersonLite.Types.PhoneType value) {
-            PrepareBuilder();
-            result.hasType = true;
-            result.type_ = value;
-            return this;
-          }
-          public Builder ClearType() {
-            PrepareBuilder();
-            result.hasType = false;
-            result.type_ = global::Google.ProtocolBuffers.TestProtos.TestInteropPersonLite.Types.PhoneType.HOME;
-            return this;
-          }
-        }
-        static PhoneNumber() {
-          object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnittestExtrasLite.Descriptor, null);
-        }
-      }
-
-      [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-      public sealed partial class Addresses : pb::GeneratedMessageLite<Addresses, Addresses.Builder> {
-        private Addresses() { }
-        private static readonly Addresses defaultInstance = new Addresses().MakeReadOnly();
-        private static readonly string[] _addressesFieldNames = new string[] { "address", "address2", "city", "state", "zip" };
-        private static readonly uint[] _addressesFieldTags = new uint[] { 10, 18, 26, 34, 45 };
-        public static Addresses DefaultInstance {
-          get { return defaultInstance; }
-        }
-
-        public override Addresses DefaultInstanceForType {
-          get { return DefaultInstance; }
-        }
-
-        protected override Addresses ThisMessage {
-          get { return this; }
-        }
-
-        public const int AddressFieldNumber = 1;
-        private bool hasAddress;
-        private string address_ = "";
-        public bool HasAddress {
-          get { return hasAddress; }
-        }
-        public string Address {
-          get { return address_; }
-        }
-
-        public const int Address2FieldNumber = 2;
-        private bool hasAddress2;
-        private string address2_ = "";
-        public bool HasAddress2 {
-          get { return hasAddress2; }
-        }
-        public string Address2 {
-          get { return address2_; }
-        }
-
-        public const int CityFieldNumber = 3;
-        private bool hasCity;
-        private string city_ = "";
-        public bool HasCity {
-          get { return hasCity; }
-        }
-        public string City {
-          get { return city_; }
-        }
-
-        public const int StateFieldNumber = 4;
-        private bool hasState;
-        private string state_ = "";
-        public bool HasState {
-          get { return hasState; }
-        }
-        public string State {
-          get { return state_; }
-        }
-
-        public const int ZipFieldNumber = 5;
-        private bool hasZip;
-        private uint zip_;
-        public bool HasZip {
-          get { return hasZip; }
-        }
-        public uint Zip {
-          get { return zip_; }
-        }
-
-        public override bool IsInitialized {
-          get {
-            if (!hasAddress) return false;
-            if (!hasCity) return false;
-            if (!hasState) return false;
-            if (!hasZip) return false;
-            return true;
-          }
-        }
-
-        public override void WriteTo(pb::ICodedOutputStream output) {
-          CalcSerializedSize();
-          string[] field_names = _addressesFieldNames;
-          if (hasAddress) {
-            output.WriteString(1, field_names[0], Address);
-          }
-          if (hasAddress2) {
-            output.WriteString(2, field_names[1], Address2);
-          }
-          if (hasCity) {
-            output.WriteString(3, field_names[2], City);
-          }
-          if (hasState) {
-            output.WriteString(4, field_names[3], State);
-          }
-          if (hasZip) {
-            output.WriteFixed32(5, field_names[4], Zip);
-          }
-        }
-
-        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 (hasAddress) {
-            size += pb::CodedOutputStream.ComputeStringSize(1, Address);
-          }
-          if (hasAddress2) {
-            size += pb::CodedOutputStream.ComputeStringSize(2, Address2);
-          }
-          if (hasCity) {
-            size += pb::CodedOutputStream.ComputeStringSize(3, City);
-          }
-          if (hasState) {
-            size += pb::CodedOutputStream.ComputeStringSize(4, State);
-          }
-          if (hasZip) {
-            size += pb::CodedOutputStream.ComputeFixed32Size(5, Zip);
-          }
-          memoizedSerializedSize = size;
-          return size;
-        }
-        #region Lite runtime methods
-        public override int 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();
-          }
-          return hash;
-        }
-
-        public override bool Equals(object obj) {
-          Addresses other = obj as Addresses;
-          if (other == null) return false;
-          if (hasAddress != other.hasAddress || (hasAddress && !address_.Equals(other.address_))) return false;
-          if (hasAddress2 != other.hasAddress2 || (hasAddress2 && !address2_.Equals(other.address2_))) return false;
-          if (hasCity != other.hasCity || (hasCity && !city_.Equals(other.city_))) return false;
-          if (hasState != other.hasState || (hasState && !state_.Equals(other.state_))) return false;
-          if (hasZip != other.hasZip || (hasZip && !zip_.Equals(other.zip_))) return false;
-          return true;
-        }
-
-        public override void PrintTo(global::System.IO.TextWriter writer) {
-          PrintField("address", hasAddress, address_, writer);
-          PrintField("address2", hasAddress2, address2_, writer);
-          PrintField("city", hasCity, city_, writer);
-          PrintField("state", hasState, state_, writer);
-          PrintField("zip", hasZip, zip_, writer);
-        }
-        #endregion
-
-        public static Addresses ParseFrom(pb::ByteString data) {
-          return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-        }
-        public static Addresses ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-        }
-        public static Addresses ParseFrom(byte[] data) {
-          return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-        }
-        public static Addresses ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-        }
-        public static Addresses ParseFrom(global::System.IO.Stream input) {
-          return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-        }
-        public static Addresses ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-        }
-        public static Addresses ParseDelimitedFrom(global::System.IO.Stream input) {
-          return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-        }
-        public static Addresses ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-          return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-        }
-        public static Addresses ParseFrom(pb::ICodedInputStream input) {
-          return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-        }
-        public static Addresses ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-        }
-        private Addresses 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(Addresses prototype) {
-          return new Builder(prototype);
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-        public sealed partial class Builder : pb::GeneratedBuilderLite<Addresses, Builder> {
-          protected override Builder ThisBuilder {
-            get { return this; }
-          }
-          public Builder() {
-            result = DefaultInstance;
-            resultIsReadOnly = true;
-          }
-          internal Builder(Addresses cloneFrom) {
-            result = cloneFrom;
-            resultIsReadOnly = true;
-          }
-
-          private bool resultIsReadOnly;
-          private Addresses result;
-
-          private Addresses PrepareBuilder() {
-            if (resultIsReadOnly) {
-              Addresses original = result;
-              result = new Addresses();
-              resultIsReadOnly = false;
-              MergeFrom(original);
-            }
-            return result;
-          }
-
-          public override bool IsInitialized {
-            get { return result.IsInitialized; }
-          }
-
-          protected override Addresses 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 Addresses DefaultInstanceForType {
-            get { return global::Google.ProtocolBuffers.TestProtos.TestInteropPersonLite.Types.Addresses.DefaultInstance; }
-          }
-
-          public override Addresses BuildPartial() {
-            if (resultIsReadOnly) {
-              return result;
-            }
-            resultIsReadOnly = true;
-            return result.MakeReadOnly();
-          }
-
-          public override Builder MergeFrom(pb::IMessageLite other) {
-            if (other is Addresses) {
-              return MergeFrom((Addresses) other);
-            } else {
-              base.MergeFrom(other);
-              return this;
-            }
-          }
-
-          public override Builder MergeFrom(Addresses other) {
-            if (other == global::Google.ProtocolBuffers.TestProtos.TestInteropPersonLite.Types.Addresses.DefaultInstance) return this;
-            PrepareBuilder();
-            if (other.HasAddress) {
-              Address = other.Address;
-            }
-            if (other.HasAddress2) {
-              Address2 = other.Address2;
-            }
-            if (other.HasCity) {
-              City = other.City;
-            }
-            if (other.HasState) {
-              State = other.State;
-            }
-            if (other.HasZip) {
-              Zip = other.Zip;
-            }
-            return this;
-          }
-
-          public override Builder MergeFrom(pb::ICodedInputStream input) {
-            return MergeFrom(input, pb::ExtensionRegistry.Empty);
-          }
-
-          public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-            PrepareBuilder();
-            uint tag;
-            string field_name;
-            while (input.ReadTag(out tag, out field_name)) {
-              if(tag == 0 && field_name != null) {
-                int field_ordinal = global::System.Array.BinarySearch(_addressesFieldNames, field_name, global::System.StringComparer.Ordinal);
-                if(field_ordinal >= 0)
-                  tag = _addressesFieldTags[field_ordinal];
-                else {
-                  ParseUnknownField(input, extensionRegistry, tag, field_name);
-                  continue;
-                }
-              }
-              switch (tag) {
-                case 0: {
-                  throw pb::InvalidProtocolBufferException.InvalidTag();
-                }
-                default: {
-                  if (pb::WireFormat.IsEndGroupTag(tag)) {
-                    return this;
-                  }
-                  ParseUnknownField(input, extensionRegistry, tag, field_name);
-                  break;
-                }
-                case 10: {
-                  result.hasAddress = input.ReadString(ref result.address_);
-                  break;
-                }
-                case 18: {
-                  result.hasAddress2 = input.ReadString(ref result.address2_);
-                  break;
-                }
-                case 26: {
-                  result.hasCity = input.ReadString(ref result.city_);
-                  break;
-                }
-                case 34: {
-                  result.hasState = input.ReadString(ref result.state_);
-                  break;
-                }
-                case 45: {
-                  result.hasZip = input.ReadFixed32(ref result.zip_);
-                  break;
-                }
-              }
-            }
-
-            return this;
-          }
-
-
-          public bool HasAddress {
-            get { return result.hasAddress; }
-          }
-          public string Address {
-            get { return result.Address; }
-            set { SetAddress(value); }
-          }
-          public Builder SetAddress(string value) {
-            pb::ThrowHelper.ThrowIfNull(value, "value");
-            PrepareBuilder();
-            result.hasAddress = true;
-            result.address_ = value;
-            return this;
-          }
-          public Builder ClearAddress() {
-            PrepareBuilder();
-            result.hasAddress = false;
-            result.address_ = "";
-            return this;
-          }
-
-          public bool HasAddress2 {
-            get { return result.hasAddress2; }
-          }
-          public string Address2 {
-            get { return result.Address2; }
-            set { SetAddress2(value); }
-          }
-          public Builder SetAddress2(string value) {
-            pb::ThrowHelper.ThrowIfNull(value, "value");
-            PrepareBuilder();
-            result.hasAddress2 = true;
-            result.address2_ = value;
-            return this;
-          }
-          public Builder ClearAddress2() {
-            PrepareBuilder();
-            result.hasAddress2 = false;
-            result.address2_ = "";
-            return this;
-          }
-
-          public bool HasCity {
-            get { return result.hasCity; }
-          }
-          public string City {
-            get { return result.City; }
-            set { SetCity(value); }
-          }
-          public Builder SetCity(string value) {
-            pb::ThrowHelper.ThrowIfNull(value, "value");
-            PrepareBuilder();
-            result.hasCity = true;
-            result.city_ = value;
-            return this;
-          }
-          public Builder ClearCity() {
-            PrepareBuilder();
-            result.hasCity = false;
-            result.city_ = "";
-            return this;
-          }
-
-          public bool HasState {
-            get { return result.hasState; }
-          }
-          public string State {
-            get { return result.State; }
-            set { SetState(value); }
-          }
-          public Builder SetState(string value) {
-            pb::ThrowHelper.ThrowIfNull(value, "value");
-            PrepareBuilder();
-            result.hasState = true;
-            result.state_ = value;
-            return this;
-          }
-          public Builder ClearState() {
-            PrepareBuilder();
-            result.hasState = false;
-            result.state_ = "";
-            return this;
-          }
-
-          public bool HasZip {
-            get { return result.hasZip; }
-          }
-          public uint Zip {
-            get { return result.Zip; }
-            set { SetZip(value); }
-          }
-          public Builder SetZip(uint value) {
-            PrepareBuilder();
-            result.hasZip = true;
-            result.zip_ = value;
-            return this;
-          }
-          public Builder ClearZip() {
-            PrepareBuilder();
-            result.hasZip = false;
-            result.zip_ = 0;
-            return this;
-          }
-        }
-        static Addresses() {
-          object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnittestExtrasLite.Descriptor, null);
-        }
-      }
-
-    }
-    #endregion
-
-    public const int NameFieldNumber = 1;
-    private bool hasName;
-    private string name_ = "";
-    public bool HasName {
-      get { return hasName; }
-    }
-    public string Name {
-      get { return name_; }
-    }
-
-    public const int IdFieldNumber = 2;
-    private bool hasId;
-    private int id_;
-    public bool HasId {
-      get { return hasId; }
-    }
-    public int Id {
-      get { return id_; }
-    }
-
-    public const int EmailFieldNumber = 3;
-    private bool hasEmail;
-    private string email_ = "";
-    public bool HasEmail {
-      get { return hasEmail; }
-    }
-    public string Email {
-      get { return email_; }
-    }
-
-    public const int CodesFieldNumber = 10;
-    private int codesMemoizedSerializedSize;
-    private pbc::PopsicleList<int> codes_ = new pbc::PopsicleList<int>();
-    public scg::IList<int> CodesList {
-      get { return pbc::Lists.AsReadOnly(codes_); }
-    }
-    public int CodesCount {
-      get { return codes_.Count; }
-    }
-    public int GetCodes(int index) {
-      return codes_[index];
-    }
-
-    public const int PhoneFieldNumber = 4;
-    private pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.TestInteropPersonLite.Types.PhoneNumber> phone_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.TestInteropPersonLite.Types.PhoneNumber>();
-    public scg::IList<global::Google.ProtocolBuffers.TestProtos.TestInteropPersonLite.Types.PhoneNumber> PhoneList {
-      get { return phone_; }
-    }
-    public int PhoneCount {
-      get { return phone_.Count; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.TestInteropPersonLite.Types.PhoneNumber GetPhone(int index) {
-      return phone_[index];
-    }
-
-    public const int AddressesFieldNumber = 5;
-    private pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.TestInteropPersonLite.Types.Addresses> addresses_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.TestInteropPersonLite.Types.Addresses>();
-    public scg::IList<global::Google.ProtocolBuffers.TestProtos.TestInteropPersonLite.Types.Addresses> AddressesList {
-      get { return addresses_; }
-    }
-    public int AddressesCount {
-      get { return addresses_.Count; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.TestInteropPersonLite.Types.Addresses GetAddresses(int index) {
-      return addresses_[index];
-    }
-
-    public override bool IsInitialized {
-      get {
-        if (!hasName) return false;
-        if (!hasId) return false;
-        foreach (global::Google.ProtocolBuffers.TestProtos.TestInteropPersonLite.Types.PhoneNumber element in PhoneList) {
-          if (!element.IsInitialized) return false;
-        }
-        if (!ExtensionsAreInitialized) return false;
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _testInteropPersonLiteFieldNames;
-      pb::ExtendableMessageLite<TestInteropPersonLite, TestInteropPersonLite.Builder>.ExtensionWriter extensionWriter = CreateExtensionWriter(this);
-      if (hasName) {
-        output.WriteString(1, field_names[4], Name);
-      }
-      if (hasId) {
-        output.WriteInt32(2, field_names[3], Id);
-      }
-      if (hasEmail) {
-        output.WriteString(3, field_names[2], Email);
-      }
-      if (phone_.Count > 0) {
-        output.WriteMessageArray(4, field_names[5], phone_);
-      }
-      if (addresses_.Count > 0) {
-        output.WriteGroupArray(5, field_names[0], addresses_);
-      }
-      if (codes_.Count > 0) {
-        output.WritePackedInt32Array(10, field_names[1], codesMemoizedSerializedSize, codes_);
-      }
-      extensionWriter.WriteUntil(200, 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 (hasName) {
-        size += pb::CodedOutputStream.ComputeStringSize(1, Name);
-      }
-      if (hasId) {
-        size += pb::CodedOutputStream.ComputeInt32Size(2, Id);
-      }
-      if (hasEmail) {
-        size += pb::CodedOutputStream.ComputeStringSize(3, Email);
-      }
-      {
-        int dataSize = 0;
-        foreach (int element in CodesList) {
-          dataSize += pb::CodedOutputStream.ComputeInt32SizeNoTag(element);
-        }
-        size += dataSize;
-        if (codes_.Count != 0) {
-          size += 1 + pb::CodedOutputStream.ComputeInt32SizeNoTag(dataSize);
-        }
-        codesMemoizedSerializedSize = dataSize;
-      }
-      foreach (global::Google.ProtocolBuffers.TestProtos.TestInteropPersonLite.Types.PhoneNumber element in PhoneList) {
-        size += pb::CodedOutputStream.ComputeMessageSize(4, element);
-      }
-      foreach (global::Google.ProtocolBuffers.TestProtos.TestInteropPersonLite.Types.Addresses element in AddressesList) {
-        size += pb::CodedOutputStream.ComputeGroupSize(5, element);
-      }
-      size += ExtensionsSerializedSize;
-      memoizedSerializedSize = size;
-      return size;
-    }
-    #region Lite runtime methods
-    public override int GetHashCode() {
-      int hash = GetType().GetHashCode();
-      if (hasName) {
-        hash ^= name_.GetHashCode();
-      }
-      if (hasId) {
-        hash ^= id_.GetHashCode();
-      }
-      if (hasEmail) {
-        hash ^= email_.GetHashCode();
-      }
-      foreach(int i in codes_)
-        hash ^= i.GetHashCode();
-      foreach(global::Google.ProtocolBuffers.TestProtos.TestInteropPersonLite.Types.PhoneNumber i in phone_)
-        hash ^= i.GetHashCode();
-      foreach(global::Google.ProtocolBuffers.TestProtos.TestInteropPersonLite.Types.Addresses i in addresses_)
-        hash ^= i.GetHashCode();
-      hash ^= base.GetHashCode();
-      return hash;
-    }
-
-    public override bool Equals(object obj) {
-      TestInteropPersonLite other = obj as TestInteropPersonLite;
-      if (other == null) return false;
-      if (hasName != other.hasName || (hasName && !name_.Equals(other.name_))) return false;
-      if (hasId != other.hasId || (hasId && !id_.Equals(other.id_))) return false;
-      if (hasEmail != other.hasEmail || (hasEmail && !email_.Equals(other.email_))) return false;
-      if(codes_.Count != other.codes_.Count) return false;
-      for(int ix=0; ix < codes_.Count; ix++)
-        if(!codes_[ix].Equals(other.codes_[ix])) return false;
-      if(phone_.Count != other.phone_.Count) return false;
-      for(int ix=0; ix < phone_.Count; ix++)
-        if(!phone_[ix].Equals(other.phone_[ix])) return false;
-      if(addresses_.Count != other.addresses_.Count) return false;
-      for(int ix=0; ix < addresses_.Count; ix++)
-        if(!addresses_[ix].Equals(other.addresses_[ix])) return false;
-      if (!base.Equals(other)) return false;
-      return true;
-    }
-
-    public override void PrintTo(global::System.IO.TextWriter writer) {
-      PrintField("name", hasName, name_, writer);
-      PrintField("id", hasId, id_, writer);
-      PrintField("email", hasEmail, email_, writer);
-      PrintField("phone", phone_, writer);
-      PrintField("Addresses", addresses_, writer);
-      PrintField("codes", codes_, writer);
-      base.PrintTo(writer);
-    }
-    #endregion
-
-    public static TestInteropPersonLite ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestInteropPersonLite ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestInteropPersonLite ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestInteropPersonLite ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestInteropPersonLite ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestInteropPersonLite ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static TestInteropPersonLite ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static TestInteropPersonLite ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static TestInteropPersonLite ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestInteropPersonLite ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private TestInteropPersonLite MakeReadOnly() {
-      codes_.MakeReadOnly();
-      phone_.MakeReadOnly();
-      addresses_.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(TestInteropPersonLite prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::ExtendableBuilderLite<TestInteropPersonLite, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(TestInteropPersonLite cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private TestInteropPersonLite result;
-
-      private TestInteropPersonLite PrepareBuilder() {
-        if (resultIsReadOnly) {
-          TestInteropPersonLite original = result;
-          result = new TestInteropPersonLite();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override TestInteropPersonLite 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 TestInteropPersonLite DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.TestInteropPersonLite.DefaultInstance; }
-      }
-
-      public override TestInteropPersonLite BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessageLite other) {
-        if (other is TestInteropPersonLite) {
-          return MergeFrom((TestInteropPersonLite) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(TestInteropPersonLite other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.TestInteropPersonLite.DefaultInstance) return this;
-        PrepareBuilder();
-        if (other.HasName) {
-          Name = other.Name;
-        }
-        if (other.HasId) {
-          Id = other.Id;
-        }
-        if (other.HasEmail) {
-          Email = other.Email;
-        }
-        if (other.codes_.Count != 0) {
-          result.codes_.Add(other.codes_);
-        }
-        if (other.phone_.Count != 0) {
-          result.phone_.Add(other.phone_);
-        }
-        if (other.addresses_.Count != 0) {
-          result.addresses_.Add(other.addresses_);
-        }
-          this.MergeExtensionFields(other);
-        return this;
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input) {
-        return MergeFrom(input, pb::ExtensionRegistry.Empty);
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-        PrepareBuilder();
-        uint tag;
-        string field_name;
-        while (input.ReadTag(out tag, out field_name)) {
-          if(tag == 0 && field_name != null) {
-            int field_ordinal = global::System.Array.BinarySearch(_testInteropPersonLiteFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _testInteropPersonLiteFieldTags[field_ordinal];
-            else {
-              ParseUnknownField(input, extensionRegistry, tag, field_name);
-              continue;
-            }
-          }
-          switch (tag) {
-            case 0: {
-              throw pb::InvalidProtocolBufferException.InvalidTag();
-            }
-            default: {
-              if (pb::WireFormat.IsEndGroupTag(tag)) {
-                return this;
-              }
-              ParseUnknownField(input, extensionRegistry, tag, field_name);
-              break;
-            }
-            case 10: {
-              result.hasName = input.ReadString(ref result.name_);
-              break;
-            }
-            case 16: {
-              result.hasId = input.ReadInt32(ref result.id_);
-              break;
-            }
-            case 26: {
-              result.hasEmail = input.ReadString(ref result.email_);
-              break;
-            }
-            case 34: {
-              input.ReadMessageArray(tag, field_name, result.phone_, global::Google.ProtocolBuffers.TestProtos.TestInteropPersonLite.Types.PhoneNumber.DefaultInstance, extensionRegistry);
-              break;
-            }
-            case 43: {
-              input.ReadGroupArray(tag, field_name, result.addresses_, global::Google.ProtocolBuffers.TestProtos.TestInteropPersonLite.Types.Addresses.DefaultInstance, extensionRegistry);
-              break;
-            }
-            case 82:
-            case 80: {
-              input.ReadInt32Array(tag, field_name, result.codes_);
-              break;
-            }
-          }
-        }
-
-        return this;
-      }
-
-
-      public bool HasName {
-        get { return result.hasName; }
-      }
-      public string Name {
-        get { return result.Name; }
-        set { SetName(value); }
-      }
-      public Builder SetName(string value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasName = true;
-        result.name_ = value;
-        return this;
-      }
-      public Builder ClearName() {
-        PrepareBuilder();
-        result.hasName = false;
-        result.name_ = "";
-        return this;
-      }
-
-      public bool HasId {
-        get { return result.hasId; }
-      }
-      public int Id {
-        get { return result.Id; }
-        set { SetId(value); }
-      }
-      public Builder SetId(int value) {
-        PrepareBuilder();
-        result.hasId = true;
-        result.id_ = value;
-        return this;
-      }
-      public Builder ClearId() {
-        PrepareBuilder();
-        result.hasId = false;
-        result.id_ = 0;
-        return this;
-      }
-
-      public bool HasEmail {
-        get { return result.hasEmail; }
-      }
-      public string Email {
-        get { return result.Email; }
-        set { SetEmail(value); }
-      }
-      public Builder SetEmail(string value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasEmail = true;
-        result.email_ = value;
-        return this;
-      }
-      public Builder ClearEmail() {
-        PrepareBuilder();
-        result.hasEmail = false;
-        result.email_ = "";
-        return this;
-      }
-
-      public pbc::IPopsicleList<int> CodesList {
-        get { return PrepareBuilder().codes_; }
-      }
-      public int CodesCount {
-        get { return result.CodesCount; }
-      }
-      public int GetCodes(int index) {
-        return result.GetCodes(index);
-      }
-      public Builder SetCodes(int index, int value) {
-        PrepareBuilder();
-        result.codes_[index] = value;
-        return this;
-      }
-      public Builder AddCodes(int value) {
-        PrepareBuilder();
-        result.codes_.Add(value);
-        return this;
-      }
-      public Builder AddRangeCodes(scg::IEnumerable<int> values) {
-        PrepareBuilder();
-        result.codes_.Add(values);
-        return this;
-      }
-      public Builder ClearCodes() {
-        PrepareBuilder();
-        result.codes_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<global::Google.ProtocolBuffers.TestProtos.TestInteropPersonLite.Types.PhoneNumber> PhoneList {
-        get { return PrepareBuilder().phone_; }
-      }
-      public int PhoneCount {
-        get { return result.PhoneCount; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.TestInteropPersonLite.Types.PhoneNumber GetPhone(int index) {
-        return result.GetPhone(index);
-      }
-      public Builder SetPhone(int index, global::Google.ProtocolBuffers.TestProtos.TestInteropPersonLite.Types.PhoneNumber value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.phone_[index] = value;
-        return this;
-      }
-      public Builder SetPhone(int index, global::Google.ProtocolBuffers.TestProtos.TestInteropPersonLite.Types.PhoneNumber.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.phone_[index] = builderForValue.Build();
-        return this;
-      }
-      public Builder AddPhone(global::Google.ProtocolBuffers.TestProtos.TestInteropPersonLite.Types.PhoneNumber value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.phone_.Add(value);
-        return this;
-      }
-      public Builder AddPhone(global::Google.ProtocolBuffers.TestProtos.TestInteropPersonLite.Types.PhoneNumber.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.phone_.Add(builderForValue.Build());
-        return this;
-      }
-      public Builder AddRangePhone(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.TestInteropPersonLite.Types.PhoneNumber> values) {
-        PrepareBuilder();
-        result.phone_.Add(values);
-        return this;
-      }
-      public Builder ClearPhone() {
-        PrepareBuilder();
-        result.phone_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<global::Google.ProtocolBuffers.TestProtos.TestInteropPersonLite.Types.Addresses> AddressesList {
-        get { return PrepareBuilder().addresses_; }
-      }
-      public int AddressesCount {
-        get { return result.AddressesCount; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.TestInteropPersonLite.Types.Addresses GetAddresses(int index) {
-        return result.GetAddresses(index);
-      }
-      public Builder SetAddresses(int index, global::Google.ProtocolBuffers.TestProtos.TestInteropPersonLite.Types.Addresses value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.addresses_[index] = value;
-        return this;
-      }
-      public Builder SetAddresses(int index, global::Google.ProtocolBuffers.TestProtos.TestInteropPersonLite.Types.Addresses.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.addresses_[index] = builderForValue.Build();
-        return this;
-      }
-      public Builder AddAddresses(global::Google.ProtocolBuffers.TestProtos.TestInteropPersonLite.Types.Addresses value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.addresses_.Add(value);
-        return this;
-      }
-      public Builder AddAddresses(global::Google.ProtocolBuffers.TestProtos.TestInteropPersonLite.Types.Addresses.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.addresses_.Add(builderForValue.Build());
-        return this;
-      }
-      public Builder AddRangeAddresses(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.TestInteropPersonLite.Types.Addresses> values) {
-        PrepareBuilder();
-        result.addresses_.Add(values);
-        return this;
-      }
-      public Builder ClearAddresses() {
-        PrepareBuilder();
-        result.addresses_.Clear();
-        return this;
-      }
-    }
-    static TestInteropPersonLite() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnittestExtrasLite.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class TestInteropEmployeeIdLite : pb::GeneratedMessageLite<TestInteropEmployeeIdLite, TestInteropEmployeeIdLite.Builder> {
-    private TestInteropEmployeeIdLite() { }
-    private static readonly TestInteropEmployeeIdLite defaultInstance = new TestInteropEmployeeIdLite().MakeReadOnly();
-    private static readonly string[] _testInteropEmployeeIdLiteFieldNames = new string[] { "number" };
-    private static readonly uint[] _testInteropEmployeeIdLiteFieldTags = new uint[] { 10 };
-    public static TestInteropEmployeeIdLite DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override TestInteropEmployeeIdLite DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override TestInteropEmployeeIdLite ThisMessage {
-      get { return this; }
-    }
-
-    public const int NumberFieldNumber = 1;
-    private bool hasNumber;
-    private string number_ = "";
-    public bool HasNumber {
-      get { return hasNumber; }
-    }
-    public string 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 = _testInteropEmployeeIdLiteFieldNames;
-      if (hasNumber) {
-        output.WriteString(1, field_names[0], Number);
-      }
-    }
-
-    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.ComputeStringSize(1, Number);
-      }
-      memoizedSerializedSize = size;
-      return size;
-    }
-    #region Lite runtime methods
-    public override int GetHashCode() {
-      int hash = GetType().GetHashCode();
-      if (hasNumber) {
-        hash ^= number_.GetHashCode();
-      }
-      return hash;
-    }
-
-    public override bool Equals(object obj) {
-      TestInteropEmployeeIdLite other = obj as TestInteropEmployeeIdLite;
-      if (other == null) return false;
-      if (hasNumber != other.hasNumber || (hasNumber && !number_.Equals(other.number_))) return false;
-      return true;
-    }
-
-    public override void PrintTo(global::System.IO.TextWriter writer) {
-      PrintField("number", hasNumber, number_, writer);
-    }
-    #endregion
-
-    public static TestInteropEmployeeIdLite ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestInteropEmployeeIdLite ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestInteropEmployeeIdLite ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestInteropEmployeeIdLite ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestInteropEmployeeIdLite ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestInteropEmployeeIdLite ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static TestInteropEmployeeIdLite ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static TestInteropEmployeeIdLite ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static TestInteropEmployeeIdLite ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestInteropEmployeeIdLite ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private TestInteropEmployeeIdLite 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(TestInteropEmployeeIdLite prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilderLite<TestInteropEmployeeIdLite, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(TestInteropEmployeeIdLite cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private TestInteropEmployeeIdLite result;
-
-      private TestInteropEmployeeIdLite PrepareBuilder() {
-        if (resultIsReadOnly) {
-          TestInteropEmployeeIdLite original = result;
-          result = new TestInteropEmployeeIdLite();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override TestInteropEmployeeIdLite 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 TestInteropEmployeeIdLite DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.TestInteropEmployeeIdLite.DefaultInstance; }
-      }
-
-      public override TestInteropEmployeeIdLite BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessageLite other) {
-        if (other is TestInteropEmployeeIdLite) {
-          return MergeFrom((TestInteropEmployeeIdLite) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(TestInteropEmployeeIdLite other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.TestInteropEmployeeIdLite.DefaultInstance) return this;
-        PrepareBuilder();
-        if (other.HasNumber) {
-          Number = other.Number;
-        }
-        return this;
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input) {
-        return MergeFrom(input, pb::ExtensionRegistry.Empty);
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-        PrepareBuilder();
-        uint tag;
-        string field_name;
-        while (input.ReadTag(out tag, out field_name)) {
-          if(tag == 0 && field_name != null) {
-            int field_ordinal = global::System.Array.BinarySearch(_testInteropEmployeeIdLiteFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _testInteropEmployeeIdLiteFieldTags[field_ordinal];
-            else {
-              ParseUnknownField(input, extensionRegistry, tag, field_name);
-              continue;
-            }
-          }
-          switch (tag) {
-            case 0: {
-              throw pb::InvalidProtocolBufferException.InvalidTag();
-            }
-            default: {
-              if (pb::WireFormat.IsEndGroupTag(tag)) {
-                return this;
-              }
-              ParseUnknownField(input, extensionRegistry, tag, field_name);
-              break;
-            }
-            case 10: {
-              result.hasNumber = input.ReadString(ref result.number_);
-              break;
-            }
-          }
-        }
-
-        return this;
-      }
-
-
-      public bool HasNumber {
-        get { return result.hasNumber; }
-      }
-      public string Number {
-        get { return result.Number; }
-        set { SetNumber(value); }
-      }
-      public Builder SetNumber(string value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasNumber = true;
-        result.number_ = value;
-        return this;
-      }
-      public Builder ClearNumber() {
-        PrepareBuilder();
-        result.hasNumber = false;
-        result.number_ = "";
-        return this;
-      }
-    }
-    static TestInteropEmployeeIdLite() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnittestExtrasLite.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class TestUnpackedExtensionsLite : pb::ExtendableMessageLite<TestUnpackedExtensionsLite, TestUnpackedExtensionsLite.Builder> {
-    private TestUnpackedExtensionsLite() { }
-    private static readonly TestUnpackedExtensionsLite defaultInstance = new TestUnpackedExtensionsLite().MakeReadOnly();
-    private static readonly string[] _testUnpackedExtensionsLiteFieldNames = new string[] {  };
-    private static readonly uint[] _testUnpackedExtensionsLiteFieldTags = new uint[] {  };
-    public static TestUnpackedExtensionsLite DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override TestUnpackedExtensionsLite DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override TestUnpackedExtensionsLite ThisMessage {
-      get { return this; }
-    }
-
-    public override bool IsInitialized {
-      get {
-        if (!ExtensionsAreInitialized) return false;
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _testUnpackedExtensionsLiteFieldNames;
-      pb::ExtendableMessageLite<TestUnpackedExtensionsLite, TestUnpackedExtensionsLite.Builder>.ExtensionWriter extensionWriter = CreateExtensionWriter(this);
-      extensionWriter.WriteUntil(536870912, output);
-    }
-
-    private int memoizedSerializedSize = -1;
-    public override int SerializedSize {
-      get {
-        int size = memoizedSerializedSize;
-        if (size != -1) return size;
-        return CalcSerializedSize();
-      }
-    }
-
-    private int CalcSerializedSize() {
-      int size = memoizedSerializedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      size += ExtensionsSerializedSize;
-      memoizedSerializedSize = size;
-      return size;
-    }
-    #region Lite runtime methods
-    public override int GetHashCode() {
-      int hash = GetType().GetHashCode();
-      hash ^= base.GetHashCode();
-      return hash;
-    }
-
-    public override bool Equals(object obj) {
-      TestUnpackedExtensionsLite other = obj as TestUnpackedExtensionsLite;
-      if (other == null) return false;
-      if (!base.Equals(other)) return false;
-      return true;
-    }
-
-    public override void PrintTo(global::System.IO.TextWriter writer) {
-      base.PrintTo(writer);
-    }
-    #endregion
-
-    public static TestUnpackedExtensionsLite ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestUnpackedExtensionsLite ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestUnpackedExtensionsLite ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestUnpackedExtensionsLite ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestUnpackedExtensionsLite ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestUnpackedExtensionsLite ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static TestUnpackedExtensionsLite ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static TestUnpackedExtensionsLite ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static TestUnpackedExtensionsLite ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestUnpackedExtensionsLite ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private TestUnpackedExtensionsLite MakeReadOnly() {
-      return this;
-    }
-
-    public static Builder CreateBuilder() { return new Builder(); }
-    public override Builder ToBuilder() { return CreateBuilder(this); }
-    public override Builder CreateBuilderForType() { return new Builder(); }
-    public static Builder CreateBuilder(TestUnpackedExtensionsLite prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::ExtendableBuilderLite<TestUnpackedExtensionsLite, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(TestUnpackedExtensionsLite cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private TestUnpackedExtensionsLite result;
-
-      private TestUnpackedExtensionsLite PrepareBuilder() {
-        if (resultIsReadOnly) {
-          TestUnpackedExtensionsLite original = result;
-          result = new TestUnpackedExtensionsLite();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override TestUnpackedExtensionsLite MessageBeingBuilt {
-        get { return PrepareBuilder(); }
-      }
-
-      public override Builder Clear() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-        return this;
-      }
-
-      public override Builder Clone() {
-        if (resultIsReadOnly) {
-          return new Builder(result);
-        } else {
-          return new Builder().MergeFrom(result);
-        }
-      }
-
-      public override TestUnpackedExtensionsLite DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite.DefaultInstance; }
-      }
-
-      public override TestUnpackedExtensionsLite BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessageLite other) {
-        if (other is TestUnpackedExtensionsLite) {
-          return MergeFrom((TestUnpackedExtensionsLite) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(TestUnpackedExtensionsLite other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensionsLite.DefaultInstance) return this;
-        PrepareBuilder();
-          this.MergeExtensionFields(other);
-        return this;
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input) {
-        return MergeFrom(input, pb::ExtensionRegistry.Empty);
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-        PrepareBuilder();
-        uint tag;
-        string field_name;
-        while (input.ReadTag(out tag, out field_name)) {
-          if(tag == 0 && field_name != null) {
-            int field_ordinal = global::System.Array.BinarySearch(_testUnpackedExtensionsLiteFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _testUnpackedExtensionsLiteFieldTags[field_ordinal];
-            else {
-              ParseUnknownField(input, extensionRegistry, tag, field_name);
-              continue;
-            }
-          }
-          switch (tag) {
-            case 0: {
-              throw pb::InvalidProtocolBufferException.InvalidTag();
-            }
-            default: {
-              if (pb::WireFormat.IsEndGroupTag(tag)) {
-                return this;
-              }
-              ParseUnknownField(input, extensionRegistry, tag, field_name);
-              break;
-            }
-          }
-        }
-
-        return this;
-      }
-
-    }
-    static TestUnpackedExtensionsLite() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnittestExtrasLite.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class TestUnpackedTypesLite : pb::GeneratedMessageLite<TestUnpackedTypesLite, TestUnpackedTypesLite.Builder> {
-    private TestUnpackedTypesLite() { }
-    private static readonly TestUnpackedTypesLite defaultInstance = new TestUnpackedTypesLite().MakeReadOnly();
-    private static readonly string[] _testUnpackedTypesLiteFieldNames = new string[] { "unpacked_bool", "unpacked_double", "unpacked_enum", "unpacked_fixed32", "unpacked_fixed64", "unpacked_float", "unpacked_int32", "unpacked_int64", "unpacked_sfixed32", "unpacked_sfixed64", "unpacked_sint32", "unpacked_sint64", "unpacked_uint32", "unpacked_uint64" };
-    private static readonly uint[] _testUnpackedTypesLiteFieldTags = new uint[] { 816, 809, 824, 773, 777, 805, 720, 728, 789, 793, 752, 760, 736, 744 };
-    public static TestUnpackedTypesLite DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override TestUnpackedTypesLite DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override TestUnpackedTypesLite ThisMessage {
-      get { return this; }
-    }
-
-    public const int UnpackedInt32FieldNumber = 90;
-    private pbc::PopsicleList<int> unpackedInt32_ = new pbc::PopsicleList<int>();
-    public scg::IList<int> UnpackedInt32List {
-      get { return pbc::Lists.AsReadOnly(unpackedInt32_); }
-    }
-    public int UnpackedInt32Count {
-      get { return unpackedInt32_.Count; }
-    }
-    public int GetUnpackedInt32(int index) {
-      return unpackedInt32_[index];
-    }
-
-    public const int UnpackedInt64FieldNumber = 91;
-    private pbc::PopsicleList<long> unpackedInt64_ = new pbc::PopsicleList<long>();
-    public scg::IList<long> UnpackedInt64List {
-      get { return pbc::Lists.AsReadOnly(unpackedInt64_); }
-    }
-    public int UnpackedInt64Count {
-      get { return unpackedInt64_.Count; }
-    }
-    public long GetUnpackedInt64(int index) {
-      return unpackedInt64_[index];
-    }
-
-    public const int UnpackedUint32FieldNumber = 92;
-    private pbc::PopsicleList<uint> unpackedUint32_ = new pbc::PopsicleList<uint>();
-    public scg::IList<uint> UnpackedUint32List {
-      get { return pbc::Lists.AsReadOnly(unpackedUint32_); }
-    }
-    public int UnpackedUint32Count {
-      get { return unpackedUint32_.Count; }
-    }
-    public uint GetUnpackedUint32(int index) {
-      return unpackedUint32_[index];
-    }
-
-    public const int UnpackedUint64FieldNumber = 93;
-    private pbc::PopsicleList<ulong> unpackedUint64_ = new pbc::PopsicleList<ulong>();
-    public scg::IList<ulong> UnpackedUint64List {
-      get { return pbc::Lists.AsReadOnly(unpackedUint64_); }
-    }
-    public int UnpackedUint64Count {
-      get { return unpackedUint64_.Count; }
-    }
-    public ulong GetUnpackedUint64(int index) {
-      return unpackedUint64_[index];
-    }
-
-    public const int UnpackedSint32FieldNumber = 94;
-    private pbc::PopsicleList<int> unpackedSint32_ = new pbc::PopsicleList<int>();
-    public scg::IList<int> UnpackedSint32List {
-      get { return pbc::Lists.AsReadOnly(unpackedSint32_); }
-    }
-    public int UnpackedSint32Count {
-      get { return unpackedSint32_.Count; }
-    }
-    public int GetUnpackedSint32(int index) {
-      return unpackedSint32_[index];
-    }
-
-    public const int UnpackedSint64FieldNumber = 95;
-    private pbc::PopsicleList<long> unpackedSint64_ = new pbc::PopsicleList<long>();
-    public scg::IList<long> UnpackedSint64List {
-      get { return pbc::Lists.AsReadOnly(unpackedSint64_); }
-    }
-    public int UnpackedSint64Count {
-      get { return unpackedSint64_.Count; }
-    }
-    public long GetUnpackedSint64(int index) {
-      return unpackedSint64_[index];
-    }
-
-    public const int UnpackedFixed32FieldNumber = 96;
-    private pbc::PopsicleList<uint> unpackedFixed32_ = new pbc::PopsicleList<uint>();
-    public scg::IList<uint> UnpackedFixed32List {
-      get { return pbc::Lists.AsReadOnly(unpackedFixed32_); }
-    }
-    public int UnpackedFixed32Count {
-      get { return unpackedFixed32_.Count; }
-    }
-    public uint GetUnpackedFixed32(int index) {
-      return unpackedFixed32_[index];
-    }
-
-    public const int UnpackedFixed64FieldNumber = 97;
-    private pbc::PopsicleList<ulong> unpackedFixed64_ = new pbc::PopsicleList<ulong>();
-    public scg::IList<ulong> UnpackedFixed64List {
-      get { return pbc::Lists.AsReadOnly(unpackedFixed64_); }
-    }
-    public int UnpackedFixed64Count {
-      get { return unpackedFixed64_.Count; }
-    }
-    public ulong GetUnpackedFixed64(int index) {
-      return unpackedFixed64_[index];
-    }
-
-    public const int UnpackedSfixed32FieldNumber = 98;
-    private pbc::PopsicleList<int> unpackedSfixed32_ = new pbc::PopsicleList<int>();
-    public scg::IList<int> UnpackedSfixed32List {
-      get { return pbc::Lists.AsReadOnly(unpackedSfixed32_); }
-    }
-    public int UnpackedSfixed32Count {
-      get { return unpackedSfixed32_.Count; }
-    }
-    public int GetUnpackedSfixed32(int index) {
-      return unpackedSfixed32_[index];
-    }
-
-    public const int UnpackedSfixed64FieldNumber = 99;
-    private pbc::PopsicleList<long> unpackedSfixed64_ = new pbc::PopsicleList<long>();
-    public scg::IList<long> UnpackedSfixed64List {
-      get { return pbc::Lists.AsReadOnly(unpackedSfixed64_); }
-    }
-    public int UnpackedSfixed64Count {
-      get { return unpackedSfixed64_.Count; }
-    }
-    public long GetUnpackedSfixed64(int index) {
-      return unpackedSfixed64_[index];
-    }
-
-    public const int UnpackedFloatFieldNumber = 100;
-    private pbc::PopsicleList<float> unpackedFloat_ = new pbc::PopsicleList<float>();
-    public scg::IList<float> UnpackedFloatList {
-      get { return pbc::Lists.AsReadOnly(unpackedFloat_); }
-    }
-    public int UnpackedFloatCount {
-      get { return unpackedFloat_.Count; }
-    }
-    public float GetUnpackedFloat(int index) {
-      return unpackedFloat_[index];
-    }
-
-    public const int UnpackedDoubleFieldNumber = 101;
-    private pbc::PopsicleList<double> unpackedDouble_ = new pbc::PopsicleList<double>();
-    public scg::IList<double> UnpackedDoubleList {
-      get { return pbc::Lists.AsReadOnly(unpackedDouble_); }
-    }
-    public int UnpackedDoubleCount {
-      get { return unpackedDouble_.Count; }
-    }
-    public double GetUnpackedDouble(int index) {
-      return unpackedDouble_[index];
-    }
-
-    public const int UnpackedBoolFieldNumber = 102;
-    private pbc::PopsicleList<bool> unpackedBool_ = new pbc::PopsicleList<bool>();
-    public scg::IList<bool> UnpackedBoolList {
-      get { return pbc::Lists.AsReadOnly(unpackedBool_); }
-    }
-    public int UnpackedBoolCount {
-      get { return unpackedBool_.Count; }
-    }
-    public bool GetUnpackedBool(int index) {
-      return unpackedBool_[index];
-    }
-
-    public const int UnpackedEnumFieldNumber = 103;
-    private pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.UnpackedTypesForeignEnumLite> unpackedEnum_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.UnpackedTypesForeignEnumLite>();
-    public scg::IList<global::Google.ProtocolBuffers.TestProtos.UnpackedTypesForeignEnumLite> UnpackedEnumList {
-      get { return pbc::Lists.AsReadOnly(unpackedEnum_); }
-    }
-    public int UnpackedEnumCount {
-      get { return unpackedEnum_.Count; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.UnpackedTypesForeignEnumLite GetUnpackedEnum(int index) {
-      return unpackedEnum_[index];
-    }
-
-    public override bool IsInitialized {
-      get {
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _testUnpackedTypesLiteFieldNames;
-      if (unpackedInt32_.Count > 0) {
-        output.WriteInt32Array(90, field_names[6], unpackedInt32_);
-      }
-      if (unpackedInt64_.Count > 0) {
-        output.WriteInt64Array(91, field_names[7], unpackedInt64_);
-      }
-      if (unpackedUint32_.Count > 0) {
-        output.WriteUInt32Array(92, field_names[12], unpackedUint32_);
-      }
-      if (unpackedUint64_.Count > 0) {
-        output.WriteUInt64Array(93, field_names[13], unpackedUint64_);
-      }
-      if (unpackedSint32_.Count > 0) {
-        output.WriteSInt32Array(94, field_names[10], unpackedSint32_);
-      }
-      if (unpackedSint64_.Count > 0) {
-        output.WriteSInt64Array(95, field_names[11], unpackedSint64_);
-      }
-      if (unpackedFixed32_.Count > 0) {
-        output.WriteFixed32Array(96, field_names[3], unpackedFixed32_);
-      }
-      if (unpackedFixed64_.Count > 0) {
-        output.WriteFixed64Array(97, field_names[4], unpackedFixed64_);
-      }
-      if (unpackedSfixed32_.Count > 0) {
-        output.WriteSFixed32Array(98, field_names[8], unpackedSfixed32_);
-      }
-      if (unpackedSfixed64_.Count > 0) {
-        output.WriteSFixed64Array(99, field_names[9], unpackedSfixed64_);
-      }
-      if (unpackedFloat_.Count > 0) {
-        output.WriteFloatArray(100, field_names[5], unpackedFloat_);
-      }
-      if (unpackedDouble_.Count > 0) {
-        output.WriteDoubleArray(101, field_names[1], unpackedDouble_);
-      }
-      if (unpackedBool_.Count > 0) {
-        output.WriteBoolArray(102, field_names[0], unpackedBool_);
-      }
-      if (unpackedEnum_.Count > 0) {
-        output.WriteEnumArray(103, field_names[2], unpackedEnum_);
-      }
-    }
-
-    private int memoizedSerializedSize = -1;
-    public override int SerializedSize {
-      get {
-        int size = memoizedSerializedSize;
-        if (size != -1) return size;
-        return CalcSerializedSize();
-      }
-    }
-
-    private int CalcSerializedSize() {
-      int size = memoizedSerializedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      {
-        int dataSize = 0;
-        foreach (int element in UnpackedInt32List) {
-          dataSize += pb::CodedOutputStream.ComputeInt32SizeNoTag(element);
-        }
-        size += dataSize;
-        size += 2 * unpackedInt32_.Count;
-      }
-      {
-        int dataSize = 0;
-        foreach (long element in UnpackedInt64List) {
-          dataSize += pb::CodedOutputStream.ComputeInt64SizeNoTag(element);
-        }
-        size += dataSize;
-        size += 2 * unpackedInt64_.Count;
-      }
-      {
-        int dataSize = 0;
-        foreach (uint element in UnpackedUint32List) {
-          dataSize += pb::CodedOutputStream.ComputeUInt32SizeNoTag(element);
-        }
-        size += dataSize;
-        size += 2 * unpackedUint32_.Count;
-      }
-      {
-        int dataSize = 0;
-        foreach (ulong element in UnpackedUint64List) {
-          dataSize += pb::CodedOutputStream.ComputeUInt64SizeNoTag(element);
-        }
-        size += dataSize;
-        size += 2 * unpackedUint64_.Count;
-      }
-      {
-        int dataSize = 0;
-        foreach (int element in UnpackedSint32List) {
-          dataSize += pb::CodedOutputStream.ComputeSInt32SizeNoTag(element);
-        }
-        size += dataSize;
-        size += 2 * unpackedSint32_.Count;
-      }
-      {
-        int dataSize = 0;
-        foreach (long element in UnpackedSint64List) {
-          dataSize += pb::CodedOutputStream.ComputeSInt64SizeNoTag(element);
-        }
-        size += dataSize;
-        size += 2 * unpackedSint64_.Count;
-      }
-      {
-        int dataSize = 0;
-        dataSize = 4 * unpackedFixed32_.Count;
-        size += dataSize;
-        size += 2 * unpackedFixed32_.Count;
-      }
-      {
-        int dataSize = 0;
-        dataSize = 8 * unpackedFixed64_.Count;
-        size += dataSize;
-        size += 2 * unpackedFixed64_.Count;
-      }
-      {
-        int dataSize = 0;
-        dataSize = 4 * unpackedSfixed32_.Count;
-        size += dataSize;
-        size += 2 * unpackedSfixed32_.Count;
-      }
-      {
-        int dataSize = 0;
-        dataSize = 8 * unpackedSfixed64_.Count;
-        size += dataSize;
-        size += 2 * unpackedSfixed64_.Count;
-      }
-      {
-        int dataSize = 0;
-        dataSize = 4 * unpackedFloat_.Count;
-        size += dataSize;
-        size += 2 * unpackedFloat_.Count;
-      }
-      {
-        int dataSize = 0;
-        dataSize = 8 * unpackedDouble_.Count;
-        size += dataSize;
-        size += 2 * unpackedDouble_.Count;
-      }
-      {
-        int dataSize = 0;
-        dataSize = 1 * unpackedBool_.Count;
-        size += dataSize;
-        size += 2 * unpackedBool_.Count;
-      }
-      {
-        int dataSize = 0;
-        if (unpackedEnum_.Count > 0) {
-          foreach (global::Google.ProtocolBuffers.TestProtos.UnpackedTypesForeignEnumLite element in unpackedEnum_) {
-            dataSize += pb::CodedOutputStream.ComputeEnumSizeNoTag((int) element);
-          }
-          size += dataSize;
-          size += 2 * unpackedEnum_.Count;
-        }
-      }
-      memoizedSerializedSize = size;
-      return size;
-    }
-    #region Lite runtime methods
-    public override int GetHashCode() {
-      int hash = GetType().GetHashCode();
-      foreach(int i in unpackedInt32_)
-        hash ^= i.GetHashCode();
-      foreach(long i in unpackedInt64_)
-        hash ^= i.GetHashCode();
-      foreach(uint i in unpackedUint32_)
-        hash ^= i.GetHashCode();
-      foreach(ulong i in unpackedUint64_)
-        hash ^= i.GetHashCode();
-      foreach(int i in unpackedSint32_)
-        hash ^= i.GetHashCode();
-      foreach(long i in unpackedSint64_)
-        hash ^= i.GetHashCode();
-      foreach(uint i in unpackedFixed32_)
-        hash ^= i.GetHashCode();
-      foreach(ulong i in unpackedFixed64_)
-        hash ^= i.GetHashCode();
-      foreach(int i in unpackedSfixed32_)
-        hash ^= i.GetHashCode();
-      foreach(long i in unpackedSfixed64_)
-        hash ^= i.GetHashCode();
-      foreach(float i in unpackedFloat_)
-        hash ^= i.GetHashCode();
-      foreach(double i in unpackedDouble_)
-        hash ^= i.GetHashCode();
-      foreach(bool i in unpackedBool_)
-        hash ^= i.GetHashCode();
-      foreach(global::Google.ProtocolBuffers.TestProtos.UnpackedTypesForeignEnumLite i in unpackedEnum_)
-        hash ^= i.GetHashCode();
-      return hash;
-    }
-
-    public override bool Equals(object obj) {
-      TestUnpackedTypesLite other = obj as TestUnpackedTypesLite;
-      if (other == null) return false;
-      if(unpackedInt32_.Count != other.unpackedInt32_.Count) return false;
-      for(int ix=0; ix < unpackedInt32_.Count; ix++)
-        if(!unpackedInt32_[ix].Equals(other.unpackedInt32_[ix])) return false;
-      if(unpackedInt64_.Count != other.unpackedInt64_.Count) return false;
-      for(int ix=0; ix < unpackedInt64_.Count; ix++)
-        if(!unpackedInt64_[ix].Equals(other.unpackedInt64_[ix])) return false;
-      if(unpackedUint32_.Count != other.unpackedUint32_.Count) return false;
-      for(int ix=0; ix < unpackedUint32_.Count; ix++)
-        if(!unpackedUint32_[ix].Equals(other.unpackedUint32_[ix])) return false;
-      if(unpackedUint64_.Count != other.unpackedUint64_.Count) return false;
-      for(int ix=0; ix < unpackedUint64_.Count; ix++)
-        if(!unpackedUint64_[ix].Equals(other.unpackedUint64_[ix])) return false;
-      if(unpackedSint32_.Count != other.unpackedSint32_.Count) return false;
-      for(int ix=0; ix < unpackedSint32_.Count; ix++)
-        if(!unpackedSint32_[ix].Equals(other.unpackedSint32_[ix])) return false;
-      if(unpackedSint64_.Count != other.unpackedSint64_.Count) return false;
-      for(int ix=0; ix < unpackedSint64_.Count; ix++)
-        if(!unpackedSint64_[ix].Equals(other.unpackedSint64_[ix])) return false;
-      if(unpackedFixed32_.Count != other.unpackedFixed32_.Count) return false;
-      for(int ix=0; ix < unpackedFixed32_.Count; ix++)
-        if(!unpackedFixed32_[ix].Equals(other.unpackedFixed32_[ix])) return false;
-      if(unpackedFixed64_.Count != other.unpackedFixed64_.Count) return false;
-      for(int ix=0; ix < unpackedFixed64_.Count; ix++)
-        if(!unpackedFixed64_[ix].Equals(other.unpackedFixed64_[ix])) return false;
-      if(unpackedSfixed32_.Count != other.unpackedSfixed32_.Count) return false;
-      for(int ix=0; ix < unpackedSfixed32_.Count; ix++)
-        if(!unpackedSfixed32_[ix].Equals(other.unpackedSfixed32_[ix])) return false;
-      if(unpackedSfixed64_.Count != other.unpackedSfixed64_.Count) return false;
-      for(int ix=0; ix < unpackedSfixed64_.Count; ix++)
-        if(!unpackedSfixed64_[ix].Equals(other.unpackedSfixed64_[ix])) return false;
-      if(unpackedFloat_.Count != other.unpackedFloat_.Count) return false;
-      for(int ix=0; ix < unpackedFloat_.Count; ix++)
-        if(!unpackedFloat_[ix].Equals(other.unpackedFloat_[ix])) return false;
-      if(unpackedDouble_.Count != other.unpackedDouble_.Count) return false;
-      for(int ix=0; ix < unpackedDouble_.Count; ix++)
-        if(!unpackedDouble_[ix].Equals(other.unpackedDouble_[ix])) return false;
-      if(unpackedBool_.Count != other.unpackedBool_.Count) return false;
-      for(int ix=0; ix < unpackedBool_.Count; ix++)
-        if(!unpackedBool_[ix].Equals(other.unpackedBool_[ix])) return false;
-      if(unpackedEnum_.Count != other.unpackedEnum_.Count) return false;
-      for(int ix=0; ix < unpackedEnum_.Count; ix++)
-        if(!unpackedEnum_[ix].Equals(other.unpackedEnum_[ix])) return false;
-      return true;
-    }
-
-    public override void PrintTo(global::System.IO.TextWriter writer) {
-      PrintField("unpacked_int32", unpackedInt32_, writer);
-      PrintField("unpacked_int64", unpackedInt64_, writer);
-      PrintField("unpacked_uint32", unpackedUint32_, writer);
-      PrintField("unpacked_uint64", unpackedUint64_, writer);
-      PrintField("unpacked_sint32", unpackedSint32_, writer);
-      PrintField("unpacked_sint64", unpackedSint64_, writer);
-      PrintField("unpacked_fixed32", unpackedFixed32_, writer);
-      PrintField("unpacked_fixed64", unpackedFixed64_, writer);
-      PrintField("unpacked_sfixed32", unpackedSfixed32_, writer);
-      PrintField("unpacked_sfixed64", unpackedSfixed64_, writer);
-      PrintField("unpacked_float", unpackedFloat_, writer);
-      PrintField("unpacked_double", unpackedDouble_, writer);
-      PrintField("unpacked_bool", unpackedBool_, writer);
-      PrintField("unpacked_enum", unpackedEnum_, writer);
-    }
-    #endregion
-
-    public static TestUnpackedTypesLite ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestUnpackedTypesLite ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestUnpackedTypesLite ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestUnpackedTypesLite ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestUnpackedTypesLite ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestUnpackedTypesLite ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static TestUnpackedTypesLite ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static TestUnpackedTypesLite ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static TestUnpackedTypesLite ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestUnpackedTypesLite ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private TestUnpackedTypesLite MakeReadOnly() {
-      unpackedInt32_.MakeReadOnly();
-      unpackedInt64_.MakeReadOnly();
-      unpackedUint32_.MakeReadOnly();
-      unpackedUint64_.MakeReadOnly();
-      unpackedSint32_.MakeReadOnly();
-      unpackedSint64_.MakeReadOnly();
-      unpackedFixed32_.MakeReadOnly();
-      unpackedFixed64_.MakeReadOnly();
-      unpackedSfixed32_.MakeReadOnly();
-      unpackedSfixed64_.MakeReadOnly();
-      unpackedFloat_.MakeReadOnly();
-      unpackedDouble_.MakeReadOnly();
-      unpackedBool_.MakeReadOnly();
-      unpackedEnum_.MakeReadOnly();
-      return this;
-    }
-
-    public static Builder CreateBuilder() { return new Builder(); }
-    public override Builder ToBuilder() { return CreateBuilder(this); }
-    public override Builder CreateBuilderForType() { return new Builder(); }
-    public static Builder CreateBuilder(TestUnpackedTypesLite prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilderLite<TestUnpackedTypesLite, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(TestUnpackedTypesLite cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private TestUnpackedTypesLite result;
-
-      private TestUnpackedTypesLite PrepareBuilder() {
-        if (resultIsReadOnly) {
-          TestUnpackedTypesLite original = result;
-          result = new TestUnpackedTypesLite();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override TestUnpackedTypesLite MessageBeingBuilt {
-        get { return PrepareBuilder(); }
-      }
-
-      public override Builder Clear() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-        return this;
-      }
-
-      public override Builder Clone() {
-        if (resultIsReadOnly) {
-          return new Builder(result);
-        } else {
-          return new Builder().MergeFrom(result);
-        }
-      }
-
-      public override TestUnpackedTypesLite DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.TestUnpackedTypesLite.DefaultInstance; }
-      }
-
-      public override TestUnpackedTypesLite BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessageLite other) {
-        if (other is TestUnpackedTypesLite) {
-          return MergeFrom((TestUnpackedTypesLite) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(TestUnpackedTypesLite other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.TestUnpackedTypesLite.DefaultInstance) return this;
-        PrepareBuilder();
-        if (other.unpackedInt32_.Count != 0) {
-          result.unpackedInt32_.Add(other.unpackedInt32_);
-        }
-        if (other.unpackedInt64_.Count != 0) {
-          result.unpackedInt64_.Add(other.unpackedInt64_);
-        }
-        if (other.unpackedUint32_.Count != 0) {
-          result.unpackedUint32_.Add(other.unpackedUint32_);
-        }
-        if (other.unpackedUint64_.Count != 0) {
-          result.unpackedUint64_.Add(other.unpackedUint64_);
-        }
-        if (other.unpackedSint32_.Count != 0) {
-          result.unpackedSint32_.Add(other.unpackedSint32_);
-        }
-        if (other.unpackedSint64_.Count != 0) {
-          result.unpackedSint64_.Add(other.unpackedSint64_);
-        }
-        if (other.unpackedFixed32_.Count != 0) {
-          result.unpackedFixed32_.Add(other.unpackedFixed32_);
-        }
-        if (other.unpackedFixed64_.Count != 0) {
-          result.unpackedFixed64_.Add(other.unpackedFixed64_);
-        }
-        if (other.unpackedSfixed32_.Count != 0) {
-          result.unpackedSfixed32_.Add(other.unpackedSfixed32_);
-        }
-        if (other.unpackedSfixed64_.Count != 0) {
-          result.unpackedSfixed64_.Add(other.unpackedSfixed64_);
-        }
-        if (other.unpackedFloat_.Count != 0) {
-          result.unpackedFloat_.Add(other.unpackedFloat_);
-        }
-        if (other.unpackedDouble_.Count != 0) {
-          result.unpackedDouble_.Add(other.unpackedDouble_);
-        }
-        if (other.unpackedBool_.Count != 0) {
-          result.unpackedBool_.Add(other.unpackedBool_);
-        }
-        if (other.unpackedEnum_.Count != 0) {
-          result.unpackedEnum_.Add(other.unpackedEnum_);
-        }
-        return this;
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input) {
-        return MergeFrom(input, pb::ExtensionRegistry.Empty);
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-        PrepareBuilder();
-        uint tag;
-        string field_name;
-        while (input.ReadTag(out tag, out field_name)) {
-          if(tag == 0 && field_name != null) {
-            int field_ordinal = global::System.Array.BinarySearch(_testUnpackedTypesLiteFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _testUnpackedTypesLiteFieldTags[field_ordinal];
-            else {
-              ParseUnknownField(input, extensionRegistry, tag, field_name);
-              continue;
-            }
-          }
-          switch (tag) {
-            case 0: {
-              throw pb::InvalidProtocolBufferException.InvalidTag();
-            }
-            default: {
-              if (pb::WireFormat.IsEndGroupTag(tag)) {
-                return this;
-              }
-              ParseUnknownField(input, extensionRegistry, tag, field_name);
-              break;
-            }
-            case 722:
-            case 720: {
-              input.ReadInt32Array(tag, field_name, result.unpackedInt32_);
-              break;
-            }
-            case 730:
-            case 728: {
-              input.ReadInt64Array(tag, field_name, result.unpackedInt64_);
-              break;
-            }
-            case 738:
-            case 736: {
-              input.ReadUInt32Array(tag, field_name, result.unpackedUint32_);
-              break;
-            }
-            case 746:
-            case 744: {
-              input.ReadUInt64Array(tag, field_name, result.unpackedUint64_);
-              break;
-            }
-            case 754:
-            case 752: {
-              input.ReadSInt32Array(tag, field_name, result.unpackedSint32_);
-              break;
-            }
-            case 762:
-            case 760: {
-              input.ReadSInt64Array(tag, field_name, result.unpackedSint64_);
-              break;
-            }
-            case 770:
-            case 773: {
-              input.ReadFixed32Array(tag, field_name, result.unpackedFixed32_);
-              break;
-            }
-            case 778:
-            case 777: {
-              input.ReadFixed64Array(tag, field_name, result.unpackedFixed64_);
-              break;
-            }
-            case 786:
-            case 789: {
-              input.ReadSFixed32Array(tag, field_name, result.unpackedSfixed32_);
-              break;
-            }
-            case 794:
-            case 793: {
-              input.ReadSFixed64Array(tag, field_name, result.unpackedSfixed64_);
-              break;
-            }
-            case 802:
-            case 805: {
-              input.ReadFloatArray(tag, field_name, result.unpackedFloat_);
-              break;
-            }
-            case 810:
-            case 809: {
-              input.ReadDoubleArray(tag, field_name, result.unpackedDouble_);
-              break;
-            }
-            case 818:
-            case 816: {
-              input.ReadBoolArray(tag, field_name, result.unpackedBool_);
-              break;
-            }
-            case 826:
-            case 824: {
-              scg::ICollection<object> unknownItems;
-              input.ReadEnumArray<global::Google.ProtocolBuffers.TestProtos.UnpackedTypesForeignEnumLite>(tag, field_name, result.unpackedEnum_, out unknownItems);
-              break;
-            }
-          }
-        }
-
-        return this;
-      }
-
-
-      public pbc::IPopsicleList<int> UnpackedInt32List {
-        get { return PrepareBuilder().unpackedInt32_; }
-      }
-      public int UnpackedInt32Count {
-        get { return result.UnpackedInt32Count; }
-      }
-      public int GetUnpackedInt32(int index) {
-        return result.GetUnpackedInt32(index);
-      }
-      public Builder SetUnpackedInt32(int index, int value) {
-        PrepareBuilder();
-        result.unpackedInt32_[index] = value;
-        return this;
-      }
-      public Builder AddUnpackedInt32(int value) {
-        PrepareBuilder();
-        result.unpackedInt32_.Add(value);
-        return this;
-      }
-      public Builder AddRangeUnpackedInt32(scg::IEnumerable<int> values) {
-        PrepareBuilder();
-        result.unpackedInt32_.Add(values);
-        return this;
-      }
-      public Builder ClearUnpackedInt32() {
-        PrepareBuilder();
-        result.unpackedInt32_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<long> UnpackedInt64List {
-        get { return PrepareBuilder().unpackedInt64_; }
-      }
-      public int UnpackedInt64Count {
-        get { return result.UnpackedInt64Count; }
-      }
-      public long GetUnpackedInt64(int index) {
-        return result.GetUnpackedInt64(index);
-      }
-      public Builder SetUnpackedInt64(int index, long value) {
-        PrepareBuilder();
-        result.unpackedInt64_[index] = value;
-        return this;
-      }
-      public Builder AddUnpackedInt64(long value) {
-        PrepareBuilder();
-        result.unpackedInt64_.Add(value);
-        return this;
-      }
-      public Builder AddRangeUnpackedInt64(scg::IEnumerable<long> values) {
-        PrepareBuilder();
-        result.unpackedInt64_.Add(values);
-        return this;
-      }
-      public Builder ClearUnpackedInt64() {
-        PrepareBuilder();
-        result.unpackedInt64_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<uint> UnpackedUint32List {
-        get { return PrepareBuilder().unpackedUint32_; }
-      }
-      public int UnpackedUint32Count {
-        get { return result.UnpackedUint32Count; }
-      }
-      public uint GetUnpackedUint32(int index) {
-        return result.GetUnpackedUint32(index);
-      }
-      public Builder SetUnpackedUint32(int index, uint value) {
-        PrepareBuilder();
-        result.unpackedUint32_[index] = value;
-        return this;
-      }
-      public Builder AddUnpackedUint32(uint value) {
-        PrepareBuilder();
-        result.unpackedUint32_.Add(value);
-        return this;
-      }
-      public Builder AddRangeUnpackedUint32(scg::IEnumerable<uint> values) {
-        PrepareBuilder();
-        result.unpackedUint32_.Add(values);
-        return this;
-      }
-      public Builder ClearUnpackedUint32() {
-        PrepareBuilder();
-        result.unpackedUint32_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<ulong> UnpackedUint64List {
-        get { return PrepareBuilder().unpackedUint64_; }
-      }
-      public int UnpackedUint64Count {
-        get { return result.UnpackedUint64Count; }
-      }
-      public ulong GetUnpackedUint64(int index) {
-        return result.GetUnpackedUint64(index);
-      }
-      public Builder SetUnpackedUint64(int index, ulong value) {
-        PrepareBuilder();
-        result.unpackedUint64_[index] = value;
-        return this;
-      }
-      public Builder AddUnpackedUint64(ulong value) {
-        PrepareBuilder();
-        result.unpackedUint64_.Add(value);
-        return this;
-      }
-      public Builder AddRangeUnpackedUint64(scg::IEnumerable<ulong> values) {
-        PrepareBuilder();
-        result.unpackedUint64_.Add(values);
-        return this;
-      }
-      public Builder ClearUnpackedUint64() {
-        PrepareBuilder();
-        result.unpackedUint64_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<int> UnpackedSint32List {
-        get { return PrepareBuilder().unpackedSint32_; }
-      }
-      public int UnpackedSint32Count {
-        get { return result.UnpackedSint32Count; }
-      }
-      public int GetUnpackedSint32(int index) {
-        return result.GetUnpackedSint32(index);
-      }
-      public Builder SetUnpackedSint32(int index, int value) {
-        PrepareBuilder();
-        result.unpackedSint32_[index] = value;
-        return this;
-      }
-      public Builder AddUnpackedSint32(int value) {
-        PrepareBuilder();
-        result.unpackedSint32_.Add(value);
-        return this;
-      }
-      public Builder AddRangeUnpackedSint32(scg::IEnumerable<int> values) {
-        PrepareBuilder();
-        result.unpackedSint32_.Add(values);
-        return this;
-      }
-      public Builder ClearUnpackedSint32() {
-        PrepareBuilder();
-        result.unpackedSint32_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<long> UnpackedSint64List {
-        get { return PrepareBuilder().unpackedSint64_; }
-      }
-      public int UnpackedSint64Count {
-        get { return result.UnpackedSint64Count; }
-      }
-      public long GetUnpackedSint64(int index) {
-        return result.GetUnpackedSint64(index);
-      }
-      public Builder SetUnpackedSint64(int index, long value) {
-        PrepareBuilder();
-        result.unpackedSint64_[index] = value;
-        return this;
-      }
-      public Builder AddUnpackedSint64(long value) {
-        PrepareBuilder();
-        result.unpackedSint64_.Add(value);
-        return this;
-      }
-      public Builder AddRangeUnpackedSint64(scg::IEnumerable<long> values) {
-        PrepareBuilder();
-        result.unpackedSint64_.Add(values);
-        return this;
-      }
-      public Builder ClearUnpackedSint64() {
-        PrepareBuilder();
-        result.unpackedSint64_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<uint> UnpackedFixed32List {
-        get { return PrepareBuilder().unpackedFixed32_; }
-      }
-      public int UnpackedFixed32Count {
-        get { return result.UnpackedFixed32Count; }
-      }
-      public uint GetUnpackedFixed32(int index) {
-        return result.GetUnpackedFixed32(index);
-      }
-      public Builder SetUnpackedFixed32(int index, uint value) {
-        PrepareBuilder();
-        result.unpackedFixed32_[index] = value;
-        return this;
-      }
-      public Builder AddUnpackedFixed32(uint value) {
-        PrepareBuilder();
-        result.unpackedFixed32_.Add(value);
-        return this;
-      }
-      public Builder AddRangeUnpackedFixed32(scg::IEnumerable<uint> values) {
-        PrepareBuilder();
-        result.unpackedFixed32_.Add(values);
-        return this;
-      }
-      public Builder ClearUnpackedFixed32() {
-        PrepareBuilder();
-        result.unpackedFixed32_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<ulong> UnpackedFixed64List {
-        get { return PrepareBuilder().unpackedFixed64_; }
-      }
-      public int UnpackedFixed64Count {
-        get { return result.UnpackedFixed64Count; }
-      }
-      public ulong GetUnpackedFixed64(int index) {
-        return result.GetUnpackedFixed64(index);
-      }
-      public Builder SetUnpackedFixed64(int index, ulong value) {
-        PrepareBuilder();
-        result.unpackedFixed64_[index] = value;
-        return this;
-      }
-      public Builder AddUnpackedFixed64(ulong value) {
-        PrepareBuilder();
-        result.unpackedFixed64_.Add(value);
-        return this;
-      }
-      public Builder AddRangeUnpackedFixed64(scg::IEnumerable<ulong> values) {
-        PrepareBuilder();
-        result.unpackedFixed64_.Add(values);
-        return this;
-      }
-      public Builder ClearUnpackedFixed64() {
-        PrepareBuilder();
-        result.unpackedFixed64_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<int> UnpackedSfixed32List {
-        get { return PrepareBuilder().unpackedSfixed32_; }
-      }
-      public int UnpackedSfixed32Count {
-        get { return result.UnpackedSfixed32Count; }
-      }
-      public int GetUnpackedSfixed32(int index) {
-        return result.GetUnpackedSfixed32(index);
-      }
-      public Builder SetUnpackedSfixed32(int index, int value) {
-        PrepareBuilder();
-        result.unpackedSfixed32_[index] = value;
-        return this;
-      }
-      public Builder AddUnpackedSfixed32(int value) {
-        PrepareBuilder();
-        result.unpackedSfixed32_.Add(value);
-        return this;
-      }
-      public Builder AddRangeUnpackedSfixed32(scg::IEnumerable<int> values) {
-        PrepareBuilder();
-        result.unpackedSfixed32_.Add(values);
-        return this;
-      }
-      public Builder ClearUnpackedSfixed32() {
-        PrepareBuilder();
-        result.unpackedSfixed32_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<long> UnpackedSfixed64List {
-        get { return PrepareBuilder().unpackedSfixed64_; }
-      }
-      public int UnpackedSfixed64Count {
-        get { return result.UnpackedSfixed64Count; }
-      }
-      public long GetUnpackedSfixed64(int index) {
-        return result.GetUnpackedSfixed64(index);
-      }
-      public Builder SetUnpackedSfixed64(int index, long value) {
-        PrepareBuilder();
-        result.unpackedSfixed64_[index] = value;
-        return this;
-      }
-      public Builder AddUnpackedSfixed64(long value) {
-        PrepareBuilder();
-        result.unpackedSfixed64_.Add(value);
-        return this;
-      }
-      public Builder AddRangeUnpackedSfixed64(scg::IEnumerable<long> values) {
-        PrepareBuilder();
-        result.unpackedSfixed64_.Add(values);
-        return this;
-      }
-      public Builder ClearUnpackedSfixed64() {
-        PrepareBuilder();
-        result.unpackedSfixed64_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<float> UnpackedFloatList {
-        get { return PrepareBuilder().unpackedFloat_; }
-      }
-      public int UnpackedFloatCount {
-        get { return result.UnpackedFloatCount; }
-      }
-      public float GetUnpackedFloat(int index) {
-        return result.GetUnpackedFloat(index);
-      }
-      public Builder SetUnpackedFloat(int index, float value) {
-        PrepareBuilder();
-        result.unpackedFloat_[index] = value;
-        return this;
-      }
-      public Builder AddUnpackedFloat(float value) {
-        PrepareBuilder();
-        result.unpackedFloat_.Add(value);
-        return this;
-      }
-      public Builder AddRangeUnpackedFloat(scg::IEnumerable<float> values) {
-        PrepareBuilder();
-        result.unpackedFloat_.Add(values);
-        return this;
-      }
-      public Builder ClearUnpackedFloat() {
-        PrepareBuilder();
-        result.unpackedFloat_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<double> UnpackedDoubleList {
-        get { return PrepareBuilder().unpackedDouble_; }
-      }
-      public int UnpackedDoubleCount {
-        get { return result.UnpackedDoubleCount; }
-      }
-      public double GetUnpackedDouble(int index) {
-        return result.GetUnpackedDouble(index);
-      }
-      public Builder SetUnpackedDouble(int index, double value) {
-        PrepareBuilder();
-        result.unpackedDouble_[index] = value;
-        return this;
-      }
-      public Builder AddUnpackedDouble(double value) {
-        PrepareBuilder();
-        result.unpackedDouble_.Add(value);
-        return this;
-      }
-      public Builder AddRangeUnpackedDouble(scg::IEnumerable<double> values) {
-        PrepareBuilder();
-        result.unpackedDouble_.Add(values);
-        return this;
-      }
-      public Builder ClearUnpackedDouble() {
-        PrepareBuilder();
-        result.unpackedDouble_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<bool> UnpackedBoolList {
-        get { return PrepareBuilder().unpackedBool_; }
-      }
-      public int UnpackedBoolCount {
-        get { return result.UnpackedBoolCount; }
-      }
-      public bool GetUnpackedBool(int index) {
-        return result.GetUnpackedBool(index);
-      }
-      public Builder SetUnpackedBool(int index, bool value) {
-        PrepareBuilder();
-        result.unpackedBool_[index] = value;
-        return this;
-      }
-      public Builder AddUnpackedBool(bool value) {
-        PrepareBuilder();
-        result.unpackedBool_.Add(value);
-        return this;
-      }
-      public Builder AddRangeUnpackedBool(scg::IEnumerable<bool> values) {
-        PrepareBuilder();
-        result.unpackedBool_.Add(values);
-        return this;
-      }
-      public Builder ClearUnpackedBool() {
-        PrepareBuilder();
-        result.unpackedBool_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<global::Google.ProtocolBuffers.TestProtos.UnpackedTypesForeignEnumLite> UnpackedEnumList {
-        get { return PrepareBuilder().unpackedEnum_; }
-      }
-      public int UnpackedEnumCount {
-        get { return result.UnpackedEnumCount; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.UnpackedTypesForeignEnumLite GetUnpackedEnum(int index) {
-        return result.GetUnpackedEnum(index);
-      }
-      public Builder SetUnpackedEnum(int index, global::Google.ProtocolBuffers.TestProtos.UnpackedTypesForeignEnumLite value) {
-        PrepareBuilder();
-        result.unpackedEnum_[index] = value;
-        return this;
-      }
-      public Builder AddUnpackedEnum(global::Google.ProtocolBuffers.TestProtos.UnpackedTypesForeignEnumLite value) {
-        PrepareBuilder();
-        result.unpackedEnum_.Add(value);
-        return this;
-      }
-      public Builder AddRangeUnpackedEnum(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.UnpackedTypesForeignEnumLite> values) {
-        PrepareBuilder();
-        result.unpackedEnum_.Add(values);
-        return this;
-      }
-      public Builder ClearUnpackedEnum() {
-        PrepareBuilder();
-        result.unpackedEnum_.Clear();
-        return this;
-      }
-    }
-    static TestUnpackedTypesLite() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnittestExtrasLite.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class BucketOfBytes : pb::GeneratedMessageLite<BucketOfBytes, BucketOfBytes.Builder> {
-    private BucketOfBytes() { }
-    private static readonly BucketOfBytes defaultInstance = new BucketOfBytes().MakeReadOnly();
-    private static readonly string[] _bucketOfBytesFieldNames = new string[] { "value" };
-    private static readonly uint[] _bucketOfBytesFieldTags = new uint[] { 10 };
-    public static BucketOfBytes DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override BucketOfBytes DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override BucketOfBytes ThisMessage {
-      get { return this; }
-    }
-
-    public const int ValueFieldNumber = 1;
-    private bool hasValue;
-    private pb::ByteString value_ = pb::ByteString.Empty;
-    public bool HasValue {
-      get { return hasValue; }
-    }
-    public pb::ByteString Value {
-      get { return value_; }
-    }
-
-    public override bool IsInitialized {
-      get {
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _bucketOfBytesFieldNames;
-      if (hasValue) {
-        output.WriteBytes(1, field_names[0], Value);
-      }
-    }
-
-    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.ComputeBytesSize(1, Value);
-      }
-      memoizedSerializedSize = size;
-      return size;
-    }
-    #region Lite runtime methods
-    public override int GetHashCode() {
-      int hash = GetType().GetHashCode();
-      if (hasValue) {
-        hash ^= value_.GetHashCode();
-      }
-      return hash;
-    }
-
-    public override bool Equals(object obj) {
-      BucketOfBytes other = obj as BucketOfBytes;
-      if (other == null) return false;
-      if (hasValue != other.hasValue || (hasValue && !value_.Equals(other.value_))) return false;
-      return true;
-    }
-
-    public override void PrintTo(global::System.IO.TextWriter writer) {
-      PrintField("value", hasValue, value_, writer);
-    }
-    #endregion
-
-    public static BucketOfBytes ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static BucketOfBytes ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static BucketOfBytes ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static BucketOfBytes ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static BucketOfBytes ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static BucketOfBytes ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static BucketOfBytes ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static BucketOfBytes ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static BucketOfBytes ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static BucketOfBytes ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private BucketOfBytes 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(BucketOfBytes prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilderLite<BucketOfBytes, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(BucketOfBytes cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private BucketOfBytes result;
-
-      private BucketOfBytes PrepareBuilder() {
-        if (resultIsReadOnly) {
-          BucketOfBytes original = result;
-          result = new BucketOfBytes();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override BucketOfBytes 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 BucketOfBytes DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.BucketOfBytes.DefaultInstance; }
-      }
-
-      public override BucketOfBytes BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessageLite other) {
-        if (other is BucketOfBytes) {
-          return MergeFrom((BucketOfBytes) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(BucketOfBytes other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.BucketOfBytes.DefaultInstance) return this;
-        PrepareBuilder();
-        if (other.HasValue) {
-          Value = other.Value;
-        }
-        return this;
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input) {
-        return MergeFrom(input, pb::ExtensionRegistry.Empty);
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-        PrepareBuilder();
-        uint tag;
-        string field_name;
-        while (input.ReadTag(out tag, out field_name)) {
-          if(tag == 0 && field_name != null) {
-            int field_ordinal = global::System.Array.BinarySearch(_bucketOfBytesFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _bucketOfBytesFieldTags[field_ordinal];
-            else {
-              ParseUnknownField(input, extensionRegistry, tag, field_name);
-              continue;
-            }
-          }
-          switch (tag) {
-            case 0: {
-              throw pb::InvalidProtocolBufferException.InvalidTag();
-            }
-            default: {
-              if (pb::WireFormat.IsEndGroupTag(tag)) {
-                return this;
-              }
-              ParseUnknownField(input, extensionRegistry, tag, field_name);
-              break;
-            }
-            case 10: {
-              result.hasValue = input.ReadBytes(ref result.value_);
-              break;
-            }
-          }
-        }
-
-        return this;
-      }
-
-
-      public bool HasValue {
-        get { return result.hasValue; }
-      }
-      public pb::ByteString Value {
-        get { return result.Value; }
-        set { SetValue(value); }
-      }
-      public Builder SetValue(pb::ByteString value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasValue = true;
-        result.value_ = value;
-        return this;
-      }
-      public Builder ClearValue() {
-        PrepareBuilder();
-        result.hasValue = false;
-        result.value_ = pb::ByteString.Empty;
-        return this;
-      }
-    }
-    static BucketOfBytes() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnittestExtrasLite.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class BucketOfBytesEx : pb::GeneratedMessageLite<BucketOfBytesEx, BucketOfBytesEx.Builder> {
-    private BucketOfBytesEx() { }
-    private static readonly BucketOfBytesEx defaultInstance = new BucketOfBytesEx().MakeReadOnly();
-    private static readonly string[] _bucketOfBytesExFieldNames = new string[] { "value", "value2" };
-    private static readonly uint[] _bucketOfBytesExFieldTags = new uint[] { 10, 2042 };
-    public static BucketOfBytesEx DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override BucketOfBytesEx DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override BucketOfBytesEx ThisMessage {
-      get { return this; }
-    }
-
-    public const int ValueFieldNumber = 1;
-    private bool hasValue;
-    private pb::ByteString value_ = pb::ByteString.Empty;
-    public bool HasValue {
-      get { return hasValue; }
-    }
-    public pb::ByteString Value {
-      get { return value_; }
-    }
-
-    public const int Value2FieldNumber = 255;
-    private bool hasValue2;
-    private pb::ByteString value2_ = pb::ByteString.Empty;
-    public bool HasValue2 {
-      get { return hasValue2; }
-    }
-    public pb::ByteString Value2 {
-      get { return value2_; }
-    }
-
-    public override bool IsInitialized {
-      get {
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _bucketOfBytesExFieldNames;
-      if (hasValue) {
-        output.WriteBytes(1, field_names[0], Value);
-      }
-      if (hasValue2) {
-        output.WriteBytes(255, field_names[1], Value2);
-      }
-    }
-
-    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.ComputeBytesSize(1, Value);
-      }
-      if (hasValue2) {
-        size += pb::CodedOutputStream.ComputeBytesSize(255, Value2);
-      }
-      memoizedSerializedSize = size;
-      return size;
-    }
-    #region Lite runtime methods
-    public override int GetHashCode() {
-      int hash = GetType().GetHashCode();
-      if (hasValue) {
-        hash ^= value_.GetHashCode();
-      }
-      if (hasValue2) {
-        hash ^= value2_.GetHashCode();
-      }
-      return hash;
-    }
-
-    public override bool Equals(object obj) {
-      BucketOfBytesEx other = obj as BucketOfBytesEx;
-      if (other == null) return false;
-      if (hasValue != other.hasValue || (hasValue && !value_.Equals(other.value_))) return false;
-      if (hasValue2 != other.hasValue2 || (hasValue2 && !value2_.Equals(other.value2_))) return false;
-      return true;
-    }
-
-    public override void PrintTo(global::System.IO.TextWriter writer) {
-      PrintField("value", hasValue, value_, writer);
-      PrintField("value2", hasValue2, value2_, writer);
-    }
-    #endregion
-
-    public static BucketOfBytesEx ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static BucketOfBytesEx ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static BucketOfBytesEx ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static BucketOfBytesEx ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static BucketOfBytesEx ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static BucketOfBytesEx ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static BucketOfBytesEx ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static BucketOfBytesEx ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static BucketOfBytesEx ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static BucketOfBytesEx ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private BucketOfBytesEx 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(BucketOfBytesEx prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilderLite<BucketOfBytesEx, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(BucketOfBytesEx cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private BucketOfBytesEx result;
-
-      private BucketOfBytesEx PrepareBuilder() {
-        if (resultIsReadOnly) {
-          BucketOfBytesEx original = result;
-          result = new BucketOfBytesEx();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override BucketOfBytesEx 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 BucketOfBytesEx DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.BucketOfBytesEx.DefaultInstance; }
-      }
-
-      public override BucketOfBytesEx BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessageLite other) {
-        if (other is BucketOfBytesEx) {
-          return MergeFrom((BucketOfBytesEx) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(BucketOfBytesEx other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.BucketOfBytesEx.DefaultInstance) return this;
-        PrepareBuilder();
-        if (other.HasValue) {
-          Value = other.Value;
-        }
-        if (other.HasValue2) {
-          Value2 = other.Value2;
-        }
-        return this;
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input) {
-        return MergeFrom(input, pb::ExtensionRegistry.Empty);
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-        PrepareBuilder();
-        uint tag;
-        string field_name;
-        while (input.ReadTag(out tag, out field_name)) {
-          if(tag == 0 && field_name != null) {
-            int field_ordinal = global::System.Array.BinarySearch(_bucketOfBytesExFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _bucketOfBytesExFieldTags[field_ordinal];
-            else {
-              ParseUnknownField(input, extensionRegistry, tag, field_name);
-              continue;
-            }
-          }
-          switch (tag) {
-            case 0: {
-              throw pb::InvalidProtocolBufferException.InvalidTag();
-            }
-            default: {
-              if (pb::WireFormat.IsEndGroupTag(tag)) {
-                return this;
-              }
-              ParseUnknownField(input, extensionRegistry, tag, field_name);
-              break;
-            }
-            case 10: {
-              result.hasValue = input.ReadBytes(ref result.value_);
-              break;
-            }
-            case 2042: {
-              result.hasValue2 = input.ReadBytes(ref result.value2_);
-              break;
-            }
-          }
-        }
-
-        return this;
-      }
-
-
-      public bool HasValue {
-        get { return result.hasValue; }
-      }
-      public pb::ByteString Value {
-        get { return result.Value; }
-        set { SetValue(value); }
-      }
-      public Builder SetValue(pb::ByteString value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasValue = true;
-        result.value_ = value;
-        return this;
-      }
-      public Builder ClearValue() {
-        PrepareBuilder();
-        result.hasValue = false;
-        result.value_ = pb::ByteString.Empty;
-        return this;
-      }
-
-      public bool HasValue2 {
-        get { return result.hasValue2; }
-      }
-      public pb::ByteString Value2 {
-        get { return result.Value2; }
-        set { SetValue2(value); }
-      }
-      public Builder SetValue2(pb::ByteString value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasValue2 = true;
-        result.value2_ = value;
-        return this;
-      }
-      public Builder ClearValue2() {
-        PrepareBuilder();
-        result.hasValue2 = false;
-        result.value2_ = pb::ByteString.Empty;
-        return this;
-      }
-    }
-    static BucketOfBytesEx() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnittestExtrasLite.Descriptor, null);
-    }
-  }
-
-  #endregion
-
-}
-
-#endregion Designer generated code

+ 0 - 347
csharp/src/ProtocolBuffersLite.Test/TestProtos/UnittestImport.cs

@@ -1,347 +0,0 @@
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
-// source: google/protobuf/unittest_import.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 UnittestImport {
-
-    #region Extension registration
-    public static void RegisterAllExtensions(pb::ExtensionRegistry registry) {
-    }
-    #endregion
-    #region Static variables
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_import_ImportMessage__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.ImportMessage, global::Google.ProtocolBuffers.TestProtos.ImportMessage.Builder> internal__static_protobuf_unittest_import_ImportMessage__FieldAccessorTable;
-    #endregion
-    #region Descriptor
-    public static pbd::FileDescriptor Descriptor {
-      get { return descriptor; }
-    }
-    private static pbd::FileDescriptor descriptor;
-
-    static UnittestImport() {
-      byte[] descriptorData = global::System.Convert.FromBase64String(
-          string.Concat(
-            "CiVnb29nbGUvcHJvdG9idWYvdW5pdHRlc3RfaW1wb3J0LnByb3RvEhhwcm90", 
-            "b2J1Zl91bml0dGVzdF9pbXBvcnQaLGdvb2dsZS9wcm90b2J1Zi91bml0dGVz", 
-            "dF9pbXBvcnRfcHVibGljLnByb3RvIhoKDUltcG9ydE1lc3NhZ2USCQoBZBgB", 
-            "IAEoBSo8CgpJbXBvcnRFbnVtEg4KCklNUE9SVF9GT08QBxIOCgpJTVBPUlRf", 
-            "QkFSEAgSDgoKSU1QT1JUX0JBWhAJQkMKGGNvbS5nb29nbGUucHJvdG9idWYu", 
-            "dGVzdEgB+AEBqgIhR29vZ2xlLlByb3RvY29sQnVmZmVycy5UZXN0UHJvdG9z", 
-          "UAA="));
-      pbd::FileDescriptor.InternalDescriptorAssigner assigner = delegate(pbd::FileDescriptor root) {
-        descriptor = root;
-        internal__static_protobuf_unittest_import_ImportMessage__Descriptor = Descriptor.MessageTypes[0];
-        internal__static_protobuf_unittest_import_ImportMessage__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.ImportMessage, global::Google.ProtocolBuffers.TestProtos.ImportMessage.Builder>(internal__static_protobuf_unittest_import_ImportMessage__Descriptor,
-                new string[] { "D", });
-        pb::ExtensionRegistry registry = pb::ExtensionRegistry.CreateInstance();
-        RegisterAllExtensions(registry);
-        global::Google.ProtocolBuffers.TestProtos.UnittestImportPublic.RegisterAllExtensions(registry);
-        return registry;
-      };
-      pbd::FileDescriptor.InternalBuildGeneratedFileFrom(descriptorData,
-          new pbd::FileDescriptor[] {
-          global::Google.ProtocolBuffers.TestProtos.UnittestImportPublic.Descriptor, 
-          }, assigner);
-    }
-    #endregion
-
-  }
-  #region Enums
-  public enum ImportEnum {
-    IMPORT_FOO = 7,
-    IMPORT_BAR = 8,
-    IMPORT_BAZ = 9,
-  }
-
-  #endregion
-
-  #region Messages
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class ImportMessage : pb::GeneratedMessage<ImportMessage, ImportMessage.Builder> {
-    private ImportMessage() { }
-    private static readonly ImportMessage defaultInstance = new ImportMessage().MakeReadOnly();
-    private static readonly string[] _importMessageFieldNames = new string[] { "d" };
-    private static readonly uint[] _importMessageFieldTags = new uint[] { 8 };
-    public static ImportMessage DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override ImportMessage DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override ImportMessage ThisMessage {
-      get { return this; }
-    }
-
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::Google.ProtocolBuffers.TestProtos.UnittestImport.internal__static_protobuf_unittest_import_ImportMessage__Descriptor; }
-    }
-
-    protected override pb::FieldAccess.FieldAccessorTable<ImportMessage, ImportMessage.Builder> InternalFieldAccessors {
-      get { return global::Google.ProtocolBuffers.TestProtos.UnittestImport.internal__static_protobuf_unittest_import_ImportMessage__FieldAccessorTable; }
-    }
-
-    public const int DFieldNumber = 1;
-    private bool hasD;
-    private int d_;
-    public bool HasD {
-      get { return hasD; }
-    }
-    public int D {
-      get { return d_; }
-    }
-
-    public override bool IsInitialized {
-      get {
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _importMessageFieldNames;
-      if (hasD) {
-        output.WriteInt32(1, field_names[0], D);
-      }
-      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 (hasD) {
-        size += pb::CodedOutputStream.ComputeInt32Size(1, D);
-      }
-      size += UnknownFields.SerializedSize;
-      memoizedSerializedSize = size;
-      return size;
-    }
-    public static ImportMessage ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static ImportMessage ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static ImportMessage ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static ImportMessage ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static ImportMessage ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static ImportMessage ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static ImportMessage ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static ImportMessage ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static ImportMessage ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static ImportMessage ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private ImportMessage 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(ImportMessage prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilder<ImportMessage, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(ImportMessage cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private ImportMessage result;
-
-      private ImportMessage PrepareBuilder() {
-        if (resultIsReadOnly) {
-          ImportMessage original = result;
-          result = new ImportMessage();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override ImportMessage 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.ImportMessage.Descriptor; }
-      }
-
-      public override ImportMessage DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.ImportMessage.DefaultInstance; }
-      }
-
-      public override ImportMessage BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is ImportMessage) {
-          return MergeFrom((ImportMessage) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(ImportMessage other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.ImportMessage.DefaultInstance) return this;
-        PrepareBuilder();
-        if (other.HasD) {
-          D = other.D;
-        }
-        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(_importMessageFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _importMessageFieldTags[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.hasD = input.ReadInt32(ref result.d_);
-              break;
-            }
-          }
-        }
-
-        if (unknownFields != null) {
-          this.UnknownFields = unknownFields.Build();
-        }
-        return this;
-      }
-
-
-      public bool HasD {
-        get { return result.hasD; }
-      }
-      public int D {
-        get { return result.D; }
-        set { SetD(value); }
-      }
-      public Builder SetD(int value) {
-        PrepareBuilder();
-        result.hasD = true;
-        result.d_ = value;
-        return this;
-      }
-      public Builder ClearD() {
-        PrepareBuilder();
-        result.hasD = false;
-        result.d_ = 0;
-        return this;
-      }
-    }
-    static ImportMessage() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnittestImport.Descriptor, null);
-    }
-  }
-
-  #endregion
-
-}
-
-#endregion Designer generated code

+ 0 - 311
csharp/src/ProtocolBuffersLite.Test/TestProtos/UnittestImportLite.cs

@@ -1,311 +0,0 @@
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
-// source: google/protobuf/unittest_import_lite.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 UnittestImportLite {
-
-    #region Extension registration
-    public static void RegisterAllExtensions(pb::ExtensionRegistry registry) {
-    }
-    #endregion
-    #region Static variables
-    #endregion
-    #region Extensions
-    internal static readonly object Descriptor;
-    static UnittestImportLite() {
-      Descriptor = null;
-    }
-    #endregion
-
-  }
-  #region Enums
-  public enum ImportEnumLite {
-    IMPORT_LITE_FOO = 7,
-    IMPORT_LITE_BAR = 8,
-    IMPORT_LITE_BAZ = 9,
-  }
-
-  #endregion
-
-  #region Messages
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class ImportMessageLite : pb::GeneratedMessageLite<ImportMessageLite, ImportMessageLite.Builder> {
-    private ImportMessageLite() { }
-    private static readonly ImportMessageLite defaultInstance = new ImportMessageLite().MakeReadOnly();
-    private static readonly string[] _importMessageLiteFieldNames = new string[] { "d" };
-    private static readonly uint[] _importMessageLiteFieldTags = new uint[] { 8 };
-    public static ImportMessageLite DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override ImportMessageLite DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override ImportMessageLite ThisMessage {
-      get { return this; }
-    }
-
-    public const int DFieldNumber = 1;
-    private bool hasD;
-    private int d_;
-    public bool HasD {
-      get { return hasD; }
-    }
-    public int D {
-      get { return d_; }
-    }
-
-    public override bool IsInitialized {
-      get {
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _importMessageLiteFieldNames;
-      if (hasD) {
-        output.WriteInt32(1, field_names[0], D);
-      }
-    }
-
-    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 (hasD) {
-        size += pb::CodedOutputStream.ComputeInt32Size(1, D);
-      }
-      memoizedSerializedSize = size;
-      return size;
-    }
-    #region Lite runtime methods
-    public override int GetHashCode() {
-      int hash = GetType().GetHashCode();
-      if (hasD) {
-        hash ^= d_.GetHashCode();
-      }
-      return hash;
-    }
-
-    public override bool Equals(object obj) {
-      ImportMessageLite other = obj as ImportMessageLite;
-      if (other == null) return false;
-      if (hasD != other.hasD || (hasD && !d_.Equals(other.d_))) return false;
-      return true;
-    }
-
-    public override void PrintTo(global::System.IO.TextWriter writer) {
-      PrintField("d", hasD, d_, writer);
-    }
-    #endregion
-
-    public static ImportMessageLite ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static ImportMessageLite ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static ImportMessageLite ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static ImportMessageLite ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static ImportMessageLite ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static ImportMessageLite ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static ImportMessageLite ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static ImportMessageLite ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static ImportMessageLite ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static ImportMessageLite ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private ImportMessageLite 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(ImportMessageLite prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilderLite<ImportMessageLite, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(ImportMessageLite cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private ImportMessageLite result;
-
-      private ImportMessageLite PrepareBuilder() {
-        if (resultIsReadOnly) {
-          ImportMessageLite original = result;
-          result = new ImportMessageLite();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override ImportMessageLite 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 ImportMessageLite DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.ImportMessageLite.DefaultInstance; }
-      }
-
-      public override ImportMessageLite BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessageLite other) {
-        if (other is ImportMessageLite) {
-          return MergeFrom((ImportMessageLite) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(ImportMessageLite other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.ImportMessageLite.DefaultInstance) return this;
-        PrepareBuilder();
-        if (other.HasD) {
-          D = other.D;
-        }
-        return this;
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input) {
-        return MergeFrom(input, pb::ExtensionRegistry.Empty);
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-        PrepareBuilder();
-        uint tag;
-        string field_name;
-        while (input.ReadTag(out tag, out field_name)) {
-          if(tag == 0 && field_name != null) {
-            int field_ordinal = global::System.Array.BinarySearch(_importMessageLiteFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _importMessageLiteFieldTags[field_ordinal];
-            else {
-              ParseUnknownField(input, extensionRegistry, tag, field_name);
-              continue;
-            }
-          }
-          switch (tag) {
-            case 0: {
-              throw pb::InvalidProtocolBufferException.InvalidTag();
-            }
-            default: {
-              if (pb::WireFormat.IsEndGroupTag(tag)) {
-                return this;
-              }
-              ParseUnknownField(input, extensionRegistry, tag, field_name);
-              break;
-            }
-            case 8: {
-              result.hasD = input.ReadInt32(ref result.d_);
-              break;
-            }
-          }
-        }
-
-        return this;
-      }
-
-
-      public bool HasD {
-        get { return result.hasD; }
-      }
-      public int D {
-        get { return result.D; }
-        set { SetD(value); }
-      }
-      public Builder SetD(int value) {
-        PrepareBuilder();
-        result.hasD = true;
-        result.d_ = value;
-        return this;
-      }
-      public Builder ClearD() {
-        PrepareBuilder();
-        result.hasD = false;
-        result.d_ = 0;
-        return this;
-      }
-    }
-    static ImportMessageLite() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnittestImportLite.Descriptor, null);
-    }
-  }
-
-  #endregion
-
-}
-
-#endregion Designer generated code

+ 0 - 333
csharp/src/ProtocolBuffersLite.Test/TestProtos/UnittestImportPublic.cs

@@ -1,333 +0,0 @@
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
-// source: google/protobuf/unittest_import_public.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 UnittestImportPublic {
-
-    #region Extension registration
-    public static void RegisterAllExtensions(pb::ExtensionRegistry registry) {
-    }
-    #endregion
-    #region Static variables
-    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_import_PublicImportMessage__Descriptor;
-    internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.PublicImportMessage, global::Google.ProtocolBuffers.TestProtos.PublicImportMessage.Builder> internal__static_protobuf_unittest_import_PublicImportMessage__FieldAccessorTable;
-    #endregion
-    #region Descriptor
-    public static pbd::FileDescriptor Descriptor {
-      get { return descriptor; }
-    }
-    private static pbd::FileDescriptor descriptor;
-
-    static UnittestImportPublic() {
-      byte[] descriptorData = global::System.Convert.FromBase64String(
-          string.Concat(
-            "Cixnb29nbGUvcHJvdG9idWYvdW5pdHRlc3RfaW1wb3J0X3B1YmxpYy5wcm90", 
-            "bxIYcHJvdG9idWZfdW5pdHRlc3RfaW1wb3J0IiAKE1B1YmxpY0ltcG9ydE1l", 
-            "c3NhZ2USCQoBZRgBIAEoBUI+Chhjb20uZ29vZ2xlLnByb3RvYnVmLnRlc3Sq", 
-          "AiFHb29nbGUuUHJvdG9jb2xCdWZmZXJzLlRlc3RQcm90b3M="));
-      pbd::FileDescriptor.InternalDescriptorAssigner assigner = delegate(pbd::FileDescriptor root) {
-        descriptor = root;
-        internal__static_protobuf_unittest_import_PublicImportMessage__Descriptor = Descriptor.MessageTypes[0];
-        internal__static_protobuf_unittest_import_PublicImportMessage__FieldAccessorTable = 
-            new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.PublicImportMessage, global::Google.ProtocolBuffers.TestProtos.PublicImportMessage.Builder>(internal__static_protobuf_unittest_import_PublicImportMessage__Descriptor,
-                new string[] { "E", });
-        pb::ExtensionRegistry registry = pb::ExtensionRegistry.CreateInstance();
-        RegisterAllExtensions(registry);
-        return registry;
-      };
-      pbd::FileDescriptor.InternalBuildGeneratedFileFrom(descriptorData,
-          new pbd::FileDescriptor[] {
-          }, assigner);
-    }
-    #endregion
-
-  }
-  #region Messages
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class PublicImportMessage : pb::GeneratedMessage<PublicImportMessage, PublicImportMessage.Builder> {
-    private PublicImportMessage() { }
-    private static readonly PublicImportMessage defaultInstance = new PublicImportMessage().MakeReadOnly();
-    private static readonly string[] _publicImportMessageFieldNames = new string[] { "e" };
-    private static readonly uint[] _publicImportMessageFieldTags = new uint[] { 8 };
-    public static PublicImportMessage DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override PublicImportMessage DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override PublicImportMessage ThisMessage {
-      get { return this; }
-    }
-
-    public static pbd::MessageDescriptor Descriptor {
-      get { return global::Google.ProtocolBuffers.TestProtos.UnittestImportPublic.internal__static_protobuf_unittest_import_PublicImportMessage__Descriptor; }
-    }
-
-    protected override pb::FieldAccess.FieldAccessorTable<PublicImportMessage, PublicImportMessage.Builder> InternalFieldAccessors {
-      get { return global::Google.ProtocolBuffers.TestProtos.UnittestImportPublic.internal__static_protobuf_unittest_import_PublicImportMessage__FieldAccessorTable; }
-    }
-
-    public const int EFieldNumber = 1;
-    private bool hasE;
-    private int e_;
-    public bool HasE {
-      get { return hasE; }
-    }
-    public int E {
-      get { return e_; }
-    }
-
-    public override bool IsInitialized {
-      get {
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _publicImportMessageFieldNames;
-      if (hasE) {
-        output.WriteInt32(1, field_names[0], E);
-      }
-      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.ComputeInt32Size(1, E);
-      }
-      size += UnknownFields.SerializedSize;
-      memoizedSerializedSize = size;
-      return size;
-    }
-    public static PublicImportMessage ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static PublicImportMessage ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static PublicImportMessage ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static PublicImportMessage ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static PublicImportMessage ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static PublicImportMessage ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static PublicImportMessage ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static PublicImportMessage ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static PublicImportMessage ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static PublicImportMessage ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private PublicImportMessage 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(PublicImportMessage prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilder<PublicImportMessage, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(PublicImportMessage cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private PublicImportMessage result;
-
-      private PublicImportMessage PrepareBuilder() {
-        if (resultIsReadOnly) {
-          PublicImportMessage original = result;
-          result = new PublicImportMessage();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override PublicImportMessage 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.PublicImportMessage.Descriptor; }
-      }
-
-      public override PublicImportMessage DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.PublicImportMessage.DefaultInstance; }
-      }
-
-      public override PublicImportMessage BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessage other) {
-        if (other is PublicImportMessage) {
-          return MergeFrom((PublicImportMessage) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(PublicImportMessage other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.PublicImportMessage.DefaultInstance) return this;
-        PrepareBuilder();
-        if (other.HasE) {
-          E = other.E;
-        }
-        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(_publicImportMessageFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _publicImportMessageFieldTags[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.hasE = input.ReadInt32(ref result.e_);
-              break;
-            }
-          }
-        }
-
-        if (unknownFields != null) {
-          this.UnknownFields = unknownFields.Build();
-        }
-        return this;
-      }
-
-
-      public bool HasE {
-        get { return result.hasE; }
-      }
-      public int E {
-        get { return result.E; }
-        set { SetE(value); }
-      }
-      public Builder SetE(int value) {
-        PrepareBuilder();
-        result.hasE = true;
-        result.e_ = value;
-        return this;
-      }
-      public Builder ClearE() {
-        PrepareBuilder();
-        result.hasE = false;
-        result.e_ = 0;
-        return this;
-      }
-    }
-    static PublicImportMessage() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnittestImportPublic.Descriptor, null);
-    }
-  }
-
-  #endregion
-
-}
-
-#endregion Designer generated code

+ 0 - 302
csharp/src/ProtocolBuffersLite.Test/TestProtos/UnittestImportPublicLite.cs

@@ -1,302 +0,0 @@
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
-// source: google/protobuf/unittest_import_public_lite.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 UnittestImportPublicLite {
-
-    #region Extension registration
-    public static void RegisterAllExtensions(pb::ExtensionRegistry registry) {
-    }
-    #endregion
-    #region Static variables
-    #endregion
-    #region Extensions
-    internal static readonly object Descriptor;
-    static UnittestImportPublicLite() {
-      Descriptor = null;
-    }
-    #endregion
-
-  }
-  #region Messages
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class PublicImportMessageLite : pb::GeneratedMessageLite<PublicImportMessageLite, PublicImportMessageLite.Builder> {
-    private PublicImportMessageLite() { }
-    private static readonly PublicImportMessageLite defaultInstance = new PublicImportMessageLite().MakeReadOnly();
-    private static readonly string[] _publicImportMessageLiteFieldNames = new string[] { "e" };
-    private static readonly uint[] _publicImportMessageLiteFieldTags = new uint[] { 8 };
-    public static PublicImportMessageLite DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override PublicImportMessageLite DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override PublicImportMessageLite ThisMessage {
-      get { return this; }
-    }
-
-    public const int EFieldNumber = 1;
-    private bool hasE;
-    private int e_;
-    public bool HasE {
-      get { return hasE; }
-    }
-    public int E {
-      get { return e_; }
-    }
-
-    public override bool IsInitialized {
-      get {
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _publicImportMessageLiteFieldNames;
-      if (hasE) {
-        output.WriteInt32(1, field_names[0], E);
-      }
-    }
-
-    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.ComputeInt32Size(1, E);
-      }
-      memoizedSerializedSize = size;
-      return size;
-    }
-    #region Lite runtime methods
-    public override int GetHashCode() {
-      int hash = GetType().GetHashCode();
-      if (hasE) {
-        hash ^= e_.GetHashCode();
-      }
-      return hash;
-    }
-
-    public override bool Equals(object obj) {
-      PublicImportMessageLite other = obj as PublicImportMessageLite;
-      if (other == null) return false;
-      if (hasE != other.hasE || (hasE && !e_.Equals(other.e_))) return false;
-      return true;
-    }
-
-    public override void PrintTo(global::System.IO.TextWriter writer) {
-      PrintField("e", hasE, e_, writer);
-    }
-    #endregion
-
-    public static PublicImportMessageLite ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static PublicImportMessageLite ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static PublicImportMessageLite ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static PublicImportMessageLite ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static PublicImportMessageLite ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static PublicImportMessageLite ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static PublicImportMessageLite ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static PublicImportMessageLite ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static PublicImportMessageLite ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static PublicImportMessageLite ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private PublicImportMessageLite 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(PublicImportMessageLite prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilderLite<PublicImportMessageLite, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(PublicImportMessageLite cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private PublicImportMessageLite result;
-
-      private PublicImportMessageLite PrepareBuilder() {
-        if (resultIsReadOnly) {
-          PublicImportMessageLite original = result;
-          result = new PublicImportMessageLite();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override PublicImportMessageLite 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 PublicImportMessageLite DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.PublicImportMessageLite.DefaultInstance; }
-      }
-
-      public override PublicImportMessageLite BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessageLite other) {
-        if (other is PublicImportMessageLite) {
-          return MergeFrom((PublicImportMessageLite) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(PublicImportMessageLite other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.PublicImportMessageLite.DefaultInstance) return this;
-        PrepareBuilder();
-        if (other.HasE) {
-          E = other.E;
-        }
-        return this;
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input) {
-        return MergeFrom(input, pb::ExtensionRegistry.Empty);
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-        PrepareBuilder();
-        uint tag;
-        string field_name;
-        while (input.ReadTag(out tag, out field_name)) {
-          if(tag == 0 && field_name != null) {
-            int field_ordinal = global::System.Array.BinarySearch(_publicImportMessageLiteFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _publicImportMessageLiteFieldTags[field_ordinal];
-            else {
-              ParseUnknownField(input, extensionRegistry, tag, field_name);
-              continue;
-            }
-          }
-          switch (tag) {
-            case 0: {
-              throw pb::InvalidProtocolBufferException.InvalidTag();
-            }
-            default: {
-              if (pb::WireFormat.IsEndGroupTag(tag)) {
-                return this;
-              }
-              ParseUnknownField(input, extensionRegistry, tag, field_name);
-              break;
-            }
-            case 8: {
-              result.hasE = input.ReadInt32(ref result.e_);
-              break;
-            }
-          }
-        }
-
-        return this;
-      }
-
-
-      public bool HasE {
-        get { return result.hasE; }
-      }
-      public int E {
-        get { return result.E; }
-        set { SetE(value); }
-      }
-      public Builder SetE(int value) {
-        PrepareBuilder();
-        result.hasE = true;
-        result.e_ = value;
-        return this;
-      }
-      public Builder ClearE() {
-        PrepareBuilder();
-        result.hasE = false;
-        result.e_ = 0;
-        return this;
-      }
-    }
-    static PublicImportMessageLite() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnittestImportPublicLite.Descriptor, null);
-    }
-  }
-
-  #endregion
-
-}
-
-#endregion Designer generated code

+ 0 - 12493
csharp/src/ProtocolBuffersLite.Test/TestProtos/UnittestLite.cs

@@ -1,12493 +0,0 @@
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
-// source: google/protobuf/unittest_lite.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 UnittestLite {
-
-    #region Extension registration
-    public static void RegisterAllExtensions(pb::ExtensionRegistry registry) {
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.OptionalInt32ExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.OptionalInt64ExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.OptionalUint32ExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.OptionalUint64ExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.OptionalSint32ExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.OptionalSint64ExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.OptionalFixed32ExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.OptionalFixed64ExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.OptionalSfixed32ExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.OptionalSfixed64ExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.OptionalFloatExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.OptionalDoubleExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.OptionalBoolExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.OptionalStringExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.OptionalBytesExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.OptionalGroupExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.OptionalNestedMessageExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.OptionalForeignMessageExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.OptionalImportMessageExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.OptionalNestedEnumExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.OptionalForeignEnumExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.OptionalImportEnumExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.OptionalStringPieceExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.OptionalCordExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.OptionalPublicImportMessageExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.OptionalLazyMessageExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.RepeatedInt32ExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.RepeatedInt64ExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.RepeatedUint32ExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.RepeatedUint64ExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.RepeatedSint32ExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.RepeatedSint64ExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.RepeatedFixed32ExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.RepeatedFixed64ExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.RepeatedSfixed32ExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.RepeatedSfixed64ExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.RepeatedFloatExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.RepeatedDoubleExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.RepeatedBoolExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.RepeatedStringExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.RepeatedBytesExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.RepeatedGroupExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.RepeatedNestedMessageExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.RepeatedForeignMessageExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.RepeatedImportMessageExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.RepeatedNestedEnumExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.RepeatedForeignEnumExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.RepeatedImportEnumExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.RepeatedStringPieceExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.RepeatedCordExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.RepeatedLazyMessageExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.DefaultInt32ExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.DefaultInt64ExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.DefaultUint32ExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.DefaultUint64ExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.DefaultSint32ExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.DefaultSint64ExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.DefaultFixed32ExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.DefaultFixed64ExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.DefaultSfixed32ExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.DefaultSfixed64ExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.DefaultFloatExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.DefaultDoubleExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.DefaultBoolExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.DefaultStringExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.DefaultBytesExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.DefaultNestedEnumExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.DefaultForeignEnumExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.DefaultImportEnumExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.DefaultStringPieceExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.DefaultCordExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.OneofUint32ExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.OneofNestedMessageExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.OneofStringExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.OneofBytesExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.PackedInt32ExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.PackedInt64ExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.PackedUint32ExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.PackedUint64ExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.PackedSint32ExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.PackedSint64ExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.PackedFixed32ExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.PackedFixed64ExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.PackedSfixed32ExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.PackedSfixed64ExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.PackedFloatExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.PackedDoubleExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.PackedBoolExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnittestLite.PackedEnumExtensionLite);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.TestNestedExtensionLite.NestedExtension);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.TestParsingMergeLite.OptionalExt);
-      registry.Add(global::Google.ProtocolBuffers.TestProtos.TestParsingMergeLite.RepeatedExt);
-    }
-    #endregion
-    #region Extensions
-    public const int OptionalInt32ExtensionLiteFieldNumber = 1;
-    public static pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, int> OptionalInt32ExtensionLite;
-    public const int OptionalInt64ExtensionLiteFieldNumber = 2;
-    public static pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, long> OptionalInt64ExtensionLite;
-    public const int OptionalUint32ExtensionLiteFieldNumber = 3;
-    public static pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, uint> OptionalUint32ExtensionLite;
-    public const int OptionalUint64ExtensionLiteFieldNumber = 4;
-    public static pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, ulong> OptionalUint64ExtensionLite;
-    public const int OptionalSint32ExtensionLiteFieldNumber = 5;
-    public static pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, int> OptionalSint32ExtensionLite;
-    public const int OptionalSint64ExtensionLiteFieldNumber = 6;
-    public static pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, long> OptionalSint64ExtensionLite;
-    public const int OptionalFixed32ExtensionLiteFieldNumber = 7;
-    public static pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, uint> OptionalFixed32ExtensionLite;
-    public const int OptionalFixed64ExtensionLiteFieldNumber = 8;
-    public static pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, ulong> OptionalFixed64ExtensionLite;
-    public const int OptionalSfixed32ExtensionLiteFieldNumber = 9;
-    public static pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, int> OptionalSfixed32ExtensionLite;
-    public const int OptionalSfixed64ExtensionLiteFieldNumber = 10;
-    public static pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, long> OptionalSfixed64ExtensionLite;
-    public const int OptionalFloatExtensionLiteFieldNumber = 11;
-    public static pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, float> OptionalFloatExtensionLite;
-    public const int OptionalDoubleExtensionLiteFieldNumber = 12;
-    public static pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, double> OptionalDoubleExtensionLite;
-    public const int OptionalBoolExtensionLiteFieldNumber = 13;
-    public static pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, bool> OptionalBoolExtensionLite;
-    public const int OptionalStringExtensionLiteFieldNumber = 14;
-    public static pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, string> OptionalStringExtensionLite;
-    public const int OptionalBytesExtensionLiteFieldNumber = 15;
-    public static pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, pb::ByteString> OptionalBytesExtensionLite;
-    public const int OptionalGroupExtensionLiteFieldNumber = 16;
-    public static pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, global::Google.ProtocolBuffers.TestProtos.OptionalGroup_extension_lite> OptionalGroupExtensionLite;
-    public const int OptionalNestedMessageExtensionLiteFieldNumber = 18;
-    public static pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage> OptionalNestedMessageExtensionLite;
-    public const int OptionalForeignMessageExtensionLiteFieldNumber = 19;
-    public static pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, global::Google.ProtocolBuffers.TestProtos.ForeignMessageLite> OptionalForeignMessageExtensionLite;
-    public const int OptionalImportMessageExtensionLiteFieldNumber = 20;
-    public static pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, global::Google.ProtocolBuffers.TestProtos.ImportMessageLite> OptionalImportMessageExtensionLite;
-    public const int OptionalNestedEnumExtensionLiteFieldNumber = 21;
-    public static pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedEnum> OptionalNestedEnumExtensionLite;
-    public const int OptionalForeignEnumExtensionLiteFieldNumber = 22;
-    public static pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite> OptionalForeignEnumExtensionLite;
-    public const int OptionalImportEnumExtensionLiteFieldNumber = 23;
-    public static pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, global::Google.ProtocolBuffers.TestProtos.ImportEnumLite> OptionalImportEnumExtensionLite;
-    public const int OptionalStringPieceExtensionLiteFieldNumber = 24;
-    public static pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, string> OptionalStringPieceExtensionLite;
-    public const int OptionalCordExtensionLiteFieldNumber = 25;
-    public static pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, string> OptionalCordExtensionLite;
-    public const int OptionalPublicImportMessageExtensionLiteFieldNumber = 26;
-    public static pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, global::Google.ProtocolBuffers.TestProtos.PublicImportMessageLite> OptionalPublicImportMessageExtensionLite;
-    public const int OptionalLazyMessageExtensionLiteFieldNumber = 27;
-    public static pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage> OptionalLazyMessageExtensionLite;
-    public const int RepeatedInt32ExtensionLiteFieldNumber = 31;
-    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, int> RepeatedInt32ExtensionLite;
-    public const int RepeatedInt64ExtensionLiteFieldNumber = 32;
-    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, long> RepeatedInt64ExtensionLite;
-    public const int RepeatedUint32ExtensionLiteFieldNumber = 33;
-    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, uint> RepeatedUint32ExtensionLite;
-    public const int RepeatedUint64ExtensionLiteFieldNumber = 34;
-    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, ulong> RepeatedUint64ExtensionLite;
-    public const int RepeatedSint32ExtensionLiteFieldNumber = 35;
-    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, int> RepeatedSint32ExtensionLite;
-    public const int RepeatedSint64ExtensionLiteFieldNumber = 36;
-    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, long> RepeatedSint64ExtensionLite;
-    public const int RepeatedFixed32ExtensionLiteFieldNumber = 37;
-    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, uint> RepeatedFixed32ExtensionLite;
-    public const int RepeatedFixed64ExtensionLiteFieldNumber = 38;
-    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, ulong> RepeatedFixed64ExtensionLite;
-    public const int RepeatedSfixed32ExtensionLiteFieldNumber = 39;
-    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, int> RepeatedSfixed32ExtensionLite;
-    public const int RepeatedSfixed64ExtensionLiteFieldNumber = 40;
-    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, long> RepeatedSfixed64ExtensionLite;
-    public const int RepeatedFloatExtensionLiteFieldNumber = 41;
-    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, float> RepeatedFloatExtensionLite;
-    public const int RepeatedDoubleExtensionLiteFieldNumber = 42;
-    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, double> RepeatedDoubleExtensionLite;
-    public const int RepeatedBoolExtensionLiteFieldNumber = 43;
-    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, bool> RepeatedBoolExtensionLite;
-    public const int RepeatedStringExtensionLiteFieldNumber = 44;
-    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, string> RepeatedStringExtensionLite;
-    public const int RepeatedBytesExtensionLiteFieldNumber = 45;
-    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, pb::ByteString> RepeatedBytesExtensionLite;
-    public const int RepeatedGroupExtensionLiteFieldNumber = 46;
-    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, global::Google.ProtocolBuffers.TestProtos.RepeatedGroup_extension_lite> RepeatedGroupExtensionLite;
-    public const int RepeatedNestedMessageExtensionLiteFieldNumber = 48;
-    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage> RepeatedNestedMessageExtensionLite;
-    public const int RepeatedForeignMessageExtensionLiteFieldNumber = 49;
-    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, global::Google.ProtocolBuffers.TestProtos.ForeignMessageLite> RepeatedForeignMessageExtensionLite;
-    public const int RepeatedImportMessageExtensionLiteFieldNumber = 50;
-    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, global::Google.ProtocolBuffers.TestProtos.ImportMessageLite> RepeatedImportMessageExtensionLite;
-    public const int RepeatedNestedEnumExtensionLiteFieldNumber = 51;
-    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedEnum> RepeatedNestedEnumExtensionLite;
-    public const int RepeatedForeignEnumExtensionLiteFieldNumber = 52;
-    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite> RepeatedForeignEnumExtensionLite;
-    public const int RepeatedImportEnumExtensionLiteFieldNumber = 53;
-    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, global::Google.ProtocolBuffers.TestProtos.ImportEnumLite> RepeatedImportEnumExtensionLite;
-    public const int RepeatedStringPieceExtensionLiteFieldNumber = 54;
-    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, string> RepeatedStringPieceExtensionLite;
-    public const int RepeatedCordExtensionLiteFieldNumber = 55;
-    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, string> RepeatedCordExtensionLite;
-    public const int RepeatedLazyMessageExtensionLiteFieldNumber = 57;
-    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage> RepeatedLazyMessageExtensionLite;
-    public const int DefaultInt32ExtensionLiteFieldNumber = 61;
-    public static pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, int> DefaultInt32ExtensionLite;
-    public const int DefaultInt64ExtensionLiteFieldNumber = 62;
-    public static pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, long> DefaultInt64ExtensionLite;
-    public const int DefaultUint32ExtensionLiteFieldNumber = 63;
-    public static pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, uint> DefaultUint32ExtensionLite;
-    public const int DefaultUint64ExtensionLiteFieldNumber = 64;
-    public static pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, ulong> DefaultUint64ExtensionLite;
-    public const int DefaultSint32ExtensionLiteFieldNumber = 65;
-    public static pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, int> DefaultSint32ExtensionLite;
-    public const int DefaultSint64ExtensionLiteFieldNumber = 66;
-    public static pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, long> DefaultSint64ExtensionLite;
-    public const int DefaultFixed32ExtensionLiteFieldNumber = 67;
-    public static pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, uint> DefaultFixed32ExtensionLite;
-    public const int DefaultFixed64ExtensionLiteFieldNumber = 68;
-    public static pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, ulong> DefaultFixed64ExtensionLite;
-    public const int DefaultSfixed32ExtensionLiteFieldNumber = 69;
-    public static pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, int> DefaultSfixed32ExtensionLite;
-    public const int DefaultSfixed64ExtensionLiteFieldNumber = 70;
-    public static pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, long> DefaultSfixed64ExtensionLite;
-    public const int DefaultFloatExtensionLiteFieldNumber = 71;
-    public static pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, float> DefaultFloatExtensionLite;
-    public const int DefaultDoubleExtensionLiteFieldNumber = 72;
-    public static pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, double> DefaultDoubleExtensionLite;
-    public const int DefaultBoolExtensionLiteFieldNumber = 73;
-    public static pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, bool> DefaultBoolExtensionLite;
-    public const int DefaultStringExtensionLiteFieldNumber = 74;
-    public static pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, string> DefaultStringExtensionLite;
-    public const int DefaultBytesExtensionLiteFieldNumber = 75;
-    public static pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, pb::ByteString> DefaultBytesExtensionLite;
-    public const int DefaultNestedEnumExtensionLiteFieldNumber = 81;
-    public static pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedEnum> DefaultNestedEnumExtensionLite;
-    public const int DefaultForeignEnumExtensionLiteFieldNumber = 82;
-    public static pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite> DefaultForeignEnumExtensionLite;
-    public const int DefaultImportEnumExtensionLiteFieldNumber = 83;
-    public static pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, global::Google.ProtocolBuffers.TestProtos.ImportEnumLite> DefaultImportEnumExtensionLite;
-    public const int DefaultStringPieceExtensionLiteFieldNumber = 84;
-    public static pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, string> DefaultStringPieceExtensionLite;
-    public const int DefaultCordExtensionLiteFieldNumber = 85;
-    public static pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, string> DefaultCordExtensionLite;
-    public const int OneofUint32ExtensionLiteFieldNumber = 111;
-    public static pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, uint> OneofUint32ExtensionLite;
-    public const int OneofNestedMessageExtensionLiteFieldNumber = 112;
-    public static pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage> OneofNestedMessageExtensionLite;
-    public const int OneofStringExtensionLiteFieldNumber = 113;
-    public static pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, string> OneofStringExtensionLite;
-    public const int OneofBytesExtensionLiteFieldNumber = 114;
-    public static pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, pb::ByteString> OneofBytesExtensionLite;
-    public const int PackedInt32ExtensionLiteFieldNumber = 90;
-    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestPackedExtensionsLite, int> PackedInt32ExtensionLite;
-    public const int PackedInt64ExtensionLiteFieldNumber = 91;
-    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestPackedExtensionsLite, long> PackedInt64ExtensionLite;
-    public const int PackedUint32ExtensionLiteFieldNumber = 92;
-    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestPackedExtensionsLite, uint> PackedUint32ExtensionLite;
-    public const int PackedUint64ExtensionLiteFieldNumber = 93;
-    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestPackedExtensionsLite, ulong> PackedUint64ExtensionLite;
-    public const int PackedSint32ExtensionLiteFieldNumber = 94;
-    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestPackedExtensionsLite, int> PackedSint32ExtensionLite;
-    public const int PackedSint64ExtensionLiteFieldNumber = 95;
-    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestPackedExtensionsLite, long> PackedSint64ExtensionLite;
-    public const int PackedFixed32ExtensionLiteFieldNumber = 96;
-    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestPackedExtensionsLite, uint> PackedFixed32ExtensionLite;
-    public const int PackedFixed64ExtensionLiteFieldNumber = 97;
-    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestPackedExtensionsLite, ulong> PackedFixed64ExtensionLite;
-    public const int PackedSfixed32ExtensionLiteFieldNumber = 98;
-    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestPackedExtensionsLite, int> PackedSfixed32ExtensionLite;
-    public const int PackedSfixed64ExtensionLiteFieldNumber = 99;
-    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestPackedExtensionsLite, long> PackedSfixed64ExtensionLite;
-    public const int PackedFloatExtensionLiteFieldNumber = 100;
-    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestPackedExtensionsLite, float> PackedFloatExtensionLite;
-    public const int PackedDoubleExtensionLiteFieldNumber = 101;
-    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestPackedExtensionsLite, double> PackedDoubleExtensionLite;
-    public const int PackedBoolExtensionLiteFieldNumber = 102;
-    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestPackedExtensionsLite, bool> PackedBoolExtensionLite;
-    public const int PackedEnumExtensionLiteFieldNumber = 103;
-    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestPackedExtensionsLite, global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite> PackedEnumExtensionLite;
-    #endregion
-
-    #region Static variables
-    #endregion
-    #region Extensions
-    internal static readonly object Descriptor;
-    static UnittestLite() {
-      Descriptor = null;
-      global::Google.ProtocolBuffers.TestProtos.TestNestedExtensionLite.NestedExtension = 
-        new pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, int>(
-          "protobuf_unittest.TestNestedExtensionLite.nested_extension",
-          global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.DefaultInstance,
-          default(int),
-          null,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.TestNestedExtensionLite.NestedExtensionFieldNumber,
-          pbd::FieldType.Int32);
-      global::Google.ProtocolBuffers.TestProtos.TestParsingMergeLite.OptionalExt = 
-        new pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestParsingMergeLite, global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite>(
-          "protobuf_unittest.TestParsingMergeLite.optional_ext",
-          global::Google.ProtocolBuffers.TestProtos.TestParsingMergeLite.DefaultInstance,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.DefaultInstance,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.TestParsingMergeLite.OptionalExtFieldNumber,
-          pbd::FieldType.Message);
-      global::Google.ProtocolBuffers.TestProtos.TestParsingMergeLite.RepeatedExt = 
-        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestParsingMergeLite, global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite>(
-          "protobuf_unittest.TestParsingMergeLite.repeated_ext",
-          global::Google.ProtocolBuffers.TestProtos.TestParsingMergeLite.DefaultInstance,
-          global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.DefaultInstance,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.TestParsingMergeLite.RepeatedExtFieldNumber,
-          pbd::FieldType.Message,
-          false);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.OptionalInt32ExtensionLite = 
-        new pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, int>(
-          "protobuf_unittest.optional_int32_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.DefaultInstance,
-          default(int),
-          null,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.OptionalInt32ExtensionLiteFieldNumber,
-          pbd::FieldType.Int32);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.OptionalInt64ExtensionLite = 
-        new pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, long>(
-          "protobuf_unittest.optional_int64_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.DefaultInstance,
-          default(long),
-          null,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.OptionalInt64ExtensionLiteFieldNumber,
-          pbd::FieldType.Int64);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.OptionalUint32ExtensionLite = 
-        new pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, uint>(
-          "protobuf_unittest.optional_uint32_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.DefaultInstance,
-          default(uint),
-          null,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.OptionalUint32ExtensionLiteFieldNumber,
-          pbd::FieldType.UInt32);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.OptionalUint64ExtensionLite = 
-        new pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, ulong>(
-          "protobuf_unittest.optional_uint64_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.DefaultInstance,
-          default(ulong),
-          null,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.OptionalUint64ExtensionLiteFieldNumber,
-          pbd::FieldType.UInt64);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.OptionalSint32ExtensionLite = 
-        new pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, int>(
-          "protobuf_unittest.optional_sint32_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.DefaultInstance,
-          default(int),
-          null,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.OptionalSint32ExtensionLiteFieldNumber,
-          pbd::FieldType.SInt32);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.OptionalSint64ExtensionLite = 
-        new pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, long>(
-          "protobuf_unittest.optional_sint64_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.DefaultInstance,
-          default(long),
-          null,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.OptionalSint64ExtensionLiteFieldNumber,
-          pbd::FieldType.SInt64);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.OptionalFixed32ExtensionLite = 
-        new pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, uint>(
-          "protobuf_unittest.optional_fixed32_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.DefaultInstance,
-          default(uint),
-          null,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.OptionalFixed32ExtensionLiteFieldNumber,
-          pbd::FieldType.Fixed32);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.OptionalFixed64ExtensionLite = 
-        new pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, ulong>(
-          "protobuf_unittest.optional_fixed64_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.DefaultInstance,
-          default(ulong),
-          null,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.OptionalFixed64ExtensionLiteFieldNumber,
-          pbd::FieldType.Fixed64);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.OptionalSfixed32ExtensionLite = 
-        new pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, int>(
-          "protobuf_unittest.optional_sfixed32_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.DefaultInstance,
-          default(int),
-          null,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.OptionalSfixed32ExtensionLiteFieldNumber,
-          pbd::FieldType.SFixed32);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.OptionalSfixed64ExtensionLite = 
-        new pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, long>(
-          "protobuf_unittest.optional_sfixed64_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.DefaultInstance,
-          default(long),
-          null,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.OptionalSfixed64ExtensionLiteFieldNumber,
-          pbd::FieldType.SFixed64);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.OptionalFloatExtensionLite = 
-        new pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, float>(
-          "protobuf_unittest.optional_float_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.DefaultInstance,
-          default(float),
-          null,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.OptionalFloatExtensionLiteFieldNumber,
-          pbd::FieldType.Float);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.OptionalDoubleExtensionLite = 
-        new pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, double>(
-          "protobuf_unittest.optional_double_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.DefaultInstance,
-          default(double),
-          null,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.OptionalDoubleExtensionLiteFieldNumber,
-          pbd::FieldType.Double);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.OptionalBoolExtensionLite = 
-        new pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, bool>(
-          "protobuf_unittest.optional_bool_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.DefaultInstance,
-          default(bool),
-          null,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.OptionalBoolExtensionLiteFieldNumber,
-          pbd::FieldType.Bool);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.OptionalStringExtensionLite = 
-        new pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, string>(
-          "protobuf_unittest.optional_string_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.DefaultInstance,
-          null,
-          null,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.OptionalStringExtensionLiteFieldNumber,
-          pbd::FieldType.String);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.OptionalBytesExtensionLite = 
-        new pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, pb::ByteString>(
-          "protobuf_unittest.optional_bytes_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.DefaultInstance,
-          null,
-          null,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.OptionalBytesExtensionLiteFieldNumber,
-          pbd::FieldType.Bytes);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.OptionalGroupExtensionLite = 
-        new pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, global::Google.ProtocolBuffers.TestProtos.OptionalGroup_extension_lite>(
-          "protobuf_unittest.optionalgroup_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.DefaultInstance,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.OptionalGroup_extension_lite.DefaultInstance,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.OptionalGroupExtensionLiteFieldNumber,
-          pbd::FieldType.Group);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.OptionalNestedMessageExtensionLite = 
-        new pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage>(
-          "protobuf_unittest.optional_nested_message_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.DefaultInstance,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage.DefaultInstance,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.OptionalNestedMessageExtensionLiteFieldNumber,
-          pbd::FieldType.Message);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.OptionalForeignMessageExtensionLite = 
-        new pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, global::Google.ProtocolBuffers.TestProtos.ForeignMessageLite>(
-          "protobuf_unittest.optional_foreign_message_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.DefaultInstance,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.ForeignMessageLite.DefaultInstance,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.OptionalForeignMessageExtensionLiteFieldNumber,
-          pbd::FieldType.Message);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.OptionalImportMessageExtensionLite = 
-        new pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, global::Google.ProtocolBuffers.TestProtos.ImportMessageLite>(
-          "protobuf_unittest.optional_import_message_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.DefaultInstance,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.ImportMessageLite.DefaultInstance,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.OptionalImportMessageExtensionLiteFieldNumber,
-          pbd::FieldType.Message);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.OptionalNestedEnumExtensionLite = 
-        new pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedEnum>(
-          "protobuf_unittest.optional_nested_enum_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.DefaultInstance,
-          default(global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedEnum),
-          null,
-          new EnumLiteMap<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedEnum>(),
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.OptionalNestedEnumExtensionLiteFieldNumber,
-          pbd::FieldType.Enum);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.OptionalForeignEnumExtensionLite = 
-        new pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite>(
-          "protobuf_unittest.optional_foreign_enum_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.DefaultInstance,
-          default(global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite),
-          null,
-          new EnumLiteMap<global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite>(),
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.OptionalForeignEnumExtensionLiteFieldNumber,
-          pbd::FieldType.Enum);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.OptionalImportEnumExtensionLite = 
-        new pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, global::Google.ProtocolBuffers.TestProtos.ImportEnumLite>(
-          "protobuf_unittest.optional_import_enum_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.DefaultInstance,
-          default(global::Google.ProtocolBuffers.TestProtos.ImportEnumLite),
-          null,
-          new EnumLiteMap<global::Google.ProtocolBuffers.TestProtos.ImportEnumLite>(),
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.OptionalImportEnumExtensionLiteFieldNumber,
-          pbd::FieldType.Enum);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.OptionalStringPieceExtensionLite = 
-        new pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, string>(
-          "protobuf_unittest.optional_string_piece_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.DefaultInstance,
-          null,
-          null,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.OptionalStringPieceExtensionLiteFieldNumber,
-          pbd::FieldType.String);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.OptionalCordExtensionLite = 
-        new pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, string>(
-          "protobuf_unittest.optional_cord_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.DefaultInstance,
-          null,
-          null,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.OptionalCordExtensionLiteFieldNumber,
-          pbd::FieldType.String);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.OptionalPublicImportMessageExtensionLite = 
-        new pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, global::Google.ProtocolBuffers.TestProtos.PublicImportMessageLite>(
-          "protobuf_unittest.optional_public_import_message_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.DefaultInstance,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.PublicImportMessageLite.DefaultInstance,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.OptionalPublicImportMessageExtensionLiteFieldNumber,
-          pbd::FieldType.Message);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.OptionalLazyMessageExtensionLite = 
-        new pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage>(
-          "protobuf_unittest.optional_lazy_message_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.DefaultInstance,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage.DefaultInstance,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.OptionalLazyMessageExtensionLiteFieldNumber,
-          pbd::FieldType.Message);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.RepeatedInt32ExtensionLite = 
-        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, int>(
-          "protobuf_unittest.repeated_int32_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.DefaultInstance,
-          null,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.RepeatedInt32ExtensionLiteFieldNumber,
-          pbd::FieldType.Int32,
-          false);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.RepeatedInt64ExtensionLite = 
-        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, long>(
-          "protobuf_unittest.repeated_int64_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.DefaultInstance,
-          null,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.RepeatedInt64ExtensionLiteFieldNumber,
-          pbd::FieldType.Int64,
-          false);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.RepeatedUint32ExtensionLite = 
-        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, uint>(
-          "protobuf_unittest.repeated_uint32_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.DefaultInstance,
-          null,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.RepeatedUint32ExtensionLiteFieldNumber,
-          pbd::FieldType.UInt32,
-          false);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.RepeatedUint64ExtensionLite = 
-        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, ulong>(
-          "protobuf_unittest.repeated_uint64_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.DefaultInstance,
-          null,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.RepeatedUint64ExtensionLiteFieldNumber,
-          pbd::FieldType.UInt64,
-          false);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.RepeatedSint32ExtensionLite = 
-        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, int>(
-          "protobuf_unittest.repeated_sint32_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.DefaultInstance,
-          null,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.RepeatedSint32ExtensionLiteFieldNumber,
-          pbd::FieldType.SInt32,
-          false);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.RepeatedSint64ExtensionLite = 
-        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, long>(
-          "protobuf_unittest.repeated_sint64_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.DefaultInstance,
-          null,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.RepeatedSint64ExtensionLiteFieldNumber,
-          pbd::FieldType.SInt64,
-          false);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.RepeatedFixed32ExtensionLite = 
-        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, uint>(
-          "protobuf_unittest.repeated_fixed32_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.DefaultInstance,
-          null,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.RepeatedFixed32ExtensionLiteFieldNumber,
-          pbd::FieldType.Fixed32,
-          false);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.RepeatedFixed64ExtensionLite = 
-        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, ulong>(
-          "protobuf_unittest.repeated_fixed64_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.DefaultInstance,
-          null,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.RepeatedFixed64ExtensionLiteFieldNumber,
-          pbd::FieldType.Fixed64,
-          false);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.RepeatedSfixed32ExtensionLite = 
-        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, int>(
-          "protobuf_unittest.repeated_sfixed32_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.DefaultInstance,
-          null,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.RepeatedSfixed32ExtensionLiteFieldNumber,
-          pbd::FieldType.SFixed32,
-          false);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.RepeatedSfixed64ExtensionLite = 
-        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, long>(
-          "protobuf_unittest.repeated_sfixed64_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.DefaultInstance,
-          null,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.RepeatedSfixed64ExtensionLiteFieldNumber,
-          pbd::FieldType.SFixed64,
-          false);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.RepeatedFloatExtensionLite = 
-        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, float>(
-          "protobuf_unittest.repeated_float_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.DefaultInstance,
-          null,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.RepeatedFloatExtensionLiteFieldNumber,
-          pbd::FieldType.Float,
-          false);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.RepeatedDoubleExtensionLite = 
-        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, double>(
-          "protobuf_unittest.repeated_double_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.DefaultInstance,
-          null,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.RepeatedDoubleExtensionLiteFieldNumber,
-          pbd::FieldType.Double,
-          false);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.RepeatedBoolExtensionLite = 
-        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, bool>(
-          "protobuf_unittest.repeated_bool_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.DefaultInstance,
-          null,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.RepeatedBoolExtensionLiteFieldNumber,
-          pbd::FieldType.Bool,
-          false);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.RepeatedStringExtensionLite = 
-        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, string>(
-          "protobuf_unittest.repeated_string_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.DefaultInstance,
-          null,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.RepeatedStringExtensionLiteFieldNumber,
-          pbd::FieldType.String,
-          false);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.RepeatedBytesExtensionLite = 
-        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, pb::ByteString>(
-          "protobuf_unittest.repeated_bytes_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.DefaultInstance,
-          null,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.RepeatedBytesExtensionLiteFieldNumber,
-          pbd::FieldType.Bytes,
-          false);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.RepeatedGroupExtensionLite = 
-        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, global::Google.ProtocolBuffers.TestProtos.RepeatedGroup_extension_lite>(
-          "protobuf_unittest.repeatedgroup_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.DefaultInstance,
-          global::Google.ProtocolBuffers.TestProtos.RepeatedGroup_extension_lite.DefaultInstance,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.RepeatedGroupExtensionLiteFieldNumber,
-          pbd::FieldType.Group,
-          false);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.RepeatedNestedMessageExtensionLite = 
-        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage>(
-          "protobuf_unittest.repeated_nested_message_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.DefaultInstance,
-          global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage.DefaultInstance,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.RepeatedNestedMessageExtensionLiteFieldNumber,
-          pbd::FieldType.Message,
-          false);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.RepeatedForeignMessageExtensionLite = 
-        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, global::Google.ProtocolBuffers.TestProtos.ForeignMessageLite>(
-          "protobuf_unittest.repeated_foreign_message_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.DefaultInstance,
-          global::Google.ProtocolBuffers.TestProtos.ForeignMessageLite.DefaultInstance,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.RepeatedForeignMessageExtensionLiteFieldNumber,
-          pbd::FieldType.Message,
-          false);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.RepeatedImportMessageExtensionLite = 
-        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, global::Google.ProtocolBuffers.TestProtos.ImportMessageLite>(
-          "protobuf_unittest.repeated_import_message_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.DefaultInstance,
-          global::Google.ProtocolBuffers.TestProtos.ImportMessageLite.DefaultInstance,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.RepeatedImportMessageExtensionLiteFieldNumber,
-          pbd::FieldType.Message,
-          false);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.RepeatedNestedEnumExtensionLite = 
-        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedEnum>(
-          "protobuf_unittest.repeated_nested_enum_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.DefaultInstance,
-          null,
-          new EnumLiteMap<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedEnum>(),
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.RepeatedNestedEnumExtensionLiteFieldNumber,
-          pbd::FieldType.Enum,
-          false);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.RepeatedForeignEnumExtensionLite = 
-        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite>(
-          "protobuf_unittest.repeated_foreign_enum_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.DefaultInstance,
-          null,
-          new EnumLiteMap<global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite>(),
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.RepeatedForeignEnumExtensionLiteFieldNumber,
-          pbd::FieldType.Enum,
-          false);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.RepeatedImportEnumExtensionLite = 
-        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, global::Google.ProtocolBuffers.TestProtos.ImportEnumLite>(
-          "protobuf_unittest.repeated_import_enum_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.DefaultInstance,
-          null,
-          new EnumLiteMap<global::Google.ProtocolBuffers.TestProtos.ImportEnumLite>(),
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.RepeatedImportEnumExtensionLiteFieldNumber,
-          pbd::FieldType.Enum,
-          false);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.RepeatedStringPieceExtensionLite = 
-        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, string>(
-          "protobuf_unittest.repeated_string_piece_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.DefaultInstance,
-          null,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.RepeatedStringPieceExtensionLiteFieldNumber,
-          pbd::FieldType.String,
-          false);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.RepeatedCordExtensionLite = 
-        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, string>(
-          "protobuf_unittest.repeated_cord_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.DefaultInstance,
-          null,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.RepeatedCordExtensionLiteFieldNumber,
-          pbd::FieldType.String,
-          false);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.RepeatedLazyMessageExtensionLite = 
-        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage>(
-          "protobuf_unittest.repeated_lazy_message_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.DefaultInstance,
-          global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage.DefaultInstance,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.RepeatedLazyMessageExtensionLiteFieldNumber,
-          pbd::FieldType.Message,
-          false);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.DefaultInt32ExtensionLite = 
-        new pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, int>(
-          "protobuf_unittest.default_int32_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.DefaultInstance,
-          41,
-          null,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.DefaultInt32ExtensionLiteFieldNumber,
-          pbd::FieldType.Int32);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.DefaultInt64ExtensionLite = 
-        new pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, long>(
-          "protobuf_unittest.default_int64_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.DefaultInstance,
-          42L,
-          null,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.DefaultInt64ExtensionLiteFieldNumber,
-          pbd::FieldType.Int64);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.DefaultUint32ExtensionLite = 
-        new pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, uint>(
-          "protobuf_unittest.default_uint32_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.DefaultInstance,
-          43,
-          null,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.DefaultUint32ExtensionLiteFieldNumber,
-          pbd::FieldType.UInt32);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.DefaultUint64ExtensionLite = 
-        new pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, ulong>(
-          "protobuf_unittest.default_uint64_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.DefaultInstance,
-          44UL,
-          null,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.DefaultUint64ExtensionLiteFieldNumber,
-          pbd::FieldType.UInt64);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.DefaultSint32ExtensionLite = 
-        new pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, int>(
-          "protobuf_unittest.default_sint32_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.DefaultInstance,
-          -45,
-          null,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.DefaultSint32ExtensionLiteFieldNumber,
-          pbd::FieldType.SInt32);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.DefaultSint64ExtensionLite = 
-        new pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, long>(
-          "protobuf_unittest.default_sint64_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.DefaultInstance,
-          46L,
-          null,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.DefaultSint64ExtensionLiteFieldNumber,
-          pbd::FieldType.SInt64);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.DefaultFixed32ExtensionLite = 
-        new pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, uint>(
-          "protobuf_unittest.default_fixed32_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.DefaultInstance,
-          47,
-          null,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.DefaultFixed32ExtensionLiteFieldNumber,
-          pbd::FieldType.Fixed32);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.DefaultFixed64ExtensionLite = 
-        new pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, ulong>(
-          "protobuf_unittest.default_fixed64_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.DefaultInstance,
-          48UL,
-          null,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.DefaultFixed64ExtensionLiteFieldNumber,
-          pbd::FieldType.Fixed64);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.DefaultSfixed32ExtensionLite = 
-        new pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, int>(
-          "protobuf_unittest.default_sfixed32_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.DefaultInstance,
-          49,
-          null,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.DefaultSfixed32ExtensionLiteFieldNumber,
-          pbd::FieldType.SFixed32);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.DefaultSfixed64ExtensionLite = 
-        new pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, long>(
-          "protobuf_unittest.default_sfixed64_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.DefaultInstance,
-          -50L,
-          null,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.DefaultSfixed64ExtensionLiteFieldNumber,
-          pbd::FieldType.SFixed64);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.DefaultFloatExtensionLite = 
-        new pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, float>(
-          "protobuf_unittest.default_float_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.DefaultInstance,
-          51.5F,
-          null,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.DefaultFloatExtensionLiteFieldNumber,
-          pbd::FieldType.Float);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.DefaultDoubleExtensionLite = 
-        new pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, double>(
-          "protobuf_unittest.default_double_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.DefaultInstance,
-          52000D,
-          null,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.DefaultDoubleExtensionLiteFieldNumber,
-          pbd::FieldType.Double);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.DefaultBoolExtensionLite = 
-        new pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, bool>(
-          "protobuf_unittest.default_bool_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.DefaultInstance,
-          true,
-          null,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.DefaultBoolExtensionLiteFieldNumber,
-          pbd::FieldType.Bool);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.DefaultStringExtensionLite = 
-        new pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, string>(
-          "protobuf_unittest.default_string_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.DefaultInstance,
-          "hello",
-          null,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.DefaultStringExtensionLiteFieldNumber,
-          pbd::FieldType.String);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.DefaultBytesExtensionLite = 
-        new pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, pb::ByteString>(
-          "protobuf_unittest.default_bytes_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.DefaultInstance,
-          pb::ByteString.FromBase64("d29ybGQ="),
-          null,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.DefaultBytesExtensionLiteFieldNumber,
-          pbd::FieldType.Bytes);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.DefaultNestedEnumExtensionLite = 
-        new pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedEnum>(
-          "protobuf_unittest.default_nested_enum_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.DefaultInstance,
-          global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedEnum.BAR,
-          null,
-          new EnumLiteMap<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedEnum>(),
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.DefaultNestedEnumExtensionLiteFieldNumber,
-          pbd::FieldType.Enum);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.DefaultForeignEnumExtensionLite = 
-        new pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite>(
-          "protobuf_unittest.default_foreign_enum_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.DefaultInstance,
-          global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite.FOREIGN_LITE_BAR,
-          null,
-          new EnumLiteMap<global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite>(),
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.DefaultForeignEnumExtensionLiteFieldNumber,
-          pbd::FieldType.Enum);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.DefaultImportEnumExtensionLite = 
-        new pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, global::Google.ProtocolBuffers.TestProtos.ImportEnumLite>(
-          "protobuf_unittest.default_import_enum_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.DefaultInstance,
-          global::Google.ProtocolBuffers.TestProtos.ImportEnumLite.IMPORT_LITE_BAR,
-          null,
-          new EnumLiteMap<global::Google.ProtocolBuffers.TestProtos.ImportEnumLite>(),
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.DefaultImportEnumExtensionLiteFieldNumber,
-          pbd::FieldType.Enum);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.DefaultStringPieceExtensionLite = 
-        new pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, string>(
-          "protobuf_unittest.default_string_piece_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.DefaultInstance,
-          "abc",
-          null,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.DefaultStringPieceExtensionLiteFieldNumber,
-          pbd::FieldType.String);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.DefaultCordExtensionLite = 
-        new pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, string>(
-          "protobuf_unittest.default_cord_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.DefaultInstance,
-          "123",
-          null,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.DefaultCordExtensionLiteFieldNumber,
-          pbd::FieldType.String);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.OneofUint32ExtensionLite = 
-        new pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, uint>(
-          "protobuf_unittest.oneof_uint32_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.DefaultInstance,
-          default(uint),
-          null,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.OneofUint32ExtensionLiteFieldNumber,
-          pbd::FieldType.UInt32);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.OneofNestedMessageExtensionLite = 
-        new pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage>(
-          "protobuf_unittest.oneof_nested_message_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.DefaultInstance,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage.DefaultInstance,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.OneofNestedMessageExtensionLiteFieldNumber,
-          pbd::FieldType.Message);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.OneofStringExtensionLite = 
-        new pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, string>(
-          "protobuf_unittest.oneof_string_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.DefaultInstance,
-          null,
-          null,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.OneofStringExtensionLiteFieldNumber,
-          pbd::FieldType.String);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.OneofBytesExtensionLite = 
-        new pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, pb::ByteString>(
-          "protobuf_unittest.oneof_bytes_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.DefaultInstance,
-          null,
-          null,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.OneofBytesExtensionLiteFieldNumber,
-          pbd::FieldType.Bytes);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.PackedInt32ExtensionLite = 
-        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestPackedExtensionsLite, int>(
-          "protobuf_unittest.packed_int32_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestPackedExtensionsLite.DefaultInstance,
-          null,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.PackedInt32ExtensionLiteFieldNumber,
-          pbd::FieldType.Int32,
-          true);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.PackedInt64ExtensionLite = 
-        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestPackedExtensionsLite, long>(
-          "protobuf_unittest.packed_int64_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestPackedExtensionsLite.DefaultInstance,
-          null,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.PackedInt64ExtensionLiteFieldNumber,
-          pbd::FieldType.Int64,
-          true);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.PackedUint32ExtensionLite = 
-        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestPackedExtensionsLite, uint>(
-          "protobuf_unittest.packed_uint32_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestPackedExtensionsLite.DefaultInstance,
-          null,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.PackedUint32ExtensionLiteFieldNumber,
-          pbd::FieldType.UInt32,
-          true);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.PackedUint64ExtensionLite = 
-        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestPackedExtensionsLite, ulong>(
-          "protobuf_unittest.packed_uint64_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestPackedExtensionsLite.DefaultInstance,
-          null,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.PackedUint64ExtensionLiteFieldNumber,
-          pbd::FieldType.UInt64,
-          true);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.PackedSint32ExtensionLite = 
-        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestPackedExtensionsLite, int>(
-          "protobuf_unittest.packed_sint32_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestPackedExtensionsLite.DefaultInstance,
-          null,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.PackedSint32ExtensionLiteFieldNumber,
-          pbd::FieldType.SInt32,
-          true);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.PackedSint64ExtensionLite = 
-        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestPackedExtensionsLite, long>(
-          "protobuf_unittest.packed_sint64_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestPackedExtensionsLite.DefaultInstance,
-          null,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.PackedSint64ExtensionLiteFieldNumber,
-          pbd::FieldType.SInt64,
-          true);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.PackedFixed32ExtensionLite = 
-        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestPackedExtensionsLite, uint>(
-          "protobuf_unittest.packed_fixed32_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestPackedExtensionsLite.DefaultInstance,
-          null,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.PackedFixed32ExtensionLiteFieldNumber,
-          pbd::FieldType.Fixed32,
-          true);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.PackedFixed64ExtensionLite = 
-        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestPackedExtensionsLite, ulong>(
-          "protobuf_unittest.packed_fixed64_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestPackedExtensionsLite.DefaultInstance,
-          null,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.PackedFixed64ExtensionLiteFieldNumber,
-          pbd::FieldType.Fixed64,
-          true);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.PackedSfixed32ExtensionLite = 
-        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestPackedExtensionsLite, int>(
-          "protobuf_unittest.packed_sfixed32_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestPackedExtensionsLite.DefaultInstance,
-          null,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.PackedSfixed32ExtensionLiteFieldNumber,
-          pbd::FieldType.SFixed32,
-          true);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.PackedSfixed64ExtensionLite = 
-        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestPackedExtensionsLite, long>(
-          "protobuf_unittest.packed_sfixed64_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestPackedExtensionsLite.DefaultInstance,
-          null,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.PackedSfixed64ExtensionLiteFieldNumber,
-          pbd::FieldType.SFixed64,
-          true);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.PackedFloatExtensionLite = 
-        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestPackedExtensionsLite, float>(
-          "protobuf_unittest.packed_float_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestPackedExtensionsLite.DefaultInstance,
-          null,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.PackedFloatExtensionLiteFieldNumber,
-          pbd::FieldType.Float,
-          true);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.PackedDoubleExtensionLite = 
-        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestPackedExtensionsLite, double>(
-          "protobuf_unittest.packed_double_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestPackedExtensionsLite.DefaultInstance,
-          null,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.PackedDoubleExtensionLiteFieldNumber,
-          pbd::FieldType.Double,
-          true);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.PackedBoolExtensionLite = 
-        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestPackedExtensionsLite, bool>(
-          "protobuf_unittest.packed_bool_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestPackedExtensionsLite.DefaultInstance,
-          null,
-          null,
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.PackedBoolExtensionLiteFieldNumber,
-          pbd::FieldType.Bool,
-          true);
-      global::Google.ProtocolBuffers.TestProtos.UnittestLite.PackedEnumExtensionLite = 
-        new pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestPackedExtensionsLite, global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite>(
-          "protobuf_unittest.packed_enum_extension_lite",
-          global::Google.ProtocolBuffers.TestProtos.TestPackedExtensionsLite.DefaultInstance,
-          null,
-          new EnumLiteMap<global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite>(),
-          global::Google.ProtocolBuffers.TestProtos.UnittestLite.PackedEnumExtensionLiteFieldNumber,
-          pbd::FieldType.Enum,
-          true);
-    }
-    #endregion
-
-  }
-  #region Enums
-  public enum ForeignEnumLite {
-    FOREIGN_LITE_FOO = 4,
-    FOREIGN_LITE_BAR = 5,
-    FOREIGN_LITE_BAZ = 6,
-  }
-
-  #endregion
-
-  #region Messages
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class TestAllTypesLite : pb::GeneratedMessageLite<TestAllTypesLite, TestAllTypesLite.Builder> {
-    private TestAllTypesLite() { }
-    private static readonly TestAllTypesLite defaultInstance = new TestAllTypesLite().MakeReadOnly();
-    private static readonly string[] _testAllTypesLiteFieldNames = new string[] { "default_bool", "default_bytes", "default_cord", "default_double", "default_fixed32", "default_fixed64", "default_float", "default_foreign_enum", "default_import_enum", "default_int32", "default_int64", "default_nested_enum", "default_sfixed32", "default_sfixed64", "default_sint32", "default_sint64", "default_string", "default_string_piece", "default_uint32", "default_uint64", "oneof_bytes", "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_import_enum", "optional_import_message", "optional_int32", "optional_int64", "optional_lazy_message", "optional_nested_enum", "optional_nested_message", "optional_public_import_message", "optional_sfixed32", "optional_sfixed64", "optional_sint32", "optional_sint64", "optional_string", "optional_string_piece", "optional_uint32", "optional_uint64", "optionalgroup", "repeated_bool", "repeated_bytes", "repeated_cord", "repeated_double", "repeated_fixed32", "repeated_fixed64", "repeated_float", "repeated_foreign_enum", "repeated_foreign_message", "repeated_import_enum", "repeated_import_message", "repeated_int32", "repeated_int64", "repeated_lazy_message", "repeated_nested_enum", "repeated_nested_message", "repeated_sfixed32", "repeated_sfixed64", "repeated_sint32", "repeated_sint64", "repeated_string", "repeated_string_piece", "repeated_uint32", "repeated_uint64", "repeatedgroup" };
-    private static readonly uint[] _testAllTypesLiteFieldTags = new uint[] { 584, 602, 682, 577, 541, 545, 573, 656, 664, 488, 496, 648, 557, 561, 520, 528, 594, 674, 504, 512, 914, 898, 906, 888, 104, 122, 202, 97, 61, 65, 93, 176, 154, 184, 162, 8, 16, 218, 168, 146, 210, 77, 81, 40, 48, 114, 194, 24, 32, 131, 344, 362, 442, 337, 301, 305, 333, 416, 394, 424, 402, 248, 256, 458, 408, 386, 317, 321, 280, 288, 354, 434, 264, 272, 371 };
-    public static TestAllTypesLite DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override TestAllTypesLite DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override TestAllTypesLite ThisMessage {
-      get { return this; }
-    }
-
-    #region Nested types
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public static partial class Types {
-      public enum NestedEnum {
-        FOO = 1,
-        BAR = 2,
-        BAZ = 3,
-      }
-
-      [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-      public sealed partial class NestedMessage : pb::GeneratedMessageLite<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 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);
-          }
-        }
-
-        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);
-          }
-          memoizedSerializedSize = size;
-          return size;
-        }
-        #region Lite runtime methods
-        public override int GetHashCode() {
-          int hash = GetType().GetHashCode();
-          if (hasBb) {
-            hash ^= bb_.GetHashCode();
-          }
-          return hash;
-        }
-
-        public override bool Equals(object obj) {
-          NestedMessage other = obj as NestedMessage;
-          if (other == null) return false;
-          if (hasBb != other.hasBb || (hasBb && !bb_.Equals(other.bb_))) return false;
-          return true;
-        }
-
-        public override void PrintTo(global::System.IO.TextWriter writer) {
-          PrintField("bb", hasBb, bb_, writer);
-        }
-        #endregion
-
-        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::GeneratedBuilderLite<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 NestedMessage DefaultInstanceForType {
-            get { return global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage.DefaultInstance; }
-          }
-
-          public override NestedMessage BuildPartial() {
-            if (resultIsReadOnly) {
-              return result;
-            }
-            resultIsReadOnly = true;
-            return result.MakeReadOnly();
-          }
-
-          public override Builder MergeFrom(pb::IMessageLite 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.TestAllTypesLite.Types.NestedMessage.DefaultInstance) return this;
-            PrepareBuilder();
-            if (other.HasBb) {
-              Bb = other.Bb;
-            }
-            return this;
-          }
-
-          public override Builder MergeFrom(pb::ICodedInputStream input) {
-            return MergeFrom(input, pb::ExtensionRegistry.Empty);
-          }
-
-          public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-            PrepareBuilder();
-            uint tag;
-            string field_name;
-            while (input.ReadTag(out tag, out field_name)) {
-              if(tag == 0 && field_name != null) {
-                int field_ordinal = global::System.Array.BinarySearch(_nestedMessageFieldNames, field_name, global::System.StringComparer.Ordinal);
-                if(field_ordinal >= 0)
-                  tag = _nestedMessageFieldTags[field_ordinal];
-                else {
-                  ParseUnknownField(input, extensionRegistry, tag, field_name);
-                  continue;
-                }
-              }
-              switch (tag) {
-                case 0: {
-                  throw pb::InvalidProtocolBufferException.InvalidTag();
-                }
-                default: {
-                  if (pb::WireFormat.IsEndGroupTag(tag)) {
-                    return this;
-                  }
-                  ParseUnknownField(input, extensionRegistry, tag, field_name);
-                  break;
-                }
-                case 8: {
-                  result.hasBb = input.ReadInt32(ref result.bb_);
-                  break;
-                }
-              }
-            }
-
-            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.UnittestLite.Descriptor, null);
-        }
-      }
-
-      [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-      public sealed partial class OptionalGroup : pb::GeneratedMessageLite<OptionalGroup, OptionalGroup.Builder> {
-        private OptionalGroup() { }
-        private static readonly OptionalGroup defaultInstance = new OptionalGroup().MakeReadOnly();
-        private static readonly string[] _optionalGroupFieldNames = new string[] { "a" };
-        private static readonly uint[] _optionalGroupFieldTags = new uint[] { 136 };
-        public static OptionalGroup DefaultInstance {
-          get { return defaultInstance; }
-        }
-
-        public override OptionalGroup DefaultInstanceForType {
-          get { return DefaultInstance; }
-        }
-
-        protected override OptionalGroup ThisMessage {
-          get { return this; }
-        }
-
-        public const int AFieldNumber = 17;
-        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 = _optionalGroupFieldNames;
-          if (hasA) {
-            output.WriteInt32(17, field_names[0], A);
-          }
-        }
-
-        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(17, A);
-          }
-          memoizedSerializedSize = size;
-          return size;
-        }
-        #region Lite runtime methods
-        public override int GetHashCode() {
-          int hash = GetType().GetHashCode();
-          if (hasA) {
-            hash ^= a_.GetHashCode();
-          }
-          return hash;
-        }
-
-        public override bool Equals(object obj) {
-          OptionalGroup other = obj as OptionalGroup;
-          if (other == null) return false;
-          if (hasA != other.hasA || (hasA && !a_.Equals(other.a_))) return false;
-          return true;
-        }
-
-        public override void PrintTo(global::System.IO.TextWriter writer) {
-          PrintField("a", hasA, a_, writer);
-        }
-        #endregion
-
-        public static OptionalGroup ParseFrom(pb::ByteString data) {
-          return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-        }
-        public static OptionalGroup ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-        }
-        public static OptionalGroup ParseFrom(byte[] data) {
-          return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-        }
-        public static OptionalGroup ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-        }
-        public static OptionalGroup ParseFrom(global::System.IO.Stream input) {
-          return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-        }
-        public static OptionalGroup ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-        }
-        public static OptionalGroup ParseDelimitedFrom(global::System.IO.Stream input) {
-          return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-        }
-        public static OptionalGroup ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-          return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-        }
-        public static OptionalGroup ParseFrom(pb::ICodedInputStream input) {
-          return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-        }
-        public static OptionalGroup ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-        }
-        private OptionalGroup 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(OptionalGroup prototype) {
-          return new Builder(prototype);
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-        public sealed partial class Builder : pb::GeneratedBuilderLite<OptionalGroup, Builder> {
-          protected override Builder ThisBuilder {
-            get { return this; }
-          }
-          public Builder() {
-            result = DefaultInstance;
-            resultIsReadOnly = true;
-          }
-          internal Builder(OptionalGroup cloneFrom) {
-            result = cloneFrom;
-            resultIsReadOnly = true;
-          }
-
-          private bool resultIsReadOnly;
-          private OptionalGroup result;
-
-          private OptionalGroup PrepareBuilder() {
-            if (resultIsReadOnly) {
-              OptionalGroup original = result;
-              result = new OptionalGroup();
-              resultIsReadOnly = false;
-              MergeFrom(original);
-            }
-            return result;
-          }
-
-          public override bool IsInitialized {
-            get { return result.IsInitialized; }
-          }
-
-          protected override OptionalGroup 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 OptionalGroup DefaultInstanceForType {
-            get { return global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.OptionalGroup.DefaultInstance; }
-          }
-
-          public override OptionalGroup BuildPartial() {
-            if (resultIsReadOnly) {
-              return result;
-            }
-            resultIsReadOnly = true;
-            return result.MakeReadOnly();
-          }
-
-          public override Builder MergeFrom(pb::IMessageLite other) {
-            if (other is OptionalGroup) {
-              return MergeFrom((OptionalGroup) other);
-            } else {
-              base.MergeFrom(other);
-              return this;
-            }
-          }
-
-          public override Builder MergeFrom(OptionalGroup other) {
-            if (other == global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.OptionalGroup.DefaultInstance) return this;
-            PrepareBuilder();
-            if (other.HasA) {
-              A = other.A;
-            }
-            return this;
-          }
-
-          public override Builder MergeFrom(pb::ICodedInputStream input) {
-            return MergeFrom(input, pb::ExtensionRegistry.Empty);
-          }
-
-          public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-            PrepareBuilder();
-            uint tag;
-            string field_name;
-            while (input.ReadTag(out tag, out field_name)) {
-              if(tag == 0 && field_name != null) {
-                int field_ordinal = global::System.Array.BinarySearch(_optionalGroupFieldNames, field_name, global::System.StringComparer.Ordinal);
-                if(field_ordinal >= 0)
-                  tag = _optionalGroupFieldTags[field_ordinal];
-                else {
-                  ParseUnknownField(input, extensionRegistry, tag, field_name);
-                  continue;
-                }
-              }
-              switch (tag) {
-                case 0: {
-                  throw pb::InvalidProtocolBufferException.InvalidTag();
-                }
-                default: {
-                  if (pb::WireFormat.IsEndGroupTag(tag)) {
-                    return this;
-                  }
-                  ParseUnknownField(input, extensionRegistry, tag, field_name);
-                  break;
-                }
-                case 136: {
-                  result.hasA = input.ReadInt32(ref result.a_);
-                  break;
-                }
-              }
-            }
-
-            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 OptionalGroup() {
-          object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnittestLite.Descriptor, null);
-        }
-      }
-
-      [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-      public sealed partial class RepeatedGroup : pb::GeneratedMessageLite<RepeatedGroup, RepeatedGroup.Builder> {
-        private RepeatedGroup() { }
-        private static readonly RepeatedGroup defaultInstance = new RepeatedGroup().MakeReadOnly();
-        private static readonly string[] _repeatedGroupFieldNames = new string[] { "a" };
-        private static readonly uint[] _repeatedGroupFieldTags = new uint[] { 376 };
-        public static RepeatedGroup DefaultInstance {
-          get { return defaultInstance; }
-        }
-
-        public override RepeatedGroup DefaultInstanceForType {
-          get { return DefaultInstance; }
-        }
-
-        protected override RepeatedGroup ThisMessage {
-          get { return this; }
-        }
-
-        public const int AFieldNumber = 47;
-        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 = _repeatedGroupFieldNames;
-          if (hasA) {
-            output.WriteInt32(47, field_names[0], A);
-          }
-        }
-
-        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(47, A);
-          }
-          memoizedSerializedSize = size;
-          return size;
-        }
-        #region Lite runtime methods
-        public override int GetHashCode() {
-          int hash = GetType().GetHashCode();
-          if (hasA) {
-            hash ^= a_.GetHashCode();
-          }
-          return hash;
-        }
-
-        public override bool Equals(object obj) {
-          RepeatedGroup other = obj as RepeatedGroup;
-          if (other == null) return false;
-          if (hasA != other.hasA || (hasA && !a_.Equals(other.a_))) return false;
-          return true;
-        }
-
-        public override void PrintTo(global::System.IO.TextWriter writer) {
-          PrintField("a", hasA, a_, writer);
-        }
-        #endregion
-
-        public static RepeatedGroup ParseFrom(pb::ByteString data) {
-          return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-        }
-        public static RepeatedGroup ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-        }
-        public static RepeatedGroup ParseFrom(byte[] data) {
-          return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-        }
-        public static RepeatedGroup ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-        }
-        public static RepeatedGroup ParseFrom(global::System.IO.Stream input) {
-          return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-        }
-        public static RepeatedGroup ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-        }
-        public static RepeatedGroup ParseDelimitedFrom(global::System.IO.Stream input) {
-          return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-        }
-        public static RepeatedGroup ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-          return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-        }
-        public static RepeatedGroup ParseFrom(pb::ICodedInputStream input) {
-          return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-        }
-        public static RepeatedGroup ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-        }
-        private RepeatedGroup 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(RepeatedGroup prototype) {
-          return new Builder(prototype);
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-        public sealed partial class Builder : pb::GeneratedBuilderLite<RepeatedGroup, Builder> {
-          protected override Builder ThisBuilder {
-            get { return this; }
-          }
-          public Builder() {
-            result = DefaultInstance;
-            resultIsReadOnly = true;
-          }
-          internal Builder(RepeatedGroup cloneFrom) {
-            result = cloneFrom;
-            resultIsReadOnly = true;
-          }
-
-          private bool resultIsReadOnly;
-          private RepeatedGroup result;
-
-          private RepeatedGroup PrepareBuilder() {
-            if (resultIsReadOnly) {
-              RepeatedGroup original = result;
-              result = new RepeatedGroup();
-              resultIsReadOnly = false;
-              MergeFrom(original);
-            }
-            return result;
-          }
-
-          public override bool IsInitialized {
-            get { return result.IsInitialized; }
-          }
-
-          protected override RepeatedGroup 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 RepeatedGroup DefaultInstanceForType {
-            get { return global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.RepeatedGroup.DefaultInstance; }
-          }
-
-          public override RepeatedGroup BuildPartial() {
-            if (resultIsReadOnly) {
-              return result;
-            }
-            resultIsReadOnly = true;
-            return result.MakeReadOnly();
-          }
-
-          public override Builder MergeFrom(pb::IMessageLite other) {
-            if (other is RepeatedGroup) {
-              return MergeFrom((RepeatedGroup) other);
-            } else {
-              base.MergeFrom(other);
-              return this;
-            }
-          }
-
-          public override Builder MergeFrom(RepeatedGroup other) {
-            if (other == global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.RepeatedGroup.DefaultInstance) return this;
-            PrepareBuilder();
-            if (other.HasA) {
-              A = other.A;
-            }
-            return this;
-          }
-
-          public override Builder MergeFrom(pb::ICodedInputStream input) {
-            return MergeFrom(input, pb::ExtensionRegistry.Empty);
-          }
-
-          public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-            PrepareBuilder();
-            uint tag;
-            string field_name;
-            while (input.ReadTag(out tag, out field_name)) {
-              if(tag == 0 && field_name != null) {
-                int field_ordinal = global::System.Array.BinarySearch(_repeatedGroupFieldNames, field_name, global::System.StringComparer.Ordinal);
-                if(field_ordinal >= 0)
-                  tag = _repeatedGroupFieldTags[field_ordinal];
-                else {
-                  ParseUnknownField(input, extensionRegistry, tag, field_name);
-                  continue;
-                }
-              }
-              switch (tag) {
-                case 0: {
-                  throw pb::InvalidProtocolBufferException.InvalidTag();
-                }
-                default: {
-                  if (pb::WireFormat.IsEndGroupTag(tag)) {
-                    return this;
-                  }
-                  ParseUnknownField(input, extensionRegistry, tag, field_name);
-                  break;
-                }
-                case 376: {
-                  result.hasA = input.ReadInt32(ref result.a_);
-                  break;
-                }
-              }
-            }
-
-            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 RepeatedGroup() {
-          object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnittestLite.Descriptor, null);
-        }
-      }
-
-    }
-    #endregion
-
-    private object oneofField_;
-    public enum OneofFieldOneofCase {
-      OneofUint32 = 111,
-      OneofNestedMessage = 112,
-      OneofString = 113,
-      OneofBytes = 114,
-      None = 0,
-    }
-    private OneofFieldOneofCase oneofFieldCase_ = OneofFieldOneofCase.None;
-    public OneofFieldOneofCase OneofFieldCase {
-      get { return oneofFieldCase_; }
-    }
-
-    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; }
-    }
-    public uint OptionalUint32 {
-      get { return optionalUint32_; }
-    }
-
-    public const int OptionalUint64FieldNumber = 4;
-    private bool hasOptionalUint64;
-    private ulong optionalUint64_;
-    public bool HasOptionalUint64 {
-      get { return hasOptionalUint64; }
-    }
-    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; }
-    }
-    public uint OptionalFixed32 {
-      get { return optionalFixed32_; }
-    }
-
-    public const int OptionalFixed64FieldNumber = 8;
-    private bool hasOptionalFixed64;
-    private ulong optionalFixed64_;
-    public bool HasOptionalFixed64 {
-      get { return hasOptionalFixed64; }
-    }
-    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 OptionalGroupFieldNumber = 16;
-    private bool hasOptionalGroup;
-    private global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.OptionalGroup optionalGroup_;
-    public bool HasOptionalGroup {
-      get { return hasOptionalGroup; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.OptionalGroup OptionalGroup {
-      get { return optionalGroup_ ?? global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.OptionalGroup.DefaultInstance; }
-    }
-
-    public const int OptionalNestedMessageFieldNumber = 18;
-    private bool hasOptionalNestedMessage;
-    private global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage optionalNestedMessage_;
-    public bool HasOptionalNestedMessage {
-      get { return hasOptionalNestedMessage; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage OptionalNestedMessage {
-      get { return optionalNestedMessage_ ?? global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage.DefaultInstance; }
-    }
-
-    public const int OptionalForeignMessageFieldNumber = 19;
-    private bool hasOptionalForeignMessage;
-    private global::Google.ProtocolBuffers.TestProtos.ForeignMessageLite optionalForeignMessage_;
-    public bool HasOptionalForeignMessage {
-      get { return hasOptionalForeignMessage; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.ForeignMessageLite OptionalForeignMessage {
-      get { return optionalForeignMessage_ ?? global::Google.ProtocolBuffers.TestProtos.ForeignMessageLite.DefaultInstance; }
-    }
-
-    public const int OptionalImportMessageFieldNumber = 20;
-    private bool hasOptionalImportMessage;
-    private global::Google.ProtocolBuffers.TestProtos.ImportMessageLite optionalImportMessage_;
-    public bool HasOptionalImportMessage {
-      get { return hasOptionalImportMessage; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.ImportMessageLite OptionalImportMessage {
-      get { return optionalImportMessage_ ?? global::Google.ProtocolBuffers.TestProtos.ImportMessageLite.DefaultInstance; }
-    }
-
-    public const int OptionalNestedEnumFieldNumber = 21;
-    private bool hasOptionalNestedEnum;
-    private global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedEnum optionalNestedEnum_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedEnum.FOO;
-    public bool HasOptionalNestedEnum {
-      get { return hasOptionalNestedEnum; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedEnum OptionalNestedEnum {
-      get { return optionalNestedEnum_; }
-    }
-
-    public const int OptionalForeignEnumFieldNumber = 22;
-    private bool hasOptionalForeignEnum;
-    private global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite optionalForeignEnum_ = global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite.FOREIGN_LITE_FOO;
-    public bool HasOptionalForeignEnum {
-      get { return hasOptionalForeignEnum; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite OptionalForeignEnum {
-      get { return optionalForeignEnum_; }
-    }
-
-    public const int OptionalImportEnumFieldNumber = 23;
-    private bool hasOptionalImportEnum;
-    private global::Google.ProtocolBuffers.TestProtos.ImportEnumLite optionalImportEnum_ = global::Google.ProtocolBuffers.TestProtos.ImportEnumLite.IMPORT_LITE_FOO;
-    public bool HasOptionalImportEnum {
-      get { return hasOptionalImportEnum; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.ImportEnumLite OptionalImportEnum {
-      get { return optionalImportEnum_; }
-    }
-
-    public const int OptionalStringPieceFieldNumber = 24;
-    private bool hasOptionalStringPiece;
-    private string optionalStringPiece_ = "";
-    public bool HasOptionalStringPiece {
-      get { return hasOptionalStringPiece; }
-    }
-    public string OptionalStringPiece {
-      get { return optionalStringPiece_; }
-    }
-
-    public const int OptionalCordFieldNumber = 25;
-    private bool hasOptionalCord;
-    private string optionalCord_ = "";
-    public bool HasOptionalCord {
-      get { return hasOptionalCord; }
-    }
-    public string OptionalCord {
-      get { return optionalCord_; }
-    }
-
-    public const int OptionalPublicImportMessageFieldNumber = 26;
-    private bool hasOptionalPublicImportMessage;
-    private global::Google.ProtocolBuffers.TestProtos.PublicImportMessageLite optionalPublicImportMessage_;
-    public bool HasOptionalPublicImportMessage {
-      get { return hasOptionalPublicImportMessage; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.PublicImportMessageLite OptionalPublicImportMessage {
-      get { return optionalPublicImportMessage_ ?? global::Google.ProtocolBuffers.TestProtos.PublicImportMessageLite.DefaultInstance; }
-    }
-
-    public const int OptionalLazyMessageFieldNumber = 27;
-    private bool hasOptionalLazyMessage;
-    private global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage optionalLazyMessage_;
-    public bool HasOptionalLazyMessage {
-      get { return hasOptionalLazyMessage; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage OptionalLazyMessage {
-      get { return optionalLazyMessage_ ?? global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.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>();
-    public scg::IList<uint> RepeatedUint32List {
-      get { return pbc::Lists.AsReadOnly(repeatedUint32_); }
-    }
-    public int RepeatedUint32Count {
-      get { return repeatedUint32_.Count; }
-    }
-    public uint GetRepeatedUint32(int index) {
-      return repeatedUint32_[index];
-    }
-
-    public const int RepeatedUint64FieldNumber = 34;
-    private pbc::PopsicleList<ulong> repeatedUint64_ = new pbc::PopsicleList<ulong>();
-    public scg::IList<ulong> RepeatedUint64List {
-      get { return pbc::Lists.AsReadOnly(repeatedUint64_); }
-    }
-    public int RepeatedUint64Count {
-      get { return repeatedUint64_.Count; }
-    }
-    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>();
-    public scg::IList<uint> RepeatedFixed32List {
-      get { return pbc::Lists.AsReadOnly(repeatedFixed32_); }
-    }
-    public int RepeatedFixed32Count {
-      get { return repeatedFixed32_.Count; }
-    }
-    public uint GetRepeatedFixed32(int index) {
-      return repeatedFixed32_[index];
-    }
-
-    public const int RepeatedFixed64FieldNumber = 38;
-    private pbc::PopsicleList<ulong> repeatedFixed64_ = new pbc::PopsicleList<ulong>();
-    public scg::IList<ulong> RepeatedFixed64List {
-      get { return pbc::Lists.AsReadOnly(repeatedFixed64_); }
-    }
-    public int RepeatedFixed64Count {
-      get { return repeatedFixed64_.Count; }
-    }
-    public ulong GetRepeatedFixed64(int index) {
-      return repeatedFixed64_[index];
-    }
-
-    public const int RepeatedSfixed32FieldNumber = 39;
-    private pbc::PopsicleList<int> repeatedSfixed32_ = new pbc::PopsicleList<int>();
-    public scg::IList<int> RepeatedSfixed32List {
-      get { return pbc::Lists.AsReadOnly(repeatedSfixed32_); }
-    }
-    public int RepeatedSfixed32Count {
-      get { return repeatedSfixed32_.Count; }
-    }
-    public int GetRepeatedSfixed32(int index) {
-      return repeatedSfixed32_[index];
-    }
-
-    public const int RepeatedSfixed64FieldNumber = 40;
-    private pbc::PopsicleList<long> repeatedSfixed64_ = new pbc::PopsicleList<long>();
-    public scg::IList<long> RepeatedSfixed64List {
-      get { return pbc::Lists.AsReadOnly(repeatedSfixed64_); }
-    }
-    public int RepeatedSfixed64Count {
-      get { return repeatedSfixed64_.Count; }
-    }
-    public long GetRepeatedSfixed64(int index) {
-      return repeatedSfixed64_[index];
-    }
-
-    public const int RepeatedFloatFieldNumber = 41;
-    private pbc::PopsicleList<float> repeatedFloat_ = new pbc::PopsicleList<float>();
-    public scg::IList<float> RepeatedFloatList {
-      get { return pbc::Lists.AsReadOnly(repeatedFloat_); }
-    }
-    public int RepeatedFloatCount {
-      get { return repeatedFloat_.Count; }
-    }
-    public float GetRepeatedFloat(int index) {
-      return repeatedFloat_[index];
-    }
-
-    public const int RepeatedDoubleFieldNumber = 42;
-    private pbc::PopsicleList<double> repeatedDouble_ = new pbc::PopsicleList<double>();
-    public scg::IList<double> RepeatedDoubleList {
-      get { return pbc::Lists.AsReadOnly(repeatedDouble_); }
-    }
-    public int RepeatedDoubleCount {
-      get { return repeatedDouble_.Count; }
-    }
-    public double GetRepeatedDouble(int index) {
-      return repeatedDouble_[index];
-    }
-
-    public const int RepeatedBoolFieldNumber = 43;
-    private pbc::PopsicleList<bool> repeatedBool_ = new pbc::PopsicleList<bool>();
-    public scg::IList<bool> RepeatedBoolList {
-      get { return pbc::Lists.AsReadOnly(repeatedBool_); }
-    }
-    public int RepeatedBoolCount {
-      get { return repeatedBool_.Count; }
-    }
-    public bool GetRepeatedBool(int index) {
-      return repeatedBool_[index];
-    }
-
-    public const int RepeatedStringFieldNumber = 44;
-    private pbc::PopsicleList<string> repeatedString_ = new pbc::PopsicleList<string>();
-    public scg::IList<string> RepeatedStringList {
-      get { return pbc::Lists.AsReadOnly(repeatedString_); }
-    }
-    public int RepeatedStringCount {
-      get { return repeatedString_.Count; }
-    }
-    public string GetRepeatedString(int index) {
-      return repeatedString_[index];
-    }
-
-    public const int RepeatedBytesFieldNumber = 45;
-    private pbc::PopsicleList<pb::ByteString> repeatedBytes_ = new pbc::PopsicleList<pb::ByteString>();
-    public scg::IList<pb::ByteString> RepeatedBytesList {
-      get { return pbc::Lists.AsReadOnly(repeatedBytes_); }
-    }
-    public int RepeatedBytesCount {
-      get { return repeatedBytes_.Count; }
-    }
-    public pb::ByteString GetRepeatedBytes(int index) {
-      return repeatedBytes_[index];
-    }
-
-    public const int RepeatedGroupFieldNumber = 46;
-    private pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.RepeatedGroup> repeatedGroup_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.RepeatedGroup>();
-    public scg::IList<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.RepeatedGroup> RepeatedGroupList {
-      get { return repeatedGroup_; }
-    }
-    public int RepeatedGroupCount {
-      get { return repeatedGroup_.Count; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.RepeatedGroup GetRepeatedGroup(int index) {
-      return repeatedGroup_[index];
-    }
-
-    public const int RepeatedNestedMessageFieldNumber = 48;
-    private pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage> repeatedNestedMessage_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage>();
-    public scg::IList<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage> RepeatedNestedMessageList {
-      get { return repeatedNestedMessage_; }
-    }
-    public int RepeatedNestedMessageCount {
-      get { return repeatedNestedMessage_.Count; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage GetRepeatedNestedMessage(int index) {
-      return repeatedNestedMessage_[index];
-    }
-
-    public const int RepeatedForeignMessageFieldNumber = 49;
-    private pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.ForeignMessageLite> repeatedForeignMessage_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.ForeignMessageLite>();
-    public scg::IList<global::Google.ProtocolBuffers.TestProtos.ForeignMessageLite> RepeatedForeignMessageList {
-      get { return repeatedForeignMessage_; }
-    }
-    public int RepeatedForeignMessageCount {
-      get { return repeatedForeignMessage_.Count; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.ForeignMessageLite GetRepeatedForeignMessage(int index) {
-      return repeatedForeignMessage_[index];
-    }
-
-    public const int RepeatedImportMessageFieldNumber = 50;
-    private pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.ImportMessageLite> repeatedImportMessage_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.ImportMessageLite>();
-    public scg::IList<global::Google.ProtocolBuffers.TestProtos.ImportMessageLite> RepeatedImportMessageList {
-      get { return repeatedImportMessage_; }
-    }
-    public int RepeatedImportMessageCount {
-      get { return repeatedImportMessage_.Count; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.ImportMessageLite GetRepeatedImportMessage(int index) {
-      return repeatedImportMessage_[index];
-    }
-
-    public const int RepeatedNestedEnumFieldNumber = 51;
-    private pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedEnum> repeatedNestedEnum_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedEnum>();
-    public scg::IList<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedEnum> RepeatedNestedEnumList {
-      get { return pbc::Lists.AsReadOnly(repeatedNestedEnum_); }
-    }
-    public int RepeatedNestedEnumCount {
-      get { return repeatedNestedEnum_.Count; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedEnum GetRepeatedNestedEnum(int index) {
-      return repeatedNestedEnum_[index];
-    }
-
-    public const int RepeatedForeignEnumFieldNumber = 52;
-    private pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite> repeatedForeignEnum_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite>();
-    public scg::IList<global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite> RepeatedForeignEnumList {
-      get { return pbc::Lists.AsReadOnly(repeatedForeignEnum_); }
-    }
-    public int RepeatedForeignEnumCount {
-      get { return repeatedForeignEnum_.Count; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite GetRepeatedForeignEnum(int index) {
-      return repeatedForeignEnum_[index];
-    }
-
-    public const int RepeatedImportEnumFieldNumber = 53;
-    private pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.ImportEnumLite> repeatedImportEnum_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.ImportEnumLite>();
-    public scg::IList<global::Google.ProtocolBuffers.TestProtos.ImportEnumLite> RepeatedImportEnumList {
-      get { return pbc::Lists.AsReadOnly(repeatedImportEnum_); }
-    }
-    public int RepeatedImportEnumCount {
-      get { return repeatedImportEnum_.Count; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.ImportEnumLite GetRepeatedImportEnum(int index) {
-      return repeatedImportEnum_[index];
-    }
-
-    public const int RepeatedStringPieceFieldNumber = 54;
-    private pbc::PopsicleList<string> repeatedStringPiece_ = new pbc::PopsicleList<string>();
-    public scg::IList<string> RepeatedStringPieceList {
-      get { return pbc::Lists.AsReadOnly(repeatedStringPiece_); }
-    }
-    public int RepeatedStringPieceCount {
-      get { return repeatedStringPiece_.Count; }
-    }
-    public string GetRepeatedStringPiece(int index) {
-      return repeatedStringPiece_[index];
-    }
-
-    public const int RepeatedCordFieldNumber = 55;
-    private pbc::PopsicleList<string> repeatedCord_ = new pbc::PopsicleList<string>();
-    public scg::IList<string> RepeatedCordList {
-      get { return pbc::Lists.AsReadOnly(repeatedCord_); }
-    }
-    public int RepeatedCordCount {
-      get { return repeatedCord_.Count; }
-    }
-    public string GetRepeatedCord(int index) {
-      return repeatedCord_[index];
-    }
-
-    public const int RepeatedLazyMessageFieldNumber = 57;
-    private pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage> repeatedLazyMessage_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage>();
-    public scg::IList<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage> RepeatedLazyMessageList {
-      get { return repeatedLazyMessage_; }
-    }
-    public int RepeatedLazyMessageCount {
-      get { return repeatedLazyMessage_.Count; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage GetRepeatedLazyMessage(int index) {
-      return repeatedLazyMessage_[index];
-    }
-
-    public const int DefaultInt32FieldNumber = 61;
-    private bool hasDefaultInt32;
-    private int defaultInt32_ = 41;
-    public bool HasDefaultInt32 {
-      get { return hasDefaultInt32; }
-    }
-    public int DefaultInt32 {
-      get { return defaultInt32_; }
-    }
-
-    public const int DefaultInt64FieldNumber = 62;
-    private bool hasDefaultInt64;
-    private long defaultInt64_ = 42L;
-    public bool HasDefaultInt64 {
-      get { return hasDefaultInt64; }
-    }
-    public long DefaultInt64 {
-      get { return defaultInt64_; }
-    }
-
-    public const int DefaultUint32FieldNumber = 63;
-    private bool hasDefaultUint32;
-    private uint defaultUint32_ = 43;
-    public bool HasDefaultUint32 {
-      get { return hasDefaultUint32; }
-    }
-    public uint DefaultUint32 {
-      get { return defaultUint32_; }
-    }
-
-    public const int DefaultUint64FieldNumber = 64;
-    private bool hasDefaultUint64;
-    private ulong defaultUint64_ = 44UL;
-    public bool HasDefaultUint64 {
-      get { return hasDefaultUint64; }
-    }
-    public ulong DefaultUint64 {
-      get { return defaultUint64_; }
-    }
-
-    public const int DefaultSint32FieldNumber = 65;
-    private bool hasDefaultSint32;
-    private int defaultSint32_ = -45;
-    public bool HasDefaultSint32 {
-      get { return hasDefaultSint32; }
-    }
-    public int DefaultSint32 {
-      get { return defaultSint32_; }
-    }
-
-    public const int DefaultSint64FieldNumber = 66;
-    private bool hasDefaultSint64;
-    private long defaultSint64_ = 46L;
-    public bool HasDefaultSint64 {
-      get { return hasDefaultSint64; }
-    }
-    public long DefaultSint64 {
-      get { return defaultSint64_; }
-    }
-
-    public const int DefaultFixed32FieldNumber = 67;
-    private bool hasDefaultFixed32;
-    private uint defaultFixed32_ = 47;
-    public bool HasDefaultFixed32 {
-      get { return hasDefaultFixed32; }
-    }
-    public uint DefaultFixed32 {
-      get { return defaultFixed32_; }
-    }
-
-    public const int DefaultFixed64FieldNumber = 68;
-    private bool hasDefaultFixed64;
-    private ulong defaultFixed64_ = 48UL;
-    public bool HasDefaultFixed64 {
-      get { return hasDefaultFixed64; }
-    }
-    public ulong DefaultFixed64 {
-      get { return defaultFixed64_; }
-    }
-
-    public const int DefaultSfixed32FieldNumber = 69;
-    private bool hasDefaultSfixed32;
-    private int defaultSfixed32_ = 49;
-    public bool HasDefaultSfixed32 {
-      get { return hasDefaultSfixed32; }
-    }
-    public int DefaultSfixed32 {
-      get { return defaultSfixed32_; }
-    }
-
-    public const int DefaultSfixed64FieldNumber = 70;
-    private bool hasDefaultSfixed64;
-    private long defaultSfixed64_ = -50L;
-    public bool HasDefaultSfixed64 {
-      get { return hasDefaultSfixed64; }
-    }
-    public long DefaultSfixed64 {
-      get { return defaultSfixed64_; }
-    }
-
-    public const int DefaultFloatFieldNumber = 71;
-    private bool hasDefaultFloat;
-    private float defaultFloat_ = 51.5F;
-    public bool HasDefaultFloat {
-      get { return hasDefaultFloat; }
-    }
-    public float DefaultFloat {
-      get { return defaultFloat_; }
-    }
-
-    public const int DefaultDoubleFieldNumber = 72;
-    private bool hasDefaultDouble;
-    private double defaultDouble_ = 52000D;
-    public bool HasDefaultDouble {
-      get { return hasDefaultDouble; }
-    }
-    public double DefaultDouble {
-      get { return defaultDouble_; }
-    }
-
-    public const int DefaultBoolFieldNumber = 73;
-    private bool hasDefaultBool;
-    private bool defaultBool_ = true;
-    public bool HasDefaultBool {
-      get { return hasDefaultBool; }
-    }
-    public bool DefaultBool {
-      get { return defaultBool_; }
-    }
-
-    public const int DefaultStringFieldNumber = 74;
-    private bool hasDefaultString;
-    private string defaultString_ = "hello";
-    public bool HasDefaultString {
-      get { return hasDefaultString; }
-    }
-    public string DefaultString {
-      get { return defaultString_; }
-    }
-
-    public const int DefaultBytesFieldNumber = 75;
-    private bool hasDefaultBytes;
-    private pb::ByteString defaultBytes_ = pb::ByteString.FromBase64("d29ybGQ=");
-    public bool HasDefaultBytes {
-      get { return hasDefaultBytes; }
-    }
-    public pb::ByteString DefaultBytes {
-      get { return defaultBytes_; }
-    }
-
-    public const int DefaultNestedEnumFieldNumber = 81;
-    private bool hasDefaultNestedEnum;
-    private global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedEnum defaultNestedEnum_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedEnum.BAR;
-    public bool HasDefaultNestedEnum {
-      get { return hasDefaultNestedEnum; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedEnum DefaultNestedEnum {
-      get { return defaultNestedEnum_; }
-    }
-
-    public const int DefaultForeignEnumFieldNumber = 82;
-    private bool hasDefaultForeignEnum;
-    private global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite defaultForeignEnum_ = global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite.FOREIGN_LITE_BAR;
-    public bool HasDefaultForeignEnum {
-      get { return hasDefaultForeignEnum; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite DefaultForeignEnum {
-      get { return defaultForeignEnum_; }
-    }
-
-    public const int DefaultImportEnumFieldNumber = 83;
-    private bool hasDefaultImportEnum;
-    private global::Google.ProtocolBuffers.TestProtos.ImportEnumLite defaultImportEnum_ = global::Google.ProtocolBuffers.TestProtos.ImportEnumLite.IMPORT_LITE_BAR;
-    public bool HasDefaultImportEnum {
-      get { return hasDefaultImportEnum; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.ImportEnumLite DefaultImportEnum {
-      get { return defaultImportEnum_; }
-    }
-
-    public const int DefaultStringPieceFieldNumber = 84;
-    private bool hasDefaultStringPiece;
-    private string defaultStringPiece_ = "abc";
-    public bool HasDefaultStringPiece {
-      get { return hasDefaultStringPiece; }
-    }
-    public string DefaultStringPiece {
-      get { return defaultStringPiece_; }
-    }
-
-    public const int DefaultCordFieldNumber = 85;
-    private bool hasDefaultCord;
-    private string defaultCord_ = "123";
-    public bool HasDefaultCord {
-      get { return hasDefaultCord; }
-    }
-    public string DefaultCord {
-      get { return defaultCord_; }
-    }
-
-    public const int OneofUint32FieldNumber = 111;
-    public bool HasOneofUint32 {
-      get { return oneofFieldCase_ == OneofFieldOneofCase.OneofUint32; }
-    }
-    public uint OneofUint32 {
-      get { return oneofFieldCase_ == OneofFieldOneofCase.OneofUint32 ? (uint) oneofField_ : 0; }
-    }
-
-    public const int OneofNestedMessageFieldNumber = 112;
-    public bool HasOneofNestedMessage {
-      get { return oneofFieldCase_ == OneofFieldOneofCase.OneofNestedMessage; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage OneofNestedMessage {
-      get { return oneofFieldCase_ == OneofFieldOneofCase.OneofNestedMessage ? (global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage) oneofField_ : global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage.DefaultInstance; }
-    }
-
-    public const int OneofStringFieldNumber = 113;
-    public bool HasOneofString {
-      get { return oneofFieldCase_ == OneofFieldOneofCase.OneofString; }
-    }
-    public string OneofString {
-      get { return oneofFieldCase_ == OneofFieldOneofCase.OneofString ? (string) oneofField_ : ""; }
-    }
-
-    public const int OneofBytesFieldNumber = 114;
-    public bool HasOneofBytes {
-      get { return oneofFieldCase_ == OneofFieldOneofCase.OneofBytes; }
-    }
-    public pb::ByteString OneofBytes {
-      get { return oneofFieldCase_ == OneofFieldOneofCase.OneofBytes ? (pb::ByteString) oneofField_ : pb::ByteString.Empty; }
-    }
-
-    public override bool IsInitialized {
-      get {
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _testAllTypesLiteFieldNames;
-      if (hasOptionalInt32) {
-        output.WriteInt32(1, field_names[35], OptionalInt32);
-      }
-      if (hasOptionalInt64) {
-        output.WriteInt64(2, field_names[36], OptionalInt64);
-      }
-      if (hasOptionalUint32) {
-        output.WriteUInt32(3, field_names[47], OptionalUint32);
-      }
-      if (hasOptionalUint64) {
-        output.WriteUInt64(4, field_names[48], OptionalUint64);
-      }
-      if (hasOptionalSint32) {
-        output.WriteSInt32(5, field_names[43], OptionalSint32);
-      }
-      if (hasOptionalSint64) {
-        output.WriteSInt64(6, field_names[44], OptionalSint64);
-      }
-      if (hasOptionalFixed32) {
-        output.WriteFixed32(7, field_names[28], OptionalFixed32);
-      }
-      if (hasOptionalFixed64) {
-        output.WriteFixed64(8, field_names[29], OptionalFixed64);
-      }
-      if (hasOptionalSfixed32) {
-        output.WriteSFixed32(9, field_names[41], OptionalSfixed32);
-      }
-      if (hasOptionalSfixed64) {
-        output.WriteSFixed64(10, field_names[42], OptionalSfixed64);
-      }
-      if (hasOptionalFloat) {
-        output.WriteFloat(11, field_names[30], OptionalFloat);
-      }
-      if (hasOptionalDouble) {
-        output.WriteDouble(12, field_names[27], OptionalDouble);
-      }
-      if (hasOptionalBool) {
-        output.WriteBool(13, field_names[24], OptionalBool);
-      }
-      if (hasOptionalString) {
-        output.WriteString(14, field_names[45], OptionalString);
-      }
-      if (hasOptionalBytes) {
-        output.WriteBytes(15, field_names[25], OptionalBytes);
-      }
-      if (hasOptionalGroup) {
-        output.WriteGroup(16, field_names[49], OptionalGroup);
-      }
-      if (hasOptionalNestedMessage) {
-        output.WriteMessage(18, field_names[39], OptionalNestedMessage);
-      }
-      if (hasOptionalForeignMessage) {
-        output.WriteMessage(19, field_names[32], OptionalForeignMessage);
-      }
-      if (hasOptionalImportMessage) {
-        output.WriteMessage(20, field_names[34], OptionalImportMessage);
-      }
-      if (hasOptionalNestedEnum) {
-        output.WriteEnum(21, field_names[38], (int) OptionalNestedEnum, OptionalNestedEnum);
-      }
-      if (hasOptionalForeignEnum) {
-        output.WriteEnum(22, field_names[31], (int) OptionalForeignEnum, OptionalForeignEnum);
-      }
-      if (hasOptionalImportEnum) {
-        output.WriteEnum(23, field_names[33], (int) OptionalImportEnum, OptionalImportEnum);
-      }
-      if (hasOptionalStringPiece) {
-        output.WriteString(24, field_names[46], OptionalStringPiece);
-      }
-      if (hasOptionalCord) {
-        output.WriteString(25, field_names[26], OptionalCord);
-      }
-      if (hasOptionalPublicImportMessage) {
-        output.WriteMessage(26, field_names[40], OptionalPublicImportMessage);
-      }
-      if (hasOptionalLazyMessage) {
-        output.WriteMessage(27, field_names[37], OptionalLazyMessage);
-      }
-      if (repeatedInt32_.Count > 0) {
-        output.WriteInt32Array(31, field_names[61], repeatedInt32_);
-      }
-      if (repeatedInt64_.Count > 0) {
-        output.WriteInt64Array(32, field_names[62], repeatedInt64_);
-      }
-      if (repeatedUint32_.Count > 0) {
-        output.WriteUInt32Array(33, field_names[72], repeatedUint32_);
-      }
-      if (repeatedUint64_.Count > 0) {
-        output.WriteUInt64Array(34, field_names[73], repeatedUint64_);
-      }
-      if (repeatedSint32_.Count > 0) {
-        output.WriteSInt32Array(35, field_names[68], repeatedSint32_);
-      }
-      if (repeatedSint64_.Count > 0) {
-        output.WriteSInt64Array(36, field_names[69], repeatedSint64_);
-      }
-      if (repeatedFixed32_.Count > 0) {
-        output.WriteFixed32Array(37, field_names[54], repeatedFixed32_);
-      }
-      if (repeatedFixed64_.Count > 0) {
-        output.WriteFixed64Array(38, field_names[55], repeatedFixed64_);
-      }
-      if (repeatedSfixed32_.Count > 0) {
-        output.WriteSFixed32Array(39, field_names[66], repeatedSfixed32_);
-      }
-      if (repeatedSfixed64_.Count > 0) {
-        output.WriteSFixed64Array(40, field_names[67], repeatedSfixed64_);
-      }
-      if (repeatedFloat_.Count > 0) {
-        output.WriteFloatArray(41, field_names[56], repeatedFloat_);
-      }
-      if (repeatedDouble_.Count > 0) {
-        output.WriteDoubleArray(42, field_names[53], repeatedDouble_);
-      }
-      if (repeatedBool_.Count > 0) {
-        output.WriteBoolArray(43, field_names[50], repeatedBool_);
-      }
-      if (repeatedString_.Count > 0) {
-        output.WriteStringArray(44, field_names[70], repeatedString_);
-      }
-      if (repeatedBytes_.Count > 0) {
-        output.WriteBytesArray(45, field_names[51], repeatedBytes_);
-      }
-      if (repeatedGroup_.Count > 0) {
-        output.WriteGroupArray(46, field_names[74], repeatedGroup_);
-      }
-      if (repeatedNestedMessage_.Count > 0) {
-        output.WriteMessageArray(48, field_names[65], repeatedNestedMessage_);
-      }
-      if (repeatedForeignMessage_.Count > 0) {
-        output.WriteMessageArray(49, field_names[58], repeatedForeignMessage_);
-      }
-      if (repeatedImportMessage_.Count > 0) {
-        output.WriteMessageArray(50, field_names[60], repeatedImportMessage_);
-      }
-      if (repeatedNestedEnum_.Count > 0) {
-        output.WriteEnumArray(51, field_names[64], repeatedNestedEnum_);
-      }
-      if (repeatedForeignEnum_.Count > 0) {
-        output.WriteEnumArray(52, field_names[57], repeatedForeignEnum_);
-      }
-      if (repeatedImportEnum_.Count > 0) {
-        output.WriteEnumArray(53, field_names[59], repeatedImportEnum_);
-      }
-      if (repeatedStringPiece_.Count > 0) {
-        output.WriteStringArray(54, field_names[71], repeatedStringPiece_);
-      }
-      if (repeatedCord_.Count > 0) {
-        output.WriteStringArray(55, field_names[52], repeatedCord_);
-      }
-      if (repeatedLazyMessage_.Count > 0) {
-        output.WriteMessageArray(57, field_names[63], repeatedLazyMessage_);
-      }
-      if (hasDefaultInt32) {
-        output.WriteInt32(61, field_names[9], DefaultInt32);
-      }
-      if (hasDefaultInt64) {
-        output.WriteInt64(62, field_names[10], DefaultInt64);
-      }
-      if (hasDefaultUint32) {
-        output.WriteUInt32(63, field_names[18], DefaultUint32);
-      }
-      if (hasDefaultUint64) {
-        output.WriteUInt64(64, field_names[19], DefaultUint64);
-      }
-      if (hasDefaultSint32) {
-        output.WriteSInt32(65, field_names[14], DefaultSint32);
-      }
-      if (hasDefaultSint64) {
-        output.WriteSInt64(66, field_names[15], DefaultSint64);
-      }
-      if (hasDefaultFixed32) {
-        output.WriteFixed32(67, field_names[4], DefaultFixed32);
-      }
-      if (hasDefaultFixed64) {
-        output.WriteFixed64(68, field_names[5], DefaultFixed64);
-      }
-      if (hasDefaultSfixed32) {
-        output.WriteSFixed32(69, field_names[12], DefaultSfixed32);
-      }
-      if (hasDefaultSfixed64) {
-        output.WriteSFixed64(70, field_names[13], DefaultSfixed64);
-      }
-      if (hasDefaultFloat) {
-        output.WriteFloat(71, field_names[6], DefaultFloat);
-      }
-      if (hasDefaultDouble) {
-        output.WriteDouble(72, field_names[3], DefaultDouble);
-      }
-      if (hasDefaultBool) {
-        output.WriteBool(73, field_names[0], DefaultBool);
-      }
-      if (hasDefaultString) {
-        output.WriteString(74, field_names[16], DefaultString);
-      }
-      if (hasDefaultBytes) {
-        output.WriteBytes(75, field_names[1], DefaultBytes);
-      }
-      if (hasDefaultNestedEnum) {
-        output.WriteEnum(81, field_names[11], (int) DefaultNestedEnum, DefaultNestedEnum);
-      }
-      if (hasDefaultForeignEnum) {
-        output.WriteEnum(82, field_names[7], (int) DefaultForeignEnum, DefaultForeignEnum);
-      }
-      if (hasDefaultImportEnum) {
-        output.WriteEnum(83, field_names[8], (int) DefaultImportEnum, DefaultImportEnum);
-      }
-      if (hasDefaultStringPiece) {
-        output.WriteString(84, field_names[17], DefaultStringPiece);
-      }
-      if (hasDefaultCord) {
-        output.WriteString(85, field_names[2], DefaultCord);
-      }
-      if (oneofFieldCase_ == OneofFieldOneofCase.OneofUint32) {
-        output.WriteUInt32(111, field_names[23], OneofUint32);
-      }
-      if (oneofFieldCase_ == OneofFieldOneofCase.OneofNestedMessage) {
-        output.WriteMessage(112, field_names[21], OneofNestedMessage);
-      }
-      if (oneofFieldCase_ == OneofFieldOneofCase.OneofString) {
-        output.WriteString(113, field_names[22], OneofString);
-      }
-      if (oneofFieldCase_ == OneofFieldOneofCase.OneofBytes) {
-        output.WriteBytes(114, field_names[20], OneofBytes);
-      }
-    }
-
-    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 (hasOptionalGroup) {
-        size += pb::CodedOutputStream.ComputeGroupSize(16, OptionalGroup);
-      }
-      if (hasOptionalNestedMessage) {
-        size += pb::CodedOutputStream.ComputeMessageSize(18, OptionalNestedMessage);
-      }
-      if (hasOptionalForeignMessage) {
-        size += pb::CodedOutputStream.ComputeMessageSize(19, OptionalForeignMessage);
-      }
-      if (hasOptionalImportMessage) {
-        size += pb::CodedOutputStream.ComputeMessageSize(20, OptionalImportMessage);
-      }
-      if (hasOptionalNestedEnum) {
-        size += pb::CodedOutputStream.ComputeEnumSize(21, (int) OptionalNestedEnum);
-      }
-      if (hasOptionalForeignEnum) {
-        size += pb::CodedOutputStream.ComputeEnumSize(22, (int) OptionalForeignEnum);
-      }
-      if (hasOptionalImportEnum) {
-        size += pb::CodedOutputStream.ComputeEnumSize(23, (int) OptionalImportEnum);
-      }
-      if (hasOptionalStringPiece) {
-        size += pb::CodedOutputStream.ComputeStringSize(24, OptionalStringPiece);
-      }
-      if (hasOptionalCord) {
-        size += pb::CodedOutputStream.ComputeStringSize(25, OptionalCord);
-      }
-      if (hasOptionalPublicImportMessage) {
-        size += pb::CodedOutputStream.ComputeMessageSize(26, OptionalPublicImportMessage);
-      }
-      if (hasOptionalLazyMessage) {
-        size += pb::CodedOutputStream.ComputeMessageSize(27, 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.TestAllTypesLite.Types.RepeatedGroup element in RepeatedGroupList) {
-        size += pb::CodedOutputStream.ComputeGroupSize(46, element);
-      }
-      foreach (global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage element in RepeatedNestedMessageList) {
-        size += pb::CodedOutputStream.ComputeMessageSize(48, element);
-      }
-      foreach (global::Google.ProtocolBuffers.TestProtos.ForeignMessageLite element in RepeatedForeignMessageList) {
-        size += pb::CodedOutputStream.ComputeMessageSize(49, element);
-      }
-      foreach (global::Google.ProtocolBuffers.TestProtos.ImportMessageLite element in RepeatedImportMessageList) {
-        size += pb::CodedOutputStream.ComputeMessageSize(50, element);
-      }
-      {
-        int dataSize = 0;
-        if (repeatedNestedEnum_.Count > 0) {
-          foreach (global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedEnum element in repeatedNestedEnum_) {
-            dataSize += pb::CodedOutputStream.ComputeEnumSizeNoTag((int) element);
-          }
-          size += dataSize;
-          size += 2 * repeatedNestedEnum_.Count;
-        }
-      }
-      {
-        int dataSize = 0;
-        if (repeatedForeignEnum_.Count > 0) {
-          foreach (global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite element in repeatedForeignEnum_) {
-            dataSize += pb::CodedOutputStream.ComputeEnumSizeNoTag((int) element);
-          }
-          size += dataSize;
-          size += 2 * repeatedForeignEnum_.Count;
-        }
-      }
-      {
-        int dataSize = 0;
-        if (repeatedImportEnum_.Count > 0) {
-          foreach (global::Google.ProtocolBuffers.TestProtos.ImportEnumLite element in repeatedImportEnum_) {
-            dataSize += pb::CodedOutputStream.ComputeEnumSizeNoTag((int) element);
-          }
-          size += dataSize;
-          size += 2 * repeatedImportEnum_.Count;
-        }
-      }
-      {
-        int dataSize = 0;
-        foreach (string element in RepeatedStringPieceList) {
-          dataSize += pb::CodedOutputStream.ComputeStringSizeNoTag(element);
-        }
-        size += dataSize;
-        size += 2 * repeatedStringPiece_.Count;
-      }
-      {
-        int dataSize = 0;
-        foreach (string element in RepeatedCordList) {
-          dataSize += pb::CodedOutputStream.ComputeStringSizeNoTag(element);
-        }
-        size += dataSize;
-        size += 2 * repeatedCord_.Count;
-      }
-      foreach (global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage element in RepeatedLazyMessageList) {
-        size += pb::CodedOutputStream.ComputeMessageSize(57, element);
-      }
-      if (hasDefaultInt32) {
-        size += pb::CodedOutputStream.ComputeInt32Size(61, DefaultInt32);
-      }
-      if (hasDefaultInt64) {
-        size += pb::CodedOutputStream.ComputeInt64Size(62, DefaultInt64);
-      }
-      if (hasDefaultUint32) {
-        size += pb::CodedOutputStream.ComputeUInt32Size(63, DefaultUint32);
-      }
-      if (hasDefaultUint64) {
-        size += pb::CodedOutputStream.ComputeUInt64Size(64, DefaultUint64);
-      }
-      if (hasDefaultSint32) {
-        size += pb::CodedOutputStream.ComputeSInt32Size(65, DefaultSint32);
-      }
-      if (hasDefaultSint64) {
-        size += pb::CodedOutputStream.ComputeSInt64Size(66, DefaultSint64);
-      }
-      if (hasDefaultFixed32) {
-        size += pb::CodedOutputStream.ComputeFixed32Size(67, DefaultFixed32);
-      }
-      if (hasDefaultFixed64) {
-        size += pb::CodedOutputStream.ComputeFixed64Size(68, DefaultFixed64);
-      }
-      if (hasDefaultSfixed32) {
-        size += pb::CodedOutputStream.ComputeSFixed32Size(69, DefaultSfixed32);
-      }
-      if (hasDefaultSfixed64) {
-        size += pb::CodedOutputStream.ComputeSFixed64Size(70, DefaultSfixed64);
-      }
-      if (hasDefaultFloat) {
-        size += pb::CodedOutputStream.ComputeFloatSize(71, DefaultFloat);
-      }
-      if (hasDefaultDouble) {
-        size += pb::CodedOutputStream.ComputeDoubleSize(72, DefaultDouble);
-      }
-      if (hasDefaultBool) {
-        size += pb::CodedOutputStream.ComputeBoolSize(73, DefaultBool);
-      }
-      if (hasDefaultString) {
-        size += pb::CodedOutputStream.ComputeStringSize(74, DefaultString);
-      }
-      if (hasDefaultBytes) {
-        size += pb::CodedOutputStream.ComputeBytesSize(75, DefaultBytes);
-      }
-      if (hasDefaultNestedEnum) {
-        size += pb::CodedOutputStream.ComputeEnumSize(81, (int) DefaultNestedEnum);
-      }
-      if (hasDefaultForeignEnum) {
-        size += pb::CodedOutputStream.ComputeEnumSize(82, (int) DefaultForeignEnum);
-      }
-      if (hasDefaultImportEnum) {
-        size += pb::CodedOutputStream.ComputeEnumSize(83, (int) DefaultImportEnum);
-      }
-      if (hasDefaultStringPiece) {
-        size += pb::CodedOutputStream.ComputeStringSize(84, DefaultStringPiece);
-      }
-      if (hasDefaultCord) {
-        size += pb::CodedOutputStream.ComputeStringSize(85, DefaultCord);
-      }
-      if (oneofFieldCase_ == OneofFieldOneofCase.OneofUint32) {
-        size += pb::CodedOutputStream.ComputeUInt32Size(111, OneofUint32);
-      }
-      if (oneofFieldCase_ == OneofFieldOneofCase.OneofNestedMessage) {
-        size += pb::CodedOutputStream.ComputeMessageSize(112, OneofNestedMessage);
-      }
-      if (oneofFieldCase_ == OneofFieldOneofCase.OneofString) {
-        size += pb::CodedOutputStream.ComputeStringSize(113, OneofString);
-      }
-      if (oneofFieldCase_ == OneofFieldOneofCase.OneofBytes) {
-        size += pb::CodedOutputStream.ComputeBytesSize(114, OneofBytes);
-      }
-      memoizedSerializedSize = size;
-      return size;
-    }
-    #region Lite runtime methods
-    public override int GetHashCode() {
-      int hash = GetType().GetHashCode();
-      if (hasOptionalInt32) {
-        hash ^= optionalInt32_.GetHashCode();
-      }
-      if (hasOptionalInt64) {
-        hash ^= optionalInt64_.GetHashCode();
-      }
-      if (hasOptionalUint32) {
-        hash ^= optionalUint32_.GetHashCode();
-      }
-      if (hasOptionalUint64) {
-        hash ^= optionalUint64_.GetHashCode();
-      }
-      if (hasOptionalSint32) {
-        hash ^= optionalSint32_.GetHashCode();
-      }
-      if (hasOptionalSint64) {
-        hash ^= optionalSint64_.GetHashCode();
-      }
-      if (hasOptionalFixed32) {
-        hash ^= optionalFixed32_.GetHashCode();
-      }
-      if (hasOptionalFixed64) {
-        hash ^= optionalFixed64_.GetHashCode();
-      }
-      if (hasOptionalSfixed32) {
-        hash ^= optionalSfixed32_.GetHashCode();
-      }
-      if (hasOptionalSfixed64) {
-        hash ^= optionalSfixed64_.GetHashCode();
-      }
-      if (hasOptionalFloat) {
-        hash ^= optionalFloat_.GetHashCode();
-      }
-      if (hasOptionalDouble) {
-        hash ^= optionalDouble_.GetHashCode();
-      }
-      if (hasOptionalBool) {
-        hash ^= optionalBool_.GetHashCode();
-      }
-      if (hasOptionalString) {
-        hash ^= optionalString_.GetHashCode();
-      }
-      if (hasOptionalBytes) {
-        hash ^= optionalBytes_.GetHashCode();
-      }
-      if (hasOptionalGroup) hash ^= optionalGroup_.GetHashCode();
-      if (hasOptionalNestedMessage) hash ^= optionalNestedMessage_.GetHashCode();
-      if (hasOptionalForeignMessage) hash ^= optionalForeignMessage_.GetHashCode();
-      if (hasOptionalImportMessage) hash ^= optionalImportMessage_.GetHashCode();
-      if (hasOptionalNestedEnum) {
-        hash ^= optionalNestedEnum_.GetHashCode();
-      }
-      if (hasOptionalForeignEnum) {
-        hash ^= optionalForeignEnum_.GetHashCode();
-      }
-      if (hasOptionalImportEnum) {
-        hash ^= optionalImportEnum_.GetHashCode();
-      }
-      if (hasOptionalStringPiece) {
-        hash ^= optionalStringPiece_.GetHashCode();
-      }
-      if (hasOptionalCord) {
-        hash ^= optionalCord_.GetHashCode();
-      }
-      if (hasOptionalPublicImportMessage) hash ^= optionalPublicImportMessage_.GetHashCode();
-      if (hasOptionalLazyMessage) hash ^= optionalLazyMessage_.GetHashCode();
-      foreach(int i in repeatedInt32_)
-        hash ^= i.GetHashCode();
-      foreach(long i in repeatedInt64_)
-        hash ^= i.GetHashCode();
-      foreach(uint i in repeatedUint32_)
-        hash ^= i.GetHashCode();
-      foreach(ulong i in repeatedUint64_)
-        hash ^= i.GetHashCode();
-      foreach(int i in repeatedSint32_)
-        hash ^= i.GetHashCode();
-      foreach(long i in repeatedSint64_)
-        hash ^= i.GetHashCode();
-      foreach(uint i in repeatedFixed32_)
-        hash ^= i.GetHashCode();
-      foreach(ulong i in repeatedFixed64_)
-        hash ^= i.GetHashCode();
-      foreach(int i in repeatedSfixed32_)
-        hash ^= i.GetHashCode();
-      foreach(long i in repeatedSfixed64_)
-        hash ^= i.GetHashCode();
-      foreach(float i in repeatedFloat_)
-        hash ^= i.GetHashCode();
-      foreach(double i in repeatedDouble_)
-        hash ^= i.GetHashCode();
-      foreach(bool i in repeatedBool_)
-        hash ^= i.GetHashCode();
-      foreach(string i in repeatedString_)
-        hash ^= i.GetHashCode();
-      foreach(pb::ByteString i in repeatedBytes_)
-        hash ^= i.GetHashCode();
-      foreach(global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.RepeatedGroup i in repeatedGroup_)
-        hash ^= i.GetHashCode();
-      foreach(global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage i in repeatedNestedMessage_)
-        hash ^= i.GetHashCode();
-      foreach(global::Google.ProtocolBuffers.TestProtos.ForeignMessageLite i in repeatedForeignMessage_)
-        hash ^= i.GetHashCode();
-      foreach(global::Google.ProtocolBuffers.TestProtos.ImportMessageLite i in repeatedImportMessage_)
-        hash ^= i.GetHashCode();
-      foreach(global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedEnum i in repeatedNestedEnum_)
-        hash ^= i.GetHashCode();
-      foreach(global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite i in repeatedForeignEnum_)
-        hash ^= i.GetHashCode();
-      foreach(global::Google.ProtocolBuffers.TestProtos.ImportEnumLite i in repeatedImportEnum_)
-        hash ^= i.GetHashCode();
-      foreach(string i in repeatedStringPiece_)
-        hash ^= i.GetHashCode();
-      foreach(string i in repeatedCord_)
-        hash ^= i.GetHashCode();
-      foreach(global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage i in repeatedLazyMessage_)
-        hash ^= i.GetHashCode();
-      if (hasDefaultInt32) {
-        hash ^= defaultInt32_.GetHashCode();
-      }
-      if (hasDefaultInt64) {
-        hash ^= defaultInt64_.GetHashCode();
-      }
-      if (hasDefaultUint32) {
-        hash ^= defaultUint32_.GetHashCode();
-      }
-      if (hasDefaultUint64) {
-        hash ^= defaultUint64_.GetHashCode();
-      }
-      if (hasDefaultSint32) {
-        hash ^= defaultSint32_.GetHashCode();
-      }
-      if (hasDefaultSint64) {
-        hash ^= defaultSint64_.GetHashCode();
-      }
-      if (hasDefaultFixed32) {
-        hash ^= defaultFixed32_.GetHashCode();
-      }
-      if (hasDefaultFixed64) {
-        hash ^= defaultFixed64_.GetHashCode();
-      }
-      if (hasDefaultSfixed32) {
-        hash ^= defaultSfixed32_.GetHashCode();
-      }
-      if (hasDefaultSfixed64) {
-        hash ^= defaultSfixed64_.GetHashCode();
-      }
-      if (hasDefaultFloat) {
-        hash ^= defaultFloat_.GetHashCode();
-      }
-      if (hasDefaultDouble) {
-        hash ^= defaultDouble_.GetHashCode();
-      }
-      if (hasDefaultBool) {
-        hash ^= defaultBool_.GetHashCode();
-      }
-      if (hasDefaultString) {
-        hash ^= defaultString_.GetHashCode();
-      }
-      if (hasDefaultBytes) {
-        hash ^= defaultBytes_.GetHashCode();
-      }
-      if (hasDefaultNestedEnum) {
-        hash ^= defaultNestedEnum_.GetHashCode();
-      }
-      if (hasDefaultForeignEnum) {
-        hash ^= defaultForeignEnum_.GetHashCode();
-      }
-      if (hasDefaultImportEnum) {
-        hash ^= defaultImportEnum_.GetHashCode();
-      }
-      if (hasDefaultStringPiece) {
-        hash ^= defaultStringPiece_.GetHashCode();
-      }
-      if (hasDefaultCord) {
-        hash ^= defaultCord_.GetHashCode();
-      }
-      if (oneofFieldCase_ != OneofFieldOneofCase.None) {
-        hash ^= oneofField_.GetHashCode();
-      }
-      return hash;
-    }
-
-    public override bool Equals(object obj) {
-      TestAllTypesLite other = obj as TestAllTypesLite;
-      if (other == null) return false;
-      if (hasOptionalInt32 != other.hasOptionalInt32 || (hasOptionalInt32 && !optionalInt32_.Equals(other.optionalInt32_))) return false;
-      if (hasOptionalInt64 != other.hasOptionalInt64 || (hasOptionalInt64 && !optionalInt64_.Equals(other.optionalInt64_))) return false;
-      if (hasOptionalUint32 != other.hasOptionalUint32 || (hasOptionalUint32 && !optionalUint32_.Equals(other.optionalUint32_))) return false;
-      if (hasOptionalUint64 != other.hasOptionalUint64 || (hasOptionalUint64 && !optionalUint64_.Equals(other.optionalUint64_))) return false;
-      if (hasOptionalSint32 != other.hasOptionalSint32 || (hasOptionalSint32 && !optionalSint32_.Equals(other.optionalSint32_))) return false;
-      if (hasOptionalSint64 != other.hasOptionalSint64 || (hasOptionalSint64 && !optionalSint64_.Equals(other.optionalSint64_))) return false;
-      if (hasOptionalFixed32 != other.hasOptionalFixed32 || (hasOptionalFixed32 && !optionalFixed32_.Equals(other.optionalFixed32_))) return false;
-      if (hasOptionalFixed64 != other.hasOptionalFixed64 || (hasOptionalFixed64 && !optionalFixed64_.Equals(other.optionalFixed64_))) return false;
-      if (hasOptionalSfixed32 != other.hasOptionalSfixed32 || (hasOptionalSfixed32 && !optionalSfixed32_.Equals(other.optionalSfixed32_))) return false;
-      if (hasOptionalSfixed64 != other.hasOptionalSfixed64 || (hasOptionalSfixed64 && !optionalSfixed64_.Equals(other.optionalSfixed64_))) return false;
-      if (hasOptionalFloat != other.hasOptionalFloat || (hasOptionalFloat && !optionalFloat_.Equals(other.optionalFloat_))) return false;
-      if (hasOptionalDouble != other.hasOptionalDouble || (hasOptionalDouble && !optionalDouble_.Equals(other.optionalDouble_))) return false;
-      if (hasOptionalBool != other.hasOptionalBool || (hasOptionalBool && !optionalBool_.Equals(other.optionalBool_))) return false;
-      if (hasOptionalString != other.hasOptionalString || (hasOptionalString && !optionalString_.Equals(other.optionalString_))) return false;
-      if (hasOptionalBytes != other.hasOptionalBytes || (hasOptionalBytes && !optionalBytes_.Equals(other.optionalBytes_))) return false;
-      if (hasOptionalGroup != other.hasOptionalGroup || (hasOptionalGroup && !optionalGroup_.Equals(other.optionalGroup_))) return false;
-      if (hasOptionalNestedMessage != other.hasOptionalNestedMessage || (hasOptionalNestedMessage && !optionalNestedMessage_.Equals(other.optionalNestedMessage_))) return false;
-      if (hasOptionalForeignMessage != other.hasOptionalForeignMessage || (hasOptionalForeignMessage && !optionalForeignMessage_.Equals(other.optionalForeignMessage_))) return false;
-      if (hasOptionalImportMessage != other.hasOptionalImportMessage || (hasOptionalImportMessage && !optionalImportMessage_.Equals(other.optionalImportMessage_))) return false;
-      if (hasOptionalNestedEnum != other.hasOptionalNestedEnum || (hasOptionalNestedEnum && !optionalNestedEnum_.Equals(other.optionalNestedEnum_))) return false;
-      if (hasOptionalForeignEnum != other.hasOptionalForeignEnum || (hasOptionalForeignEnum && !optionalForeignEnum_.Equals(other.optionalForeignEnum_))) return false;
-      if (hasOptionalImportEnum != other.hasOptionalImportEnum || (hasOptionalImportEnum && !optionalImportEnum_.Equals(other.optionalImportEnum_))) return false;
-      if (hasOptionalStringPiece != other.hasOptionalStringPiece || (hasOptionalStringPiece && !optionalStringPiece_.Equals(other.optionalStringPiece_))) return false;
-      if (hasOptionalCord != other.hasOptionalCord || (hasOptionalCord && !optionalCord_.Equals(other.optionalCord_))) return false;
-      if (hasOptionalPublicImportMessage != other.hasOptionalPublicImportMessage || (hasOptionalPublicImportMessage && !optionalPublicImportMessage_.Equals(other.optionalPublicImportMessage_))) return false;
-      if (hasOptionalLazyMessage != other.hasOptionalLazyMessage || (hasOptionalLazyMessage && !optionalLazyMessage_.Equals(other.optionalLazyMessage_))) return false;
-      if(repeatedInt32_.Count != other.repeatedInt32_.Count) return false;
-      for(int ix=0; ix < repeatedInt32_.Count; ix++)
-        if(!repeatedInt32_[ix].Equals(other.repeatedInt32_[ix])) return false;
-      if(repeatedInt64_.Count != other.repeatedInt64_.Count) return false;
-      for(int ix=0; ix < repeatedInt64_.Count; ix++)
-        if(!repeatedInt64_[ix].Equals(other.repeatedInt64_[ix])) return false;
-      if(repeatedUint32_.Count != other.repeatedUint32_.Count) return false;
-      for(int ix=0; ix < repeatedUint32_.Count; ix++)
-        if(!repeatedUint32_[ix].Equals(other.repeatedUint32_[ix])) return false;
-      if(repeatedUint64_.Count != other.repeatedUint64_.Count) return false;
-      for(int ix=0; ix < repeatedUint64_.Count; ix++)
-        if(!repeatedUint64_[ix].Equals(other.repeatedUint64_[ix])) return false;
-      if(repeatedSint32_.Count != other.repeatedSint32_.Count) return false;
-      for(int ix=0; ix < repeatedSint32_.Count; ix++)
-        if(!repeatedSint32_[ix].Equals(other.repeatedSint32_[ix])) return false;
-      if(repeatedSint64_.Count != other.repeatedSint64_.Count) return false;
-      for(int ix=0; ix < repeatedSint64_.Count; ix++)
-        if(!repeatedSint64_[ix].Equals(other.repeatedSint64_[ix])) return false;
-      if(repeatedFixed32_.Count != other.repeatedFixed32_.Count) return false;
-      for(int ix=0; ix < repeatedFixed32_.Count; ix++)
-        if(!repeatedFixed32_[ix].Equals(other.repeatedFixed32_[ix])) return false;
-      if(repeatedFixed64_.Count != other.repeatedFixed64_.Count) return false;
-      for(int ix=0; ix < repeatedFixed64_.Count; ix++)
-        if(!repeatedFixed64_[ix].Equals(other.repeatedFixed64_[ix])) return false;
-      if(repeatedSfixed32_.Count != other.repeatedSfixed32_.Count) return false;
-      for(int ix=0; ix < repeatedSfixed32_.Count; ix++)
-        if(!repeatedSfixed32_[ix].Equals(other.repeatedSfixed32_[ix])) return false;
-      if(repeatedSfixed64_.Count != other.repeatedSfixed64_.Count) return false;
-      for(int ix=0; ix < repeatedSfixed64_.Count; ix++)
-        if(!repeatedSfixed64_[ix].Equals(other.repeatedSfixed64_[ix])) return false;
-      if(repeatedFloat_.Count != other.repeatedFloat_.Count) return false;
-      for(int ix=0; ix < repeatedFloat_.Count; ix++)
-        if(!repeatedFloat_[ix].Equals(other.repeatedFloat_[ix])) return false;
-      if(repeatedDouble_.Count != other.repeatedDouble_.Count) return false;
-      for(int ix=0; ix < repeatedDouble_.Count; ix++)
-        if(!repeatedDouble_[ix].Equals(other.repeatedDouble_[ix])) return false;
-      if(repeatedBool_.Count != other.repeatedBool_.Count) return false;
-      for(int ix=0; ix < repeatedBool_.Count; ix++)
-        if(!repeatedBool_[ix].Equals(other.repeatedBool_[ix])) return false;
-      if(repeatedString_.Count != other.repeatedString_.Count) return false;
-      for(int ix=0; ix < repeatedString_.Count; ix++)
-        if(!repeatedString_[ix].Equals(other.repeatedString_[ix])) return false;
-      if(repeatedBytes_.Count != other.repeatedBytes_.Count) return false;
-      for(int ix=0; ix < repeatedBytes_.Count; ix++)
-        if(!repeatedBytes_[ix].Equals(other.repeatedBytes_[ix])) return false;
-      if(repeatedGroup_.Count != other.repeatedGroup_.Count) return false;
-      for(int ix=0; ix < repeatedGroup_.Count; ix++)
-        if(!repeatedGroup_[ix].Equals(other.repeatedGroup_[ix])) return false;
-      if(repeatedNestedMessage_.Count != other.repeatedNestedMessage_.Count) return false;
-      for(int ix=0; ix < repeatedNestedMessage_.Count; ix++)
-        if(!repeatedNestedMessage_[ix].Equals(other.repeatedNestedMessage_[ix])) return false;
-      if(repeatedForeignMessage_.Count != other.repeatedForeignMessage_.Count) return false;
-      for(int ix=0; ix < repeatedForeignMessage_.Count; ix++)
-        if(!repeatedForeignMessage_[ix].Equals(other.repeatedForeignMessage_[ix])) return false;
-      if(repeatedImportMessage_.Count != other.repeatedImportMessage_.Count) return false;
-      for(int ix=0; ix < repeatedImportMessage_.Count; ix++)
-        if(!repeatedImportMessage_[ix].Equals(other.repeatedImportMessage_[ix])) return false;
-      if(repeatedNestedEnum_.Count != other.repeatedNestedEnum_.Count) return false;
-      for(int ix=0; ix < repeatedNestedEnum_.Count; ix++)
-        if(!repeatedNestedEnum_[ix].Equals(other.repeatedNestedEnum_[ix])) return false;
-      if(repeatedForeignEnum_.Count != other.repeatedForeignEnum_.Count) return false;
-      for(int ix=0; ix < repeatedForeignEnum_.Count; ix++)
-        if(!repeatedForeignEnum_[ix].Equals(other.repeatedForeignEnum_[ix])) return false;
-      if(repeatedImportEnum_.Count != other.repeatedImportEnum_.Count) return false;
-      for(int ix=0; ix < repeatedImportEnum_.Count; ix++)
-        if(!repeatedImportEnum_[ix].Equals(other.repeatedImportEnum_[ix])) return false;
-      if(repeatedStringPiece_.Count != other.repeatedStringPiece_.Count) return false;
-      for(int ix=0; ix < repeatedStringPiece_.Count; ix++)
-        if(!repeatedStringPiece_[ix].Equals(other.repeatedStringPiece_[ix])) return false;
-      if(repeatedCord_.Count != other.repeatedCord_.Count) return false;
-      for(int ix=0; ix < repeatedCord_.Count; ix++)
-        if(!repeatedCord_[ix].Equals(other.repeatedCord_[ix])) return false;
-      if(repeatedLazyMessage_.Count != other.repeatedLazyMessage_.Count) return false;
-      for(int ix=0; ix < repeatedLazyMessage_.Count; ix++)
-        if(!repeatedLazyMessage_[ix].Equals(other.repeatedLazyMessage_[ix])) return false;
-      if (hasDefaultInt32 != other.hasDefaultInt32 || (hasDefaultInt32 && !defaultInt32_.Equals(other.defaultInt32_))) return false;
-      if (hasDefaultInt64 != other.hasDefaultInt64 || (hasDefaultInt64 && !defaultInt64_.Equals(other.defaultInt64_))) return false;
-      if (hasDefaultUint32 != other.hasDefaultUint32 || (hasDefaultUint32 && !defaultUint32_.Equals(other.defaultUint32_))) return false;
-      if (hasDefaultUint64 != other.hasDefaultUint64 || (hasDefaultUint64 && !defaultUint64_.Equals(other.defaultUint64_))) return false;
-      if (hasDefaultSint32 != other.hasDefaultSint32 || (hasDefaultSint32 && !defaultSint32_.Equals(other.defaultSint32_))) return false;
-      if (hasDefaultSint64 != other.hasDefaultSint64 || (hasDefaultSint64 && !defaultSint64_.Equals(other.defaultSint64_))) return false;
-      if (hasDefaultFixed32 != other.hasDefaultFixed32 || (hasDefaultFixed32 && !defaultFixed32_.Equals(other.defaultFixed32_))) return false;
-      if (hasDefaultFixed64 != other.hasDefaultFixed64 || (hasDefaultFixed64 && !defaultFixed64_.Equals(other.defaultFixed64_))) return false;
-      if (hasDefaultSfixed32 != other.hasDefaultSfixed32 || (hasDefaultSfixed32 && !defaultSfixed32_.Equals(other.defaultSfixed32_))) return false;
-      if (hasDefaultSfixed64 != other.hasDefaultSfixed64 || (hasDefaultSfixed64 && !defaultSfixed64_.Equals(other.defaultSfixed64_))) return false;
-      if (hasDefaultFloat != other.hasDefaultFloat || (hasDefaultFloat && !defaultFloat_.Equals(other.defaultFloat_))) return false;
-      if (hasDefaultDouble != other.hasDefaultDouble || (hasDefaultDouble && !defaultDouble_.Equals(other.defaultDouble_))) return false;
-      if (hasDefaultBool != other.hasDefaultBool || (hasDefaultBool && !defaultBool_.Equals(other.defaultBool_))) return false;
-      if (hasDefaultString != other.hasDefaultString || (hasDefaultString && !defaultString_.Equals(other.defaultString_))) return false;
-      if (hasDefaultBytes != other.hasDefaultBytes || (hasDefaultBytes && !defaultBytes_.Equals(other.defaultBytes_))) return false;
-      if (hasDefaultNestedEnum != other.hasDefaultNestedEnum || (hasDefaultNestedEnum && !defaultNestedEnum_.Equals(other.defaultNestedEnum_))) return false;
-      if (hasDefaultForeignEnum != other.hasDefaultForeignEnum || (hasDefaultForeignEnum && !defaultForeignEnum_.Equals(other.defaultForeignEnum_))) return false;
-      if (hasDefaultImportEnum != other.hasDefaultImportEnum || (hasDefaultImportEnum && !defaultImportEnum_.Equals(other.defaultImportEnum_))) return false;
-      if (hasDefaultStringPiece != other.hasDefaultStringPiece || (hasDefaultStringPiece && !defaultStringPiece_.Equals(other.defaultStringPiece_))) return false;
-      if (hasDefaultCord != other.hasDefaultCord || (hasDefaultCord && !defaultCord_.Equals(other.defaultCord_))) return false;
-      if (!OneofUint32.Equals(other.OneofUint32)) return false;
-      if (!OneofNestedMessage.Equals(other.OneofNestedMessage)) return false;
-      if (!OneofString.Equals(other.OneofString)) return false;
-      if (!OneofBytes.Equals(other.OneofBytes)) return false;
-      return true;
-    }
-
-    public override void PrintTo(global::System.IO.TextWriter writer) {
-      PrintField("optional_int32", hasOptionalInt32, optionalInt32_, writer);
-      PrintField("optional_int64", hasOptionalInt64, optionalInt64_, writer);
-      PrintField("optional_uint32", hasOptionalUint32, optionalUint32_, writer);
-      PrintField("optional_uint64", hasOptionalUint64, optionalUint64_, writer);
-      PrintField("optional_sint32", hasOptionalSint32, optionalSint32_, writer);
-      PrintField("optional_sint64", hasOptionalSint64, optionalSint64_, writer);
-      PrintField("optional_fixed32", hasOptionalFixed32, optionalFixed32_, writer);
-      PrintField("optional_fixed64", hasOptionalFixed64, optionalFixed64_, writer);
-      PrintField("optional_sfixed32", hasOptionalSfixed32, optionalSfixed32_, writer);
-      PrintField("optional_sfixed64", hasOptionalSfixed64, optionalSfixed64_, writer);
-      PrintField("optional_float", hasOptionalFloat, optionalFloat_, writer);
-      PrintField("optional_double", hasOptionalDouble, optionalDouble_, writer);
-      PrintField("optional_bool", hasOptionalBool, optionalBool_, writer);
-      PrintField("optional_string", hasOptionalString, optionalString_, writer);
-      PrintField("optional_bytes", hasOptionalBytes, optionalBytes_, writer);
-      PrintField("OptionalGroup", hasOptionalGroup, optionalGroup_, writer);
-      PrintField("optional_nested_message", hasOptionalNestedMessage, optionalNestedMessage_, writer);
-      PrintField("optional_foreign_message", hasOptionalForeignMessage, optionalForeignMessage_, writer);
-      PrintField("optional_import_message", hasOptionalImportMessage, optionalImportMessage_, writer);
-      PrintField("optional_nested_enum", hasOptionalNestedEnum, optionalNestedEnum_, writer);
-      PrintField("optional_foreign_enum", hasOptionalForeignEnum, optionalForeignEnum_, writer);
-      PrintField("optional_import_enum", hasOptionalImportEnum, optionalImportEnum_, writer);
-      PrintField("optional_string_piece", hasOptionalStringPiece, optionalStringPiece_, writer);
-      PrintField("optional_cord", hasOptionalCord, optionalCord_, writer);
-      PrintField("optional_public_import_message", hasOptionalPublicImportMessage, optionalPublicImportMessage_, writer);
-      PrintField("optional_lazy_message", hasOptionalLazyMessage, optionalLazyMessage_, writer);
-      PrintField("repeated_int32", repeatedInt32_, writer);
-      PrintField("repeated_int64", repeatedInt64_, writer);
-      PrintField("repeated_uint32", repeatedUint32_, writer);
-      PrintField("repeated_uint64", repeatedUint64_, writer);
-      PrintField("repeated_sint32", repeatedSint32_, writer);
-      PrintField("repeated_sint64", repeatedSint64_, writer);
-      PrintField("repeated_fixed32", repeatedFixed32_, writer);
-      PrintField("repeated_fixed64", repeatedFixed64_, writer);
-      PrintField("repeated_sfixed32", repeatedSfixed32_, writer);
-      PrintField("repeated_sfixed64", repeatedSfixed64_, writer);
-      PrintField("repeated_float", repeatedFloat_, writer);
-      PrintField("repeated_double", repeatedDouble_, writer);
-      PrintField("repeated_bool", repeatedBool_, writer);
-      PrintField("repeated_string", repeatedString_, writer);
-      PrintField("repeated_bytes", repeatedBytes_, writer);
-      PrintField("RepeatedGroup", repeatedGroup_, writer);
-      PrintField("repeated_nested_message", repeatedNestedMessage_, writer);
-      PrintField("repeated_foreign_message", repeatedForeignMessage_, writer);
-      PrintField("repeated_import_message", repeatedImportMessage_, writer);
-      PrintField("repeated_nested_enum", repeatedNestedEnum_, writer);
-      PrintField("repeated_foreign_enum", repeatedForeignEnum_, writer);
-      PrintField("repeated_import_enum", repeatedImportEnum_, writer);
-      PrintField("repeated_string_piece", repeatedStringPiece_, writer);
-      PrintField("repeated_cord", repeatedCord_, writer);
-      PrintField("repeated_lazy_message", repeatedLazyMessage_, writer);
-      PrintField("default_int32", hasDefaultInt32, defaultInt32_, writer);
-      PrintField("default_int64", hasDefaultInt64, defaultInt64_, writer);
-      PrintField("default_uint32", hasDefaultUint32, defaultUint32_, writer);
-      PrintField("default_uint64", hasDefaultUint64, defaultUint64_, writer);
-      PrintField("default_sint32", hasDefaultSint32, defaultSint32_, writer);
-      PrintField("default_sint64", hasDefaultSint64, defaultSint64_, writer);
-      PrintField("default_fixed32", hasDefaultFixed32, defaultFixed32_, writer);
-      PrintField("default_fixed64", hasDefaultFixed64, defaultFixed64_, writer);
-      PrintField("default_sfixed32", hasDefaultSfixed32, defaultSfixed32_, writer);
-      PrintField("default_sfixed64", hasDefaultSfixed64, defaultSfixed64_, writer);
-      PrintField("default_float", hasDefaultFloat, defaultFloat_, writer);
-      PrintField("default_double", hasDefaultDouble, defaultDouble_, writer);
-      PrintField("default_bool", hasDefaultBool, defaultBool_, writer);
-      PrintField("default_string", hasDefaultString, defaultString_, writer);
-      PrintField("default_bytes", hasDefaultBytes, defaultBytes_, writer);
-      PrintField("default_nested_enum", hasDefaultNestedEnum, defaultNestedEnum_, writer);
-      PrintField("default_foreign_enum", hasDefaultForeignEnum, defaultForeignEnum_, writer);
-      PrintField("default_import_enum", hasDefaultImportEnum, defaultImportEnum_, writer);
-      PrintField("default_string_piece", hasDefaultStringPiece, defaultStringPiece_, writer);
-      PrintField("default_cord", hasDefaultCord, defaultCord_, writer);
-      PrintField("oneof_uint32", oneofFieldCase_ == OneofFieldOneofCase.OneofUint32, oneofField_, writer);
-      PrintField("oneof_nested_message", oneofFieldCase_ == OneofFieldOneofCase.OneofNestedMessage, oneofField_, writer);
-      PrintField("oneof_string", oneofFieldCase_ == OneofFieldOneofCase.OneofString, oneofField_, writer);
-      PrintField("oneof_bytes", oneofFieldCase_ == OneofFieldOneofCase.OneofBytes, oneofField_, writer);
-    }
-    #endregion
-
-    public static TestAllTypesLite ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestAllTypesLite ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestAllTypesLite ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestAllTypesLite ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestAllTypesLite ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestAllTypesLite ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static TestAllTypesLite ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static TestAllTypesLite ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static TestAllTypesLite ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestAllTypesLite ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private TestAllTypesLite 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();
-      repeatedGroup_.MakeReadOnly();
-      repeatedNestedMessage_.MakeReadOnly();
-      repeatedForeignMessage_.MakeReadOnly();
-      repeatedImportMessage_.MakeReadOnly();
-      repeatedNestedEnum_.MakeReadOnly();
-      repeatedForeignEnum_.MakeReadOnly();
-      repeatedImportEnum_.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(TestAllTypesLite prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilderLite<TestAllTypesLite, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(TestAllTypesLite cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private TestAllTypesLite result;
-
-      private TestAllTypesLite PrepareBuilder() {
-        if (resultIsReadOnly) {
-          TestAllTypesLite original = result;
-          result = new TestAllTypesLite();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override TestAllTypesLite 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 TestAllTypesLite DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.DefaultInstance; }
-      }
-
-      public override TestAllTypesLite BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessageLite other) {
-        if (other is TestAllTypesLite) {
-          return MergeFrom((TestAllTypesLite) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(TestAllTypesLite other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.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.HasOptionalGroup) {
-          MergeOptionalGroup(other.OptionalGroup);
-        }
-        if (other.HasOptionalNestedMessage) {
-          MergeOptionalNestedMessage(other.OptionalNestedMessage);
-        }
-        if (other.HasOptionalForeignMessage) {
-          MergeOptionalForeignMessage(other.OptionalForeignMessage);
-        }
-        if (other.HasOptionalImportMessage) {
-          MergeOptionalImportMessage(other.OptionalImportMessage);
-        }
-        if (other.HasOptionalNestedEnum) {
-          OptionalNestedEnum = other.OptionalNestedEnum;
-        }
-        if (other.HasOptionalForeignEnum) {
-          OptionalForeignEnum = other.OptionalForeignEnum;
-        }
-        if (other.HasOptionalImportEnum) {
-          OptionalImportEnum = other.OptionalImportEnum;
-        }
-        if (other.HasOptionalStringPiece) {
-          OptionalStringPiece = other.OptionalStringPiece;
-        }
-        if (other.HasOptionalCord) {
-          OptionalCord = other.OptionalCord;
-        }
-        if (other.HasOptionalPublicImportMessage) {
-          MergeOptionalPublicImportMessage(other.OptionalPublicImportMessage);
-        }
-        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.repeatedGroup_.Count != 0) {
-          result.repeatedGroup_.Add(other.repeatedGroup_);
-        }
-        if (other.repeatedNestedMessage_.Count != 0) {
-          result.repeatedNestedMessage_.Add(other.repeatedNestedMessage_);
-        }
-        if (other.repeatedForeignMessage_.Count != 0) {
-          result.repeatedForeignMessage_.Add(other.repeatedForeignMessage_);
-        }
-        if (other.repeatedImportMessage_.Count != 0) {
-          result.repeatedImportMessage_.Add(other.repeatedImportMessage_);
-        }
-        if (other.repeatedNestedEnum_.Count != 0) {
-          result.repeatedNestedEnum_.Add(other.repeatedNestedEnum_);
-        }
-        if (other.repeatedForeignEnum_.Count != 0) {
-          result.repeatedForeignEnum_.Add(other.repeatedForeignEnum_);
-        }
-        if (other.repeatedImportEnum_.Count != 0) {
-          result.repeatedImportEnum_.Add(other.repeatedImportEnum_);
-        }
-        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.HasDefaultInt32) {
-          DefaultInt32 = other.DefaultInt32;
-        }
-        if (other.HasDefaultInt64) {
-          DefaultInt64 = other.DefaultInt64;
-        }
-        if (other.HasDefaultUint32) {
-          DefaultUint32 = other.DefaultUint32;
-        }
-        if (other.HasDefaultUint64) {
-          DefaultUint64 = other.DefaultUint64;
-        }
-        if (other.HasDefaultSint32) {
-          DefaultSint32 = other.DefaultSint32;
-        }
-        if (other.HasDefaultSint64) {
-          DefaultSint64 = other.DefaultSint64;
-        }
-        if (other.HasDefaultFixed32) {
-          DefaultFixed32 = other.DefaultFixed32;
-        }
-        if (other.HasDefaultFixed64) {
-          DefaultFixed64 = other.DefaultFixed64;
-        }
-        if (other.HasDefaultSfixed32) {
-          DefaultSfixed32 = other.DefaultSfixed32;
-        }
-        if (other.HasDefaultSfixed64) {
-          DefaultSfixed64 = other.DefaultSfixed64;
-        }
-        if (other.HasDefaultFloat) {
-          DefaultFloat = other.DefaultFloat;
-        }
-        if (other.HasDefaultDouble) {
-          DefaultDouble = other.DefaultDouble;
-        }
-        if (other.HasDefaultBool) {
-          DefaultBool = other.DefaultBool;
-        }
-        if (other.HasDefaultString) {
-          DefaultString = other.DefaultString;
-        }
-        if (other.HasDefaultBytes) {
-          DefaultBytes = other.DefaultBytes;
-        }
-        if (other.HasDefaultNestedEnum) {
-          DefaultNestedEnum = other.DefaultNestedEnum;
-        }
-        if (other.HasDefaultForeignEnum) {
-          DefaultForeignEnum = other.DefaultForeignEnum;
-        }
-        if (other.HasDefaultImportEnum) {
-          DefaultImportEnum = other.DefaultImportEnum;
-        }
-        if (other.HasDefaultStringPiece) {
-          DefaultStringPiece = other.DefaultStringPiece;
-        }
-        if (other.HasDefaultCord) {
-          DefaultCord = other.DefaultCord;
-        }
-        switch (other.OneofFieldCase) {
-          case OneofFieldOneofCase.OneofUint32: {
-            SetOneofUint32(other.OneofUint32);
-            break;
-          }
-          case OneofFieldOneofCase.OneofNestedMessage: {
-            MergeOneofNestedMessage(other.OneofNestedMessage);
-            break;
-          }
-          case OneofFieldOneofCase.OneofString: {
-            SetOneofString(other.OneofString);
-            break;
-          }
-          case OneofFieldOneofCase.OneofBytes: {
-            SetOneofBytes(other.OneofBytes);
-            break;
-          }
-          case OneofFieldOneofCase.None: { break; }
-        }
-        return this;
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input) {
-        return MergeFrom(input, pb::ExtensionRegistry.Empty);
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-        PrepareBuilder();
-        uint tag;
-        string field_name;
-        while (input.ReadTag(out tag, out field_name)) {
-          if(tag == 0 && field_name != null) {
-            int field_ordinal = global::System.Array.BinarySearch(_testAllTypesLiteFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _testAllTypesLiteFieldTags[field_ordinal];
-            else {
-              ParseUnknownField(input, extensionRegistry, tag, field_name);
-              continue;
-            }
-          }
-          switch (tag) {
-            case 0: {
-              throw pb::InvalidProtocolBufferException.InvalidTag();
-            }
-            default: {
-              if (pb::WireFormat.IsEndGroupTag(tag)) {
-                return this;
-              }
-              ParseUnknownField(input, extensionRegistry, tag, field_name);
-              break;
-            }
-            case 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 131: {
-              global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.OptionalGroup.Builder subBuilder = global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.OptionalGroup.CreateBuilder();
-              if (result.hasOptionalGroup) {
-                subBuilder.MergeFrom(OptionalGroup);
-              }
-              input.ReadGroup(16, subBuilder, extensionRegistry);
-              OptionalGroup = subBuilder.BuildPartial();
-              break;
-            }
-            case 146: {
-              global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage.Builder subBuilder = global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage.CreateBuilder();
-              if (result.hasOptionalNestedMessage) {
-                subBuilder.MergeFrom(OptionalNestedMessage);
-              }
-              input.ReadMessage(subBuilder, extensionRegistry);
-              OptionalNestedMessage = subBuilder.BuildPartial();
-              break;
-            }
-            case 154: {
-              global::Google.ProtocolBuffers.TestProtos.ForeignMessageLite.Builder subBuilder = global::Google.ProtocolBuffers.TestProtos.ForeignMessageLite.CreateBuilder();
-              if (result.hasOptionalForeignMessage) {
-                subBuilder.MergeFrom(OptionalForeignMessage);
-              }
-              input.ReadMessage(subBuilder, extensionRegistry);
-              OptionalForeignMessage = subBuilder.BuildPartial();
-              break;
-            }
-            case 162: {
-              global::Google.ProtocolBuffers.TestProtos.ImportMessageLite.Builder subBuilder = global::Google.ProtocolBuffers.TestProtos.ImportMessageLite.CreateBuilder();
-              if (result.hasOptionalImportMessage) {
-                subBuilder.MergeFrom(OptionalImportMessage);
-              }
-              input.ReadMessage(subBuilder, extensionRegistry);
-              OptionalImportMessage = subBuilder.BuildPartial();
-              break;
-            }
-            case 168: {
-              object unknown;
-              if(input.ReadEnum(ref result.optionalNestedEnum_, out unknown)) {
-                result.hasOptionalNestedEnum = true;
-              } else if(unknown is int) {
-              }
-              break;
-            }
-            case 176: {
-              object unknown;
-              if(input.ReadEnum(ref result.optionalForeignEnum_, out unknown)) {
-                result.hasOptionalForeignEnum = true;
-              } else if(unknown is int) {
-              }
-              break;
-            }
-            case 184: {
-              object unknown;
-              if(input.ReadEnum(ref result.optionalImportEnum_, out unknown)) {
-                result.hasOptionalImportEnum = true;
-              } else if(unknown is int) {
-              }
-              break;
-            }
-            case 194: {
-              result.hasOptionalStringPiece = input.ReadString(ref result.optionalStringPiece_);
-              break;
-            }
-            case 202: {
-              result.hasOptionalCord = input.ReadString(ref result.optionalCord_);
-              break;
-            }
-            case 210: {
-              global::Google.ProtocolBuffers.TestProtos.PublicImportMessageLite.Builder subBuilder = global::Google.ProtocolBuffers.TestProtos.PublicImportMessageLite.CreateBuilder();
-              if (result.hasOptionalPublicImportMessage) {
-                subBuilder.MergeFrom(OptionalPublicImportMessage);
-              }
-              input.ReadMessage(subBuilder, extensionRegistry);
-              OptionalPublicImportMessage = subBuilder.BuildPartial();
-              break;
-            }
-            case 218: {
-              global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage.Builder subBuilder = global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.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 371: {
-              input.ReadGroupArray(tag, field_name, result.repeatedGroup_, global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.RepeatedGroup.DefaultInstance, extensionRegistry);
-              break;
-            }
-            case 386: {
-              input.ReadMessageArray(tag, field_name, result.repeatedNestedMessage_, global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage.DefaultInstance, extensionRegistry);
-              break;
-            }
-            case 394: {
-              input.ReadMessageArray(tag, field_name, result.repeatedForeignMessage_, global::Google.ProtocolBuffers.TestProtos.ForeignMessageLite.DefaultInstance, extensionRegistry);
-              break;
-            }
-            case 402: {
-              input.ReadMessageArray(tag, field_name, result.repeatedImportMessage_, global::Google.ProtocolBuffers.TestProtos.ImportMessageLite.DefaultInstance, extensionRegistry);
-              break;
-            }
-            case 410:
-            case 408: {
-              scg::ICollection<object> unknownItems;
-              input.ReadEnumArray<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedEnum>(tag, field_name, result.repeatedNestedEnum_, out unknownItems);
-              break;
-            }
-            case 418:
-            case 416: {
-              scg::ICollection<object> unknownItems;
-              input.ReadEnumArray<global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite>(tag, field_name, result.repeatedForeignEnum_, out unknownItems);
-              break;
-            }
-            case 426:
-            case 424: {
-              scg::ICollection<object> unknownItems;
-              input.ReadEnumArray<global::Google.ProtocolBuffers.TestProtos.ImportEnumLite>(tag, field_name, result.repeatedImportEnum_, out unknownItems);
-              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.TestAllTypesLite.Types.NestedMessage.DefaultInstance, extensionRegistry);
-              break;
-            }
-            case 488: {
-              result.hasDefaultInt32 = input.ReadInt32(ref result.defaultInt32_);
-              break;
-            }
-            case 496: {
-              result.hasDefaultInt64 = input.ReadInt64(ref result.defaultInt64_);
-              break;
-            }
-            case 504: {
-              result.hasDefaultUint32 = input.ReadUInt32(ref result.defaultUint32_);
-              break;
-            }
-            case 512: {
-              result.hasDefaultUint64 = input.ReadUInt64(ref result.defaultUint64_);
-              break;
-            }
-            case 520: {
-              result.hasDefaultSint32 = input.ReadSInt32(ref result.defaultSint32_);
-              break;
-            }
-            case 528: {
-              result.hasDefaultSint64 = input.ReadSInt64(ref result.defaultSint64_);
-              break;
-            }
-            case 541: {
-              result.hasDefaultFixed32 = input.ReadFixed32(ref result.defaultFixed32_);
-              break;
-            }
-            case 545: {
-              result.hasDefaultFixed64 = input.ReadFixed64(ref result.defaultFixed64_);
-              break;
-            }
-            case 557: {
-              result.hasDefaultSfixed32 = input.ReadSFixed32(ref result.defaultSfixed32_);
-              break;
-            }
-            case 561: {
-              result.hasDefaultSfixed64 = input.ReadSFixed64(ref result.defaultSfixed64_);
-              break;
-            }
-            case 573: {
-              result.hasDefaultFloat = input.ReadFloat(ref result.defaultFloat_);
-              break;
-            }
-            case 577: {
-              result.hasDefaultDouble = input.ReadDouble(ref result.defaultDouble_);
-              break;
-            }
-            case 584: {
-              result.hasDefaultBool = input.ReadBool(ref result.defaultBool_);
-              break;
-            }
-            case 594: {
-              result.hasDefaultString = input.ReadString(ref result.defaultString_);
-              break;
-            }
-            case 602: {
-              result.hasDefaultBytes = input.ReadBytes(ref result.defaultBytes_);
-              break;
-            }
-            case 648: {
-              object unknown;
-              if(input.ReadEnum(ref result.defaultNestedEnum_, out unknown)) {
-                result.hasDefaultNestedEnum = true;
-              } else if(unknown is int) {
-              }
-              break;
-            }
-            case 656: {
-              object unknown;
-              if(input.ReadEnum(ref result.defaultForeignEnum_, out unknown)) {
-                result.hasDefaultForeignEnum = true;
-              } else if(unknown is int) {
-              }
-              break;
-            }
-            case 664: {
-              object unknown;
-              if(input.ReadEnum(ref result.defaultImportEnum_, out unknown)) {
-                result.hasDefaultImportEnum = true;
-              } else if(unknown is int) {
-              }
-              break;
-            }
-            case 674: {
-              result.hasDefaultStringPiece = input.ReadString(ref result.defaultStringPiece_);
-              break;
-            }
-            case 682: {
-              result.hasDefaultCord = input.ReadString(ref result.defaultCord_);
-              break;
-            }
-            case 888: {
-              uint value = 0;
-              if (input.ReadUInt32(ref value)) {
-                result.oneofField_ = value;
-                result.oneofFieldCase_ = OneofFieldOneofCase.OneofUint32;
-              }
-              break;
-            }
-            case 898: {
-              global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage.Builder subBuilder = global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage.CreateBuilder();
-              if (result.oneofFieldCase_ == OneofFieldOneofCase.OneofNestedMessage) {
-                subBuilder.MergeFrom(OneofNestedMessage);
-              }
-              input.ReadMessage(subBuilder, extensionRegistry);
-              result.oneofField_ = subBuilder.BuildPartial();
-              result.oneofFieldCase_ = OneofFieldOneofCase.OneofNestedMessage;
-              break;
-            }
-            case 906: {
-              string value = "";
-              if (input.ReadString(ref value)) {
-                result.oneofField_ = value;
-                result.oneofFieldCase_ = OneofFieldOneofCase.OneofString;
-              }
-              break;
-            }
-            case 914: {
-              pb::ByteString value = pb::ByteString.Empty;
-              if (input.ReadBytes(ref value)) {
-                result.oneofField_ = value;
-                result.oneofFieldCase_ = OneofFieldOneofCase.OneofBytes;
-              }
-              break;
-            }
-          }
-        }
-
-        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; }
-      }
-      public uint OptionalUint32 {
-        get { return result.OptionalUint32; }
-        set { SetOptionalUint32(value); }
-      }
-      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; }
-      }
-      public ulong OptionalUint64 {
-        get { return result.OptionalUint64; }
-        set { SetOptionalUint64(value); }
-      }
-      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; }
-      }
-      public uint OptionalFixed32 {
-        get { return result.OptionalFixed32; }
-        set { SetOptionalFixed32(value); }
-      }
-      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; }
-      }
-      public ulong OptionalFixed64 {
-        get { return result.OptionalFixed64; }
-        set { SetOptionalFixed64(value); }
-      }
-      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 HasOptionalGroup {
-       get { return result.hasOptionalGroup; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.OptionalGroup OptionalGroup {
-        get { return result.OptionalGroup; }
-        set { SetOptionalGroup(value); }
-      }
-      public Builder SetOptionalGroup(global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.OptionalGroup value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasOptionalGroup = true;
-        result.optionalGroup_ = value;
-        return this;
-      }
-      public Builder SetOptionalGroup(global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.OptionalGroup.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.hasOptionalGroup = true;
-        result.optionalGroup_ = builderForValue.Build();
-        return this;
-      }
-      public Builder MergeOptionalGroup(global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.OptionalGroup value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        if (result.hasOptionalGroup &&
-            result.optionalGroup_ != global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.OptionalGroup.DefaultInstance) {
-            result.optionalGroup_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.OptionalGroup.CreateBuilder(result.optionalGroup_).MergeFrom(value).BuildPartial();
-        } else {
-          result.optionalGroup_ = value;
-        }
-        result.hasOptionalGroup = true;
-        return this;
-      }
-      public Builder ClearOptionalGroup() {
-        PrepareBuilder();
-        result.hasOptionalGroup = false;
-        result.optionalGroup_ = null;
-        return this;
-      }
-
-      public bool HasOptionalNestedMessage {
-       get { return result.hasOptionalNestedMessage; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage OptionalNestedMessage {
-        get { return result.OptionalNestedMessage; }
-        set { SetOptionalNestedMessage(value); }
-      }
-      public Builder SetOptionalNestedMessage(global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasOptionalNestedMessage = true;
-        result.optionalNestedMessage_ = value;
-        return this;
-      }
-      public Builder SetOptionalNestedMessage(global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.hasOptionalNestedMessage = true;
-        result.optionalNestedMessage_ = builderForValue.Build();
-        return this;
-      }
-      public Builder MergeOptionalNestedMessage(global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        if (result.hasOptionalNestedMessage &&
-            result.optionalNestedMessage_ != global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage.DefaultInstance) {
-            result.optionalNestedMessage_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage.CreateBuilder(result.optionalNestedMessage_).MergeFrom(value).BuildPartial();
-        } else {
-          result.optionalNestedMessage_ = value;
-        }
-        result.hasOptionalNestedMessage = true;
-        return this;
-      }
-      public Builder ClearOptionalNestedMessage() {
-        PrepareBuilder();
-        result.hasOptionalNestedMessage = false;
-        result.optionalNestedMessage_ = null;
-        return this;
-      }
-
-      public bool HasOptionalForeignMessage {
-       get { return result.hasOptionalForeignMessage; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.ForeignMessageLite OptionalForeignMessage {
-        get { return result.OptionalForeignMessage; }
-        set { SetOptionalForeignMessage(value); }
-      }
-      public Builder SetOptionalForeignMessage(global::Google.ProtocolBuffers.TestProtos.ForeignMessageLite value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasOptionalForeignMessage = true;
-        result.optionalForeignMessage_ = value;
-        return this;
-      }
-      public Builder SetOptionalForeignMessage(global::Google.ProtocolBuffers.TestProtos.ForeignMessageLite.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.hasOptionalForeignMessage = true;
-        result.optionalForeignMessage_ = builderForValue.Build();
-        return this;
-      }
-      public Builder MergeOptionalForeignMessage(global::Google.ProtocolBuffers.TestProtos.ForeignMessageLite value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        if (result.hasOptionalForeignMessage &&
-            result.optionalForeignMessage_ != global::Google.ProtocolBuffers.TestProtos.ForeignMessageLite.DefaultInstance) {
-            result.optionalForeignMessage_ = global::Google.ProtocolBuffers.TestProtos.ForeignMessageLite.CreateBuilder(result.optionalForeignMessage_).MergeFrom(value).BuildPartial();
-        } else {
-          result.optionalForeignMessage_ = value;
-        }
-        result.hasOptionalForeignMessage = true;
-        return this;
-      }
-      public Builder ClearOptionalForeignMessage() {
-        PrepareBuilder();
-        result.hasOptionalForeignMessage = false;
-        result.optionalForeignMessage_ = null;
-        return this;
-      }
-
-      public bool HasOptionalImportMessage {
-       get { return result.hasOptionalImportMessage; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.ImportMessageLite OptionalImportMessage {
-        get { return result.OptionalImportMessage; }
-        set { SetOptionalImportMessage(value); }
-      }
-      public Builder SetOptionalImportMessage(global::Google.ProtocolBuffers.TestProtos.ImportMessageLite value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasOptionalImportMessage = true;
-        result.optionalImportMessage_ = value;
-        return this;
-      }
-      public Builder SetOptionalImportMessage(global::Google.ProtocolBuffers.TestProtos.ImportMessageLite.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.hasOptionalImportMessage = true;
-        result.optionalImportMessage_ = builderForValue.Build();
-        return this;
-      }
-      public Builder MergeOptionalImportMessage(global::Google.ProtocolBuffers.TestProtos.ImportMessageLite value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        if (result.hasOptionalImportMessage &&
-            result.optionalImportMessage_ != global::Google.ProtocolBuffers.TestProtos.ImportMessageLite.DefaultInstance) {
-            result.optionalImportMessage_ = global::Google.ProtocolBuffers.TestProtos.ImportMessageLite.CreateBuilder(result.optionalImportMessage_).MergeFrom(value).BuildPartial();
-        } else {
-          result.optionalImportMessage_ = value;
-        }
-        result.hasOptionalImportMessage = true;
-        return this;
-      }
-      public Builder ClearOptionalImportMessage() {
-        PrepareBuilder();
-        result.hasOptionalImportMessage = false;
-        result.optionalImportMessage_ = null;
-        return this;
-      }
-
-      public bool HasOptionalNestedEnum {
-        get { return result.hasOptionalNestedEnum; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedEnum OptionalNestedEnum {
-        get { return result.OptionalNestedEnum; }
-        set { SetOptionalNestedEnum(value); }
-      }
-      public Builder SetOptionalNestedEnum(global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedEnum value) {
-        PrepareBuilder();
-        result.hasOptionalNestedEnum = true;
-        result.optionalNestedEnum_ = value;
-        return this;
-      }
-      public Builder ClearOptionalNestedEnum() {
-        PrepareBuilder();
-        result.hasOptionalNestedEnum = false;
-        result.optionalNestedEnum_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedEnum.FOO;
-        return this;
-      }
-
-      public bool HasOptionalForeignEnum {
-        get { return result.hasOptionalForeignEnum; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite OptionalForeignEnum {
-        get { return result.OptionalForeignEnum; }
-        set { SetOptionalForeignEnum(value); }
-      }
-      public Builder SetOptionalForeignEnum(global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite value) {
-        PrepareBuilder();
-        result.hasOptionalForeignEnum = true;
-        result.optionalForeignEnum_ = value;
-        return this;
-      }
-      public Builder ClearOptionalForeignEnum() {
-        PrepareBuilder();
-        result.hasOptionalForeignEnum = false;
-        result.optionalForeignEnum_ = global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite.FOREIGN_LITE_FOO;
-        return this;
-      }
-
-      public bool HasOptionalImportEnum {
-        get { return result.hasOptionalImportEnum; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.ImportEnumLite OptionalImportEnum {
-        get { return result.OptionalImportEnum; }
-        set { SetOptionalImportEnum(value); }
-      }
-      public Builder SetOptionalImportEnum(global::Google.ProtocolBuffers.TestProtos.ImportEnumLite value) {
-        PrepareBuilder();
-        result.hasOptionalImportEnum = true;
-        result.optionalImportEnum_ = value;
-        return this;
-      }
-      public Builder ClearOptionalImportEnum() {
-        PrepareBuilder();
-        result.hasOptionalImportEnum = false;
-        result.optionalImportEnum_ = global::Google.ProtocolBuffers.TestProtos.ImportEnumLite.IMPORT_LITE_FOO;
-        return this;
-      }
-
-      public bool HasOptionalStringPiece {
-        get { return result.hasOptionalStringPiece; }
-      }
-      public string OptionalStringPiece {
-        get { return result.OptionalStringPiece; }
-        set { SetOptionalStringPiece(value); }
-      }
-      public Builder SetOptionalStringPiece(string value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        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 HasOptionalPublicImportMessage {
-       get { return result.hasOptionalPublicImportMessage; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.PublicImportMessageLite OptionalPublicImportMessage {
-        get { return result.OptionalPublicImportMessage; }
-        set { SetOptionalPublicImportMessage(value); }
-      }
-      public Builder SetOptionalPublicImportMessage(global::Google.ProtocolBuffers.TestProtos.PublicImportMessageLite value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasOptionalPublicImportMessage = true;
-        result.optionalPublicImportMessage_ = value;
-        return this;
-      }
-      public Builder SetOptionalPublicImportMessage(global::Google.ProtocolBuffers.TestProtos.PublicImportMessageLite.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.hasOptionalPublicImportMessage = true;
-        result.optionalPublicImportMessage_ = builderForValue.Build();
-        return this;
-      }
-      public Builder MergeOptionalPublicImportMessage(global::Google.ProtocolBuffers.TestProtos.PublicImportMessageLite value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        if (result.hasOptionalPublicImportMessage &&
-            result.optionalPublicImportMessage_ != global::Google.ProtocolBuffers.TestProtos.PublicImportMessageLite.DefaultInstance) {
-            result.optionalPublicImportMessage_ = global::Google.ProtocolBuffers.TestProtos.PublicImportMessageLite.CreateBuilder(result.optionalPublicImportMessage_).MergeFrom(value).BuildPartial();
-        } else {
-          result.optionalPublicImportMessage_ = value;
-        }
-        result.hasOptionalPublicImportMessage = true;
-        return this;
-      }
-      public Builder ClearOptionalPublicImportMessage() {
-        PrepareBuilder();
-        result.hasOptionalPublicImportMessage = false;
-        result.optionalPublicImportMessage_ = null;
-        return this;
-      }
-
-      public bool HasOptionalLazyMessage {
-       get { return result.hasOptionalLazyMessage; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage OptionalLazyMessage {
-        get { return result.OptionalLazyMessage; }
-        set { SetOptionalLazyMessage(value); }
-      }
-      public Builder SetOptionalLazyMessage(global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasOptionalLazyMessage = true;
-        result.optionalLazyMessage_ = value;
-        return this;
-      }
-      public Builder SetOptionalLazyMessage(global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.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.TestAllTypesLite.Types.NestedMessage value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        if (result.hasOptionalLazyMessage &&
-            result.optionalLazyMessage_ != global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage.DefaultInstance) {
-            result.optionalLazyMessage_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.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;
-      }
-
-      public pbc::IPopsicleList<uint> RepeatedUint32List {
-        get { return PrepareBuilder().repeatedUint32_; }
-      }
-      public int RepeatedUint32Count {
-        get { return result.RepeatedUint32Count; }
-      }
-      public uint GetRepeatedUint32(int index) {
-        return result.GetRepeatedUint32(index);
-      }
-      public Builder SetRepeatedUint32(int index, uint value) {
-        PrepareBuilder();
-        result.repeatedUint32_[index] = value;
-        return this;
-      }
-      public Builder AddRepeatedUint32(uint value) {
-        PrepareBuilder();
-        result.repeatedUint32_.Add(value);
-        return this;
-      }
-      public Builder AddRangeRepeatedUint32(scg::IEnumerable<uint> values) {
-        PrepareBuilder();
-        result.repeatedUint32_.Add(values);
-        return this;
-      }
-      public Builder ClearRepeatedUint32() {
-        PrepareBuilder();
-        result.repeatedUint32_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<ulong> RepeatedUint64List {
-        get { return PrepareBuilder().repeatedUint64_; }
-      }
-      public int RepeatedUint64Count {
-        get { return result.RepeatedUint64Count; }
-      }
-      public ulong GetRepeatedUint64(int index) {
-        return result.GetRepeatedUint64(index);
-      }
-      public Builder SetRepeatedUint64(int index, ulong value) {
-        PrepareBuilder();
-        result.repeatedUint64_[index] = value;
-        return this;
-      }
-      public Builder AddRepeatedUint64(ulong value) {
-        PrepareBuilder();
-        result.repeatedUint64_.Add(value);
-        return this;
-      }
-      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;
-      }
-
-      public pbc::IPopsicleList<uint> RepeatedFixed32List {
-        get { return PrepareBuilder().repeatedFixed32_; }
-      }
-      public int RepeatedFixed32Count {
-        get { return result.RepeatedFixed32Count; }
-      }
-      public uint GetRepeatedFixed32(int index) {
-        return result.GetRepeatedFixed32(index);
-      }
-      public Builder SetRepeatedFixed32(int index, uint value) {
-        PrepareBuilder();
-        result.repeatedFixed32_[index] = value;
-        return this;
-      }
-      public Builder AddRepeatedFixed32(uint value) {
-        PrepareBuilder();
-        result.repeatedFixed32_.Add(value);
-        return this;
-      }
-      public Builder AddRangeRepeatedFixed32(scg::IEnumerable<uint> values) {
-        PrepareBuilder();
-        result.repeatedFixed32_.Add(values);
-        return this;
-      }
-      public Builder ClearRepeatedFixed32() {
-        PrepareBuilder();
-        result.repeatedFixed32_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<ulong> RepeatedFixed64List {
-        get { return PrepareBuilder().repeatedFixed64_; }
-      }
-      public int RepeatedFixed64Count {
-        get { return result.RepeatedFixed64Count; }
-      }
-      public ulong GetRepeatedFixed64(int index) {
-        return result.GetRepeatedFixed64(index);
-      }
-      public Builder SetRepeatedFixed64(int index, ulong value) {
-        PrepareBuilder();
-        result.repeatedFixed64_[index] = value;
-        return this;
-      }
-      public Builder AddRepeatedFixed64(ulong value) {
-        PrepareBuilder();
-        result.repeatedFixed64_.Add(value);
-        return this;
-      }
-      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.TestAllTypesLite.Types.RepeatedGroup> RepeatedGroupList {
-        get { return PrepareBuilder().repeatedGroup_; }
-      }
-      public int RepeatedGroupCount {
-        get { return result.RepeatedGroupCount; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.RepeatedGroup GetRepeatedGroup(int index) {
-        return result.GetRepeatedGroup(index);
-      }
-      public Builder SetRepeatedGroup(int index, global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.RepeatedGroup value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.repeatedGroup_[index] = value;
-        return this;
-      }
-      public Builder SetRepeatedGroup(int index, global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.RepeatedGroup.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.repeatedGroup_[index] = builderForValue.Build();
-        return this;
-      }
-      public Builder AddRepeatedGroup(global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.RepeatedGroup value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.repeatedGroup_.Add(value);
-        return this;
-      }
-      public Builder AddRepeatedGroup(global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.RepeatedGroup.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.repeatedGroup_.Add(builderForValue.Build());
-        return this;
-      }
-      public Builder AddRangeRepeatedGroup(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.RepeatedGroup> values) {
-        PrepareBuilder();
-        result.repeatedGroup_.Add(values);
-        return this;
-      }
-      public Builder ClearRepeatedGroup() {
-        PrepareBuilder();
-        result.repeatedGroup_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage> RepeatedNestedMessageList {
-        get { return PrepareBuilder().repeatedNestedMessage_; }
-      }
-      public int RepeatedNestedMessageCount {
-        get { return result.RepeatedNestedMessageCount; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage GetRepeatedNestedMessage(int index) {
-        return result.GetRepeatedNestedMessage(index);
-      }
-      public Builder SetRepeatedNestedMessage(int index, global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.repeatedNestedMessage_[index] = value;
-        return this;
-      }
-      public Builder SetRepeatedNestedMessage(int index, global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.repeatedNestedMessage_[index] = builderForValue.Build();
-        return this;
-      }
-      public Builder AddRepeatedNestedMessage(global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.repeatedNestedMessage_.Add(value);
-        return this;
-      }
-      public Builder AddRepeatedNestedMessage(global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.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.TestAllTypesLite.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.ForeignMessageLite> RepeatedForeignMessageList {
-        get { return PrepareBuilder().repeatedForeignMessage_; }
-      }
-      public int RepeatedForeignMessageCount {
-        get { return result.RepeatedForeignMessageCount; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.ForeignMessageLite GetRepeatedForeignMessage(int index) {
-        return result.GetRepeatedForeignMessage(index);
-      }
-      public Builder SetRepeatedForeignMessage(int index, global::Google.ProtocolBuffers.TestProtos.ForeignMessageLite value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.repeatedForeignMessage_[index] = value;
-        return this;
-      }
-      public Builder SetRepeatedForeignMessage(int index, global::Google.ProtocolBuffers.TestProtos.ForeignMessageLite.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.repeatedForeignMessage_[index] = builderForValue.Build();
-        return this;
-      }
-      public Builder AddRepeatedForeignMessage(global::Google.ProtocolBuffers.TestProtos.ForeignMessageLite value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.repeatedForeignMessage_.Add(value);
-        return this;
-      }
-      public Builder AddRepeatedForeignMessage(global::Google.ProtocolBuffers.TestProtos.ForeignMessageLite.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.repeatedForeignMessage_.Add(builderForValue.Build());
-        return this;
-      }
-      public Builder AddRangeRepeatedForeignMessage(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.ForeignMessageLite> values) {
-        PrepareBuilder();
-        result.repeatedForeignMessage_.Add(values);
-        return this;
-      }
-      public Builder ClearRepeatedForeignMessage() {
-        PrepareBuilder();
-        result.repeatedForeignMessage_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<global::Google.ProtocolBuffers.TestProtos.ImportMessageLite> RepeatedImportMessageList {
-        get { return PrepareBuilder().repeatedImportMessage_; }
-      }
-      public int RepeatedImportMessageCount {
-        get { return result.RepeatedImportMessageCount; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.ImportMessageLite GetRepeatedImportMessage(int index) {
-        return result.GetRepeatedImportMessage(index);
-      }
-      public Builder SetRepeatedImportMessage(int index, global::Google.ProtocolBuffers.TestProtos.ImportMessageLite value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.repeatedImportMessage_[index] = value;
-        return this;
-      }
-      public Builder SetRepeatedImportMessage(int index, global::Google.ProtocolBuffers.TestProtos.ImportMessageLite.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.repeatedImportMessage_[index] = builderForValue.Build();
-        return this;
-      }
-      public Builder AddRepeatedImportMessage(global::Google.ProtocolBuffers.TestProtos.ImportMessageLite value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.repeatedImportMessage_.Add(value);
-        return this;
-      }
-      public Builder AddRepeatedImportMessage(global::Google.ProtocolBuffers.TestProtos.ImportMessageLite.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.repeatedImportMessage_.Add(builderForValue.Build());
-        return this;
-      }
-      public Builder AddRangeRepeatedImportMessage(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.ImportMessageLite> values) {
-        PrepareBuilder();
-        result.repeatedImportMessage_.Add(values);
-        return this;
-      }
-      public Builder ClearRepeatedImportMessage() {
-        PrepareBuilder();
-        result.repeatedImportMessage_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedEnum> RepeatedNestedEnumList {
-        get { return PrepareBuilder().repeatedNestedEnum_; }
-      }
-      public int RepeatedNestedEnumCount {
-        get { return result.RepeatedNestedEnumCount; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedEnum GetRepeatedNestedEnum(int index) {
-        return result.GetRepeatedNestedEnum(index);
-      }
-      public Builder SetRepeatedNestedEnum(int index, global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedEnum value) {
-        PrepareBuilder();
-        result.repeatedNestedEnum_[index] = value;
-        return this;
-      }
-      public Builder AddRepeatedNestedEnum(global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedEnum value) {
-        PrepareBuilder();
-        result.repeatedNestedEnum_.Add(value);
-        return this;
-      }
-      public Builder AddRangeRepeatedNestedEnum(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.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.ForeignEnumLite> RepeatedForeignEnumList {
-        get { return PrepareBuilder().repeatedForeignEnum_; }
-      }
-      public int RepeatedForeignEnumCount {
-        get { return result.RepeatedForeignEnumCount; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite GetRepeatedForeignEnum(int index) {
-        return result.GetRepeatedForeignEnum(index);
-      }
-      public Builder SetRepeatedForeignEnum(int index, global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite value) {
-        PrepareBuilder();
-        result.repeatedForeignEnum_[index] = value;
-        return this;
-      }
-      public Builder AddRepeatedForeignEnum(global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite value) {
-        PrepareBuilder();
-        result.repeatedForeignEnum_.Add(value);
-        return this;
-      }
-      public Builder AddRangeRepeatedForeignEnum(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite> values) {
-        PrepareBuilder();
-        result.repeatedForeignEnum_.Add(values);
-        return this;
-      }
-      public Builder ClearRepeatedForeignEnum() {
-        PrepareBuilder();
-        result.repeatedForeignEnum_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<global::Google.ProtocolBuffers.TestProtos.ImportEnumLite> RepeatedImportEnumList {
-        get { return PrepareBuilder().repeatedImportEnum_; }
-      }
-      public int RepeatedImportEnumCount {
-        get { return result.RepeatedImportEnumCount; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.ImportEnumLite GetRepeatedImportEnum(int index) {
-        return result.GetRepeatedImportEnum(index);
-      }
-      public Builder SetRepeatedImportEnum(int index, global::Google.ProtocolBuffers.TestProtos.ImportEnumLite value) {
-        PrepareBuilder();
-        result.repeatedImportEnum_[index] = value;
-        return this;
-      }
-      public Builder AddRepeatedImportEnum(global::Google.ProtocolBuffers.TestProtos.ImportEnumLite value) {
-        PrepareBuilder();
-        result.repeatedImportEnum_.Add(value);
-        return this;
-      }
-      public Builder AddRangeRepeatedImportEnum(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.ImportEnumLite> values) {
-        PrepareBuilder();
-        result.repeatedImportEnum_.Add(values);
-        return this;
-      }
-      public Builder ClearRepeatedImportEnum() {
-        PrepareBuilder();
-        result.repeatedImportEnum_.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.TestAllTypesLite.Types.NestedMessage> RepeatedLazyMessageList {
-        get { return PrepareBuilder().repeatedLazyMessage_; }
-      }
-      public int RepeatedLazyMessageCount {
-        get { return result.RepeatedLazyMessageCount; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage GetRepeatedLazyMessage(int index) {
-        return result.GetRepeatedLazyMessage(index);
-      }
-      public Builder SetRepeatedLazyMessage(int index, global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.repeatedLazyMessage_[index] = value;
-        return this;
-      }
-      public Builder SetRepeatedLazyMessage(int index, global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.repeatedLazyMessage_[index] = builderForValue.Build();
-        return this;
-      }
-      public Builder AddRepeatedLazyMessage(global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.repeatedLazyMessage_.Add(value);
-        return this;
-      }
-      public Builder AddRepeatedLazyMessage(global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.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.TestAllTypesLite.Types.NestedMessage> values) {
-        PrepareBuilder();
-        result.repeatedLazyMessage_.Add(values);
-        return this;
-      }
-      public Builder ClearRepeatedLazyMessage() {
-        PrepareBuilder();
-        result.repeatedLazyMessage_.Clear();
-        return this;
-      }
-
-      public bool HasDefaultInt32 {
-        get { return result.hasDefaultInt32; }
-      }
-      public int DefaultInt32 {
-        get { return result.DefaultInt32; }
-        set { SetDefaultInt32(value); }
-      }
-      public Builder SetDefaultInt32(int value) {
-        PrepareBuilder();
-        result.hasDefaultInt32 = true;
-        result.defaultInt32_ = value;
-        return this;
-      }
-      public Builder ClearDefaultInt32() {
-        PrepareBuilder();
-        result.hasDefaultInt32 = false;
-        result.defaultInt32_ = 41;
-        return this;
-      }
-
-      public bool HasDefaultInt64 {
-        get { return result.hasDefaultInt64; }
-      }
-      public long DefaultInt64 {
-        get { return result.DefaultInt64; }
-        set { SetDefaultInt64(value); }
-      }
-      public Builder SetDefaultInt64(long value) {
-        PrepareBuilder();
-        result.hasDefaultInt64 = true;
-        result.defaultInt64_ = value;
-        return this;
-      }
-      public Builder ClearDefaultInt64() {
-        PrepareBuilder();
-        result.hasDefaultInt64 = false;
-        result.defaultInt64_ = 42L;
-        return this;
-      }
-
-      public bool HasDefaultUint32 {
-        get { return result.hasDefaultUint32; }
-      }
-      public uint DefaultUint32 {
-        get { return result.DefaultUint32; }
-        set { SetDefaultUint32(value); }
-      }
-      public Builder SetDefaultUint32(uint value) {
-        PrepareBuilder();
-        result.hasDefaultUint32 = true;
-        result.defaultUint32_ = value;
-        return this;
-      }
-      public Builder ClearDefaultUint32() {
-        PrepareBuilder();
-        result.hasDefaultUint32 = false;
-        result.defaultUint32_ = 43;
-        return this;
-      }
-
-      public bool HasDefaultUint64 {
-        get { return result.hasDefaultUint64; }
-      }
-      public ulong DefaultUint64 {
-        get { return result.DefaultUint64; }
-        set { SetDefaultUint64(value); }
-      }
-      public Builder SetDefaultUint64(ulong value) {
-        PrepareBuilder();
-        result.hasDefaultUint64 = true;
-        result.defaultUint64_ = value;
-        return this;
-      }
-      public Builder ClearDefaultUint64() {
-        PrepareBuilder();
-        result.hasDefaultUint64 = false;
-        result.defaultUint64_ = 44UL;
-        return this;
-      }
-
-      public bool HasDefaultSint32 {
-        get { return result.hasDefaultSint32; }
-      }
-      public int DefaultSint32 {
-        get { return result.DefaultSint32; }
-        set { SetDefaultSint32(value); }
-      }
-      public Builder SetDefaultSint32(int value) {
-        PrepareBuilder();
-        result.hasDefaultSint32 = true;
-        result.defaultSint32_ = value;
-        return this;
-      }
-      public Builder ClearDefaultSint32() {
-        PrepareBuilder();
-        result.hasDefaultSint32 = false;
-        result.defaultSint32_ = -45;
-        return this;
-      }
-
-      public bool HasDefaultSint64 {
-        get { return result.hasDefaultSint64; }
-      }
-      public long DefaultSint64 {
-        get { return result.DefaultSint64; }
-        set { SetDefaultSint64(value); }
-      }
-      public Builder SetDefaultSint64(long value) {
-        PrepareBuilder();
-        result.hasDefaultSint64 = true;
-        result.defaultSint64_ = value;
-        return this;
-      }
-      public Builder ClearDefaultSint64() {
-        PrepareBuilder();
-        result.hasDefaultSint64 = false;
-        result.defaultSint64_ = 46L;
-        return this;
-      }
-
-      public bool HasDefaultFixed32 {
-        get { return result.hasDefaultFixed32; }
-      }
-      public uint DefaultFixed32 {
-        get { return result.DefaultFixed32; }
-        set { SetDefaultFixed32(value); }
-      }
-      public Builder SetDefaultFixed32(uint value) {
-        PrepareBuilder();
-        result.hasDefaultFixed32 = true;
-        result.defaultFixed32_ = value;
-        return this;
-      }
-      public Builder ClearDefaultFixed32() {
-        PrepareBuilder();
-        result.hasDefaultFixed32 = false;
-        result.defaultFixed32_ = 47;
-        return this;
-      }
-
-      public bool HasDefaultFixed64 {
-        get { return result.hasDefaultFixed64; }
-      }
-      public ulong DefaultFixed64 {
-        get { return result.DefaultFixed64; }
-        set { SetDefaultFixed64(value); }
-      }
-      public Builder SetDefaultFixed64(ulong value) {
-        PrepareBuilder();
-        result.hasDefaultFixed64 = true;
-        result.defaultFixed64_ = value;
-        return this;
-      }
-      public Builder ClearDefaultFixed64() {
-        PrepareBuilder();
-        result.hasDefaultFixed64 = false;
-        result.defaultFixed64_ = 48UL;
-        return this;
-      }
-
-      public bool HasDefaultSfixed32 {
-        get { return result.hasDefaultSfixed32; }
-      }
-      public int DefaultSfixed32 {
-        get { return result.DefaultSfixed32; }
-        set { SetDefaultSfixed32(value); }
-      }
-      public Builder SetDefaultSfixed32(int value) {
-        PrepareBuilder();
-        result.hasDefaultSfixed32 = true;
-        result.defaultSfixed32_ = value;
-        return this;
-      }
-      public Builder ClearDefaultSfixed32() {
-        PrepareBuilder();
-        result.hasDefaultSfixed32 = false;
-        result.defaultSfixed32_ = 49;
-        return this;
-      }
-
-      public bool HasDefaultSfixed64 {
-        get { return result.hasDefaultSfixed64; }
-      }
-      public long DefaultSfixed64 {
-        get { return result.DefaultSfixed64; }
-        set { SetDefaultSfixed64(value); }
-      }
-      public Builder SetDefaultSfixed64(long value) {
-        PrepareBuilder();
-        result.hasDefaultSfixed64 = true;
-        result.defaultSfixed64_ = value;
-        return this;
-      }
-      public Builder ClearDefaultSfixed64() {
-        PrepareBuilder();
-        result.hasDefaultSfixed64 = false;
-        result.defaultSfixed64_ = -50L;
-        return this;
-      }
-
-      public bool HasDefaultFloat {
-        get { return result.hasDefaultFloat; }
-      }
-      public float DefaultFloat {
-        get { return result.DefaultFloat; }
-        set { SetDefaultFloat(value); }
-      }
-      public Builder SetDefaultFloat(float value) {
-        PrepareBuilder();
-        result.hasDefaultFloat = true;
-        result.defaultFloat_ = value;
-        return this;
-      }
-      public Builder ClearDefaultFloat() {
-        PrepareBuilder();
-        result.hasDefaultFloat = false;
-        result.defaultFloat_ = 51.5F;
-        return this;
-      }
-
-      public bool HasDefaultDouble {
-        get { return result.hasDefaultDouble; }
-      }
-      public double DefaultDouble {
-        get { return result.DefaultDouble; }
-        set { SetDefaultDouble(value); }
-      }
-      public Builder SetDefaultDouble(double value) {
-        PrepareBuilder();
-        result.hasDefaultDouble = true;
-        result.defaultDouble_ = value;
-        return this;
-      }
-      public Builder ClearDefaultDouble() {
-        PrepareBuilder();
-        result.hasDefaultDouble = false;
-        result.defaultDouble_ = 52000D;
-        return this;
-      }
-
-      public bool HasDefaultBool {
-        get { return result.hasDefaultBool; }
-      }
-      public bool DefaultBool {
-        get { return result.DefaultBool; }
-        set { SetDefaultBool(value); }
-      }
-      public Builder SetDefaultBool(bool value) {
-        PrepareBuilder();
-        result.hasDefaultBool = true;
-        result.defaultBool_ = value;
-        return this;
-      }
-      public Builder ClearDefaultBool() {
-        PrepareBuilder();
-        result.hasDefaultBool = false;
-        result.defaultBool_ = true;
-        return this;
-      }
-
-      public bool HasDefaultString {
-        get { return result.hasDefaultString; }
-      }
-      public string DefaultString {
-        get { return result.DefaultString; }
-        set { SetDefaultString(value); }
-      }
-      public Builder SetDefaultString(string value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasDefaultString = true;
-        result.defaultString_ = value;
-        return this;
-      }
-      public Builder ClearDefaultString() {
-        PrepareBuilder();
-        result.hasDefaultString = false;
-        result.defaultString_ = "hello";
-        return this;
-      }
-
-      public bool HasDefaultBytes {
-        get { return result.hasDefaultBytes; }
-      }
-      public pb::ByteString DefaultBytes {
-        get { return result.DefaultBytes; }
-        set { SetDefaultBytes(value); }
-      }
-      public Builder SetDefaultBytes(pb::ByteString value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasDefaultBytes = true;
-        result.defaultBytes_ = value;
-        return this;
-      }
-      public Builder ClearDefaultBytes() {
-        PrepareBuilder();
-        result.hasDefaultBytes = false;
-        result.defaultBytes_ = pb::ByteString.FromBase64("d29ybGQ=");
-        return this;
-      }
-
-      public bool HasDefaultNestedEnum {
-        get { return result.hasDefaultNestedEnum; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedEnum DefaultNestedEnum {
-        get { return result.DefaultNestedEnum; }
-        set { SetDefaultNestedEnum(value); }
-      }
-      public Builder SetDefaultNestedEnum(global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedEnum value) {
-        PrepareBuilder();
-        result.hasDefaultNestedEnum = true;
-        result.defaultNestedEnum_ = value;
-        return this;
-      }
-      public Builder ClearDefaultNestedEnum() {
-        PrepareBuilder();
-        result.hasDefaultNestedEnum = false;
-        result.defaultNestedEnum_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedEnum.BAR;
-        return this;
-      }
-
-      public bool HasDefaultForeignEnum {
-        get { return result.hasDefaultForeignEnum; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite DefaultForeignEnum {
-        get { return result.DefaultForeignEnum; }
-        set { SetDefaultForeignEnum(value); }
-      }
-      public Builder SetDefaultForeignEnum(global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite value) {
-        PrepareBuilder();
-        result.hasDefaultForeignEnum = true;
-        result.defaultForeignEnum_ = value;
-        return this;
-      }
-      public Builder ClearDefaultForeignEnum() {
-        PrepareBuilder();
-        result.hasDefaultForeignEnum = false;
-        result.defaultForeignEnum_ = global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite.FOREIGN_LITE_BAR;
-        return this;
-      }
-
-      public bool HasDefaultImportEnum {
-        get { return result.hasDefaultImportEnum; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.ImportEnumLite DefaultImportEnum {
-        get { return result.DefaultImportEnum; }
-        set { SetDefaultImportEnum(value); }
-      }
-      public Builder SetDefaultImportEnum(global::Google.ProtocolBuffers.TestProtos.ImportEnumLite value) {
-        PrepareBuilder();
-        result.hasDefaultImportEnum = true;
-        result.defaultImportEnum_ = value;
-        return this;
-      }
-      public Builder ClearDefaultImportEnum() {
-        PrepareBuilder();
-        result.hasDefaultImportEnum = false;
-        result.defaultImportEnum_ = global::Google.ProtocolBuffers.TestProtos.ImportEnumLite.IMPORT_LITE_BAR;
-        return this;
-      }
-
-      public bool HasDefaultStringPiece {
-        get { return result.hasDefaultStringPiece; }
-      }
-      public string DefaultStringPiece {
-        get { return result.DefaultStringPiece; }
-        set { SetDefaultStringPiece(value); }
-      }
-      public Builder SetDefaultStringPiece(string value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasDefaultStringPiece = true;
-        result.defaultStringPiece_ = value;
-        return this;
-      }
-      public Builder ClearDefaultStringPiece() {
-        PrepareBuilder();
-        result.hasDefaultStringPiece = false;
-        result.defaultStringPiece_ = "abc";
-        return this;
-      }
-
-      public bool HasDefaultCord {
-        get { return result.hasDefaultCord; }
-      }
-      public string DefaultCord {
-        get { return result.DefaultCord; }
-        set { SetDefaultCord(value); }
-      }
-      public Builder SetDefaultCord(string value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasDefaultCord = true;
-        result.defaultCord_ = value;
-        return this;
-      }
-      public Builder ClearDefaultCord() {
-        PrepareBuilder();
-        result.hasDefaultCord = false;
-        result.defaultCord_ = "123";
-        return this;
-      }
-
-      public bool HasOneofUint32 {
-        get { return result.oneofFieldCase_ == OneofFieldOneofCase.OneofUint32; }
-      }
-      public uint OneofUint32 {
-        get { return result.oneofFieldCase_ == OneofFieldOneofCase.OneofUint32 ? (uint) result.oneofField_ : 0; }
-        set { SetOneofUint32(value); }
-      }
-      public Builder SetOneofUint32(uint value) {
-        PrepareBuilder();
-        result.oneofField_ = value;
-        result.oneofFieldCase_ = OneofFieldOneofCase.OneofUint32;
-        return this;
-      }
-      public Builder ClearOneofUint32() {
-        PrepareBuilder();
-        if (result.oneofFieldCase_ == OneofFieldOneofCase.OneofUint32) {
-          result.oneofFieldCase_ = OneofFieldOneofCase.None;
-        }
-        return this;
-      }
-
-      public bool HasOneofNestedMessage {
-        get { return result.oneofFieldCase_ == OneofFieldOneofCase.OneofNestedMessage; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage OneofNestedMessage {
-        get { return result.oneofFieldCase_ == OneofFieldOneofCase.OneofNestedMessage ? (global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage) result.oneofField_ : global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage.DefaultInstance; }
-        set { SetOneofNestedMessage(value); }
-      }
-      public Builder SetOneofNestedMessage(global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.oneofFieldCase_ = OneofFieldOneofCase.OneofNestedMessage;
-        result.oneofField_ = value;
-        return this;
-      }
-      public Builder SetOneofNestedMessage(global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.oneofFieldCase_ = OneofFieldOneofCase.OneofNestedMessage;
-        result.oneofField_ = builderForValue.Build();
-        return this;
-      }
-      public Builder MergeOneofNestedMessage(global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        if (result.oneofFieldCase_ == OneofFieldOneofCase.OneofNestedMessage &&
-            result.OneofNestedMessage != global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage.DefaultInstance) {
-          result.oneofField_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage.CreateBuilder(result.OneofNestedMessage).MergeFrom(value).BuildPartial();
-        } else {
-          result.oneofField_ = value;
-        }
-        result.oneofFieldCase_ = OneofFieldOneofCase.OneofNestedMessage;
-        return this;
-      }
-      public Builder ClearOneofNestedMessage() {
-        if (result.oneofFieldCase_ == OneofFieldOneofCase.OneofNestedMessage) {
-          PrepareBuilder();
-          result.oneofFieldCase_ = OneofFieldOneofCase.None;
-          result.oneofField_ = null;
-        }
-        return this;
-      }
-
-      public bool HasOneofString {
-        get { return result.oneofFieldCase_ == OneofFieldOneofCase.OneofString; }
-      }
-      public string OneofString {
-        get { return result.oneofFieldCase_ == OneofFieldOneofCase.OneofString ? (string) result.oneofField_ : ""; }
-        set { SetOneofString(value); }
-      }
-      public Builder SetOneofString(string value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.oneofField_ = value;
-        result.oneofFieldCase_ = OneofFieldOneofCase.OneofString;
-        return this;
-      }
-      public Builder ClearOneofString() {
-        PrepareBuilder();
-        if (result.oneofFieldCase_ == OneofFieldOneofCase.OneofString) {
-          result.oneofFieldCase_ = OneofFieldOneofCase.None;
-        }
-        return this;
-      }
-
-      public bool HasOneofBytes {
-        get { return result.oneofFieldCase_ == OneofFieldOneofCase.OneofBytes; }
-      }
-      public pb::ByteString OneofBytes {
-        get { return result.oneofFieldCase_ == OneofFieldOneofCase.OneofBytes ? (pb::ByteString) result.oneofField_ : pb::ByteString.Empty; }
-        set { SetOneofBytes(value); }
-      }
-      public Builder SetOneofBytes(pb::ByteString value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.oneofField_ = value;
-        result.oneofFieldCase_ = OneofFieldOneofCase.OneofBytes;
-        return this;
-      }
-      public Builder ClearOneofBytes() {
-        PrepareBuilder();
-        if (result.oneofFieldCase_ == OneofFieldOneofCase.OneofBytes) {
-          result.oneofFieldCase_ = OneofFieldOneofCase.None;
-        }
-        return this;
-      }
-
-      public OneofFieldOneofCase OneofFieldCase {
-        get { return result.oneofFieldCase_; }
-      }
-      public Builder ClearOneofField() {
-        PrepareBuilder();
-        result.oneofField_ = null;
-        result.oneofFieldCase_ = OneofFieldOneofCase.None;
-        return this;
-      }
-    }
-    static TestAllTypesLite() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnittestLite.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class ForeignMessageLite : pb::GeneratedMessageLite<ForeignMessageLite, ForeignMessageLite.Builder> {
-    private ForeignMessageLite() { }
-    private static readonly ForeignMessageLite defaultInstance = new ForeignMessageLite().MakeReadOnly();
-    private static readonly string[] _foreignMessageLiteFieldNames = new string[] { "c" };
-    private static readonly uint[] _foreignMessageLiteFieldTags = new uint[] { 8 };
-    public static ForeignMessageLite DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override ForeignMessageLite DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override ForeignMessageLite ThisMessage {
-      get { return this; }
-    }
-
-    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 = _foreignMessageLiteFieldNames;
-      if (hasC) {
-        output.WriteInt32(1, field_names[0], C);
-      }
-    }
-
-    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);
-      }
-      memoizedSerializedSize = size;
-      return size;
-    }
-    #region Lite runtime methods
-    public override int GetHashCode() {
-      int hash = GetType().GetHashCode();
-      if (hasC) {
-        hash ^= c_.GetHashCode();
-      }
-      return hash;
-    }
-
-    public override bool Equals(object obj) {
-      ForeignMessageLite other = obj as ForeignMessageLite;
-      if (other == null) return false;
-      if (hasC != other.hasC || (hasC && !c_.Equals(other.c_))) return false;
-      return true;
-    }
-
-    public override void PrintTo(global::System.IO.TextWriter writer) {
-      PrintField("c", hasC, c_, writer);
-    }
-    #endregion
-
-    public static ForeignMessageLite ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static ForeignMessageLite ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static ForeignMessageLite ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static ForeignMessageLite ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static ForeignMessageLite ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static ForeignMessageLite ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static ForeignMessageLite ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static ForeignMessageLite ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static ForeignMessageLite ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static ForeignMessageLite ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private ForeignMessageLite 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(ForeignMessageLite prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilderLite<ForeignMessageLite, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(ForeignMessageLite cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private ForeignMessageLite result;
-
-      private ForeignMessageLite PrepareBuilder() {
-        if (resultIsReadOnly) {
-          ForeignMessageLite original = result;
-          result = new ForeignMessageLite();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override ForeignMessageLite 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 ForeignMessageLite DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.ForeignMessageLite.DefaultInstance; }
-      }
-
-      public override ForeignMessageLite BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessageLite other) {
-        if (other is ForeignMessageLite) {
-          return MergeFrom((ForeignMessageLite) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(ForeignMessageLite other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.ForeignMessageLite.DefaultInstance) return this;
-        PrepareBuilder();
-        if (other.HasC) {
-          C = other.C;
-        }
-        return this;
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input) {
-        return MergeFrom(input, pb::ExtensionRegistry.Empty);
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-        PrepareBuilder();
-        uint tag;
-        string field_name;
-        while (input.ReadTag(out tag, out field_name)) {
-          if(tag == 0 && field_name != null) {
-            int field_ordinal = global::System.Array.BinarySearch(_foreignMessageLiteFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _foreignMessageLiteFieldTags[field_ordinal];
-            else {
-              ParseUnknownField(input, extensionRegistry, tag, field_name);
-              continue;
-            }
-          }
-          switch (tag) {
-            case 0: {
-              throw pb::InvalidProtocolBufferException.InvalidTag();
-            }
-            default: {
-              if (pb::WireFormat.IsEndGroupTag(tag)) {
-                return this;
-              }
-              ParseUnknownField(input, extensionRegistry, tag, field_name);
-              break;
-            }
-            case 8: {
-              result.hasC = input.ReadInt32(ref result.c_);
-              break;
-            }
-          }
-        }
-
-        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 ForeignMessageLite() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnittestLite.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class TestPackedTypesLite : pb::GeneratedMessageLite<TestPackedTypesLite, TestPackedTypesLite.Builder> {
-    private TestPackedTypesLite() { }
-    private static readonly TestPackedTypesLite defaultInstance = new TestPackedTypesLite().MakeReadOnly();
-    private static readonly string[] _testPackedTypesLiteFieldNames = new string[] { "packed_bool", "packed_double", "packed_enum", "packed_fixed32", "packed_fixed64", "packed_float", "packed_int32", "packed_int64", "packed_sfixed32", "packed_sfixed64", "packed_sint32", "packed_sint64", "packed_uint32", "packed_uint64" };
-    private static readonly uint[] _testPackedTypesLiteFieldTags = new uint[] { 818, 810, 826, 770, 778, 802, 722, 730, 786, 794, 754, 762, 738, 746 };
-    public static TestPackedTypesLite DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override TestPackedTypesLite DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override TestPackedTypesLite ThisMessage {
-      get { return this; }
-    }
-
-    public const int PackedInt32FieldNumber = 90;
-    private int packedInt32MemoizedSerializedSize;
-    private pbc::PopsicleList<int> packedInt32_ = new pbc::PopsicleList<int>();
-    public scg::IList<int> PackedInt32List {
-      get { return pbc::Lists.AsReadOnly(packedInt32_); }
-    }
-    public int PackedInt32Count {
-      get { return packedInt32_.Count; }
-    }
-    public int GetPackedInt32(int index) {
-      return packedInt32_[index];
-    }
-
-    public const int PackedInt64FieldNumber = 91;
-    private int packedInt64MemoizedSerializedSize;
-    private pbc::PopsicleList<long> packedInt64_ = new pbc::PopsicleList<long>();
-    public scg::IList<long> PackedInt64List {
-      get { return pbc::Lists.AsReadOnly(packedInt64_); }
-    }
-    public int PackedInt64Count {
-      get { return packedInt64_.Count; }
-    }
-    public long GetPackedInt64(int index) {
-      return packedInt64_[index];
-    }
-
-    public const int PackedUint32FieldNumber = 92;
-    private int packedUint32MemoizedSerializedSize;
-    private pbc::PopsicleList<uint> packedUint32_ = new pbc::PopsicleList<uint>();
-    public scg::IList<uint> PackedUint32List {
-      get { return pbc::Lists.AsReadOnly(packedUint32_); }
-    }
-    public int PackedUint32Count {
-      get { return packedUint32_.Count; }
-    }
-    public uint GetPackedUint32(int index) {
-      return packedUint32_[index];
-    }
-
-    public const int PackedUint64FieldNumber = 93;
-    private int packedUint64MemoizedSerializedSize;
-    private pbc::PopsicleList<ulong> packedUint64_ = new pbc::PopsicleList<ulong>();
-    public scg::IList<ulong> PackedUint64List {
-      get { return pbc::Lists.AsReadOnly(packedUint64_); }
-    }
-    public int PackedUint64Count {
-      get { return packedUint64_.Count; }
-    }
-    public ulong GetPackedUint64(int index) {
-      return packedUint64_[index];
-    }
-
-    public const int PackedSint32FieldNumber = 94;
-    private int packedSint32MemoizedSerializedSize;
-    private pbc::PopsicleList<int> packedSint32_ = new pbc::PopsicleList<int>();
-    public scg::IList<int> PackedSint32List {
-      get { return pbc::Lists.AsReadOnly(packedSint32_); }
-    }
-    public int PackedSint32Count {
-      get { return packedSint32_.Count; }
-    }
-    public int GetPackedSint32(int index) {
-      return packedSint32_[index];
-    }
-
-    public const int PackedSint64FieldNumber = 95;
-    private int packedSint64MemoizedSerializedSize;
-    private pbc::PopsicleList<long> packedSint64_ = new pbc::PopsicleList<long>();
-    public scg::IList<long> PackedSint64List {
-      get { return pbc::Lists.AsReadOnly(packedSint64_); }
-    }
-    public int PackedSint64Count {
-      get { return packedSint64_.Count; }
-    }
-    public long GetPackedSint64(int index) {
-      return packedSint64_[index];
-    }
-
-    public const int PackedFixed32FieldNumber = 96;
-    private int packedFixed32MemoizedSerializedSize;
-    private pbc::PopsicleList<uint> packedFixed32_ = new pbc::PopsicleList<uint>();
-    public scg::IList<uint> PackedFixed32List {
-      get { return pbc::Lists.AsReadOnly(packedFixed32_); }
-    }
-    public int PackedFixed32Count {
-      get { return packedFixed32_.Count; }
-    }
-    public uint GetPackedFixed32(int index) {
-      return packedFixed32_[index];
-    }
-
-    public const int PackedFixed64FieldNumber = 97;
-    private int packedFixed64MemoizedSerializedSize;
-    private pbc::PopsicleList<ulong> packedFixed64_ = new pbc::PopsicleList<ulong>();
-    public scg::IList<ulong> PackedFixed64List {
-      get { return pbc::Lists.AsReadOnly(packedFixed64_); }
-    }
-    public int PackedFixed64Count {
-      get { return packedFixed64_.Count; }
-    }
-    public ulong GetPackedFixed64(int index) {
-      return packedFixed64_[index];
-    }
-
-    public const int PackedSfixed32FieldNumber = 98;
-    private int packedSfixed32MemoizedSerializedSize;
-    private pbc::PopsicleList<int> packedSfixed32_ = new pbc::PopsicleList<int>();
-    public scg::IList<int> PackedSfixed32List {
-      get { return pbc::Lists.AsReadOnly(packedSfixed32_); }
-    }
-    public int PackedSfixed32Count {
-      get { return packedSfixed32_.Count; }
-    }
-    public int GetPackedSfixed32(int index) {
-      return packedSfixed32_[index];
-    }
-
-    public const int PackedSfixed64FieldNumber = 99;
-    private int packedSfixed64MemoizedSerializedSize;
-    private pbc::PopsicleList<long> packedSfixed64_ = new pbc::PopsicleList<long>();
-    public scg::IList<long> PackedSfixed64List {
-      get { return pbc::Lists.AsReadOnly(packedSfixed64_); }
-    }
-    public int PackedSfixed64Count {
-      get { return packedSfixed64_.Count; }
-    }
-    public long GetPackedSfixed64(int index) {
-      return packedSfixed64_[index];
-    }
-
-    public const int PackedFloatFieldNumber = 100;
-    private int packedFloatMemoizedSerializedSize;
-    private pbc::PopsicleList<float> packedFloat_ = new pbc::PopsicleList<float>();
-    public scg::IList<float> PackedFloatList {
-      get { return pbc::Lists.AsReadOnly(packedFloat_); }
-    }
-    public int PackedFloatCount {
-      get { return packedFloat_.Count; }
-    }
-    public float GetPackedFloat(int index) {
-      return packedFloat_[index];
-    }
-
-    public const int PackedDoubleFieldNumber = 101;
-    private int packedDoubleMemoizedSerializedSize;
-    private pbc::PopsicleList<double> packedDouble_ = new pbc::PopsicleList<double>();
-    public scg::IList<double> PackedDoubleList {
-      get { return pbc::Lists.AsReadOnly(packedDouble_); }
-    }
-    public int PackedDoubleCount {
-      get { return packedDouble_.Count; }
-    }
-    public double GetPackedDouble(int index) {
-      return packedDouble_[index];
-    }
-
-    public const int PackedBoolFieldNumber = 102;
-    private int packedBoolMemoizedSerializedSize;
-    private pbc::PopsicleList<bool> packedBool_ = new pbc::PopsicleList<bool>();
-    public scg::IList<bool> PackedBoolList {
-      get { return pbc::Lists.AsReadOnly(packedBool_); }
-    }
-    public int PackedBoolCount {
-      get { return packedBool_.Count; }
-    }
-    public bool GetPackedBool(int index) {
-      return packedBool_[index];
-    }
-
-    public const int PackedEnumFieldNumber = 103;
-    private int packedEnumMemoizedSerializedSize;
-    private pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite> packedEnum_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite>();
-    public scg::IList<global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite> PackedEnumList {
-      get { return pbc::Lists.AsReadOnly(packedEnum_); }
-    }
-    public int PackedEnumCount {
-      get { return packedEnum_.Count; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite GetPackedEnum(int index) {
-      return packedEnum_[index];
-    }
-
-    public override bool IsInitialized {
-      get {
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _testPackedTypesLiteFieldNames;
-      if (packedInt32_.Count > 0) {
-        output.WritePackedInt32Array(90, field_names[6], packedInt32MemoizedSerializedSize, packedInt32_);
-      }
-      if (packedInt64_.Count > 0) {
-        output.WritePackedInt64Array(91, field_names[7], packedInt64MemoizedSerializedSize, packedInt64_);
-      }
-      if (packedUint32_.Count > 0) {
-        output.WritePackedUInt32Array(92, field_names[12], packedUint32MemoizedSerializedSize, packedUint32_);
-      }
-      if (packedUint64_.Count > 0) {
-        output.WritePackedUInt64Array(93, field_names[13], packedUint64MemoizedSerializedSize, packedUint64_);
-      }
-      if (packedSint32_.Count > 0) {
-        output.WritePackedSInt32Array(94, field_names[10], packedSint32MemoizedSerializedSize, packedSint32_);
-      }
-      if (packedSint64_.Count > 0) {
-        output.WritePackedSInt64Array(95, field_names[11], packedSint64MemoizedSerializedSize, packedSint64_);
-      }
-      if (packedFixed32_.Count > 0) {
-        output.WritePackedFixed32Array(96, field_names[3], packedFixed32MemoizedSerializedSize, packedFixed32_);
-      }
-      if (packedFixed64_.Count > 0) {
-        output.WritePackedFixed64Array(97, field_names[4], packedFixed64MemoizedSerializedSize, packedFixed64_);
-      }
-      if (packedSfixed32_.Count > 0) {
-        output.WritePackedSFixed32Array(98, field_names[8], packedSfixed32MemoizedSerializedSize, packedSfixed32_);
-      }
-      if (packedSfixed64_.Count > 0) {
-        output.WritePackedSFixed64Array(99, field_names[9], packedSfixed64MemoizedSerializedSize, packedSfixed64_);
-      }
-      if (packedFloat_.Count > 0) {
-        output.WritePackedFloatArray(100, field_names[5], packedFloatMemoizedSerializedSize, packedFloat_);
-      }
-      if (packedDouble_.Count > 0) {
-        output.WritePackedDoubleArray(101, field_names[1], packedDoubleMemoizedSerializedSize, packedDouble_);
-      }
-      if (packedBool_.Count > 0) {
-        output.WritePackedBoolArray(102, field_names[0], packedBoolMemoizedSerializedSize, packedBool_);
-      }
-      if (packedEnum_.Count > 0) {
-        output.WritePackedEnumArray(103, field_names[2], packedEnumMemoizedSerializedSize, packedEnum_);
-      }
-    }
-
-    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;
-        foreach (int element in PackedInt32List) {
-          dataSize += pb::CodedOutputStream.ComputeInt32SizeNoTag(element);
-        }
-        size += dataSize;
-        if (packedInt32_.Count != 0) {
-          size += 2 + pb::CodedOutputStream.ComputeInt32SizeNoTag(dataSize);
-        }
-        packedInt32MemoizedSerializedSize = dataSize;
-      }
-      {
-        int dataSize = 0;
-        foreach (long element in PackedInt64List) {
-          dataSize += pb::CodedOutputStream.ComputeInt64SizeNoTag(element);
-        }
-        size += dataSize;
-        if (packedInt64_.Count != 0) {
-          size += 2 + pb::CodedOutputStream.ComputeInt32SizeNoTag(dataSize);
-        }
-        packedInt64MemoizedSerializedSize = dataSize;
-      }
-      {
-        int dataSize = 0;
-        foreach (uint element in PackedUint32List) {
-          dataSize += pb::CodedOutputStream.ComputeUInt32SizeNoTag(element);
-        }
-        size += dataSize;
-        if (packedUint32_.Count != 0) {
-          size += 2 + pb::CodedOutputStream.ComputeInt32SizeNoTag(dataSize);
-        }
-        packedUint32MemoizedSerializedSize = dataSize;
-      }
-      {
-        int dataSize = 0;
-        foreach (ulong element in PackedUint64List) {
-          dataSize += pb::CodedOutputStream.ComputeUInt64SizeNoTag(element);
-        }
-        size += dataSize;
-        if (packedUint64_.Count != 0) {
-          size += 2 + pb::CodedOutputStream.ComputeInt32SizeNoTag(dataSize);
-        }
-        packedUint64MemoizedSerializedSize = dataSize;
-      }
-      {
-        int dataSize = 0;
-        foreach (int element in PackedSint32List) {
-          dataSize += pb::CodedOutputStream.ComputeSInt32SizeNoTag(element);
-        }
-        size += dataSize;
-        if (packedSint32_.Count != 0) {
-          size += 2 + pb::CodedOutputStream.ComputeInt32SizeNoTag(dataSize);
-        }
-        packedSint32MemoizedSerializedSize = dataSize;
-      }
-      {
-        int dataSize = 0;
-        foreach (long element in PackedSint64List) {
-          dataSize += pb::CodedOutputStream.ComputeSInt64SizeNoTag(element);
-        }
-        size += dataSize;
-        if (packedSint64_.Count != 0) {
-          size += 2 + pb::CodedOutputStream.ComputeInt32SizeNoTag(dataSize);
-        }
-        packedSint64MemoizedSerializedSize = dataSize;
-      }
-      {
-        int dataSize = 0;
-        dataSize = 4 * packedFixed32_.Count;
-        size += dataSize;
-        if (packedFixed32_.Count != 0) {
-          size += 2 + pb::CodedOutputStream.ComputeInt32SizeNoTag(dataSize);
-        }
-        packedFixed32MemoizedSerializedSize = dataSize;
-      }
-      {
-        int dataSize = 0;
-        dataSize = 8 * packedFixed64_.Count;
-        size += dataSize;
-        if (packedFixed64_.Count != 0) {
-          size += 2 + pb::CodedOutputStream.ComputeInt32SizeNoTag(dataSize);
-        }
-        packedFixed64MemoizedSerializedSize = dataSize;
-      }
-      {
-        int dataSize = 0;
-        dataSize = 4 * packedSfixed32_.Count;
-        size += dataSize;
-        if (packedSfixed32_.Count != 0) {
-          size += 2 + pb::CodedOutputStream.ComputeInt32SizeNoTag(dataSize);
-        }
-        packedSfixed32MemoizedSerializedSize = dataSize;
-      }
-      {
-        int dataSize = 0;
-        dataSize = 8 * packedSfixed64_.Count;
-        size += dataSize;
-        if (packedSfixed64_.Count != 0) {
-          size += 2 + pb::CodedOutputStream.ComputeInt32SizeNoTag(dataSize);
-        }
-        packedSfixed64MemoizedSerializedSize = dataSize;
-      }
-      {
-        int dataSize = 0;
-        dataSize = 4 * packedFloat_.Count;
-        size += dataSize;
-        if (packedFloat_.Count != 0) {
-          size += 2 + pb::CodedOutputStream.ComputeInt32SizeNoTag(dataSize);
-        }
-        packedFloatMemoizedSerializedSize = dataSize;
-      }
-      {
-        int dataSize = 0;
-        dataSize = 8 * packedDouble_.Count;
-        size += dataSize;
-        if (packedDouble_.Count != 0) {
-          size += 2 + pb::CodedOutputStream.ComputeInt32SizeNoTag(dataSize);
-        }
-        packedDoubleMemoizedSerializedSize = dataSize;
-      }
-      {
-        int dataSize = 0;
-        dataSize = 1 * packedBool_.Count;
-        size += dataSize;
-        if (packedBool_.Count != 0) {
-          size += 2 + pb::CodedOutputStream.ComputeInt32SizeNoTag(dataSize);
-        }
-        packedBoolMemoizedSerializedSize = dataSize;
-      }
-      {
-        int dataSize = 0;
-        if (packedEnum_.Count > 0) {
-          foreach (global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite element in packedEnum_) {
-            dataSize += pb::CodedOutputStream.ComputeEnumSizeNoTag((int) element);
-          }
-          size += dataSize;
-          size += 2;
-          size += pb::CodedOutputStream.ComputeRawVarint32Size((uint) dataSize);
-        }
-        packedEnumMemoizedSerializedSize = dataSize;
-      }
-      memoizedSerializedSize = size;
-      return size;
-    }
-    #region Lite runtime methods
-    public override int GetHashCode() {
-      int hash = GetType().GetHashCode();
-      foreach(int i in packedInt32_)
-        hash ^= i.GetHashCode();
-      foreach(long i in packedInt64_)
-        hash ^= i.GetHashCode();
-      foreach(uint i in packedUint32_)
-        hash ^= i.GetHashCode();
-      foreach(ulong i in packedUint64_)
-        hash ^= i.GetHashCode();
-      foreach(int i in packedSint32_)
-        hash ^= i.GetHashCode();
-      foreach(long i in packedSint64_)
-        hash ^= i.GetHashCode();
-      foreach(uint i in packedFixed32_)
-        hash ^= i.GetHashCode();
-      foreach(ulong i in packedFixed64_)
-        hash ^= i.GetHashCode();
-      foreach(int i in packedSfixed32_)
-        hash ^= i.GetHashCode();
-      foreach(long i in packedSfixed64_)
-        hash ^= i.GetHashCode();
-      foreach(float i in packedFloat_)
-        hash ^= i.GetHashCode();
-      foreach(double i in packedDouble_)
-        hash ^= i.GetHashCode();
-      foreach(bool i in packedBool_)
-        hash ^= i.GetHashCode();
-      foreach(global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite i in packedEnum_)
-        hash ^= i.GetHashCode();
-      return hash;
-    }
-
-    public override bool Equals(object obj) {
-      TestPackedTypesLite other = obj as TestPackedTypesLite;
-      if (other == null) return false;
-      if(packedInt32_.Count != other.packedInt32_.Count) return false;
-      for(int ix=0; ix < packedInt32_.Count; ix++)
-        if(!packedInt32_[ix].Equals(other.packedInt32_[ix])) return false;
-      if(packedInt64_.Count != other.packedInt64_.Count) return false;
-      for(int ix=0; ix < packedInt64_.Count; ix++)
-        if(!packedInt64_[ix].Equals(other.packedInt64_[ix])) return false;
-      if(packedUint32_.Count != other.packedUint32_.Count) return false;
-      for(int ix=0; ix < packedUint32_.Count; ix++)
-        if(!packedUint32_[ix].Equals(other.packedUint32_[ix])) return false;
-      if(packedUint64_.Count != other.packedUint64_.Count) return false;
-      for(int ix=0; ix < packedUint64_.Count; ix++)
-        if(!packedUint64_[ix].Equals(other.packedUint64_[ix])) return false;
-      if(packedSint32_.Count != other.packedSint32_.Count) return false;
-      for(int ix=0; ix < packedSint32_.Count; ix++)
-        if(!packedSint32_[ix].Equals(other.packedSint32_[ix])) return false;
-      if(packedSint64_.Count != other.packedSint64_.Count) return false;
-      for(int ix=0; ix < packedSint64_.Count; ix++)
-        if(!packedSint64_[ix].Equals(other.packedSint64_[ix])) return false;
-      if(packedFixed32_.Count != other.packedFixed32_.Count) return false;
-      for(int ix=0; ix < packedFixed32_.Count; ix++)
-        if(!packedFixed32_[ix].Equals(other.packedFixed32_[ix])) return false;
-      if(packedFixed64_.Count != other.packedFixed64_.Count) return false;
-      for(int ix=0; ix < packedFixed64_.Count; ix++)
-        if(!packedFixed64_[ix].Equals(other.packedFixed64_[ix])) return false;
-      if(packedSfixed32_.Count != other.packedSfixed32_.Count) return false;
-      for(int ix=0; ix < packedSfixed32_.Count; ix++)
-        if(!packedSfixed32_[ix].Equals(other.packedSfixed32_[ix])) return false;
-      if(packedSfixed64_.Count != other.packedSfixed64_.Count) return false;
-      for(int ix=0; ix < packedSfixed64_.Count; ix++)
-        if(!packedSfixed64_[ix].Equals(other.packedSfixed64_[ix])) return false;
-      if(packedFloat_.Count != other.packedFloat_.Count) return false;
-      for(int ix=0; ix < packedFloat_.Count; ix++)
-        if(!packedFloat_[ix].Equals(other.packedFloat_[ix])) return false;
-      if(packedDouble_.Count != other.packedDouble_.Count) return false;
-      for(int ix=0; ix < packedDouble_.Count; ix++)
-        if(!packedDouble_[ix].Equals(other.packedDouble_[ix])) return false;
-      if(packedBool_.Count != other.packedBool_.Count) return false;
-      for(int ix=0; ix < packedBool_.Count; ix++)
-        if(!packedBool_[ix].Equals(other.packedBool_[ix])) return false;
-      if(packedEnum_.Count != other.packedEnum_.Count) return false;
-      for(int ix=0; ix < packedEnum_.Count; ix++)
-        if(!packedEnum_[ix].Equals(other.packedEnum_[ix])) return false;
-      return true;
-    }
-
-    public override void PrintTo(global::System.IO.TextWriter writer) {
-      PrintField("packed_int32", packedInt32_, writer);
-      PrintField("packed_int64", packedInt64_, writer);
-      PrintField("packed_uint32", packedUint32_, writer);
-      PrintField("packed_uint64", packedUint64_, writer);
-      PrintField("packed_sint32", packedSint32_, writer);
-      PrintField("packed_sint64", packedSint64_, writer);
-      PrintField("packed_fixed32", packedFixed32_, writer);
-      PrintField("packed_fixed64", packedFixed64_, writer);
-      PrintField("packed_sfixed32", packedSfixed32_, writer);
-      PrintField("packed_sfixed64", packedSfixed64_, writer);
-      PrintField("packed_float", packedFloat_, writer);
-      PrintField("packed_double", packedDouble_, writer);
-      PrintField("packed_bool", packedBool_, writer);
-      PrintField("packed_enum", packedEnum_, writer);
-    }
-    #endregion
-
-    public static TestPackedTypesLite ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestPackedTypesLite ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestPackedTypesLite ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestPackedTypesLite ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestPackedTypesLite ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestPackedTypesLite ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static TestPackedTypesLite ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static TestPackedTypesLite ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static TestPackedTypesLite ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestPackedTypesLite ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private TestPackedTypesLite MakeReadOnly() {
-      packedInt32_.MakeReadOnly();
-      packedInt64_.MakeReadOnly();
-      packedUint32_.MakeReadOnly();
-      packedUint64_.MakeReadOnly();
-      packedSint32_.MakeReadOnly();
-      packedSint64_.MakeReadOnly();
-      packedFixed32_.MakeReadOnly();
-      packedFixed64_.MakeReadOnly();
-      packedSfixed32_.MakeReadOnly();
-      packedSfixed64_.MakeReadOnly();
-      packedFloat_.MakeReadOnly();
-      packedDouble_.MakeReadOnly();
-      packedBool_.MakeReadOnly();
-      packedEnum_.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(TestPackedTypesLite prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilderLite<TestPackedTypesLite, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(TestPackedTypesLite cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private TestPackedTypesLite result;
-
-      private TestPackedTypesLite PrepareBuilder() {
-        if (resultIsReadOnly) {
-          TestPackedTypesLite original = result;
-          result = new TestPackedTypesLite();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override TestPackedTypesLite 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 TestPackedTypesLite DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.TestPackedTypesLite.DefaultInstance; }
-      }
-
-      public override TestPackedTypesLite BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessageLite other) {
-        if (other is TestPackedTypesLite) {
-          return MergeFrom((TestPackedTypesLite) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(TestPackedTypesLite other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.TestPackedTypesLite.DefaultInstance) return this;
-        PrepareBuilder();
-        if (other.packedInt32_.Count != 0) {
-          result.packedInt32_.Add(other.packedInt32_);
-        }
-        if (other.packedInt64_.Count != 0) {
-          result.packedInt64_.Add(other.packedInt64_);
-        }
-        if (other.packedUint32_.Count != 0) {
-          result.packedUint32_.Add(other.packedUint32_);
-        }
-        if (other.packedUint64_.Count != 0) {
-          result.packedUint64_.Add(other.packedUint64_);
-        }
-        if (other.packedSint32_.Count != 0) {
-          result.packedSint32_.Add(other.packedSint32_);
-        }
-        if (other.packedSint64_.Count != 0) {
-          result.packedSint64_.Add(other.packedSint64_);
-        }
-        if (other.packedFixed32_.Count != 0) {
-          result.packedFixed32_.Add(other.packedFixed32_);
-        }
-        if (other.packedFixed64_.Count != 0) {
-          result.packedFixed64_.Add(other.packedFixed64_);
-        }
-        if (other.packedSfixed32_.Count != 0) {
-          result.packedSfixed32_.Add(other.packedSfixed32_);
-        }
-        if (other.packedSfixed64_.Count != 0) {
-          result.packedSfixed64_.Add(other.packedSfixed64_);
-        }
-        if (other.packedFloat_.Count != 0) {
-          result.packedFloat_.Add(other.packedFloat_);
-        }
-        if (other.packedDouble_.Count != 0) {
-          result.packedDouble_.Add(other.packedDouble_);
-        }
-        if (other.packedBool_.Count != 0) {
-          result.packedBool_.Add(other.packedBool_);
-        }
-        if (other.packedEnum_.Count != 0) {
-          result.packedEnum_.Add(other.packedEnum_);
-        }
-        return this;
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input) {
-        return MergeFrom(input, pb::ExtensionRegistry.Empty);
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-        PrepareBuilder();
-        uint tag;
-        string field_name;
-        while (input.ReadTag(out tag, out field_name)) {
-          if(tag == 0 && field_name != null) {
-            int field_ordinal = global::System.Array.BinarySearch(_testPackedTypesLiteFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _testPackedTypesLiteFieldTags[field_ordinal];
-            else {
-              ParseUnknownField(input, extensionRegistry, tag, field_name);
-              continue;
-            }
-          }
-          switch (tag) {
-            case 0: {
-              throw pb::InvalidProtocolBufferException.InvalidTag();
-            }
-            default: {
-              if (pb::WireFormat.IsEndGroupTag(tag)) {
-                return this;
-              }
-              ParseUnknownField(input, extensionRegistry, tag, field_name);
-              break;
-            }
-            case 722:
-            case 720: {
-              input.ReadInt32Array(tag, field_name, result.packedInt32_);
-              break;
-            }
-            case 730:
-            case 728: {
-              input.ReadInt64Array(tag, field_name, result.packedInt64_);
-              break;
-            }
-            case 738:
-            case 736: {
-              input.ReadUInt32Array(tag, field_name, result.packedUint32_);
-              break;
-            }
-            case 746:
-            case 744: {
-              input.ReadUInt64Array(tag, field_name, result.packedUint64_);
-              break;
-            }
-            case 754:
-            case 752: {
-              input.ReadSInt32Array(tag, field_name, result.packedSint32_);
-              break;
-            }
-            case 762:
-            case 760: {
-              input.ReadSInt64Array(tag, field_name, result.packedSint64_);
-              break;
-            }
-            case 770:
-            case 773: {
-              input.ReadFixed32Array(tag, field_name, result.packedFixed32_);
-              break;
-            }
-            case 778:
-            case 777: {
-              input.ReadFixed64Array(tag, field_name, result.packedFixed64_);
-              break;
-            }
-            case 786:
-            case 789: {
-              input.ReadSFixed32Array(tag, field_name, result.packedSfixed32_);
-              break;
-            }
-            case 794:
-            case 793: {
-              input.ReadSFixed64Array(tag, field_name, result.packedSfixed64_);
-              break;
-            }
-            case 802:
-            case 805: {
-              input.ReadFloatArray(tag, field_name, result.packedFloat_);
-              break;
-            }
-            case 810:
-            case 809: {
-              input.ReadDoubleArray(tag, field_name, result.packedDouble_);
-              break;
-            }
-            case 818:
-            case 816: {
-              input.ReadBoolArray(tag, field_name, result.packedBool_);
-              break;
-            }
-            case 826:
-            case 824: {
-              scg::ICollection<object> unknownItems;
-              input.ReadEnumArray<global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite>(tag, field_name, result.packedEnum_, out unknownItems);
-              break;
-            }
-          }
-        }
-
-        return this;
-      }
-
-
-      public pbc::IPopsicleList<int> PackedInt32List {
-        get { return PrepareBuilder().packedInt32_; }
-      }
-      public int PackedInt32Count {
-        get { return result.PackedInt32Count; }
-      }
-      public int GetPackedInt32(int index) {
-        return result.GetPackedInt32(index);
-      }
-      public Builder SetPackedInt32(int index, int value) {
-        PrepareBuilder();
-        result.packedInt32_[index] = value;
-        return this;
-      }
-      public Builder AddPackedInt32(int value) {
-        PrepareBuilder();
-        result.packedInt32_.Add(value);
-        return this;
-      }
-      public Builder AddRangePackedInt32(scg::IEnumerable<int> values) {
-        PrepareBuilder();
-        result.packedInt32_.Add(values);
-        return this;
-      }
-      public Builder ClearPackedInt32() {
-        PrepareBuilder();
-        result.packedInt32_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<long> PackedInt64List {
-        get { return PrepareBuilder().packedInt64_; }
-      }
-      public int PackedInt64Count {
-        get { return result.PackedInt64Count; }
-      }
-      public long GetPackedInt64(int index) {
-        return result.GetPackedInt64(index);
-      }
-      public Builder SetPackedInt64(int index, long value) {
-        PrepareBuilder();
-        result.packedInt64_[index] = value;
-        return this;
-      }
-      public Builder AddPackedInt64(long value) {
-        PrepareBuilder();
-        result.packedInt64_.Add(value);
-        return this;
-      }
-      public Builder AddRangePackedInt64(scg::IEnumerable<long> values) {
-        PrepareBuilder();
-        result.packedInt64_.Add(values);
-        return this;
-      }
-      public Builder ClearPackedInt64() {
-        PrepareBuilder();
-        result.packedInt64_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<uint> PackedUint32List {
-        get { return PrepareBuilder().packedUint32_; }
-      }
-      public int PackedUint32Count {
-        get { return result.PackedUint32Count; }
-      }
-      public uint GetPackedUint32(int index) {
-        return result.GetPackedUint32(index);
-      }
-      public Builder SetPackedUint32(int index, uint value) {
-        PrepareBuilder();
-        result.packedUint32_[index] = value;
-        return this;
-      }
-      public Builder AddPackedUint32(uint value) {
-        PrepareBuilder();
-        result.packedUint32_.Add(value);
-        return this;
-      }
-      public Builder AddRangePackedUint32(scg::IEnumerable<uint> values) {
-        PrepareBuilder();
-        result.packedUint32_.Add(values);
-        return this;
-      }
-      public Builder ClearPackedUint32() {
-        PrepareBuilder();
-        result.packedUint32_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<ulong> PackedUint64List {
-        get { return PrepareBuilder().packedUint64_; }
-      }
-      public int PackedUint64Count {
-        get { return result.PackedUint64Count; }
-      }
-      public ulong GetPackedUint64(int index) {
-        return result.GetPackedUint64(index);
-      }
-      public Builder SetPackedUint64(int index, ulong value) {
-        PrepareBuilder();
-        result.packedUint64_[index] = value;
-        return this;
-      }
-      public Builder AddPackedUint64(ulong value) {
-        PrepareBuilder();
-        result.packedUint64_.Add(value);
-        return this;
-      }
-      public Builder AddRangePackedUint64(scg::IEnumerable<ulong> values) {
-        PrepareBuilder();
-        result.packedUint64_.Add(values);
-        return this;
-      }
-      public Builder ClearPackedUint64() {
-        PrepareBuilder();
-        result.packedUint64_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<int> PackedSint32List {
-        get { return PrepareBuilder().packedSint32_; }
-      }
-      public int PackedSint32Count {
-        get { return result.PackedSint32Count; }
-      }
-      public int GetPackedSint32(int index) {
-        return result.GetPackedSint32(index);
-      }
-      public Builder SetPackedSint32(int index, int value) {
-        PrepareBuilder();
-        result.packedSint32_[index] = value;
-        return this;
-      }
-      public Builder AddPackedSint32(int value) {
-        PrepareBuilder();
-        result.packedSint32_.Add(value);
-        return this;
-      }
-      public Builder AddRangePackedSint32(scg::IEnumerable<int> values) {
-        PrepareBuilder();
-        result.packedSint32_.Add(values);
-        return this;
-      }
-      public Builder ClearPackedSint32() {
-        PrepareBuilder();
-        result.packedSint32_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<long> PackedSint64List {
-        get { return PrepareBuilder().packedSint64_; }
-      }
-      public int PackedSint64Count {
-        get { return result.PackedSint64Count; }
-      }
-      public long GetPackedSint64(int index) {
-        return result.GetPackedSint64(index);
-      }
-      public Builder SetPackedSint64(int index, long value) {
-        PrepareBuilder();
-        result.packedSint64_[index] = value;
-        return this;
-      }
-      public Builder AddPackedSint64(long value) {
-        PrepareBuilder();
-        result.packedSint64_.Add(value);
-        return this;
-      }
-      public Builder AddRangePackedSint64(scg::IEnumerable<long> values) {
-        PrepareBuilder();
-        result.packedSint64_.Add(values);
-        return this;
-      }
-      public Builder ClearPackedSint64() {
-        PrepareBuilder();
-        result.packedSint64_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<uint> PackedFixed32List {
-        get { return PrepareBuilder().packedFixed32_; }
-      }
-      public int PackedFixed32Count {
-        get { return result.PackedFixed32Count; }
-      }
-      public uint GetPackedFixed32(int index) {
-        return result.GetPackedFixed32(index);
-      }
-      public Builder SetPackedFixed32(int index, uint value) {
-        PrepareBuilder();
-        result.packedFixed32_[index] = value;
-        return this;
-      }
-      public Builder AddPackedFixed32(uint value) {
-        PrepareBuilder();
-        result.packedFixed32_.Add(value);
-        return this;
-      }
-      public Builder AddRangePackedFixed32(scg::IEnumerable<uint> values) {
-        PrepareBuilder();
-        result.packedFixed32_.Add(values);
-        return this;
-      }
-      public Builder ClearPackedFixed32() {
-        PrepareBuilder();
-        result.packedFixed32_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<ulong> PackedFixed64List {
-        get { return PrepareBuilder().packedFixed64_; }
-      }
-      public int PackedFixed64Count {
-        get { return result.PackedFixed64Count; }
-      }
-      public ulong GetPackedFixed64(int index) {
-        return result.GetPackedFixed64(index);
-      }
-      public Builder SetPackedFixed64(int index, ulong value) {
-        PrepareBuilder();
-        result.packedFixed64_[index] = value;
-        return this;
-      }
-      public Builder AddPackedFixed64(ulong value) {
-        PrepareBuilder();
-        result.packedFixed64_.Add(value);
-        return this;
-      }
-      public Builder AddRangePackedFixed64(scg::IEnumerable<ulong> values) {
-        PrepareBuilder();
-        result.packedFixed64_.Add(values);
-        return this;
-      }
-      public Builder ClearPackedFixed64() {
-        PrepareBuilder();
-        result.packedFixed64_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<int> PackedSfixed32List {
-        get { return PrepareBuilder().packedSfixed32_; }
-      }
-      public int PackedSfixed32Count {
-        get { return result.PackedSfixed32Count; }
-      }
-      public int GetPackedSfixed32(int index) {
-        return result.GetPackedSfixed32(index);
-      }
-      public Builder SetPackedSfixed32(int index, int value) {
-        PrepareBuilder();
-        result.packedSfixed32_[index] = value;
-        return this;
-      }
-      public Builder AddPackedSfixed32(int value) {
-        PrepareBuilder();
-        result.packedSfixed32_.Add(value);
-        return this;
-      }
-      public Builder AddRangePackedSfixed32(scg::IEnumerable<int> values) {
-        PrepareBuilder();
-        result.packedSfixed32_.Add(values);
-        return this;
-      }
-      public Builder ClearPackedSfixed32() {
-        PrepareBuilder();
-        result.packedSfixed32_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<long> PackedSfixed64List {
-        get { return PrepareBuilder().packedSfixed64_; }
-      }
-      public int PackedSfixed64Count {
-        get { return result.PackedSfixed64Count; }
-      }
-      public long GetPackedSfixed64(int index) {
-        return result.GetPackedSfixed64(index);
-      }
-      public Builder SetPackedSfixed64(int index, long value) {
-        PrepareBuilder();
-        result.packedSfixed64_[index] = value;
-        return this;
-      }
-      public Builder AddPackedSfixed64(long value) {
-        PrepareBuilder();
-        result.packedSfixed64_.Add(value);
-        return this;
-      }
-      public Builder AddRangePackedSfixed64(scg::IEnumerable<long> values) {
-        PrepareBuilder();
-        result.packedSfixed64_.Add(values);
-        return this;
-      }
-      public Builder ClearPackedSfixed64() {
-        PrepareBuilder();
-        result.packedSfixed64_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<float> PackedFloatList {
-        get { return PrepareBuilder().packedFloat_; }
-      }
-      public int PackedFloatCount {
-        get { return result.PackedFloatCount; }
-      }
-      public float GetPackedFloat(int index) {
-        return result.GetPackedFloat(index);
-      }
-      public Builder SetPackedFloat(int index, float value) {
-        PrepareBuilder();
-        result.packedFloat_[index] = value;
-        return this;
-      }
-      public Builder AddPackedFloat(float value) {
-        PrepareBuilder();
-        result.packedFloat_.Add(value);
-        return this;
-      }
-      public Builder AddRangePackedFloat(scg::IEnumerable<float> values) {
-        PrepareBuilder();
-        result.packedFloat_.Add(values);
-        return this;
-      }
-      public Builder ClearPackedFloat() {
-        PrepareBuilder();
-        result.packedFloat_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<double> PackedDoubleList {
-        get { return PrepareBuilder().packedDouble_; }
-      }
-      public int PackedDoubleCount {
-        get { return result.PackedDoubleCount; }
-      }
-      public double GetPackedDouble(int index) {
-        return result.GetPackedDouble(index);
-      }
-      public Builder SetPackedDouble(int index, double value) {
-        PrepareBuilder();
-        result.packedDouble_[index] = value;
-        return this;
-      }
-      public Builder AddPackedDouble(double value) {
-        PrepareBuilder();
-        result.packedDouble_.Add(value);
-        return this;
-      }
-      public Builder AddRangePackedDouble(scg::IEnumerable<double> values) {
-        PrepareBuilder();
-        result.packedDouble_.Add(values);
-        return this;
-      }
-      public Builder ClearPackedDouble() {
-        PrepareBuilder();
-        result.packedDouble_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<bool> PackedBoolList {
-        get { return PrepareBuilder().packedBool_; }
-      }
-      public int PackedBoolCount {
-        get { return result.PackedBoolCount; }
-      }
-      public bool GetPackedBool(int index) {
-        return result.GetPackedBool(index);
-      }
-      public Builder SetPackedBool(int index, bool value) {
-        PrepareBuilder();
-        result.packedBool_[index] = value;
-        return this;
-      }
-      public Builder AddPackedBool(bool value) {
-        PrepareBuilder();
-        result.packedBool_.Add(value);
-        return this;
-      }
-      public Builder AddRangePackedBool(scg::IEnumerable<bool> values) {
-        PrepareBuilder();
-        result.packedBool_.Add(values);
-        return this;
-      }
-      public Builder ClearPackedBool() {
-        PrepareBuilder();
-        result.packedBool_.Clear();
-        return this;
-      }
-
-      public pbc::IPopsicleList<global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite> PackedEnumList {
-        get { return PrepareBuilder().packedEnum_; }
-      }
-      public int PackedEnumCount {
-        get { return result.PackedEnumCount; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite GetPackedEnum(int index) {
-        return result.GetPackedEnum(index);
-      }
-      public Builder SetPackedEnum(int index, global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite value) {
-        PrepareBuilder();
-        result.packedEnum_[index] = value;
-        return this;
-      }
-      public Builder AddPackedEnum(global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite value) {
-        PrepareBuilder();
-        result.packedEnum_.Add(value);
-        return this;
-      }
-      public Builder AddRangePackedEnum(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.ForeignEnumLite> values) {
-        PrepareBuilder();
-        result.packedEnum_.Add(values);
-        return this;
-      }
-      public Builder ClearPackedEnum() {
-        PrepareBuilder();
-        result.packedEnum_.Clear();
-        return this;
-      }
-    }
-    static TestPackedTypesLite() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnittestLite.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class TestAllExtensionsLite : pb::ExtendableMessageLite<TestAllExtensionsLite, TestAllExtensionsLite.Builder> {
-    private TestAllExtensionsLite() { }
-    private static readonly TestAllExtensionsLite defaultInstance = new TestAllExtensionsLite().MakeReadOnly();
-    private static readonly string[] _testAllExtensionsLiteFieldNames = new string[] {  };
-    private static readonly uint[] _testAllExtensionsLiteFieldTags = new uint[] {  };
-    public static TestAllExtensionsLite DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override TestAllExtensionsLite DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override TestAllExtensionsLite ThisMessage {
-      get { return this; }
-    }
-
-    public override bool IsInitialized {
-      get {
-        if (!ExtensionsAreInitialized) return false;
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _testAllExtensionsLiteFieldNames;
-      pb::ExtendableMessageLite<TestAllExtensionsLite, TestAllExtensionsLite.Builder>.ExtensionWriter extensionWriter = CreateExtensionWriter(this);
-      extensionWriter.WriteUntil(536870912, output);
-    }
-
-    private int memoizedSerializedSize = -1;
-    public override int SerializedSize {
-      get {
-        int size = memoizedSerializedSize;
-        if (size != -1) return size;
-        return CalcSerializedSize();
-      }
-    }
-
-    private int CalcSerializedSize() {
-      int size = memoizedSerializedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      size += ExtensionsSerializedSize;
-      memoizedSerializedSize = size;
-      return size;
-    }
-    #region Lite runtime methods
-    public override int GetHashCode() {
-      int hash = GetType().GetHashCode();
-      hash ^= base.GetHashCode();
-      return hash;
-    }
-
-    public override bool Equals(object obj) {
-      TestAllExtensionsLite other = obj as TestAllExtensionsLite;
-      if (other == null) return false;
-      if (!base.Equals(other)) return false;
-      return true;
-    }
-
-    public override void PrintTo(global::System.IO.TextWriter writer) {
-      base.PrintTo(writer);
-    }
-    #endregion
-
-    public static TestAllExtensionsLite ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestAllExtensionsLite ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestAllExtensionsLite ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestAllExtensionsLite ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestAllExtensionsLite ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestAllExtensionsLite ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static TestAllExtensionsLite ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static TestAllExtensionsLite ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static TestAllExtensionsLite ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestAllExtensionsLite ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private TestAllExtensionsLite 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(TestAllExtensionsLite prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::ExtendableBuilderLite<TestAllExtensionsLite, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(TestAllExtensionsLite cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private TestAllExtensionsLite result;
-
-      private TestAllExtensionsLite PrepareBuilder() {
-        if (resultIsReadOnly) {
-          TestAllExtensionsLite original = result;
-          result = new TestAllExtensionsLite();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override TestAllExtensionsLite 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 TestAllExtensionsLite DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.DefaultInstance; }
-      }
-
-      public override TestAllExtensionsLite BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessageLite other) {
-        if (other is TestAllExtensionsLite) {
-          return MergeFrom((TestAllExtensionsLite) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(TestAllExtensionsLite other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite.DefaultInstance) return this;
-        PrepareBuilder();
-          this.MergeExtensionFields(other);
-        return this;
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input) {
-        return MergeFrom(input, pb::ExtensionRegistry.Empty);
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-        PrepareBuilder();
-        uint tag;
-        string field_name;
-        while (input.ReadTag(out tag, out field_name)) {
-          if(tag == 0 && field_name != null) {
-            int field_ordinal = global::System.Array.BinarySearch(_testAllExtensionsLiteFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _testAllExtensionsLiteFieldTags[field_ordinal];
-            else {
-              ParseUnknownField(input, extensionRegistry, tag, field_name);
-              continue;
-            }
-          }
-          switch (tag) {
-            case 0: {
-              throw pb::InvalidProtocolBufferException.InvalidTag();
-            }
-            default: {
-              if (pb::WireFormat.IsEndGroupTag(tag)) {
-                return this;
-              }
-              ParseUnknownField(input, extensionRegistry, tag, field_name);
-              break;
-            }
-          }
-        }
-
-        return this;
-      }
-
-    }
-    static TestAllExtensionsLite() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnittestLite.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class OptionalGroup_extension_lite : pb::GeneratedMessageLite<OptionalGroup_extension_lite, OptionalGroup_extension_lite.Builder> {
-    private OptionalGroup_extension_lite() { }
-    private static readonly OptionalGroup_extension_lite defaultInstance = new OptionalGroup_extension_lite().MakeReadOnly();
-    private static readonly string[] _optionalGroupExtensionLiteFieldNames = new string[] { "a" };
-    private static readonly uint[] _optionalGroupExtensionLiteFieldTags = new uint[] { 136 };
-    public static OptionalGroup_extension_lite DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override OptionalGroup_extension_lite DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override OptionalGroup_extension_lite ThisMessage {
-      get { return this; }
-    }
-
-    public const int AFieldNumber = 17;
-    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 = _optionalGroupExtensionLiteFieldNames;
-      if (hasA) {
-        output.WriteInt32(17, field_names[0], A);
-      }
-    }
-
-    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(17, A);
-      }
-      memoizedSerializedSize = size;
-      return size;
-    }
-    #region Lite runtime methods
-    public override int GetHashCode() {
-      int hash = GetType().GetHashCode();
-      if (hasA) {
-        hash ^= a_.GetHashCode();
-      }
-      return hash;
-    }
-
-    public override bool Equals(object obj) {
-      OptionalGroup_extension_lite other = obj as OptionalGroup_extension_lite;
-      if (other == null) return false;
-      if (hasA != other.hasA || (hasA && !a_.Equals(other.a_))) return false;
-      return true;
-    }
-
-    public override void PrintTo(global::System.IO.TextWriter writer) {
-      PrintField("a", hasA, a_, writer);
-    }
-    #endregion
-
-    public static OptionalGroup_extension_lite ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static OptionalGroup_extension_lite ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static OptionalGroup_extension_lite ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static OptionalGroup_extension_lite ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static OptionalGroup_extension_lite ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static OptionalGroup_extension_lite ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static OptionalGroup_extension_lite ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static OptionalGroup_extension_lite ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static OptionalGroup_extension_lite ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static OptionalGroup_extension_lite ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private OptionalGroup_extension_lite 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(OptionalGroup_extension_lite prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilderLite<OptionalGroup_extension_lite, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(OptionalGroup_extension_lite cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private OptionalGroup_extension_lite result;
-
-      private OptionalGroup_extension_lite PrepareBuilder() {
-        if (resultIsReadOnly) {
-          OptionalGroup_extension_lite original = result;
-          result = new OptionalGroup_extension_lite();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override OptionalGroup_extension_lite 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 OptionalGroup_extension_lite DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.OptionalGroup_extension_lite.DefaultInstance; }
-      }
-
-      public override OptionalGroup_extension_lite BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessageLite other) {
-        if (other is OptionalGroup_extension_lite) {
-          return MergeFrom((OptionalGroup_extension_lite) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(OptionalGroup_extension_lite other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.OptionalGroup_extension_lite.DefaultInstance) return this;
-        PrepareBuilder();
-        if (other.HasA) {
-          A = other.A;
-        }
-        return this;
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input) {
-        return MergeFrom(input, pb::ExtensionRegistry.Empty);
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-        PrepareBuilder();
-        uint tag;
-        string field_name;
-        while (input.ReadTag(out tag, out field_name)) {
-          if(tag == 0 && field_name != null) {
-            int field_ordinal = global::System.Array.BinarySearch(_optionalGroupExtensionLiteFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _optionalGroupExtensionLiteFieldTags[field_ordinal];
-            else {
-              ParseUnknownField(input, extensionRegistry, tag, field_name);
-              continue;
-            }
-          }
-          switch (tag) {
-            case 0: {
-              throw pb::InvalidProtocolBufferException.InvalidTag();
-            }
-            default: {
-              if (pb::WireFormat.IsEndGroupTag(tag)) {
-                return this;
-              }
-              ParseUnknownField(input, extensionRegistry, tag, field_name);
-              break;
-            }
-            case 136: {
-              result.hasA = input.ReadInt32(ref result.a_);
-              break;
-            }
-          }
-        }
-
-        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 OptionalGroup_extension_lite() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnittestLite.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class RepeatedGroup_extension_lite : pb::GeneratedMessageLite<RepeatedGroup_extension_lite, RepeatedGroup_extension_lite.Builder> {
-    private RepeatedGroup_extension_lite() { }
-    private static readonly RepeatedGroup_extension_lite defaultInstance = new RepeatedGroup_extension_lite().MakeReadOnly();
-    private static readonly string[] _repeatedGroupExtensionLiteFieldNames = new string[] { "a" };
-    private static readonly uint[] _repeatedGroupExtensionLiteFieldTags = new uint[] { 376 };
-    public static RepeatedGroup_extension_lite DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override RepeatedGroup_extension_lite DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override RepeatedGroup_extension_lite ThisMessage {
-      get { return this; }
-    }
-
-    public const int AFieldNumber = 47;
-    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 = _repeatedGroupExtensionLiteFieldNames;
-      if (hasA) {
-        output.WriteInt32(47, field_names[0], A);
-      }
-    }
-
-    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(47, A);
-      }
-      memoizedSerializedSize = size;
-      return size;
-    }
-    #region Lite runtime methods
-    public override int GetHashCode() {
-      int hash = GetType().GetHashCode();
-      if (hasA) {
-        hash ^= a_.GetHashCode();
-      }
-      return hash;
-    }
-
-    public override bool Equals(object obj) {
-      RepeatedGroup_extension_lite other = obj as RepeatedGroup_extension_lite;
-      if (other == null) return false;
-      if (hasA != other.hasA || (hasA && !a_.Equals(other.a_))) return false;
-      return true;
-    }
-
-    public override void PrintTo(global::System.IO.TextWriter writer) {
-      PrintField("a", hasA, a_, writer);
-    }
-    #endregion
-
-    public static RepeatedGroup_extension_lite ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static RepeatedGroup_extension_lite ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static RepeatedGroup_extension_lite ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static RepeatedGroup_extension_lite ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static RepeatedGroup_extension_lite ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static RepeatedGroup_extension_lite ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static RepeatedGroup_extension_lite ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static RepeatedGroup_extension_lite ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static RepeatedGroup_extension_lite ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static RepeatedGroup_extension_lite ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private RepeatedGroup_extension_lite 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(RepeatedGroup_extension_lite prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilderLite<RepeatedGroup_extension_lite, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(RepeatedGroup_extension_lite cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private RepeatedGroup_extension_lite result;
-
-      private RepeatedGroup_extension_lite PrepareBuilder() {
-        if (resultIsReadOnly) {
-          RepeatedGroup_extension_lite original = result;
-          result = new RepeatedGroup_extension_lite();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override RepeatedGroup_extension_lite 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 RepeatedGroup_extension_lite DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.RepeatedGroup_extension_lite.DefaultInstance; }
-      }
-
-      public override RepeatedGroup_extension_lite BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessageLite other) {
-        if (other is RepeatedGroup_extension_lite) {
-          return MergeFrom((RepeatedGroup_extension_lite) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(RepeatedGroup_extension_lite other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.RepeatedGroup_extension_lite.DefaultInstance) return this;
-        PrepareBuilder();
-        if (other.HasA) {
-          A = other.A;
-        }
-        return this;
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input) {
-        return MergeFrom(input, pb::ExtensionRegistry.Empty);
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-        PrepareBuilder();
-        uint tag;
-        string field_name;
-        while (input.ReadTag(out tag, out field_name)) {
-          if(tag == 0 && field_name != null) {
-            int field_ordinal = global::System.Array.BinarySearch(_repeatedGroupExtensionLiteFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _repeatedGroupExtensionLiteFieldTags[field_ordinal];
-            else {
-              ParseUnknownField(input, extensionRegistry, tag, field_name);
-              continue;
-            }
-          }
-          switch (tag) {
-            case 0: {
-              throw pb::InvalidProtocolBufferException.InvalidTag();
-            }
-            default: {
-              if (pb::WireFormat.IsEndGroupTag(tag)) {
-                return this;
-              }
-              ParseUnknownField(input, extensionRegistry, tag, field_name);
-              break;
-            }
-            case 376: {
-              result.hasA = input.ReadInt32(ref result.a_);
-              break;
-            }
-          }
-        }
-
-        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 RepeatedGroup_extension_lite() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnittestLite.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class TestPackedExtensionsLite : pb::ExtendableMessageLite<TestPackedExtensionsLite, TestPackedExtensionsLite.Builder> {
-    private TestPackedExtensionsLite() { }
-    private static readonly TestPackedExtensionsLite defaultInstance = new TestPackedExtensionsLite().MakeReadOnly();
-    private static readonly string[] _testPackedExtensionsLiteFieldNames = new string[] {  };
-    private static readonly uint[] _testPackedExtensionsLiteFieldTags = new uint[] {  };
-    public static TestPackedExtensionsLite DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override TestPackedExtensionsLite DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override TestPackedExtensionsLite ThisMessage {
-      get { return this; }
-    }
-
-    public override bool IsInitialized {
-      get {
-        if (!ExtensionsAreInitialized) return false;
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _testPackedExtensionsLiteFieldNames;
-      pb::ExtendableMessageLite<TestPackedExtensionsLite, TestPackedExtensionsLite.Builder>.ExtensionWriter extensionWriter = CreateExtensionWriter(this);
-      extensionWriter.WriteUntil(536870912, output);
-    }
-
-    private int memoizedSerializedSize = -1;
-    public override int SerializedSize {
-      get {
-        int size = memoizedSerializedSize;
-        if (size != -1) return size;
-        return CalcSerializedSize();
-      }
-    }
-
-    private int CalcSerializedSize() {
-      int size = memoizedSerializedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      size += ExtensionsSerializedSize;
-      memoizedSerializedSize = size;
-      return size;
-    }
-    #region Lite runtime methods
-    public override int GetHashCode() {
-      int hash = GetType().GetHashCode();
-      hash ^= base.GetHashCode();
-      return hash;
-    }
-
-    public override bool Equals(object obj) {
-      TestPackedExtensionsLite other = obj as TestPackedExtensionsLite;
-      if (other == null) return false;
-      if (!base.Equals(other)) return false;
-      return true;
-    }
-
-    public override void PrintTo(global::System.IO.TextWriter writer) {
-      base.PrintTo(writer);
-    }
-    #endregion
-
-    public static TestPackedExtensionsLite ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestPackedExtensionsLite ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestPackedExtensionsLite ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestPackedExtensionsLite ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestPackedExtensionsLite ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestPackedExtensionsLite ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static TestPackedExtensionsLite ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static TestPackedExtensionsLite ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static TestPackedExtensionsLite ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestPackedExtensionsLite ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private TestPackedExtensionsLite 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(TestPackedExtensionsLite prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::ExtendableBuilderLite<TestPackedExtensionsLite, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(TestPackedExtensionsLite cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private TestPackedExtensionsLite result;
-
-      private TestPackedExtensionsLite PrepareBuilder() {
-        if (resultIsReadOnly) {
-          TestPackedExtensionsLite original = result;
-          result = new TestPackedExtensionsLite();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override TestPackedExtensionsLite 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 TestPackedExtensionsLite DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.TestPackedExtensionsLite.DefaultInstance; }
-      }
-
-      public override TestPackedExtensionsLite BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessageLite other) {
-        if (other is TestPackedExtensionsLite) {
-          return MergeFrom((TestPackedExtensionsLite) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(TestPackedExtensionsLite other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.TestPackedExtensionsLite.DefaultInstance) return this;
-        PrepareBuilder();
-          this.MergeExtensionFields(other);
-        return this;
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input) {
-        return MergeFrom(input, pb::ExtensionRegistry.Empty);
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-        PrepareBuilder();
-        uint tag;
-        string field_name;
-        while (input.ReadTag(out tag, out field_name)) {
-          if(tag == 0 && field_name != null) {
-            int field_ordinal = global::System.Array.BinarySearch(_testPackedExtensionsLiteFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _testPackedExtensionsLiteFieldTags[field_ordinal];
-            else {
-              ParseUnknownField(input, extensionRegistry, tag, field_name);
-              continue;
-            }
-          }
-          switch (tag) {
-            case 0: {
-              throw pb::InvalidProtocolBufferException.InvalidTag();
-            }
-            default: {
-              if (pb::WireFormat.IsEndGroupTag(tag)) {
-                return this;
-              }
-              ParseUnknownField(input, extensionRegistry, tag, field_name);
-              break;
-            }
-          }
-        }
-
-        return this;
-      }
-
-    }
-    static TestPackedExtensionsLite() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnittestLite.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class TestNestedExtensionLite : pb::GeneratedMessageLite<TestNestedExtensionLite, TestNestedExtensionLite.Builder> {
-    private TestNestedExtensionLite() { }
-    private static readonly TestNestedExtensionLite defaultInstance = new TestNestedExtensionLite().MakeReadOnly();
-    private static readonly string[] _testNestedExtensionLiteFieldNames = new string[] {  };
-    private static readonly uint[] _testNestedExtensionLiteFieldTags = new uint[] {  };
-    public static TestNestedExtensionLite DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override TestNestedExtensionLite DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override TestNestedExtensionLite ThisMessage {
-      get { return this; }
-    }
-
-    public const int NestedExtensionFieldNumber = 12345;
-    public static pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestAllExtensionsLite, int> NestedExtension;
-    public override bool IsInitialized {
-      get {
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _testNestedExtensionLiteFieldNames;
-    }
-
-    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;
-      memoizedSerializedSize = size;
-      return size;
-    }
-    #region Lite runtime methods
-    public override int GetHashCode() {
-      int hash = GetType().GetHashCode();
-      return hash;
-    }
-
-    public override bool Equals(object obj) {
-      TestNestedExtensionLite other = obj as TestNestedExtensionLite;
-      if (other == null) return false;
-      return true;
-    }
-
-    public override void PrintTo(global::System.IO.TextWriter writer) {
-    }
-    #endregion
-
-    public static TestNestedExtensionLite ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestNestedExtensionLite ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestNestedExtensionLite ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestNestedExtensionLite ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestNestedExtensionLite ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestNestedExtensionLite ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static TestNestedExtensionLite ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static TestNestedExtensionLite ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static TestNestedExtensionLite ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestNestedExtensionLite ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private TestNestedExtensionLite 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(TestNestedExtensionLite prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilderLite<TestNestedExtensionLite, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(TestNestedExtensionLite cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private TestNestedExtensionLite result;
-
-      private TestNestedExtensionLite PrepareBuilder() {
-        if (resultIsReadOnly) {
-          TestNestedExtensionLite original = result;
-          result = new TestNestedExtensionLite();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override TestNestedExtensionLite 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 TestNestedExtensionLite DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.TestNestedExtensionLite.DefaultInstance; }
-      }
-
-      public override TestNestedExtensionLite BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessageLite other) {
-        if (other is TestNestedExtensionLite) {
-          return MergeFrom((TestNestedExtensionLite) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(TestNestedExtensionLite other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.TestNestedExtensionLite.DefaultInstance) return this;
-        PrepareBuilder();
-        return this;
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input) {
-        return MergeFrom(input, pb::ExtensionRegistry.Empty);
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-        PrepareBuilder();
-        uint tag;
-        string field_name;
-        while (input.ReadTag(out tag, out field_name)) {
-          if(tag == 0 && field_name != null) {
-            int field_ordinal = global::System.Array.BinarySearch(_testNestedExtensionLiteFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _testNestedExtensionLiteFieldTags[field_ordinal];
-            else {
-              ParseUnknownField(input, extensionRegistry, tag, field_name);
-              continue;
-            }
-          }
-          switch (tag) {
-            case 0: {
-              throw pb::InvalidProtocolBufferException.InvalidTag();
-            }
-            default: {
-              if (pb::WireFormat.IsEndGroupTag(tag)) {
-                return this;
-              }
-              ParseUnknownField(input, extensionRegistry, tag, field_name);
-              break;
-            }
-          }
-        }
-
-        return this;
-      }
-
-    }
-    static TestNestedExtensionLite() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnittestLite.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class TestDeprecatedLite : pb::GeneratedMessageLite<TestDeprecatedLite, TestDeprecatedLite.Builder> {
-    private TestDeprecatedLite() { }
-    private static readonly TestDeprecatedLite defaultInstance = new TestDeprecatedLite().MakeReadOnly();
-    private static readonly string[] _testDeprecatedLiteFieldNames = new string[] { "deprecated_field" };
-    private static readonly uint[] _testDeprecatedLiteFieldTags = new uint[] { 8 };
-    public static TestDeprecatedLite DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override TestDeprecatedLite DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override TestDeprecatedLite ThisMessage {
-      get { return this; }
-    }
-
-    public const int DeprecatedFieldFieldNumber = 1;
-    private bool hasDeprecatedField;
-    private int deprecatedField_;
-    [global::System.ObsoleteAttribute()]
-    public bool HasDeprecatedField {
-      get { return hasDeprecatedField; }
-    }
-    [global::System.ObsoleteAttribute()]
-    public int DeprecatedField {
-      get { return deprecatedField_; }
-    }
-
-    public override bool IsInitialized {
-      get {
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _testDeprecatedLiteFieldNames;
-      if (hasDeprecatedField) {
-        output.WriteInt32(1, field_names[0], DeprecatedField);
-      }
-    }
-
-    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 (hasDeprecatedField) {
-        size += pb::CodedOutputStream.ComputeInt32Size(1, DeprecatedField);
-      }
-      memoizedSerializedSize = size;
-      return size;
-    }
-    #region Lite runtime methods
-    public override int GetHashCode() {
-      int hash = GetType().GetHashCode();
-      if (hasDeprecatedField) {
-        hash ^= deprecatedField_.GetHashCode();
-      }
-      return hash;
-    }
-
-    public override bool Equals(object obj) {
-      TestDeprecatedLite other = obj as TestDeprecatedLite;
-      if (other == null) return false;
-      if (hasDeprecatedField != other.hasDeprecatedField || (hasDeprecatedField && !deprecatedField_.Equals(other.deprecatedField_))) return false;
-      return true;
-    }
-
-    public override void PrintTo(global::System.IO.TextWriter writer) {
-      PrintField("deprecated_field", hasDeprecatedField, deprecatedField_, writer);
-    }
-    #endregion
-
-    public static TestDeprecatedLite ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestDeprecatedLite ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestDeprecatedLite ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestDeprecatedLite ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestDeprecatedLite ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestDeprecatedLite ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static TestDeprecatedLite ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static TestDeprecatedLite ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static TestDeprecatedLite ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestDeprecatedLite ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private TestDeprecatedLite 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(TestDeprecatedLite prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilderLite<TestDeprecatedLite, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(TestDeprecatedLite cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private TestDeprecatedLite result;
-
-      private TestDeprecatedLite PrepareBuilder() {
-        if (resultIsReadOnly) {
-          TestDeprecatedLite original = result;
-          result = new TestDeprecatedLite();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override TestDeprecatedLite 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 TestDeprecatedLite DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.TestDeprecatedLite.DefaultInstance; }
-      }
-
-      public override TestDeprecatedLite BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessageLite other) {
-        if (other is TestDeprecatedLite) {
-          return MergeFrom((TestDeprecatedLite) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(TestDeprecatedLite other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.TestDeprecatedLite.DefaultInstance) return this;
-        PrepareBuilder();
-        if (other.HasDeprecatedField) {
-          DeprecatedField = other.DeprecatedField;
-        }
-        return this;
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input) {
-        return MergeFrom(input, pb::ExtensionRegistry.Empty);
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-        PrepareBuilder();
-        uint tag;
-        string field_name;
-        while (input.ReadTag(out tag, out field_name)) {
-          if(tag == 0 && field_name != null) {
-            int field_ordinal = global::System.Array.BinarySearch(_testDeprecatedLiteFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _testDeprecatedLiteFieldTags[field_ordinal];
-            else {
-              ParseUnknownField(input, extensionRegistry, tag, field_name);
-              continue;
-            }
-          }
-          switch (tag) {
-            case 0: {
-              throw pb::InvalidProtocolBufferException.InvalidTag();
-            }
-            default: {
-              if (pb::WireFormat.IsEndGroupTag(tag)) {
-                return this;
-              }
-              ParseUnknownField(input, extensionRegistry, tag, field_name);
-              break;
-            }
-            case 8: {
-              result.hasDeprecatedField = input.ReadInt32(ref result.deprecatedField_);
-              break;
-            }
-          }
-        }
-
-        return this;
-      }
-
-
-      [global::System.ObsoleteAttribute()]
-      public bool HasDeprecatedField {
-        get { return result.hasDeprecatedField; }
-      }
-      [global::System.ObsoleteAttribute()]
-      public int DeprecatedField {
-        get { return result.DeprecatedField; }
-        set { SetDeprecatedField(value); }
-      }
-      [global::System.ObsoleteAttribute()]
-      public Builder SetDeprecatedField(int value) {
-        PrepareBuilder();
-        result.hasDeprecatedField = true;
-        result.deprecatedField_ = value;
-        return this;
-      }
-      [global::System.ObsoleteAttribute()]
-      public Builder ClearDeprecatedField() {
-        PrepareBuilder();
-        result.hasDeprecatedField = false;
-        result.deprecatedField_ = 0;
-        return this;
-      }
-    }
-    static TestDeprecatedLite() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnittestLite.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class TestParsingMergeLite : pb::ExtendableMessageLite<TestParsingMergeLite, TestParsingMergeLite.Builder> {
-    private TestParsingMergeLite() { }
-    private static readonly TestParsingMergeLite defaultInstance = new TestParsingMergeLite().MakeReadOnly();
-    private static readonly string[] _testParsingMergeLiteFieldNames = new string[] { "optional_all_types", "optionalgroup", "repeated_all_types", "repeatedgroup", "required_all_types" };
-    private static readonly uint[] _testParsingMergeLiteFieldTags = new uint[] { 18, 83, 26, 163, 10 };
-    public static TestParsingMergeLite DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override TestParsingMergeLite DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override TestParsingMergeLite ThisMessage {
-      get { return this; }
-    }
-
-    public const int OptionalExtFieldNumber = 1000;
-    public static pb::GeneratedExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestParsingMergeLite, global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite> OptionalExt;
-    public const int RepeatedExtFieldNumber = 1001;
-    public static pb::GeneratedRepeatExtensionLite<global::Google.ProtocolBuffers.TestProtos.TestParsingMergeLite, global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite> RepeatedExt;
-    #region Nested types
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public static partial class Types {
-      [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-      public sealed partial class RepeatedFieldsGenerator : pb::GeneratedMessageLite<RepeatedFieldsGenerator, RepeatedFieldsGenerator.Builder> {
-        private RepeatedFieldsGenerator() { }
-        private static readonly RepeatedFieldsGenerator defaultInstance = new RepeatedFieldsGenerator().MakeReadOnly();
-        private static readonly string[] _repeatedFieldsGeneratorFieldNames = new string[] { "ext1", "ext2", "field1", "field2", "field3", "group1", "group2" };
-        private static readonly uint[] _repeatedFieldsGeneratorFieldTags = new uint[] { 8002, 8010, 10, 18, 26, 83, 163 };
-        public static RepeatedFieldsGenerator DefaultInstance {
-          get { return defaultInstance; }
-        }
-
-        public override RepeatedFieldsGenerator DefaultInstanceForType {
-          get { return DefaultInstance; }
-        }
-
-        protected override RepeatedFieldsGenerator ThisMessage {
-          get { return this; }
-        }
-
-        #region Nested types
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-        public static partial class Types {
-          [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-          public sealed partial class Group1 : pb::GeneratedMessageLite<Group1, Group1.Builder> {
-            private Group1() { }
-            private static readonly Group1 defaultInstance = new Group1().MakeReadOnly();
-            private static readonly string[] _group1FieldNames = new string[] { "field1" };
-            private static readonly uint[] _group1FieldTags = new uint[] { 90 };
-            public static Group1 DefaultInstance {
-              get { return defaultInstance; }
-            }
-
-            public override Group1 DefaultInstanceForType {
-              get { return DefaultInstance; }
-            }
-
-            protected override Group1 ThisMessage {
-              get { return this; }
-            }
-
-            public const int Field1FieldNumber = 11;
-            private bool hasField1;
-            private global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite field1_;
-            public bool HasField1 {
-              get { return hasField1; }
-            }
-            public global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite Field1 {
-              get { return field1_ ?? global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.DefaultInstance; }
-            }
-
-            public override bool IsInitialized {
-              get {
-                return true;
-              }
-            }
-
-            public override void WriteTo(pb::ICodedOutputStream output) {
-              CalcSerializedSize();
-              string[] field_names = _group1FieldNames;
-              if (hasField1) {
-                output.WriteMessage(11, field_names[0], Field1);
-              }
-            }
-
-            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 (hasField1) {
-                size += pb::CodedOutputStream.ComputeMessageSize(11, Field1);
-              }
-              memoizedSerializedSize = size;
-              return size;
-            }
-            #region Lite runtime methods
-            public override int GetHashCode() {
-              int hash = GetType().GetHashCode();
-              if (hasField1) hash ^= field1_.GetHashCode();
-              return hash;
-            }
-
-            public override bool Equals(object obj) {
-              Group1 other = obj as Group1;
-              if (other == null) return false;
-              if (hasField1 != other.hasField1 || (hasField1 && !field1_.Equals(other.field1_))) return false;
-              return true;
-            }
-
-            public override void PrintTo(global::System.IO.TextWriter writer) {
-              PrintField("field1", hasField1, field1_, writer);
-            }
-            #endregion
-
-            public static Group1 ParseFrom(pb::ByteString data) {
-              return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-            }
-            public static Group1 ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-              return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-            }
-            public static Group1 ParseFrom(byte[] data) {
-              return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-            }
-            public static Group1 ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-              return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-            }
-            public static Group1 ParseFrom(global::System.IO.Stream input) {
-              return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-            }
-            public static Group1 ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-              return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-            }
-            public static Group1 ParseDelimitedFrom(global::System.IO.Stream input) {
-              return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-            }
-            public static Group1 ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-              return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-            }
-            public static Group1 ParseFrom(pb::ICodedInputStream input) {
-              return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-            }
-            public static Group1 ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-              return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-            }
-            private Group1 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(Group1 prototype) {
-              return new Builder(prototype);
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-            public sealed partial class Builder : pb::GeneratedBuilderLite<Group1, Builder> {
-              protected override Builder ThisBuilder {
-                get { return this; }
-              }
-              public Builder() {
-                result = DefaultInstance;
-                resultIsReadOnly = true;
-              }
-              internal Builder(Group1 cloneFrom) {
-                result = cloneFrom;
-                resultIsReadOnly = true;
-              }
-
-              private bool resultIsReadOnly;
-              private Group1 result;
-
-              private Group1 PrepareBuilder() {
-                if (resultIsReadOnly) {
-                  Group1 original = result;
-                  result = new Group1();
-                  resultIsReadOnly = false;
-                  MergeFrom(original);
-                }
-                return result;
-              }
-
-              public override bool IsInitialized {
-                get { return result.IsInitialized; }
-              }
-
-              protected override Group1 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 Group1 DefaultInstanceForType {
-                get { return global::Google.ProtocolBuffers.TestProtos.TestParsingMergeLite.Types.RepeatedFieldsGenerator.Types.Group1.DefaultInstance; }
-              }
-
-              public override Group1 BuildPartial() {
-                if (resultIsReadOnly) {
-                  return result;
-                }
-                resultIsReadOnly = true;
-                return result.MakeReadOnly();
-              }
-
-              public override Builder MergeFrom(pb::IMessageLite other) {
-                if (other is Group1) {
-                  return MergeFrom((Group1) other);
-                } else {
-                  base.MergeFrom(other);
-                  return this;
-                }
-              }
-
-              public override Builder MergeFrom(Group1 other) {
-                if (other == global::Google.ProtocolBuffers.TestProtos.TestParsingMergeLite.Types.RepeatedFieldsGenerator.Types.Group1.DefaultInstance) return this;
-                PrepareBuilder();
-                if (other.HasField1) {
-                  MergeField1(other.Field1);
-                }
-                return this;
-              }
-
-              public override Builder MergeFrom(pb::ICodedInputStream input) {
-                return MergeFrom(input, pb::ExtensionRegistry.Empty);
-              }
-
-              public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-                PrepareBuilder();
-                uint tag;
-                string field_name;
-                while (input.ReadTag(out tag, out field_name)) {
-                  if(tag == 0 && field_name != null) {
-                    int field_ordinal = global::System.Array.BinarySearch(_group1FieldNames, field_name, global::System.StringComparer.Ordinal);
-                    if(field_ordinal >= 0)
-                      tag = _group1FieldTags[field_ordinal];
-                    else {
-                      ParseUnknownField(input, extensionRegistry, tag, field_name);
-                      continue;
-                    }
-                  }
-                  switch (tag) {
-                    case 0: {
-                      throw pb::InvalidProtocolBufferException.InvalidTag();
-                    }
-                    default: {
-                      if (pb::WireFormat.IsEndGroupTag(tag)) {
-                        return this;
-                      }
-                      ParseUnknownField(input, extensionRegistry, tag, field_name);
-                      break;
-                    }
-                    case 90: {
-                      global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Builder subBuilder = global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.CreateBuilder();
-                      if (result.hasField1) {
-                        subBuilder.MergeFrom(Field1);
-                      }
-                      input.ReadMessage(subBuilder, extensionRegistry);
-                      Field1 = subBuilder.BuildPartial();
-                      break;
-                    }
-                  }
-                }
-
-                return this;
-              }
-
-
-              public bool HasField1 {
-               get { return result.hasField1; }
-              }
-              public global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite Field1 {
-                get { return result.Field1; }
-                set { SetField1(value); }
-              }
-              public Builder SetField1(global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite value) {
-                pb::ThrowHelper.ThrowIfNull(value, "value");
-                PrepareBuilder();
-                result.hasField1 = true;
-                result.field1_ = value;
-                return this;
-              }
-              public Builder SetField1(global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Builder builderForValue) {
-                pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-                PrepareBuilder();
-                result.hasField1 = true;
-                result.field1_ = builderForValue.Build();
-                return this;
-              }
-              public Builder MergeField1(global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite value) {
-                pb::ThrowHelper.ThrowIfNull(value, "value");
-                PrepareBuilder();
-                if (result.hasField1 &&
-                    result.field1_ != global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.DefaultInstance) {
-                    result.field1_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.CreateBuilder(result.field1_).MergeFrom(value).BuildPartial();
-                } else {
-                  result.field1_ = value;
-                }
-                result.hasField1 = true;
-                return this;
-              }
-              public Builder ClearField1() {
-                PrepareBuilder();
-                result.hasField1 = false;
-                result.field1_ = null;
-                return this;
-              }
-            }
-            static Group1() {
-              object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnittestLite.Descriptor, null);
-            }
-          }
-
-          [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-          public sealed partial class Group2 : pb::GeneratedMessageLite<Group2, Group2.Builder> {
-            private Group2() { }
-            private static readonly Group2 defaultInstance = new Group2().MakeReadOnly();
-            private static readonly string[] _group2FieldNames = new string[] { "field1" };
-            private static readonly uint[] _group2FieldTags = new uint[] { 170 };
-            public static Group2 DefaultInstance {
-              get { return defaultInstance; }
-            }
-
-            public override Group2 DefaultInstanceForType {
-              get { return DefaultInstance; }
-            }
-
-            protected override Group2 ThisMessage {
-              get { return this; }
-            }
-
-            public const int Field1FieldNumber = 21;
-            private bool hasField1;
-            private global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite field1_;
-            public bool HasField1 {
-              get { return hasField1; }
-            }
-            public global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite Field1 {
-              get { return field1_ ?? global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.DefaultInstance; }
-            }
-
-            public override bool IsInitialized {
-              get {
-                return true;
-              }
-            }
-
-            public override void WriteTo(pb::ICodedOutputStream output) {
-              CalcSerializedSize();
-              string[] field_names = _group2FieldNames;
-              if (hasField1) {
-                output.WriteMessage(21, field_names[0], Field1);
-              }
-            }
-
-            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 (hasField1) {
-                size += pb::CodedOutputStream.ComputeMessageSize(21, Field1);
-              }
-              memoizedSerializedSize = size;
-              return size;
-            }
-            #region Lite runtime methods
-            public override int GetHashCode() {
-              int hash = GetType().GetHashCode();
-              if (hasField1) hash ^= field1_.GetHashCode();
-              return hash;
-            }
-
-            public override bool Equals(object obj) {
-              Group2 other = obj as Group2;
-              if (other == null) return false;
-              if (hasField1 != other.hasField1 || (hasField1 && !field1_.Equals(other.field1_))) return false;
-              return true;
-            }
-
-            public override void PrintTo(global::System.IO.TextWriter writer) {
-              PrintField("field1", hasField1, field1_, writer);
-            }
-            #endregion
-
-            public static Group2 ParseFrom(pb::ByteString data) {
-              return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-            }
-            public static Group2 ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-              return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-            }
-            public static Group2 ParseFrom(byte[] data) {
-              return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-            }
-            public static Group2 ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-              return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-            }
-            public static Group2 ParseFrom(global::System.IO.Stream input) {
-              return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-            }
-            public static Group2 ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-              return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-            }
-            public static Group2 ParseDelimitedFrom(global::System.IO.Stream input) {
-              return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-            }
-            public static Group2 ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-              return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-            }
-            public static Group2 ParseFrom(pb::ICodedInputStream input) {
-              return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-            }
-            public static Group2 ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-              return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-            }
-            private Group2 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(Group2 prototype) {
-              return new Builder(prototype);
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-            public sealed partial class Builder : pb::GeneratedBuilderLite<Group2, Builder> {
-              protected override Builder ThisBuilder {
-                get { return this; }
-              }
-              public Builder() {
-                result = DefaultInstance;
-                resultIsReadOnly = true;
-              }
-              internal Builder(Group2 cloneFrom) {
-                result = cloneFrom;
-                resultIsReadOnly = true;
-              }
-
-              private bool resultIsReadOnly;
-              private Group2 result;
-
-              private Group2 PrepareBuilder() {
-                if (resultIsReadOnly) {
-                  Group2 original = result;
-                  result = new Group2();
-                  resultIsReadOnly = false;
-                  MergeFrom(original);
-                }
-                return result;
-              }
-
-              public override bool IsInitialized {
-                get { return result.IsInitialized; }
-              }
-
-              protected override Group2 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 Group2 DefaultInstanceForType {
-                get { return global::Google.ProtocolBuffers.TestProtos.TestParsingMergeLite.Types.RepeatedFieldsGenerator.Types.Group2.DefaultInstance; }
-              }
-
-              public override Group2 BuildPartial() {
-                if (resultIsReadOnly) {
-                  return result;
-                }
-                resultIsReadOnly = true;
-                return result.MakeReadOnly();
-              }
-
-              public override Builder MergeFrom(pb::IMessageLite other) {
-                if (other is Group2) {
-                  return MergeFrom((Group2) other);
-                } else {
-                  base.MergeFrom(other);
-                  return this;
-                }
-              }
-
-              public override Builder MergeFrom(Group2 other) {
-                if (other == global::Google.ProtocolBuffers.TestProtos.TestParsingMergeLite.Types.RepeatedFieldsGenerator.Types.Group2.DefaultInstance) return this;
-                PrepareBuilder();
-                if (other.HasField1) {
-                  MergeField1(other.Field1);
-                }
-                return this;
-              }
-
-              public override Builder MergeFrom(pb::ICodedInputStream input) {
-                return MergeFrom(input, pb::ExtensionRegistry.Empty);
-              }
-
-              public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-                PrepareBuilder();
-                uint tag;
-                string field_name;
-                while (input.ReadTag(out tag, out field_name)) {
-                  if(tag == 0 && field_name != null) {
-                    int field_ordinal = global::System.Array.BinarySearch(_group2FieldNames, field_name, global::System.StringComparer.Ordinal);
-                    if(field_ordinal >= 0)
-                      tag = _group2FieldTags[field_ordinal];
-                    else {
-                      ParseUnknownField(input, extensionRegistry, tag, field_name);
-                      continue;
-                    }
-                  }
-                  switch (tag) {
-                    case 0: {
-                      throw pb::InvalidProtocolBufferException.InvalidTag();
-                    }
-                    default: {
-                      if (pb::WireFormat.IsEndGroupTag(tag)) {
-                        return this;
-                      }
-                      ParseUnknownField(input, extensionRegistry, tag, field_name);
-                      break;
-                    }
-                    case 170: {
-                      global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Builder subBuilder = global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.CreateBuilder();
-                      if (result.hasField1) {
-                        subBuilder.MergeFrom(Field1);
-                      }
-                      input.ReadMessage(subBuilder, extensionRegistry);
-                      Field1 = subBuilder.BuildPartial();
-                      break;
-                    }
-                  }
-                }
-
-                return this;
-              }
-
-
-              public bool HasField1 {
-               get { return result.hasField1; }
-              }
-              public global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite Field1 {
-                get { return result.Field1; }
-                set { SetField1(value); }
-              }
-              public Builder SetField1(global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite value) {
-                pb::ThrowHelper.ThrowIfNull(value, "value");
-                PrepareBuilder();
-                result.hasField1 = true;
-                result.field1_ = value;
-                return this;
-              }
-              public Builder SetField1(global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Builder builderForValue) {
-                pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-                PrepareBuilder();
-                result.hasField1 = true;
-                result.field1_ = builderForValue.Build();
-                return this;
-              }
-              public Builder MergeField1(global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite value) {
-                pb::ThrowHelper.ThrowIfNull(value, "value");
-                PrepareBuilder();
-                if (result.hasField1 &&
-                    result.field1_ != global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.DefaultInstance) {
-                    result.field1_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.CreateBuilder(result.field1_).MergeFrom(value).BuildPartial();
-                } else {
-                  result.field1_ = value;
-                }
-                result.hasField1 = true;
-                return this;
-              }
-              public Builder ClearField1() {
-                PrepareBuilder();
-                result.hasField1 = false;
-                result.field1_ = null;
-                return this;
-              }
-            }
-            static Group2() {
-              object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnittestLite.Descriptor, null);
-            }
-          }
-
-        }
-        #endregion
-
-        public const int Field1FieldNumber = 1;
-        private pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite> field1_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite>();
-        public scg::IList<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite> Field1List {
-          get { return field1_; }
-        }
-        public int Field1Count {
-          get { return field1_.Count; }
-        }
-        public global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite GetField1(int index) {
-          return field1_[index];
-        }
-
-        public const int Field2FieldNumber = 2;
-        private pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite> field2_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite>();
-        public scg::IList<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite> Field2List {
-          get { return field2_; }
-        }
-        public int Field2Count {
-          get { return field2_.Count; }
-        }
-        public global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite GetField2(int index) {
-          return field2_[index];
-        }
-
-        public const int Field3FieldNumber = 3;
-        private pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite> field3_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite>();
-        public scg::IList<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite> Field3List {
-          get { return field3_; }
-        }
-        public int Field3Count {
-          get { return field3_.Count; }
-        }
-        public global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite GetField3(int index) {
-          return field3_[index];
-        }
-
-        public const int Group1FieldNumber = 10;
-        private pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.TestParsingMergeLite.Types.RepeatedFieldsGenerator.Types.Group1> group1_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.TestParsingMergeLite.Types.RepeatedFieldsGenerator.Types.Group1>();
-        public scg::IList<global::Google.ProtocolBuffers.TestProtos.TestParsingMergeLite.Types.RepeatedFieldsGenerator.Types.Group1> Group1List {
-          get { return group1_; }
-        }
-        public int Group1Count {
-          get { return group1_.Count; }
-        }
-        public global::Google.ProtocolBuffers.TestProtos.TestParsingMergeLite.Types.RepeatedFieldsGenerator.Types.Group1 GetGroup1(int index) {
-          return group1_[index];
-        }
-
-        public const int Group2FieldNumber = 20;
-        private pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.TestParsingMergeLite.Types.RepeatedFieldsGenerator.Types.Group2> group2_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.TestParsingMergeLite.Types.RepeatedFieldsGenerator.Types.Group2>();
-        public scg::IList<global::Google.ProtocolBuffers.TestProtos.TestParsingMergeLite.Types.RepeatedFieldsGenerator.Types.Group2> Group2List {
-          get { return group2_; }
-        }
-        public int Group2Count {
-          get { return group2_.Count; }
-        }
-        public global::Google.ProtocolBuffers.TestProtos.TestParsingMergeLite.Types.RepeatedFieldsGenerator.Types.Group2 GetGroup2(int index) {
-          return group2_[index];
-        }
-
-        public const int Ext1FieldNumber = 1000;
-        private pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite> ext1_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite>();
-        public scg::IList<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite> Ext1List {
-          get { return ext1_; }
-        }
-        public int Ext1Count {
-          get { return ext1_.Count; }
-        }
-        public global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite GetExt1(int index) {
-          return ext1_[index];
-        }
-
-        public const int Ext2FieldNumber = 1001;
-        private pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite> ext2_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite>();
-        public scg::IList<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite> Ext2List {
-          get { return ext2_; }
-        }
-        public int Ext2Count {
-          get { return ext2_.Count; }
-        }
-        public global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite GetExt2(int index) {
-          return ext2_[index];
-        }
-
-        public override bool IsInitialized {
-          get {
-            return true;
-          }
-        }
-
-        public override void WriteTo(pb::ICodedOutputStream output) {
-          CalcSerializedSize();
-          string[] field_names = _repeatedFieldsGeneratorFieldNames;
-          if (field1_.Count > 0) {
-            output.WriteMessageArray(1, field_names[2], field1_);
-          }
-          if (field2_.Count > 0) {
-            output.WriteMessageArray(2, field_names[3], field2_);
-          }
-          if (field3_.Count > 0) {
-            output.WriteMessageArray(3, field_names[4], field3_);
-          }
-          if (group1_.Count > 0) {
-            output.WriteGroupArray(10, field_names[5], group1_);
-          }
-          if (group2_.Count > 0) {
-            output.WriteGroupArray(20, field_names[6], group2_);
-          }
-          if (ext1_.Count > 0) {
-            output.WriteMessageArray(1000, field_names[0], ext1_);
-          }
-          if (ext2_.Count > 0) {
-            output.WriteMessageArray(1001, field_names[1], ext2_);
-          }
-        }
-
-        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;
-          foreach (global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite element in Field1List) {
-            size += pb::CodedOutputStream.ComputeMessageSize(1, element);
-          }
-          foreach (global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite element in Field2List) {
-            size += pb::CodedOutputStream.ComputeMessageSize(2, element);
-          }
-          foreach (global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite element in Field3List) {
-            size += pb::CodedOutputStream.ComputeMessageSize(3, element);
-          }
-          foreach (global::Google.ProtocolBuffers.TestProtos.TestParsingMergeLite.Types.RepeatedFieldsGenerator.Types.Group1 element in Group1List) {
-            size += pb::CodedOutputStream.ComputeGroupSize(10, element);
-          }
-          foreach (global::Google.ProtocolBuffers.TestProtos.TestParsingMergeLite.Types.RepeatedFieldsGenerator.Types.Group2 element in Group2List) {
-            size += pb::CodedOutputStream.ComputeGroupSize(20, element);
-          }
-          foreach (global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite element in Ext1List) {
-            size += pb::CodedOutputStream.ComputeMessageSize(1000, element);
-          }
-          foreach (global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite element in Ext2List) {
-            size += pb::CodedOutputStream.ComputeMessageSize(1001, element);
-          }
-          memoizedSerializedSize = size;
-          return size;
-        }
-        #region Lite runtime methods
-        public override int GetHashCode() {
-          int hash = GetType().GetHashCode();
-          foreach(global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite i in field1_)
-            hash ^= i.GetHashCode();
-          foreach(global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite i in field2_)
-            hash ^= i.GetHashCode();
-          foreach(global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite i in field3_)
-            hash ^= i.GetHashCode();
-          foreach(global::Google.ProtocolBuffers.TestProtos.TestParsingMergeLite.Types.RepeatedFieldsGenerator.Types.Group1 i in group1_)
-            hash ^= i.GetHashCode();
-          foreach(global::Google.ProtocolBuffers.TestProtos.TestParsingMergeLite.Types.RepeatedFieldsGenerator.Types.Group2 i in group2_)
-            hash ^= i.GetHashCode();
-          foreach(global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite i in ext1_)
-            hash ^= i.GetHashCode();
-          foreach(global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite i in ext2_)
-            hash ^= i.GetHashCode();
-          return hash;
-        }
-
-        public override bool Equals(object obj) {
-          RepeatedFieldsGenerator other = obj as RepeatedFieldsGenerator;
-          if (other == null) return false;
-          if(field1_.Count != other.field1_.Count) return false;
-          for(int ix=0; ix < field1_.Count; ix++)
-            if(!field1_[ix].Equals(other.field1_[ix])) return false;
-          if(field2_.Count != other.field2_.Count) return false;
-          for(int ix=0; ix < field2_.Count; ix++)
-            if(!field2_[ix].Equals(other.field2_[ix])) return false;
-          if(field3_.Count != other.field3_.Count) return false;
-          for(int ix=0; ix < field3_.Count; ix++)
-            if(!field3_[ix].Equals(other.field3_[ix])) return false;
-          if(group1_.Count != other.group1_.Count) return false;
-          for(int ix=0; ix < group1_.Count; ix++)
-            if(!group1_[ix].Equals(other.group1_[ix])) return false;
-          if(group2_.Count != other.group2_.Count) return false;
-          for(int ix=0; ix < group2_.Count; ix++)
-            if(!group2_[ix].Equals(other.group2_[ix])) return false;
-          if(ext1_.Count != other.ext1_.Count) return false;
-          for(int ix=0; ix < ext1_.Count; ix++)
-            if(!ext1_[ix].Equals(other.ext1_[ix])) return false;
-          if(ext2_.Count != other.ext2_.Count) return false;
-          for(int ix=0; ix < ext2_.Count; ix++)
-            if(!ext2_[ix].Equals(other.ext2_[ix])) return false;
-          return true;
-        }
-
-        public override void PrintTo(global::System.IO.TextWriter writer) {
-          PrintField("field1", field1_, writer);
-          PrintField("field2", field2_, writer);
-          PrintField("field3", field3_, writer);
-          PrintField("Group1", group1_, writer);
-          PrintField("Group2", group2_, writer);
-          PrintField("ext1", ext1_, writer);
-          PrintField("ext2", ext2_, writer);
-        }
-        #endregion
-
-        public static RepeatedFieldsGenerator ParseFrom(pb::ByteString data) {
-          return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-        }
-        public static RepeatedFieldsGenerator ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-        }
-        public static RepeatedFieldsGenerator ParseFrom(byte[] data) {
-          return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-        }
-        public static RepeatedFieldsGenerator ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-        }
-        public static RepeatedFieldsGenerator ParseFrom(global::System.IO.Stream input) {
-          return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-        }
-        public static RepeatedFieldsGenerator ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-        }
-        public static RepeatedFieldsGenerator ParseDelimitedFrom(global::System.IO.Stream input) {
-          return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-        }
-        public static RepeatedFieldsGenerator ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-          return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-        }
-        public static RepeatedFieldsGenerator ParseFrom(pb::ICodedInputStream input) {
-          return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-        }
-        public static RepeatedFieldsGenerator ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-        }
-        private RepeatedFieldsGenerator MakeReadOnly() {
-          field1_.MakeReadOnly();
-          field2_.MakeReadOnly();
-          field3_.MakeReadOnly();
-          group1_.MakeReadOnly();
-          group2_.MakeReadOnly();
-          ext1_.MakeReadOnly();
-          ext2_.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(RepeatedFieldsGenerator prototype) {
-          return new Builder(prototype);
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-        public sealed partial class Builder : pb::GeneratedBuilderLite<RepeatedFieldsGenerator, Builder> {
-          protected override Builder ThisBuilder {
-            get { return this; }
-          }
-          public Builder() {
-            result = DefaultInstance;
-            resultIsReadOnly = true;
-          }
-          internal Builder(RepeatedFieldsGenerator cloneFrom) {
-            result = cloneFrom;
-            resultIsReadOnly = true;
-          }
-
-          private bool resultIsReadOnly;
-          private RepeatedFieldsGenerator result;
-
-          private RepeatedFieldsGenerator PrepareBuilder() {
-            if (resultIsReadOnly) {
-              RepeatedFieldsGenerator original = result;
-              result = new RepeatedFieldsGenerator();
-              resultIsReadOnly = false;
-              MergeFrom(original);
-            }
-            return result;
-          }
-
-          public override bool IsInitialized {
-            get { return result.IsInitialized; }
-          }
-
-          protected override RepeatedFieldsGenerator 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 RepeatedFieldsGenerator DefaultInstanceForType {
-            get { return global::Google.ProtocolBuffers.TestProtos.TestParsingMergeLite.Types.RepeatedFieldsGenerator.DefaultInstance; }
-          }
-
-          public override RepeatedFieldsGenerator BuildPartial() {
-            if (resultIsReadOnly) {
-              return result;
-            }
-            resultIsReadOnly = true;
-            return result.MakeReadOnly();
-          }
-
-          public override Builder MergeFrom(pb::IMessageLite other) {
-            if (other is RepeatedFieldsGenerator) {
-              return MergeFrom((RepeatedFieldsGenerator) other);
-            } else {
-              base.MergeFrom(other);
-              return this;
-            }
-          }
-
-          public override Builder MergeFrom(RepeatedFieldsGenerator other) {
-            if (other == global::Google.ProtocolBuffers.TestProtos.TestParsingMergeLite.Types.RepeatedFieldsGenerator.DefaultInstance) return this;
-            PrepareBuilder();
-            if (other.field1_.Count != 0) {
-              result.field1_.Add(other.field1_);
-            }
-            if (other.field2_.Count != 0) {
-              result.field2_.Add(other.field2_);
-            }
-            if (other.field3_.Count != 0) {
-              result.field3_.Add(other.field3_);
-            }
-            if (other.group1_.Count != 0) {
-              result.group1_.Add(other.group1_);
-            }
-            if (other.group2_.Count != 0) {
-              result.group2_.Add(other.group2_);
-            }
-            if (other.ext1_.Count != 0) {
-              result.ext1_.Add(other.ext1_);
-            }
-            if (other.ext2_.Count != 0) {
-              result.ext2_.Add(other.ext2_);
-            }
-            return this;
-          }
-
-          public override Builder MergeFrom(pb::ICodedInputStream input) {
-            return MergeFrom(input, pb::ExtensionRegistry.Empty);
-          }
-
-          public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-            PrepareBuilder();
-            uint tag;
-            string field_name;
-            while (input.ReadTag(out tag, out field_name)) {
-              if(tag == 0 && field_name != null) {
-                int field_ordinal = global::System.Array.BinarySearch(_repeatedFieldsGeneratorFieldNames, field_name, global::System.StringComparer.Ordinal);
-                if(field_ordinal >= 0)
-                  tag = _repeatedFieldsGeneratorFieldTags[field_ordinal];
-                else {
-                  ParseUnknownField(input, extensionRegistry, tag, field_name);
-                  continue;
-                }
-              }
-              switch (tag) {
-                case 0: {
-                  throw pb::InvalidProtocolBufferException.InvalidTag();
-                }
-                default: {
-                  if (pb::WireFormat.IsEndGroupTag(tag)) {
-                    return this;
-                  }
-                  ParseUnknownField(input, extensionRegistry, tag, field_name);
-                  break;
-                }
-                case 10: {
-                  input.ReadMessageArray(tag, field_name, result.field1_, global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.DefaultInstance, extensionRegistry);
-                  break;
-                }
-                case 18: {
-                  input.ReadMessageArray(tag, field_name, result.field2_, global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.DefaultInstance, extensionRegistry);
-                  break;
-                }
-                case 26: {
-                  input.ReadMessageArray(tag, field_name, result.field3_, global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.DefaultInstance, extensionRegistry);
-                  break;
-                }
-                case 83: {
-                  input.ReadGroupArray(tag, field_name, result.group1_, global::Google.ProtocolBuffers.TestProtos.TestParsingMergeLite.Types.RepeatedFieldsGenerator.Types.Group1.DefaultInstance, extensionRegistry);
-                  break;
-                }
-                case 163: {
-                  input.ReadGroupArray(tag, field_name, result.group2_, global::Google.ProtocolBuffers.TestProtos.TestParsingMergeLite.Types.RepeatedFieldsGenerator.Types.Group2.DefaultInstance, extensionRegistry);
-                  break;
-                }
-                case 8002: {
-                  input.ReadMessageArray(tag, field_name, result.ext1_, global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.DefaultInstance, extensionRegistry);
-                  break;
-                }
-                case 8010: {
-                  input.ReadMessageArray(tag, field_name, result.ext2_, global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.DefaultInstance, extensionRegistry);
-                  break;
-                }
-              }
-            }
-
-            return this;
-          }
-
-
-          public pbc::IPopsicleList<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite> Field1List {
-            get { return PrepareBuilder().field1_; }
-          }
-          public int Field1Count {
-            get { return result.Field1Count; }
-          }
-          public global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite GetField1(int index) {
-            return result.GetField1(index);
-          }
-          public Builder SetField1(int index, global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite value) {
-            pb::ThrowHelper.ThrowIfNull(value, "value");
-            PrepareBuilder();
-            result.field1_[index] = value;
-            return this;
-          }
-          public Builder SetField1(int index, global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Builder builderForValue) {
-            pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-            PrepareBuilder();
-            result.field1_[index] = builderForValue.Build();
-            return this;
-          }
-          public Builder AddField1(global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite value) {
-            pb::ThrowHelper.ThrowIfNull(value, "value");
-            PrepareBuilder();
-            result.field1_.Add(value);
-            return this;
-          }
-          public Builder AddField1(global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Builder builderForValue) {
-            pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-            PrepareBuilder();
-            result.field1_.Add(builderForValue.Build());
-            return this;
-          }
-          public Builder AddRangeField1(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite> values) {
-            PrepareBuilder();
-            result.field1_.Add(values);
-            return this;
-          }
-          public Builder ClearField1() {
-            PrepareBuilder();
-            result.field1_.Clear();
-            return this;
-          }
-
-          public pbc::IPopsicleList<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite> Field2List {
-            get { return PrepareBuilder().field2_; }
-          }
-          public int Field2Count {
-            get { return result.Field2Count; }
-          }
-          public global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite GetField2(int index) {
-            return result.GetField2(index);
-          }
-          public Builder SetField2(int index, global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite value) {
-            pb::ThrowHelper.ThrowIfNull(value, "value");
-            PrepareBuilder();
-            result.field2_[index] = value;
-            return this;
-          }
-          public Builder SetField2(int index, global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Builder builderForValue) {
-            pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-            PrepareBuilder();
-            result.field2_[index] = builderForValue.Build();
-            return this;
-          }
-          public Builder AddField2(global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite value) {
-            pb::ThrowHelper.ThrowIfNull(value, "value");
-            PrepareBuilder();
-            result.field2_.Add(value);
-            return this;
-          }
-          public Builder AddField2(global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Builder builderForValue) {
-            pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-            PrepareBuilder();
-            result.field2_.Add(builderForValue.Build());
-            return this;
-          }
-          public Builder AddRangeField2(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite> values) {
-            PrepareBuilder();
-            result.field2_.Add(values);
-            return this;
-          }
-          public Builder ClearField2() {
-            PrepareBuilder();
-            result.field2_.Clear();
-            return this;
-          }
-
-          public pbc::IPopsicleList<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite> Field3List {
-            get { return PrepareBuilder().field3_; }
-          }
-          public int Field3Count {
-            get { return result.Field3Count; }
-          }
-          public global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite GetField3(int index) {
-            return result.GetField3(index);
-          }
-          public Builder SetField3(int index, global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite value) {
-            pb::ThrowHelper.ThrowIfNull(value, "value");
-            PrepareBuilder();
-            result.field3_[index] = value;
-            return this;
-          }
-          public Builder SetField3(int index, global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Builder builderForValue) {
-            pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-            PrepareBuilder();
-            result.field3_[index] = builderForValue.Build();
-            return this;
-          }
-          public Builder AddField3(global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite value) {
-            pb::ThrowHelper.ThrowIfNull(value, "value");
-            PrepareBuilder();
-            result.field3_.Add(value);
-            return this;
-          }
-          public Builder AddField3(global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Builder builderForValue) {
-            pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-            PrepareBuilder();
-            result.field3_.Add(builderForValue.Build());
-            return this;
-          }
-          public Builder AddRangeField3(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite> values) {
-            PrepareBuilder();
-            result.field3_.Add(values);
-            return this;
-          }
-          public Builder ClearField3() {
-            PrepareBuilder();
-            result.field3_.Clear();
-            return this;
-          }
-
-          public pbc::IPopsicleList<global::Google.ProtocolBuffers.TestProtos.TestParsingMergeLite.Types.RepeatedFieldsGenerator.Types.Group1> Group1List {
-            get { return PrepareBuilder().group1_; }
-          }
-          public int Group1Count {
-            get { return result.Group1Count; }
-          }
-          public global::Google.ProtocolBuffers.TestProtos.TestParsingMergeLite.Types.RepeatedFieldsGenerator.Types.Group1 GetGroup1(int index) {
-            return result.GetGroup1(index);
-          }
-          public Builder SetGroup1(int index, global::Google.ProtocolBuffers.TestProtos.TestParsingMergeLite.Types.RepeatedFieldsGenerator.Types.Group1 value) {
-            pb::ThrowHelper.ThrowIfNull(value, "value");
-            PrepareBuilder();
-            result.group1_[index] = value;
-            return this;
-          }
-          public Builder SetGroup1(int index, global::Google.ProtocolBuffers.TestProtos.TestParsingMergeLite.Types.RepeatedFieldsGenerator.Types.Group1.Builder builderForValue) {
-            pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-            PrepareBuilder();
-            result.group1_[index] = builderForValue.Build();
-            return this;
-          }
-          public Builder AddGroup1(global::Google.ProtocolBuffers.TestProtos.TestParsingMergeLite.Types.RepeatedFieldsGenerator.Types.Group1 value) {
-            pb::ThrowHelper.ThrowIfNull(value, "value");
-            PrepareBuilder();
-            result.group1_.Add(value);
-            return this;
-          }
-          public Builder AddGroup1(global::Google.ProtocolBuffers.TestProtos.TestParsingMergeLite.Types.RepeatedFieldsGenerator.Types.Group1.Builder builderForValue) {
-            pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-            PrepareBuilder();
-            result.group1_.Add(builderForValue.Build());
-            return this;
-          }
-          public Builder AddRangeGroup1(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.TestParsingMergeLite.Types.RepeatedFieldsGenerator.Types.Group1> values) {
-            PrepareBuilder();
-            result.group1_.Add(values);
-            return this;
-          }
-          public Builder ClearGroup1() {
-            PrepareBuilder();
-            result.group1_.Clear();
-            return this;
-          }
-
-          public pbc::IPopsicleList<global::Google.ProtocolBuffers.TestProtos.TestParsingMergeLite.Types.RepeatedFieldsGenerator.Types.Group2> Group2List {
-            get { return PrepareBuilder().group2_; }
-          }
-          public int Group2Count {
-            get { return result.Group2Count; }
-          }
-          public global::Google.ProtocolBuffers.TestProtos.TestParsingMergeLite.Types.RepeatedFieldsGenerator.Types.Group2 GetGroup2(int index) {
-            return result.GetGroup2(index);
-          }
-          public Builder SetGroup2(int index, global::Google.ProtocolBuffers.TestProtos.TestParsingMergeLite.Types.RepeatedFieldsGenerator.Types.Group2 value) {
-            pb::ThrowHelper.ThrowIfNull(value, "value");
-            PrepareBuilder();
-            result.group2_[index] = value;
-            return this;
-          }
-          public Builder SetGroup2(int index, global::Google.ProtocolBuffers.TestProtos.TestParsingMergeLite.Types.RepeatedFieldsGenerator.Types.Group2.Builder builderForValue) {
-            pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-            PrepareBuilder();
-            result.group2_[index] = builderForValue.Build();
-            return this;
-          }
-          public Builder AddGroup2(global::Google.ProtocolBuffers.TestProtos.TestParsingMergeLite.Types.RepeatedFieldsGenerator.Types.Group2 value) {
-            pb::ThrowHelper.ThrowIfNull(value, "value");
-            PrepareBuilder();
-            result.group2_.Add(value);
-            return this;
-          }
-          public Builder AddGroup2(global::Google.ProtocolBuffers.TestProtos.TestParsingMergeLite.Types.RepeatedFieldsGenerator.Types.Group2.Builder builderForValue) {
-            pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-            PrepareBuilder();
-            result.group2_.Add(builderForValue.Build());
-            return this;
-          }
-          public Builder AddRangeGroup2(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.TestParsingMergeLite.Types.RepeatedFieldsGenerator.Types.Group2> values) {
-            PrepareBuilder();
-            result.group2_.Add(values);
-            return this;
-          }
-          public Builder ClearGroup2() {
-            PrepareBuilder();
-            result.group2_.Clear();
-            return this;
-          }
-
-          public pbc::IPopsicleList<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite> Ext1List {
-            get { return PrepareBuilder().ext1_; }
-          }
-          public int Ext1Count {
-            get { return result.Ext1Count; }
-          }
-          public global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite GetExt1(int index) {
-            return result.GetExt1(index);
-          }
-          public Builder SetExt1(int index, global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite value) {
-            pb::ThrowHelper.ThrowIfNull(value, "value");
-            PrepareBuilder();
-            result.ext1_[index] = value;
-            return this;
-          }
-          public Builder SetExt1(int index, global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Builder builderForValue) {
-            pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-            PrepareBuilder();
-            result.ext1_[index] = builderForValue.Build();
-            return this;
-          }
-          public Builder AddExt1(global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite value) {
-            pb::ThrowHelper.ThrowIfNull(value, "value");
-            PrepareBuilder();
-            result.ext1_.Add(value);
-            return this;
-          }
-          public Builder AddExt1(global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Builder builderForValue) {
-            pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-            PrepareBuilder();
-            result.ext1_.Add(builderForValue.Build());
-            return this;
-          }
-          public Builder AddRangeExt1(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite> values) {
-            PrepareBuilder();
-            result.ext1_.Add(values);
-            return this;
-          }
-          public Builder ClearExt1() {
-            PrepareBuilder();
-            result.ext1_.Clear();
-            return this;
-          }
-
-          public pbc::IPopsicleList<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite> Ext2List {
-            get { return PrepareBuilder().ext2_; }
-          }
-          public int Ext2Count {
-            get { return result.Ext2Count; }
-          }
-          public global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite GetExt2(int index) {
-            return result.GetExt2(index);
-          }
-          public Builder SetExt2(int index, global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite value) {
-            pb::ThrowHelper.ThrowIfNull(value, "value");
-            PrepareBuilder();
-            result.ext2_[index] = value;
-            return this;
-          }
-          public Builder SetExt2(int index, global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Builder builderForValue) {
-            pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-            PrepareBuilder();
-            result.ext2_[index] = builderForValue.Build();
-            return this;
-          }
-          public Builder AddExt2(global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite value) {
-            pb::ThrowHelper.ThrowIfNull(value, "value");
-            PrepareBuilder();
-            result.ext2_.Add(value);
-            return this;
-          }
-          public Builder AddExt2(global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Builder builderForValue) {
-            pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-            PrepareBuilder();
-            result.ext2_.Add(builderForValue.Build());
-            return this;
-          }
-          public Builder AddRangeExt2(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite> values) {
-            PrepareBuilder();
-            result.ext2_.Add(values);
-            return this;
-          }
-          public Builder ClearExt2() {
-            PrepareBuilder();
-            result.ext2_.Clear();
-            return this;
-          }
-        }
-        static RepeatedFieldsGenerator() {
-          object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnittestLite.Descriptor, null);
-        }
-      }
-
-      [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-      public sealed partial class OptionalGroup : pb::GeneratedMessageLite<OptionalGroup, OptionalGroup.Builder> {
-        private OptionalGroup() { }
-        private static readonly OptionalGroup defaultInstance = new OptionalGroup().MakeReadOnly();
-        private static readonly string[] _optionalGroupFieldNames = new string[] { "optional_group_all_types" };
-        private static readonly uint[] _optionalGroupFieldTags = new uint[] { 90 };
-        public static OptionalGroup DefaultInstance {
-          get { return defaultInstance; }
-        }
-
-        public override OptionalGroup DefaultInstanceForType {
-          get { return DefaultInstance; }
-        }
-
-        protected override OptionalGroup ThisMessage {
-          get { return this; }
-        }
-
-        public const int OptionalGroupAllTypesFieldNumber = 11;
-        private bool hasOptionalGroupAllTypes;
-        private global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite optionalGroupAllTypes_;
-        public bool HasOptionalGroupAllTypes {
-          get { return hasOptionalGroupAllTypes; }
-        }
-        public global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite OptionalGroupAllTypes {
-          get { return optionalGroupAllTypes_ ?? global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.DefaultInstance; }
-        }
-
-        public override bool IsInitialized {
-          get {
-            return true;
-          }
-        }
-
-        public override void WriteTo(pb::ICodedOutputStream output) {
-          CalcSerializedSize();
-          string[] field_names = _optionalGroupFieldNames;
-          if (hasOptionalGroupAllTypes) {
-            output.WriteMessage(11, field_names[0], OptionalGroupAllTypes);
-          }
-        }
-
-        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 (hasOptionalGroupAllTypes) {
-            size += pb::CodedOutputStream.ComputeMessageSize(11, OptionalGroupAllTypes);
-          }
-          memoizedSerializedSize = size;
-          return size;
-        }
-        #region Lite runtime methods
-        public override int GetHashCode() {
-          int hash = GetType().GetHashCode();
-          if (hasOptionalGroupAllTypes) hash ^= optionalGroupAllTypes_.GetHashCode();
-          return hash;
-        }
-
-        public override bool Equals(object obj) {
-          OptionalGroup other = obj as OptionalGroup;
-          if (other == null) return false;
-          if (hasOptionalGroupAllTypes != other.hasOptionalGroupAllTypes || (hasOptionalGroupAllTypes && !optionalGroupAllTypes_.Equals(other.optionalGroupAllTypes_))) return false;
-          return true;
-        }
-
-        public override void PrintTo(global::System.IO.TextWriter writer) {
-          PrintField("optional_group_all_types", hasOptionalGroupAllTypes, optionalGroupAllTypes_, writer);
-        }
-        #endregion
-
-        public static OptionalGroup ParseFrom(pb::ByteString data) {
-          return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-        }
-        public static OptionalGroup ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-        }
-        public static OptionalGroup ParseFrom(byte[] data) {
-          return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-        }
-        public static OptionalGroup ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-        }
-        public static OptionalGroup ParseFrom(global::System.IO.Stream input) {
-          return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-        }
-        public static OptionalGroup ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-        }
-        public static OptionalGroup ParseDelimitedFrom(global::System.IO.Stream input) {
-          return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-        }
-        public static OptionalGroup ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-          return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-        }
-        public static OptionalGroup ParseFrom(pb::ICodedInputStream input) {
-          return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-        }
-        public static OptionalGroup ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-        }
-        private OptionalGroup 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(OptionalGroup prototype) {
-          return new Builder(prototype);
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-        public sealed partial class Builder : pb::GeneratedBuilderLite<OptionalGroup, Builder> {
-          protected override Builder ThisBuilder {
-            get { return this; }
-          }
-          public Builder() {
-            result = DefaultInstance;
-            resultIsReadOnly = true;
-          }
-          internal Builder(OptionalGroup cloneFrom) {
-            result = cloneFrom;
-            resultIsReadOnly = true;
-          }
-
-          private bool resultIsReadOnly;
-          private OptionalGroup result;
-
-          private OptionalGroup PrepareBuilder() {
-            if (resultIsReadOnly) {
-              OptionalGroup original = result;
-              result = new OptionalGroup();
-              resultIsReadOnly = false;
-              MergeFrom(original);
-            }
-            return result;
-          }
-
-          public override bool IsInitialized {
-            get { return result.IsInitialized; }
-          }
-
-          protected override OptionalGroup 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 OptionalGroup DefaultInstanceForType {
-            get { return global::Google.ProtocolBuffers.TestProtos.TestParsingMergeLite.Types.OptionalGroup.DefaultInstance; }
-          }
-
-          public override OptionalGroup BuildPartial() {
-            if (resultIsReadOnly) {
-              return result;
-            }
-            resultIsReadOnly = true;
-            return result.MakeReadOnly();
-          }
-
-          public override Builder MergeFrom(pb::IMessageLite other) {
-            if (other is OptionalGroup) {
-              return MergeFrom((OptionalGroup) other);
-            } else {
-              base.MergeFrom(other);
-              return this;
-            }
-          }
-
-          public override Builder MergeFrom(OptionalGroup other) {
-            if (other == global::Google.ProtocolBuffers.TestProtos.TestParsingMergeLite.Types.OptionalGroup.DefaultInstance) return this;
-            PrepareBuilder();
-            if (other.HasOptionalGroupAllTypes) {
-              MergeOptionalGroupAllTypes(other.OptionalGroupAllTypes);
-            }
-            return this;
-          }
-
-          public override Builder MergeFrom(pb::ICodedInputStream input) {
-            return MergeFrom(input, pb::ExtensionRegistry.Empty);
-          }
-
-          public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-            PrepareBuilder();
-            uint tag;
-            string field_name;
-            while (input.ReadTag(out tag, out field_name)) {
-              if(tag == 0 && field_name != null) {
-                int field_ordinal = global::System.Array.BinarySearch(_optionalGroupFieldNames, field_name, global::System.StringComparer.Ordinal);
-                if(field_ordinal >= 0)
-                  tag = _optionalGroupFieldTags[field_ordinal];
-                else {
-                  ParseUnknownField(input, extensionRegistry, tag, field_name);
-                  continue;
-                }
-              }
-              switch (tag) {
-                case 0: {
-                  throw pb::InvalidProtocolBufferException.InvalidTag();
-                }
-                default: {
-                  if (pb::WireFormat.IsEndGroupTag(tag)) {
-                    return this;
-                  }
-                  ParseUnknownField(input, extensionRegistry, tag, field_name);
-                  break;
-                }
-                case 90: {
-                  global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Builder subBuilder = global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.CreateBuilder();
-                  if (result.hasOptionalGroupAllTypes) {
-                    subBuilder.MergeFrom(OptionalGroupAllTypes);
-                  }
-                  input.ReadMessage(subBuilder, extensionRegistry);
-                  OptionalGroupAllTypes = subBuilder.BuildPartial();
-                  break;
-                }
-              }
-            }
-
-            return this;
-          }
-
-
-          public bool HasOptionalGroupAllTypes {
-           get { return result.hasOptionalGroupAllTypes; }
-          }
-          public global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite OptionalGroupAllTypes {
-            get { return result.OptionalGroupAllTypes; }
-            set { SetOptionalGroupAllTypes(value); }
-          }
-          public Builder SetOptionalGroupAllTypes(global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite value) {
-            pb::ThrowHelper.ThrowIfNull(value, "value");
-            PrepareBuilder();
-            result.hasOptionalGroupAllTypes = true;
-            result.optionalGroupAllTypes_ = value;
-            return this;
-          }
-          public Builder SetOptionalGroupAllTypes(global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Builder builderForValue) {
-            pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-            PrepareBuilder();
-            result.hasOptionalGroupAllTypes = true;
-            result.optionalGroupAllTypes_ = builderForValue.Build();
-            return this;
-          }
-          public Builder MergeOptionalGroupAllTypes(global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite value) {
-            pb::ThrowHelper.ThrowIfNull(value, "value");
-            PrepareBuilder();
-            if (result.hasOptionalGroupAllTypes &&
-                result.optionalGroupAllTypes_ != global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.DefaultInstance) {
-                result.optionalGroupAllTypes_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.CreateBuilder(result.optionalGroupAllTypes_).MergeFrom(value).BuildPartial();
-            } else {
-              result.optionalGroupAllTypes_ = value;
-            }
-            result.hasOptionalGroupAllTypes = true;
-            return this;
-          }
-          public Builder ClearOptionalGroupAllTypes() {
-            PrepareBuilder();
-            result.hasOptionalGroupAllTypes = false;
-            result.optionalGroupAllTypes_ = null;
-            return this;
-          }
-        }
-        static OptionalGroup() {
-          object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnittestLite.Descriptor, null);
-        }
-      }
-
-      [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-      public sealed partial class RepeatedGroup : pb::GeneratedMessageLite<RepeatedGroup, RepeatedGroup.Builder> {
-        private RepeatedGroup() { }
-        private static readonly RepeatedGroup defaultInstance = new RepeatedGroup().MakeReadOnly();
-        private static readonly string[] _repeatedGroupFieldNames = new string[] { "repeated_group_all_types" };
-        private static readonly uint[] _repeatedGroupFieldTags = new uint[] { 170 };
-        public static RepeatedGroup DefaultInstance {
-          get { return defaultInstance; }
-        }
-
-        public override RepeatedGroup DefaultInstanceForType {
-          get { return DefaultInstance; }
-        }
-
-        protected override RepeatedGroup ThisMessage {
-          get { return this; }
-        }
-
-        public const int RepeatedGroupAllTypesFieldNumber = 21;
-        private bool hasRepeatedGroupAllTypes;
-        private global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite repeatedGroupAllTypes_;
-        public bool HasRepeatedGroupAllTypes {
-          get { return hasRepeatedGroupAllTypes; }
-        }
-        public global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite RepeatedGroupAllTypes {
-          get { return repeatedGroupAllTypes_ ?? global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.DefaultInstance; }
-        }
-
-        public override bool IsInitialized {
-          get {
-            return true;
-          }
-        }
-
-        public override void WriteTo(pb::ICodedOutputStream output) {
-          CalcSerializedSize();
-          string[] field_names = _repeatedGroupFieldNames;
-          if (hasRepeatedGroupAllTypes) {
-            output.WriteMessage(21, field_names[0], RepeatedGroupAllTypes);
-          }
-        }
-
-        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 (hasRepeatedGroupAllTypes) {
-            size += pb::CodedOutputStream.ComputeMessageSize(21, RepeatedGroupAllTypes);
-          }
-          memoizedSerializedSize = size;
-          return size;
-        }
-        #region Lite runtime methods
-        public override int GetHashCode() {
-          int hash = GetType().GetHashCode();
-          if (hasRepeatedGroupAllTypes) hash ^= repeatedGroupAllTypes_.GetHashCode();
-          return hash;
-        }
-
-        public override bool Equals(object obj) {
-          RepeatedGroup other = obj as RepeatedGroup;
-          if (other == null) return false;
-          if (hasRepeatedGroupAllTypes != other.hasRepeatedGroupAllTypes || (hasRepeatedGroupAllTypes && !repeatedGroupAllTypes_.Equals(other.repeatedGroupAllTypes_))) return false;
-          return true;
-        }
-
-        public override void PrintTo(global::System.IO.TextWriter writer) {
-          PrintField("repeated_group_all_types", hasRepeatedGroupAllTypes, repeatedGroupAllTypes_, writer);
-        }
-        #endregion
-
-        public static RepeatedGroup ParseFrom(pb::ByteString data) {
-          return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-        }
-        public static RepeatedGroup ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-        }
-        public static RepeatedGroup ParseFrom(byte[] data) {
-          return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-        }
-        public static RepeatedGroup ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-        }
-        public static RepeatedGroup ParseFrom(global::System.IO.Stream input) {
-          return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-        }
-        public static RepeatedGroup ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-        }
-        public static RepeatedGroup ParseDelimitedFrom(global::System.IO.Stream input) {
-          return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-        }
-        public static RepeatedGroup ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-          return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-        }
-        public static RepeatedGroup ParseFrom(pb::ICodedInputStream input) {
-          return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-        }
-        public static RepeatedGroup ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-          return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-        }
-        private RepeatedGroup 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(RepeatedGroup prototype) {
-          return new Builder(prototype);
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-        public sealed partial class Builder : pb::GeneratedBuilderLite<RepeatedGroup, Builder> {
-          protected override Builder ThisBuilder {
-            get { return this; }
-          }
-          public Builder() {
-            result = DefaultInstance;
-            resultIsReadOnly = true;
-          }
-          internal Builder(RepeatedGroup cloneFrom) {
-            result = cloneFrom;
-            resultIsReadOnly = true;
-          }
-
-          private bool resultIsReadOnly;
-          private RepeatedGroup result;
-
-          private RepeatedGroup PrepareBuilder() {
-            if (resultIsReadOnly) {
-              RepeatedGroup original = result;
-              result = new RepeatedGroup();
-              resultIsReadOnly = false;
-              MergeFrom(original);
-            }
-            return result;
-          }
-
-          public override bool IsInitialized {
-            get { return result.IsInitialized; }
-          }
-
-          protected override RepeatedGroup 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 RepeatedGroup DefaultInstanceForType {
-            get { return global::Google.ProtocolBuffers.TestProtos.TestParsingMergeLite.Types.RepeatedGroup.DefaultInstance; }
-          }
-
-          public override RepeatedGroup BuildPartial() {
-            if (resultIsReadOnly) {
-              return result;
-            }
-            resultIsReadOnly = true;
-            return result.MakeReadOnly();
-          }
-
-          public override Builder MergeFrom(pb::IMessageLite other) {
-            if (other is RepeatedGroup) {
-              return MergeFrom((RepeatedGroup) other);
-            } else {
-              base.MergeFrom(other);
-              return this;
-            }
-          }
-
-          public override Builder MergeFrom(RepeatedGroup other) {
-            if (other == global::Google.ProtocolBuffers.TestProtos.TestParsingMergeLite.Types.RepeatedGroup.DefaultInstance) return this;
-            PrepareBuilder();
-            if (other.HasRepeatedGroupAllTypes) {
-              MergeRepeatedGroupAllTypes(other.RepeatedGroupAllTypes);
-            }
-            return this;
-          }
-
-          public override Builder MergeFrom(pb::ICodedInputStream input) {
-            return MergeFrom(input, pb::ExtensionRegistry.Empty);
-          }
-
-          public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-            PrepareBuilder();
-            uint tag;
-            string field_name;
-            while (input.ReadTag(out tag, out field_name)) {
-              if(tag == 0 && field_name != null) {
-                int field_ordinal = global::System.Array.BinarySearch(_repeatedGroupFieldNames, field_name, global::System.StringComparer.Ordinal);
-                if(field_ordinal >= 0)
-                  tag = _repeatedGroupFieldTags[field_ordinal];
-                else {
-                  ParseUnknownField(input, extensionRegistry, tag, field_name);
-                  continue;
-                }
-              }
-              switch (tag) {
-                case 0: {
-                  throw pb::InvalidProtocolBufferException.InvalidTag();
-                }
-                default: {
-                  if (pb::WireFormat.IsEndGroupTag(tag)) {
-                    return this;
-                  }
-                  ParseUnknownField(input, extensionRegistry, tag, field_name);
-                  break;
-                }
-                case 170: {
-                  global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Builder subBuilder = global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.CreateBuilder();
-                  if (result.hasRepeatedGroupAllTypes) {
-                    subBuilder.MergeFrom(RepeatedGroupAllTypes);
-                  }
-                  input.ReadMessage(subBuilder, extensionRegistry);
-                  RepeatedGroupAllTypes = subBuilder.BuildPartial();
-                  break;
-                }
-              }
-            }
-
-            return this;
-          }
-
-
-          public bool HasRepeatedGroupAllTypes {
-           get { return result.hasRepeatedGroupAllTypes; }
-          }
-          public global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite RepeatedGroupAllTypes {
-            get { return result.RepeatedGroupAllTypes; }
-            set { SetRepeatedGroupAllTypes(value); }
-          }
-          public Builder SetRepeatedGroupAllTypes(global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite value) {
-            pb::ThrowHelper.ThrowIfNull(value, "value");
-            PrepareBuilder();
-            result.hasRepeatedGroupAllTypes = true;
-            result.repeatedGroupAllTypes_ = value;
-            return this;
-          }
-          public Builder SetRepeatedGroupAllTypes(global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Builder builderForValue) {
-            pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-            PrepareBuilder();
-            result.hasRepeatedGroupAllTypes = true;
-            result.repeatedGroupAllTypes_ = builderForValue.Build();
-            return this;
-          }
-          public Builder MergeRepeatedGroupAllTypes(global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite value) {
-            pb::ThrowHelper.ThrowIfNull(value, "value");
-            PrepareBuilder();
-            if (result.hasRepeatedGroupAllTypes &&
-                result.repeatedGroupAllTypes_ != global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.DefaultInstance) {
-                result.repeatedGroupAllTypes_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.CreateBuilder(result.repeatedGroupAllTypes_).MergeFrom(value).BuildPartial();
-            } else {
-              result.repeatedGroupAllTypes_ = value;
-            }
-            result.hasRepeatedGroupAllTypes = true;
-            return this;
-          }
-          public Builder ClearRepeatedGroupAllTypes() {
-            PrepareBuilder();
-            result.hasRepeatedGroupAllTypes = false;
-            result.repeatedGroupAllTypes_ = null;
-            return this;
-          }
-        }
-        static RepeatedGroup() {
-          object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnittestLite.Descriptor, null);
-        }
-      }
-
-    }
-    #endregion
-
-    public const int RequiredAllTypesFieldNumber = 1;
-    private bool hasRequiredAllTypes;
-    private global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite requiredAllTypes_;
-    public bool HasRequiredAllTypes {
-      get { return hasRequiredAllTypes; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite RequiredAllTypes {
-      get { return requiredAllTypes_ ?? global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.DefaultInstance; }
-    }
-
-    public const int OptionalAllTypesFieldNumber = 2;
-    private bool hasOptionalAllTypes;
-    private global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite optionalAllTypes_;
-    public bool HasOptionalAllTypes {
-      get { return hasOptionalAllTypes; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite OptionalAllTypes {
-      get { return optionalAllTypes_ ?? global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.DefaultInstance; }
-    }
-
-    public const int RepeatedAllTypesFieldNumber = 3;
-    private pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite> repeatedAllTypes_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite>();
-    public scg::IList<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite> RepeatedAllTypesList {
-      get { return repeatedAllTypes_; }
-    }
-    public int RepeatedAllTypesCount {
-      get { return repeatedAllTypes_.Count; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite GetRepeatedAllTypes(int index) {
-      return repeatedAllTypes_[index];
-    }
-
-    public const int OptionalGroupFieldNumber = 10;
-    private bool hasOptionalGroup;
-    private global::Google.ProtocolBuffers.TestProtos.TestParsingMergeLite.Types.OptionalGroup optionalGroup_;
-    public bool HasOptionalGroup {
-      get { return hasOptionalGroup; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.TestParsingMergeLite.Types.OptionalGroup OptionalGroup {
-      get { return optionalGroup_ ?? global::Google.ProtocolBuffers.TestProtos.TestParsingMergeLite.Types.OptionalGroup.DefaultInstance; }
-    }
-
-    public const int RepeatedGroupFieldNumber = 20;
-    private pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.TestParsingMergeLite.Types.RepeatedGroup> repeatedGroup_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.TestParsingMergeLite.Types.RepeatedGroup>();
-    public scg::IList<global::Google.ProtocolBuffers.TestProtos.TestParsingMergeLite.Types.RepeatedGroup> RepeatedGroupList {
-      get { return repeatedGroup_; }
-    }
-    public int RepeatedGroupCount {
-      get { return repeatedGroup_.Count; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.TestParsingMergeLite.Types.RepeatedGroup GetRepeatedGroup(int index) {
-      return repeatedGroup_[index];
-    }
-
-    public override bool IsInitialized {
-      get {
-        if (!hasRequiredAllTypes) return false;
-        if (!ExtensionsAreInitialized) return false;
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _testParsingMergeLiteFieldNames;
-      pb::ExtendableMessageLite<TestParsingMergeLite, TestParsingMergeLite.Builder>.ExtensionWriter extensionWriter = CreateExtensionWriter(this);
-      if (hasRequiredAllTypes) {
-        output.WriteMessage(1, field_names[4], RequiredAllTypes);
-      }
-      if (hasOptionalAllTypes) {
-        output.WriteMessage(2, field_names[0], OptionalAllTypes);
-      }
-      if (repeatedAllTypes_.Count > 0) {
-        output.WriteMessageArray(3, field_names[2], repeatedAllTypes_);
-      }
-      if (hasOptionalGroup) {
-        output.WriteGroup(10, field_names[1], OptionalGroup);
-      }
-      if (repeatedGroup_.Count > 0) {
-        output.WriteGroupArray(20, field_names[3], repeatedGroup_);
-      }
-      extensionWriter.WriteUntil(536870912, 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 (hasRequiredAllTypes) {
-        size += pb::CodedOutputStream.ComputeMessageSize(1, RequiredAllTypes);
-      }
-      if (hasOptionalAllTypes) {
-        size += pb::CodedOutputStream.ComputeMessageSize(2, OptionalAllTypes);
-      }
-      foreach (global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite element in RepeatedAllTypesList) {
-        size += pb::CodedOutputStream.ComputeMessageSize(3, element);
-      }
-      if (hasOptionalGroup) {
-        size += pb::CodedOutputStream.ComputeGroupSize(10, OptionalGroup);
-      }
-      foreach (global::Google.ProtocolBuffers.TestProtos.TestParsingMergeLite.Types.RepeatedGroup element in RepeatedGroupList) {
-        size += pb::CodedOutputStream.ComputeGroupSize(20, element);
-      }
-      size += ExtensionsSerializedSize;
-      memoizedSerializedSize = size;
-      return size;
-    }
-    #region Lite runtime methods
-    public override int GetHashCode() {
-      int hash = GetType().GetHashCode();
-      if (hasRequiredAllTypes) hash ^= requiredAllTypes_.GetHashCode();
-      if (hasOptionalAllTypes) hash ^= optionalAllTypes_.GetHashCode();
-      foreach(global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite i in repeatedAllTypes_)
-        hash ^= i.GetHashCode();
-      if (hasOptionalGroup) hash ^= optionalGroup_.GetHashCode();
-      foreach(global::Google.ProtocolBuffers.TestProtos.TestParsingMergeLite.Types.RepeatedGroup i in repeatedGroup_)
-        hash ^= i.GetHashCode();
-      hash ^= base.GetHashCode();
-      return hash;
-    }
-
-    public override bool Equals(object obj) {
-      TestParsingMergeLite other = obj as TestParsingMergeLite;
-      if (other == null) return false;
-      if (hasRequiredAllTypes != other.hasRequiredAllTypes || (hasRequiredAllTypes && !requiredAllTypes_.Equals(other.requiredAllTypes_))) return false;
-      if (hasOptionalAllTypes != other.hasOptionalAllTypes || (hasOptionalAllTypes && !optionalAllTypes_.Equals(other.optionalAllTypes_))) return false;
-      if(repeatedAllTypes_.Count != other.repeatedAllTypes_.Count) return false;
-      for(int ix=0; ix < repeatedAllTypes_.Count; ix++)
-        if(!repeatedAllTypes_[ix].Equals(other.repeatedAllTypes_[ix])) return false;
-      if (hasOptionalGroup != other.hasOptionalGroup || (hasOptionalGroup && !optionalGroup_.Equals(other.optionalGroup_))) return false;
-      if(repeatedGroup_.Count != other.repeatedGroup_.Count) return false;
-      for(int ix=0; ix < repeatedGroup_.Count; ix++)
-        if(!repeatedGroup_[ix].Equals(other.repeatedGroup_[ix])) return false;
-      if (!base.Equals(other)) return false;
-      return true;
-    }
-
-    public override void PrintTo(global::System.IO.TextWriter writer) {
-      PrintField("required_all_types", hasRequiredAllTypes, requiredAllTypes_, writer);
-      PrintField("optional_all_types", hasOptionalAllTypes, optionalAllTypes_, writer);
-      PrintField("repeated_all_types", repeatedAllTypes_, writer);
-      PrintField("OptionalGroup", hasOptionalGroup, optionalGroup_, writer);
-      PrintField("RepeatedGroup", repeatedGroup_, writer);
-      base.PrintTo(writer);
-    }
-    #endregion
-
-    public static TestParsingMergeLite ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestParsingMergeLite ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestParsingMergeLite ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestParsingMergeLite ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestParsingMergeLite ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestParsingMergeLite ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static TestParsingMergeLite ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static TestParsingMergeLite ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static TestParsingMergeLite ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestParsingMergeLite ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private TestParsingMergeLite MakeReadOnly() {
-      repeatedAllTypes_.MakeReadOnly();
-      repeatedGroup_.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(TestParsingMergeLite prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::ExtendableBuilderLite<TestParsingMergeLite, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(TestParsingMergeLite cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private TestParsingMergeLite result;
-
-      private TestParsingMergeLite PrepareBuilder() {
-        if (resultIsReadOnly) {
-          TestParsingMergeLite original = result;
-          result = new TestParsingMergeLite();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override TestParsingMergeLite 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 TestParsingMergeLite DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.TestParsingMergeLite.DefaultInstance; }
-      }
-
-      public override TestParsingMergeLite BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessageLite other) {
-        if (other is TestParsingMergeLite) {
-          return MergeFrom((TestParsingMergeLite) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(TestParsingMergeLite other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.TestParsingMergeLite.DefaultInstance) return this;
-        PrepareBuilder();
-        if (other.HasRequiredAllTypes) {
-          MergeRequiredAllTypes(other.RequiredAllTypes);
-        }
-        if (other.HasOptionalAllTypes) {
-          MergeOptionalAllTypes(other.OptionalAllTypes);
-        }
-        if (other.repeatedAllTypes_.Count != 0) {
-          result.repeatedAllTypes_.Add(other.repeatedAllTypes_);
-        }
-        if (other.HasOptionalGroup) {
-          MergeOptionalGroup(other.OptionalGroup);
-        }
-        if (other.repeatedGroup_.Count != 0) {
-          result.repeatedGroup_.Add(other.repeatedGroup_);
-        }
-          this.MergeExtensionFields(other);
-        return this;
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input) {
-        return MergeFrom(input, pb::ExtensionRegistry.Empty);
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-        PrepareBuilder();
-        uint tag;
-        string field_name;
-        while (input.ReadTag(out tag, out field_name)) {
-          if(tag == 0 && field_name != null) {
-            int field_ordinal = global::System.Array.BinarySearch(_testParsingMergeLiteFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _testParsingMergeLiteFieldTags[field_ordinal];
-            else {
-              ParseUnknownField(input, extensionRegistry, tag, field_name);
-              continue;
-            }
-          }
-          switch (tag) {
-            case 0: {
-              throw pb::InvalidProtocolBufferException.InvalidTag();
-            }
-            default: {
-              if (pb::WireFormat.IsEndGroupTag(tag)) {
-                return this;
-              }
-              ParseUnknownField(input, extensionRegistry, tag, field_name);
-              break;
-            }
-            case 10: {
-              global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Builder subBuilder = global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.CreateBuilder();
-              if (result.hasRequiredAllTypes) {
-                subBuilder.MergeFrom(RequiredAllTypes);
-              }
-              input.ReadMessage(subBuilder, extensionRegistry);
-              RequiredAllTypes = subBuilder.BuildPartial();
-              break;
-            }
-            case 18: {
-              global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Builder subBuilder = global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.CreateBuilder();
-              if (result.hasOptionalAllTypes) {
-                subBuilder.MergeFrom(OptionalAllTypes);
-              }
-              input.ReadMessage(subBuilder, extensionRegistry);
-              OptionalAllTypes = subBuilder.BuildPartial();
-              break;
-            }
-            case 26: {
-              input.ReadMessageArray(tag, field_name, result.repeatedAllTypes_, global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.DefaultInstance, extensionRegistry);
-              break;
-            }
-            case 83: {
-              global::Google.ProtocolBuffers.TestProtos.TestParsingMergeLite.Types.OptionalGroup.Builder subBuilder = global::Google.ProtocolBuffers.TestProtos.TestParsingMergeLite.Types.OptionalGroup.CreateBuilder();
-              if (result.hasOptionalGroup) {
-                subBuilder.MergeFrom(OptionalGroup);
-              }
-              input.ReadGroup(10, subBuilder, extensionRegistry);
-              OptionalGroup = subBuilder.BuildPartial();
-              break;
-            }
-            case 163: {
-              input.ReadGroupArray(tag, field_name, result.repeatedGroup_, global::Google.ProtocolBuffers.TestProtos.TestParsingMergeLite.Types.RepeatedGroup.DefaultInstance, extensionRegistry);
-              break;
-            }
-          }
-        }
-
-        return this;
-      }
-
-
-      public bool HasRequiredAllTypes {
-       get { return result.hasRequiredAllTypes; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite RequiredAllTypes {
-        get { return result.RequiredAllTypes; }
-        set { SetRequiredAllTypes(value); }
-      }
-      public Builder SetRequiredAllTypes(global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasRequiredAllTypes = true;
-        result.requiredAllTypes_ = value;
-        return this;
-      }
-      public Builder SetRequiredAllTypes(global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.hasRequiredAllTypes = true;
-        result.requiredAllTypes_ = builderForValue.Build();
-        return this;
-      }
-      public Builder MergeRequiredAllTypes(global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        if (result.hasRequiredAllTypes &&
-            result.requiredAllTypes_ != global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.DefaultInstance) {
-            result.requiredAllTypes_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.CreateBuilder(result.requiredAllTypes_).MergeFrom(value).BuildPartial();
-        } else {
-          result.requiredAllTypes_ = value;
-        }
-        result.hasRequiredAllTypes = true;
-        return this;
-      }
-      public Builder ClearRequiredAllTypes() {
-        PrepareBuilder();
-        result.hasRequiredAllTypes = false;
-        result.requiredAllTypes_ = null;
-        return this;
-      }
-
-      public bool HasOptionalAllTypes {
-       get { return result.hasOptionalAllTypes; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite OptionalAllTypes {
-        get { return result.OptionalAllTypes; }
-        set { SetOptionalAllTypes(value); }
-      }
-      public Builder SetOptionalAllTypes(global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasOptionalAllTypes = true;
-        result.optionalAllTypes_ = value;
-        return this;
-      }
-      public Builder SetOptionalAllTypes(global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.hasOptionalAllTypes = true;
-        result.optionalAllTypes_ = builderForValue.Build();
-        return this;
-      }
-      public Builder MergeOptionalAllTypes(global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        if (result.hasOptionalAllTypes &&
-            result.optionalAllTypes_ != global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.DefaultInstance) {
-            result.optionalAllTypes_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.CreateBuilder(result.optionalAllTypes_).MergeFrom(value).BuildPartial();
-        } else {
-          result.optionalAllTypes_ = value;
-        }
-        result.hasOptionalAllTypes = true;
-        return this;
-      }
-      public Builder ClearOptionalAllTypes() {
-        PrepareBuilder();
-        result.hasOptionalAllTypes = false;
-        result.optionalAllTypes_ = null;
-        return this;
-      }
-
-      public pbc::IPopsicleList<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite> RepeatedAllTypesList {
-        get { return PrepareBuilder().repeatedAllTypes_; }
-      }
-      public int RepeatedAllTypesCount {
-        get { return result.RepeatedAllTypesCount; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite GetRepeatedAllTypes(int index) {
-        return result.GetRepeatedAllTypes(index);
-      }
-      public Builder SetRepeatedAllTypes(int index, global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.repeatedAllTypes_[index] = value;
-        return this;
-      }
-      public Builder SetRepeatedAllTypes(int index, global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.repeatedAllTypes_[index] = builderForValue.Build();
-        return this;
-      }
-      public Builder AddRepeatedAllTypes(global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.repeatedAllTypes_.Add(value);
-        return this;
-      }
-      public Builder AddRepeatedAllTypes(global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.repeatedAllTypes_.Add(builderForValue.Build());
-        return this;
-      }
-      public Builder AddRangeRepeatedAllTypes(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite> values) {
-        PrepareBuilder();
-        result.repeatedAllTypes_.Add(values);
-        return this;
-      }
-      public Builder ClearRepeatedAllTypes() {
-        PrepareBuilder();
-        result.repeatedAllTypes_.Clear();
-        return this;
-      }
-
-      public bool HasOptionalGroup {
-       get { return result.hasOptionalGroup; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.TestParsingMergeLite.Types.OptionalGroup OptionalGroup {
-        get { return result.OptionalGroup; }
-        set { SetOptionalGroup(value); }
-      }
-      public Builder SetOptionalGroup(global::Google.ProtocolBuffers.TestProtos.TestParsingMergeLite.Types.OptionalGroup value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasOptionalGroup = true;
-        result.optionalGroup_ = value;
-        return this;
-      }
-      public Builder SetOptionalGroup(global::Google.ProtocolBuffers.TestProtos.TestParsingMergeLite.Types.OptionalGroup.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.hasOptionalGroup = true;
-        result.optionalGroup_ = builderForValue.Build();
-        return this;
-      }
-      public Builder MergeOptionalGroup(global::Google.ProtocolBuffers.TestProtos.TestParsingMergeLite.Types.OptionalGroup value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        if (result.hasOptionalGroup &&
-            result.optionalGroup_ != global::Google.ProtocolBuffers.TestProtos.TestParsingMergeLite.Types.OptionalGroup.DefaultInstance) {
-            result.optionalGroup_ = global::Google.ProtocolBuffers.TestProtos.TestParsingMergeLite.Types.OptionalGroup.CreateBuilder(result.optionalGroup_).MergeFrom(value).BuildPartial();
-        } else {
-          result.optionalGroup_ = value;
-        }
-        result.hasOptionalGroup = true;
-        return this;
-      }
-      public Builder ClearOptionalGroup() {
-        PrepareBuilder();
-        result.hasOptionalGroup = false;
-        result.optionalGroup_ = null;
-        return this;
-      }
-
-      public pbc::IPopsicleList<global::Google.ProtocolBuffers.TestProtos.TestParsingMergeLite.Types.RepeatedGroup> RepeatedGroupList {
-        get { return PrepareBuilder().repeatedGroup_; }
-      }
-      public int RepeatedGroupCount {
-        get { return result.RepeatedGroupCount; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.TestParsingMergeLite.Types.RepeatedGroup GetRepeatedGroup(int index) {
-        return result.GetRepeatedGroup(index);
-      }
-      public Builder SetRepeatedGroup(int index, global::Google.ProtocolBuffers.TestProtos.TestParsingMergeLite.Types.RepeatedGroup value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.repeatedGroup_[index] = value;
-        return this;
-      }
-      public Builder SetRepeatedGroup(int index, global::Google.ProtocolBuffers.TestProtos.TestParsingMergeLite.Types.RepeatedGroup.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.repeatedGroup_[index] = builderForValue.Build();
-        return this;
-      }
-      public Builder AddRepeatedGroup(global::Google.ProtocolBuffers.TestProtos.TestParsingMergeLite.Types.RepeatedGroup value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.repeatedGroup_.Add(value);
-        return this;
-      }
-      public Builder AddRepeatedGroup(global::Google.ProtocolBuffers.TestProtos.TestParsingMergeLite.Types.RepeatedGroup.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.repeatedGroup_.Add(builderForValue.Build());
-        return this;
-      }
-      public Builder AddRangeRepeatedGroup(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.TestParsingMergeLite.Types.RepeatedGroup> values) {
-        PrepareBuilder();
-        result.repeatedGroup_.Add(values);
-        return this;
-      }
-      public Builder ClearRepeatedGroup() {
-        PrepareBuilder();
-        result.repeatedGroup_.Clear();
-        return this;
-      }
-    }
-    static TestParsingMergeLite() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnittestLite.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class TestEmptyMessageLite : pb::GeneratedMessageLite<TestEmptyMessageLite, TestEmptyMessageLite.Builder> {
-    private TestEmptyMessageLite() { }
-    private static readonly TestEmptyMessageLite defaultInstance = new TestEmptyMessageLite().MakeReadOnly();
-    private static readonly string[] _testEmptyMessageLiteFieldNames = new string[] {  };
-    private static readonly uint[] _testEmptyMessageLiteFieldTags = new uint[] {  };
-    public static TestEmptyMessageLite DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override TestEmptyMessageLite DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override TestEmptyMessageLite ThisMessage {
-      get { return this; }
-    }
-
-    public override bool IsInitialized {
-      get {
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _testEmptyMessageLiteFieldNames;
-    }
-
-    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;
-      memoizedSerializedSize = size;
-      return size;
-    }
-    #region Lite runtime methods
-    public override int GetHashCode() {
-      int hash = GetType().GetHashCode();
-      return hash;
-    }
-
-    public override bool Equals(object obj) {
-      TestEmptyMessageLite other = obj as TestEmptyMessageLite;
-      if (other == null) return false;
-      return true;
-    }
-
-    public override void PrintTo(global::System.IO.TextWriter writer) {
-    }
-    #endregion
-
-    public static TestEmptyMessageLite ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestEmptyMessageLite ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestEmptyMessageLite ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestEmptyMessageLite ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestEmptyMessageLite ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestEmptyMessageLite ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static TestEmptyMessageLite ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static TestEmptyMessageLite ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static TestEmptyMessageLite ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestEmptyMessageLite ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private TestEmptyMessageLite 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(TestEmptyMessageLite prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilderLite<TestEmptyMessageLite, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(TestEmptyMessageLite cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private TestEmptyMessageLite result;
-
-      private TestEmptyMessageLite PrepareBuilder() {
-        if (resultIsReadOnly) {
-          TestEmptyMessageLite original = result;
-          result = new TestEmptyMessageLite();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override TestEmptyMessageLite 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 TestEmptyMessageLite DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.TestEmptyMessageLite.DefaultInstance; }
-      }
-
-      public override TestEmptyMessageLite BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessageLite other) {
-        if (other is TestEmptyMessageLite) {
-          return MergeFrom((TestEmptyMessageLite) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(TestEmptyMessageLite other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.TestEmptyMessageLite.DefaultInstance) return this;
-        PrepareBuilder();
-        return this;
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input) {
-        return MergeFrom(input, pb::ExtensionRegistry.Empty);
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-        PrepareBuilder();
-        uint tag;
-        string field_name;
-        while (input.ReadTag(out tag, out field_name)) {
-          if(tag == 0 && field_name != null) {
-            int field_ordinal = global::System.Array.BinarySearch(_testEmptyMessageLiteFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _testEmptyMessageLiteFieldTags[field_ordinal];
-            else {
-              ParseUnknownField(input, extensionRegistry, tag, field_name);
-              continue;
-            }
-          }
-          switch (tag) {
-            case 0: {
-              throw pb::InvalidProtocolBufferException.InvalidTag();
-            }
-            default: {
-              if (pb::WireFormat.IsEndGroupTag(tag)) {
-                return this;
-              }
-              ParseUnknownField(input, extensionRegistry, tag, field_name);
-              break;
-            }
-          }
-        }
-
-        return this;
-      }
-
-    }
-    static TestEmptyMessageLite() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnittestLite.Descriptor, null);
-    }
-  }
-
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class TestEmptyMessageWithExtensionsLite : pb::ExtendableMessageLite<TestEmptyMessageWithExtensionsLite, TestEmptyMessageWithExtensionsLite.Builder> {
-    private TestEmptyMessageWithExtensionsLite() { }
-    private static readonly TestEmptyMessageWithExtensionsLite defaultInstance = new TestEmptyMessageWithExtensionsLite().MakeReadOnly();
-    private static readonly string[] _testEmptyMessageWithExtensionsLiteFieldNames = new string[] {  };
-    private static readonly uint[] _testEmptyMessageWithExtensionsLiteFieldTags = new uint[] {  };
-    public static TestEmptyMessageWithExtensionsLite DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override TestEmptyMessageWithExtensionsLite DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override TestEmptyMessageWithExtensionsLite ThisMessage {
-      get { return this; }
-    }
-
-    public override bool IsInitialized {
-      get {
-        if (!ExtensionsAreInitialized) return false;
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _testEmptyMessageWithExtensionsLiteFieldNames;
-      pb::ExtendableMessageLite<TestEmptyMessageWithExtensionsLite, TestEmptyMessageWithExtensionsLite.Builder>.ExtensionWriter extensionWriter = CreateExtensionWriter(this);
-      extensionWriter.WriteUntil(536870912, output);
-    }
-
-    private int memoizedSerializedSize = -1;
-    public override int SerializedSize {
-      get {
-        int size = memoizedSerializedSize;
-        if (size != -1) return size;
-        return CalcSerializedSize();
-      }
-    }
-
-    private int CalcSerializedSize() {
-      int size = memoizedSerializedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      size += ExtensionsSerializedSize;
-      memoizedSerializedSize = size;
-      return size;
-    }
-    #region Lite runtime methods
-    public override int GetHashCode() {
-      int hash = GetType().GetHashCode();
-      hash ^= base.GetHashCode();
-      return hash;
-    }
-
-    public override bool Equals(object obj) {
-      TestEmptyMessageWithExtensionsLite other = obj as TestEmptyMessageWithExtensionsLite;
-      if (other == null) return false;
-      if (!base.Equals(other)) return false;
-      return true;
-    }
-
-    public override void PrintTo(global::System.IO.TextWriter writer) {
-      base.PrintTo(writer);
-    }
-    #endregion
-
-    public static TestEmptyMessageWithExtensionsLite ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestEmptyMessageWithExtensionsLite ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestEmptyMessageWithExtensionsLite ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestEmptyMessageWithExtensionsLite ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestEmptyMessageWithExtensionsLite ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestEmptyMessageWithExtensionsLite ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static TestEmptyMessageWithExtensionsLite ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static TestEmptyMessageWithExtensionsLite ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static TestEmptyMessageWithExtensionsLite ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestEmptyMessageWithExtensionsLite ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private TestEmptyMessageWithExtensionsLite 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(TestEmptyMessageWithExtensionsLite prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::ExtendableBuilderLite<TestEmptyMessageWithExtensionsLite, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(TestEmptyMessageWithExtensionsLite cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private TestEmptyMessageWithExtensionsLite result;
-
-      private TestEmptyMessageWithExtensionsLite PrepareBuilder() {
-        if (resultIsReadOnly) {
-          TestEmptyMessageWithExtensionsLite original = result;
-          result = new TestEmptyMessageWithExtensionsLite();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override TestEmptyMessageWithExtensionsLite 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 TestEmptyMessageWithExtensionsLite DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.TestEmptyMessageWithExtensionsLite.DefaultInstance; }
-      }
-
-      public override TestEmptyMessageWithExtensionsLite BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessageLite other) {
-        if (other is TestEmptyMessageWithExtensionsLite) {
-          return MergeFrom((TestEmptyMessageWithExtensionsLite) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(TestEmptyMessageWithExtensionsLite other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.TestEmptyMessageWithExtensionsLite.DefaultInstance) return this;
-        PrepareBuilder();
-          this.MergeExtensionFields(other);
-        return this;
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input) {
-        return MergeFrom(input, pb::ExtensionRegistry.Empty);
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-        PrepareBuilder();
-        uint tag;
-        string field_name;
-        while (input.ReadTag(out tag, out field_name)) {
-          if(tag == 0 && field_name != null) {
-            int field_ordinal = global::System.Array.BinarySearch(_testEmptyMessageWithExtensionsLiteFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _testEmptyMessageWithExtensionsLiteFieldTags[field_ordinal];
-            else {
-              ParseUnknownField(input, extensionRegistry, tag, field_name);
-              continue;
-            }
-          }
-          switch (tag) {
-            case 0: {
-              throw pb::InvalidProtocolBufferException.InvalidTag();
-            }
-            default: {
-              if (pb::WireFormat.IsEndGroupTag(tag)) {
-                return this;
-              }
-              ParseUnknownField(input, extensionRegistry, tag, field_name);
-              break;
-            }
-          }
-        }
-
-        return this;
-      }
-
-    }
-    static TestEmptyMessageWithExtensionsLite() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnittestLite.Descriptor, null);
-    }
-  }
-
-  #endregion
-
-}
-
-#endregion Designer generated code

+ 0 - 325
csharp/src/ProtocolBuffersLite.Test/TestProtos/UnittestLiteImportsNonlite.cs

@@ -1,325 +0,0 @@
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
-// source: google/protobuf/unittest_lite_imports_nonlite.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 UnittestLiteImportsNonlite {
-
-    #region Extension registration
-    public static void RegisterAllExtensions(pb::ExtensionRegistry registry) {
-    }
-    #endregion
-    #region Static variables
-    #endregion
-    #region Extensions
-    internal static readonly object Descriptor;
-    static UnittestLiteImportsNonlite() {
-      Descriptor = null;
-    }
-    #endregion
-
-  }
-  #region Messages
-  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-  public sealed partial class TestLiteImportsNonlite : pb::GeneratedMessageLite<TestLiteImportsNonlite, TestLiteImportsNonlite.Builder> {
-    private TestLiteImportsNonlite() { }
-    private static readonly TestLiteImportsNonlite defaultInstance = new TestLiteImportsNonlite().MakeReadOnly();
-    private static readonly string[] _testLiteImportsNonliteFieldNames = new string[] { "message" };
-    private static readonly uint[] _testLiteImportsNonliteFieldTags = new uint[] { 10 };
-    public static TestLiteImportsNonlite DefaultInstance {
-      get { return defaultInstance; }
-    }
-
-    public override TestLiteImportsNonlite DefaultInstanceForType {
-      get { return DefaultInstance; }
-    }
-
-    protected override TestLiteImportsNonlite ThisMessage {
-      get { return this; }
-    }
-
-    public const int MessageFieldNumber = 1;
-    private bool hasMessage;
-    private global::Google.ProtocolBuffers.TestProtos.TestAllTypes message_;
-    public bool HasMessage {
-      get { return hasMessage; }
-    }
-    public global::Google.ProtocolBuffers.TestProtos.TestAllTypes Message {
-      get { return message_ ?? global::Google.ProtocolBuffers.TestProtos.TestAllTypes.DefaultInstance; }
-    }
-
-    public override bool IsInitialized {
-      get {
-        return true;
-      }
-    }
-
-    public override void WriteTo(pb::ICodedOutputStream output) {
-      CalcSerializedSize();
-      string[] field_names = _testLiteImportsNonliteFieldNames;
-      if (hasMessage) {
-        output.WriteMessage(1, field_names[0], Message);
-      }
-    }
-
-    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 (hasMessage) {
-        size += pb::CodedOutputStream.ComputeMessageSize(1, Message);
-      }
-      memoizedSerializedSize = size;
-      return size;
-    }
-    #region Lite runtime methods
-    public override int GetHashCode() {
-      int hash = GetType().GetHashCode();
-      if (hasMessage) hash ^= message_.GetHashCode();
-      return hash;
-    }
-
-    public override bool Equals(object obj) {
-      TestLiteImportsNonlite other = obj as TestLiteImportsNonlite;
-      if (other == null) return false;
-      if (hasMessage != other.hasMessage || (hasMessage && !message_.Equals(other.message_))) return false;
-      return true;
-    }
-
-    public override void PrintTo(global::System.IO.TextWriter writer) {
-      PrintField("message", hasMessage, message_, writer);
-    }
-    #endregion
-
-    public static TestLiteImportsNonlite ParseFrom(pb::ByteString data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestLiteImportsNonlite ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestLiteImportsNonlite ParseFrom(byte[] data) {
-      return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
-    }
-    public static TestLiteImportsNonlite ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
-    }
-    public static TestLiteImportsNonlite ParseFrom(global::System.IO.Stream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestLiteImportsNonlite ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    public static TestLiteImportsNonlite ParseDelimitedFrom(global::System.IO.Stream input) {
-      return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
-    }
-    public static TestLiteImportsNonlite ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
-      return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
-    }
-    public static TestLiteImportsNonlite ParseFrom(pb::ICodedInputStream input) {
-      return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
-    }
-    public static TestLiteImportsNonlite ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-      return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
-    }
-    private TestLiteImportsNonlite 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(TestLiteImportsNonlite prototype) {
-      return new Builder(prototype);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Builder : pb::GeneratedBuilderLite<TestLiteImportsNonlite, Builder> {
-      protected override Builder ThisBuilder {
-        get { return this; }
-      }
-      public Builder() {
-        result = DefaultInstance;
-        resultIsReadOnly = true;
-      }
-      internal Builder(TestLiteImportsNonlite cloneFrom) {
-        result = cloneFrom;
-        resultIsReadOnly = true;
-      }
-
-      private bool resultIsReadOnly;
-      private TestLiteImportsNonlite result;
-
-      private TestLiteImportsNonlite PrepareBuilder() {
-        if (resultIsReadOnly) {
-          TestLiteImportsNonlite original = result;
-          result = new TestLiteImportsNonlite();
-          resultIsReadOnly = false;
-          MergeFrom(original);
-        }
-        return result;
-      }
-
-      public override bool IsInitialized {
-        get { return result.IsInitialized; }
-      }
-
-      protected override TestLiteImportsNonlite 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 TestLiteImportsNonlite DefaultInstanceForType {
-        get { return global::Google.ProtocolBuffers.TestProtos.TestLiteImportsNonlite.DefaultInstance; }
-      }
-
-      public override TestLiteImportsNonlite BuildPartial() {
-        if (resultIsReadOnly) {
-          return result;
-        }
-        resultIsReadOnly = true;
-        return result.MakeReadOnly();
-      }
-
-      public override Builder MergeFrom(pb::IMessageLite other) {
-        if (other is TestLiteImportsNonlite) {
-          return MergeFrom((TestLiteImportsNonlite) other);
-        } else {
-          base.MergeFrom(other);
-          return this;
-        }
-      }
-
-      public override Builder MergeFrom(TestLiteImportsNonlite other) {
-        if (other == global::Google.ProtocolBuffers.TestProtos.TestLiteImportsNonlite.DefaultInstance) return this;
-        PrepareBuilder();
-        if (other.HasMessage) {
-          MergeMessage(other.Message);
-        }
-        return this;
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input) {
-        return MergeFrom(input, pb::ExtensionRegistry.Empty);
-      }
-
-      public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
-        PrepareBuilder();
-        uint tag;
-        string field_name;
-        while (input.ReadTag(out tag, out field_name)) {
-          if(tag == 0 && field_name != null) {
-            int field_ordinal = global::System.Array.BinarySearch(_testLiteImportsNonliteFieldNames, field_name, global::System.StringComparer.Ordinal);
-            if(field_ordinal >= 0)
-              tag = _testLiteImportsNonliteFieldTags[field_ordinal];
-            else {
-              ParseUnknownField(input, extensionRegistry, tag, field_name);
-              continue;
-            }
-          }
-          switch (tag) {
-            case 0: {
-              throw pb::InvalidProtocolBufferException.InvalidTag();
-            }
-            default: {
-              if (pb::WireFormat.IsEndGroupTag(tag)) {
-                return this;
-              }
-              ParseUnknownField(input, extensionRegistry, tag, field_name);
-              break;
-            }
-            case 10: {
-              global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Builder subBuilder = global::Google.ProtocolBuffers.TestProtos.TestAllTypes.CreateBuilder();
-              if (result.hasMessage) {
-                subBuilder.MergeFrom(Message);
-              }
-              input.ReadMessage(subBuilder, extensionRegistry);
-              Message = subBuilder.BuildPartial();
-              break;
-            }
-          }
-        }
-
-        return this;
-      }
-
-
-      public bool HasMessage {
-       get { return result.hasMessage; }
-      }
-      public global::Google.ProtocolBuffers.TestProtos.TestAllTypes Message {
-        get { return result.Message; }
-        set { SetMessage(value); }
-      }
-      public Builder SetMessage(global::Google.ProtocolBuffers.TestProtos.TestAllTypes value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        result.hasMessage = true;
-        result.message_ = value;
-        return this;
-      }
-      public Builder SetMessage(global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Builder builderForValue) {
-        pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
-        PrepareBuilder();
-        result.hasMessage = true;
-        result.message_ = builderForValue.Build();
-        return this;
-      }
-      public Builder MergeMessage(global::Google.ProtocolBuffers.TestProtos.TestAllTypes value) {
-        pb::ThrowHelper.ThrowIfNull(value, "value");
-        PrepareBuilder();
-        if (result.hasMessage &&
-            result.message_ != global::Google.ProtocolBuffers.TestProtos.TestAllTypes.DefaultInstance) {
-            result.message_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypes.CreateBuilder(result.message_).MergeFrom(value).BuildPartial();
-        } else {
-          result.message_ = value;
-        }
-        result.hasMessage = true;
-        return this;
-      }
-      public Builder ClearMessage() {
-        PrepareBuilder();
-        result.hasMessage = false;
-        result.message_ = null;
-        return this;
-      }
-    }
-    static TestLiteImportsNonlite() {
-      object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnittestLiteImportsNonlite.Descriptor, null);
-    }
-  }
-
-  #endregion
-
-}
-
-#endregion Designer generated code

+ 0 - 5
csharp/src/ProtocolBuffersLite.Test/packages.config

@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<packages>
-  <package id="NUnit" version="2.6.4" targetFramework="net45" userInstalled="true" />
-  <package id="NUnitTestAdapter" version="2.0.0" targetFramework="net45" userInstalled="true" />
-</packages>