<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>protos/google/protobuf/unittest_csharp_options.proto</filename>
    </added>
    <added>
      <filename>src/ProtocolBuffers.Test/Descriptors/MessageDescriptorTest.cs</filename>
    </added>
    <added>
      <filename>src/ProtocolBuffers.Test/TestProtos/UnitTestCSharpOptionsProtoFile.cs</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -114,6 +114,7 @@
       &lt;arg file=&quot;${protos-dir}/google/protobuf/descriptor.proto&quot; /&gt;
       &lt;arg file=&quot;${protos-dir}/google/protobuf/csharp_options.proto&quot; /&gt;
       &lt;arg file=&quot;${protos-dir}/google/protobuf/unittest.proto&quot; /&gt;
+      &lt;arg file=&quot;${protos-dir}/google/protobuf/unittest_csharp_options.proto&quot; /&gt;
       &lt;arg file=&quot;${protos-dir}/google/protobuf/unittest_custom_options.proto&quot; /&gt;
       &lt;arg file=&quot;${protos-dir}/google/protobuf/unittest_embed_optimize_for.proto&quot; /&gt;
       &lt;arg file=&quot;${protos-dir}/google/protobuf/unittest_import.proto&quot; /&gt;
@@ -140,6 +141,7 @@
     &lt;copy todir=&quot;${src}/ProtocolBuffers.Test/TestProtos&quot;&gt;
       &lt;fileset basedir=&quot;${tmp-dir}&quot;&gt;
         &lt;include name=&quot;UnitTestProtoFile.cs&quot; /&gt;
+        &lt;include name=&quot;UnitTestCSharpOptionsProtoFile.cs&quot; /&gt;
         &lt;include name=&quot;UnitTestCustomOptionsProtoFile.cs&quot; /&gt;
         &lt;include name=&quot;UnitTestEmbedOptimizeForProtoFile.cs&quot; /&gt;
         &lt;include name=&quot;UnitTestImportProtoFile.cs&quot; /&gt;</diff>
      <filename>ProtocolBuffers.build</filename>
    </modified>
    <modified>
      <diff>@@ -250,7 +250,7 @@ message FileOptions {
     SPEED = 1;      // Generate complete code for parsing, serialization, etc.
     CODE_SIZE = 2;  // Use ReflectionOps to implement these methods.
   }
-  optional OptimizeMode optimize_for = 9 [default=CODE_SIZE];
+  optional OptimizeMode optimize_for = 9 [default=SPEED];
 
 
 
@@ -306,6 +306,12 @@ message FieldOptions {
   // a single length-delimited blob.
   optional bool packed = 2;
 
+  // Is this field deprecated?
+  // Depending on the target platform, this can emit Deprecated annotations
+  // for accessors, or it will be completely ignored; in the very least, this
+  // is a formalization for deprecating fields.
+  optional bool deprecated = 3 [default=false];
+  
   // EXPERIMENTAL.  DO NOT USE.
   // For &quot;map&quot; fields, the name of the field in the enclosed type that
   // is the key for this map.  For example, suppose we have:</diff>
      <filename>protos/google/protobuf/descriptor.proto</filename>
    </modified>
    <modified>
      <diff>@@ -8,44 +8,62 @@ namespace Google.ProtocolBuffers.Examples.AddressBook {
   
   public static partial class AddressBookProtos {
   
+    #region Extension registration
+    public static void RegisterAllExtensions(pb::ExtensionRegistry registry) {
+    }
+    #endregion
+    #region Static variables
+    internal static pbd::MessageDescriptor internal__static_tutorial_Person__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.Examples.AddressBook.Person, global::Google.ProtocolBuffers.Examples.AddressBook.Person.Builder&gt; internal__static_tutorial_Person__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_tutorial_Person_PhoneNumber__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.Examples.AddressBook.Person.Types.PhoneNumber, global::Google.ProtocolBuffers.Examples.AddressBook.Person.Types.PhoneNumber.Builder&gt; internal__static_tutorial_Person_PhoneNumber__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_tutorial_AddressBook__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.Examples.AddressBook.AddressBook, global::Google.ProtocolBuffers.Examples.AddressBook.AddressBook.Builder&gt; internal__static_tutorial_AddressBook__FieldAccessorTable;
+    #endregion
     #region Descriptor
     public static pbd::FileDescriptor Descriptor {
       get { return descriptor; }
     }
-    private static readonly pbd::FileDescriptor descriptor = pbd::FileDescriptor.InternalBuildGeneratedFileFrom(
-        global::System.Convert.FromBase64String(
-        &quot;Chp0dXRvcmlhbC9hZGRyZXNzYm9vay5wcm90bxIIdHV0b3JpYWwaJGdvb2ds&quot; + 
-        &quot;ZS9wcm90b2J1Zi9jc2hhcnBfb3B0aW9ucy5wcm90byLaAQoGUGVyc29uEgwK&quot; + 
-        &quot;BG5hbWUYASACKAkSCgoCaWQYAiACKAUSDQoFZW1haWwYAyABKAkSKwoFcGhv&quot; + 
-        &quot;bmUYBCADKAsyHC50dXRvcmlhbC5QZXJzb24uUGhvbmVOdW1iZXIaTQoLUGhv&quot; + 
-        &quot;bmVOdW1iZXISDgoGbnVtYmVyGAEgAigJEi4KBHR5cGUYAiABKA4yGi50dXRv&quot; + 
-        &quot;cmlhbC5QZXJzb24uUGhvbmVUeXBlOgRIT01FIisKCVBob25lVHlwZRIKCgZN&quot; + 
-        &quot;T0JJTEUQABIICgRIT01FEAESCAoEV09SSxACIi8KC0FkZHJlc3NCb29rEiAK&quot; + 
-        &quot;BnBlcnNvbhgBIAMoCzIQLnR1dG9yaWFsLlBlcnNvbkJFSAHCPkAKK0dvb2ds&quot; + 
-        &quot;ZS5Qcm90b2NvbEJ1ZmZlcnMuRXhhbXBsZXMuQWRkcmVzc0Jvb2sSEUFkZHJl&quot; + 
-        &quot;c3NCb29rUHJvdG9z&quot;),
-        new pbd::FileDescriptor[] {
+    private static pbd::FileDescriptor descriptor;
+    
+    static AddressBookProtos() {
+      byte[] descriptorData = global::System.Convert.FromBase64String(
+          &quot;Chp0dXRvcmlhbC9hZGRyZXNzYm9vay5wcm90bxIIdHV0b3JpYWwaJGdvb2ds&quot; + 
+          &quot;ZS9wcm90b2J1Zi9jc2hhcnBfb3B0aW9ucy5wcm90byLaAQoGUGVyc29uEgwK&quot; + 
+          &quot;BG5hbWUYASACKAkSCgoCaWQYAiACKAUSDQoFZW1haWwYAyABKAkSKwoFcGhv&quot; + 
+          &quot;bmUYBCADKAsyHC50dXRvcmlhbC5QZXJzb24uUGhvbmVOdW1iZXIaTQoLUGhv&quot; + 
+          &quot;bmVOdW1iZXISDgoGbnVtYmVyGAEgAigJEi4KBHR5cGUYAiABKA4yGi50dXRv&quot; + 
+          &quot;cmlhbC5QZXJzb24uUGhvbmVUeXBlOgRIT01FIisKCVBob25lVHlwZRIKCgZN&quot; + 
+          &quot;T0JJTEUQABIICgRIT01FEAESCAoEV09SSxACIi8KC0FkZHJlc3NCb29rEiAK&quot; + 
+          &quot;BnBlcnNvbhgBIAMoCzIQLnR1dG9yaWFsLlBlcnNvbkJFSAHCPkAKK0dvb2ds&quot; + 
+          &quot;ZS5Qcm90b2NvbEJ1ZmZlcnMuRXhhbXBsZXMuQWRkcmVzc0Jvb2sSEUFkZHJl&quot; + 
+          &quot;c3NCb29rUHJvdG9z&quot;);
+      pbd::FileDescriptor.InternalDescriptorAssigner assigner = delegate(pbd::FileDescriptor root) {
+        descriptor = root;
+        internal__static_tutorial_Person__Descriptor = Descriptor.MessageTypes[0];
+        internal__static_tutorial_Person__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.Examples.AddressBook.Person, global::Google.ProtocolBuffers.Examples.AddressBook.Person.Builder&gt;(internal__static_tutorial_Person__Descriptor,
+                new string[] { &quot;Name&quot;, &quot;Id&quot;, &quot;Email&quot;, &quot;Phone&quot;, });
+        internal__static_tutorial_Person_PhoneNumber__Descriptor = internal__static_tutorial_Person__Descriptor.NestedTypes[0];
+        internal__static_tutorial_Person_PhoneNumber__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.Examples.AddressBook.Person.Types.PhoneNumber, global::Google.ProtocolBuffers.Examples.AddressBook.Person.Types.PhoneNumber.Builder&gt;(internal__static_tutorial_Person_PhoneNumber__Descriptor,
+                new string[] { &quot;Number&quot;, &quot;Type&quot;, });
+        internal__static_tutorial_AddressBook__Descriptor = Descriptor.MessageTypes[1];
+        internal__static_tutorial_AddressBook__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.Examples.AddressBook.AddressBook, global::Google.ProtocolBuffers.Examples.AddressBook.AddressBook.Builder&gt;(internal__static_tutorial_AddressBook__Descriptor,
+                new string[] { &quot;Person&quot;, });
+        pb::ExtensionRegistry registry = pb::ExtensionRegistry.CreateInstance();
+        RegisterAllExtensions(registry);
+        global::Google.ProtocolBuffers.DescriptorProtos.CSharpOptions.RegisterAllExtensions(registry);
+        return registry;
+      };
+      pbd::FileDescriptor.InternalBuildGeneratedFileFrom(descriptorData,
+          new pbd::FileDescriptor[] {
           global::Google.ProtocolBuffers.DescriptorProtos.CSharpOptions.Descriptor, 
-        });
+          }, assigner);
+    }
     #endregion
     
-    #region Static variables
-    internal static readonly pbd::MessageDescriptor internal__static_tutorial_Person__Descriptor
-        = Descriptor.MessageTypes[0];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.Examples.AddressBook.Person, global::Google.ProtocolBuffers.Examples.AddressBook.Person.Builder&gt; internal__static_tutorial_Person__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.Examples.AddressBook.Person, global::Google.ProtocolBuffers.Examples.AddressBook.Person.Builder&gt;(internal__static_tutorial_Person__Descriptor,
-            new string[] { &quot;Name&quot;, &quot;Id&quot;, &quot;Email&quot;, &quot;Phone&quot;, });
-    internal static readonly pbd::MessageDescriptor internal__static_tutorial_Person_PhoneNumber__Descriptor
-        = internal__static_tutorial_Person__Descriptor.NestedTypes[0];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.Examples.AddressBook.Person.Types.PhoneNumber, global::Google.ProtocolBuffers.Examples.AddressBook.Person.Types.PhoneNumber.Builder&gt; internal__static_tutorial_Person_PhoneNumber__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.Examples.AddressBook.Person.Types.PhoneNumber, global::Google.ProtocolBuffers.Examples.AddressBook.Person.Types.PhoneNumber.Builder&gt;(internal__static_tutorial_Person_PhoneNumber__Descriptor,
-            new string[] { &quot;Number&quot;, &quot;Type&quot;, });
-    internal static readonly pbd::MessageDescriptor internal__static_tutorial_AddressBook__Descriptor
-        = Descriptor.MessageTypes[1];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.Examples.AddressBook.AddressBook, global::Google.ProtocolBuffers.Examples.AddressBook.AddressBook.Builder&gt; internal__static_tutorial_AddressBook__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.Examples.AddressBook.AddressBook, global::Google.ProtocolBuffers.Examples.AddressBook.AddressBook.Builder&gt;(internal__static_tutorial_AddressBook__Descriptor,
-            new string[] { &quot;Person&quot;, });
-    #endregion
   }
   #region Messages
   public sealed partial class Person : pb::GeneratedMessage&lt;Person, Person.Builder&gt; {
@@ -338,6 +356,9 @@ namespace Google.ProtocolBuffers.Examples.AddressBook {
             return this;
           }
         }
+        static PhoneNumber() {
+          pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.Examples.AddressBook.AddressBookProtos.Descriptor;
+        }
       }
       
     }
@@ -685,6 +706,9 @@ namespace Google.ProtocolBuffers.Examples.AddressBook {
         return this;
       }
     }
+    static Person() {
+      pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.Examples.AddressBook.AddressBookProtos.Descriptor;
+    }
   }
   
   public sealed partial class AddressBook : pb::GeneratedMessage&lt;AddressBook, AddressBook.Builder&gt; {
@@ -924,6 +948,9 @@ namespace Google.ProtocolBuffers.Examples.AddressBook {
         return this;
       }
     }
+    static AddressBook() {
+      pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.Examples.AddressBook.AddressBookProtos.Descriptor;
+    }
   }
   
   #endregion</diff>
      <filename>src/AddressBook/AddressBookProtos.cs</filename>
    </modified>
    <modified>
      <diff>@@ -5,6 +5,7 @@ namespace Google.ProtocolBuffers.ProtoGen {
     internal EnumGenerator(EnumDescriptor descriptor) : base(descriptor) {
     }
 
+    // TODO(jonskeet): Write out enum descriptors? Can be retrieved from file...
     public void Generate(TextGenerator writer) {
       writer.WriteLine(&quot;{0} enum {1} {{&quot;, ClassAccessLevel, Descriptor.Name);
       writer.Indent();</diff>
      <filename>src/ProtoGen/EnumGenerator.cs</filename>
    </modified>
    <modified>
      <diff>@@ -1,17 +1,18 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
 using Google.ProtocolBuffers.Descriptors;
 
 namespace Google.ProtocolBuffers.ProtoGen {
   internal class ExtensionGenerator : SourceGeneratorBase&lt;FieldDescriptor&gt;, ISourceGenerator {
-    internal ExtensionGenerator(FieldDescriptor descriptor) : base(descriptor) {
-    }
 
-    public void Generate(TextGenerator writer) {
-      string name = Descriptor.CSharpOptions.PropertyName;
+    private readonly string scope;
+    private readonly string type;
+    private readonly string name;
 
-      string type;
+    internal ExtensionGenerator(FieldDescriptor descriptor) : base(descriptor) {
+      if (Descriptor.ExtensionScope != null) {
+        scope = GetClassName(Descriptor.ExtensionScope);
+      } else {
+        scope = DescriptorUtil.GetFullUmbrellaClassName(Descriptor.File);
+      }
       switch (Descriptor.MappedType) {
         case MappedType.Message:
           type = GetClassName(Descriptor.MessageType);
@@ -23,16 +24,28 @@ namespace Google.ProtocolBuffers.ProtoGen {
           type = DescriptorUtil.GetMappedTypeName(Descriptor.MappedType);
           break;
       }
+      name = Descriptor.CSharpOptions.PropertyName;
+    }
 
+    public void Generate(TextGenerator writer) {
       writer.WriteLine (&quot;public const int {0} = {1};&quot;, GetFieldConstantName(Descriptor), Descriptor.FieldNumber);
       if (Descriptor.IsRepeated) {
-        writer.WriteLine(&quot;{0} static readonly&quot;, ClassAccessLevel);
-        writer.WriteLine(&quot;    pb::GeneratedExtensionBase&lt;scg::IList&lt;{0}&gt;&gt; {1} =&quot;, type, name);
-        writer.WriteLine(&quot;    pb::GeneratedRepeatExtension&lt;{0}&gt;.CreateInstance(Descriptor.Extensions[{1}]);&quot;, type, Descriptor.Index);
+        writer.WriteLine(&quot;{0} static pb::GeneratedExtensionBase&lt;scg::IList&lt;{1}&gt;&gt; {2};&quot;, ClassAccessLevel, type, name);
       } else {
-        writer.WriteLine(&quot;{0} static readonly pb::GeneratedExtensionBase&lt;{1}&gt; {2} =&quot;, ClassAccessLevel, type, name);
-        writer.WriteLine(&quot;    pb::GeneratedSingleExtension&lt;{0}&gt;.CreateInstance(Descriptor.Extensions[{1}]);&quot;, type, Descriptor.Index);
+        writer.WriteLine(&quot;{0} static pb::GeneratedExtensionBase&lt;{1}&gt; {2};&quot;, ClassAccessLevel, type, name);
       }
     }
+
+    internal void GenerateStaticVariableInitializers(TextGenerator writer) {
+      if (Descriptor.IsRepeated) {
+        writer.WriteLine(&quot;{0}.{1} = pb::GeneratedRepeatExtension&lt;{2}&gt;.CreateInstance({0}.Descriptor.Extensions[{3}]);&quot;, scope, name, type, Descriptor.Index);
+      } else {
+        writer.WriteLine(&quot;{0}.{1} = pb::GeneratedSingleExtension&lt;{2}&gt;.CreateInstance({0}.Descriptor.Extensions[{3}]);&quot;, scope, name, type, Descriptor.Index);
+      }
+    }
+
+    internal void GenerateExtensionRegistrationCode(TextGenerator writer) {
+      writer.WriteLine(&quot;registry.Add({0}.{1});&quot;, scope, name);
+    }
   }
 }</diff>
      <filename>src/ProtoGen/ExtensionGenerator.cs</filename>
    </modified>
    <modified>
      <diff>@@ -39,25 +39,42 @@ namespace Google.ProtocolBuffers.ProtoGen {
 
       // The descriptor for this type.
       string access = Descriptor.File.CSharpOptions.NestClasses ? &quot;private&quot; : &quot;internal&quot;;
-      writer.WriteLine(&quot;{0} static readonly pbd::MessageDescriptor internal__{1}__Descriptor&quot;, access, identifier);
+      writer.WriteLine(&quot;{0} static pbd::MessageDescriptor internal__{1}__Descriptor;&quot;, access, identifier);
+      writer.WriteLine(&quot;{0} static pb::FieldAccess.FieldAccessorTable&lt;{1}, {1}.Builder&gt; internal__{2}__FieldAccessorTable;&quot;,
+          access, FullClassName, identifier);
+
+      // Generate static members for all nested types.
+      foreach (MessageDescriptor nestedMessage in Descriptor.NestedTypes) {
+        new MessageGenerator(nestedMessage).GenerateStaticVariables(writer);
+      }
+    }
+
+    internal void GenerateStaticVariableInitializers(TextGenerator writer) {
+      string identifier = GetUniqueFileScopeIdentifier(Descriptor);
+
+      writer.Write(&quot;internal__{0}__Descriptor = &quot;, identifier);
       if (Descriptor.ContainingType == null) {
-        writer.WriteLine(&quot;    = Descriptor.MessageTypes[{0}];&quot;, Descriptor.Index);
+        writer.WriteLine(&quot;Descriptor.MessageTypes[{0}];&quot;, Descriptor.Index);
       } else {
-        writer.WriteLine(&quot;    = internal__{0}__Descriptor.NestedTypes[{1}];&quot;, GetUniqueFileScopeIdentifier(Descriptor.ContainingType), Descriptor.Index);
+        writer.WriteLine(&quot;internal__{0}__Descriptor.NestedTypes[{1}];&quot;, GetUniqueFileScopeIdentifier(Descriptor.ContainingType), Descriptor.Index);
       }
-      writer.WriteLine(&quot;{0} static pb::FieldAccess.FieldAccessorTable&lt;{1}, {1}.Builder&gt; internal__{2}__FieldAccessorTable&quot;,
-          access, FullClassName, identifier);
-      writer.WriteLine(&quot;    = new pb::FieldAccess.FieldAccessorTable&lt;{0}, {0}.Builder&gt;(internal__{1}__Descriptor,&quot;,
-          FullClassName, identifier);
+
+      writer.WriteLine(&quot;internal__{0}__FieldAccessorTable = &quot;, identifier);
+      writer.WriteLine(&quot;    new pb::FieldAccess.FieldAccessorTable&lt;{1}, {1}.Builder&gt;(internal__{0}__Descriptor,&quot;,
+          identifier, FullClassName);
       writer.Print(&quot;        new string[] { &quot;);
       foreach (FieldDescriptor field in Descriptor.Fields) {
         writer.Write(&quot;\&quot;{0}\&quot;, &quot;, field.CSharpOptions.PropertyName);
       }
       writer.WriteLine(&quot;});&quot;);
 
-      // Generate static members for all nested types.
+      // Generate static member initializers for all nested types.
       foreach (MessageDescriptor nestedMessage in Descriptor.NestedTypes) {
-        new MessageGenerator(nestedMessage).GenerateStaticVariables(writer);
+        new MessageGenerator(nestedMessage).GenerateStaticVariableInitializers(writer);
+      }
+
+      foreach (FieldDescriptor extension in Descriptor.Extensions) {
+        new ExtensionGenerator(extension).GenerateStaticVariableInitializers(writer);
       }
     }
 
@@ -119,6 +136,17 @@ namespace Google.ProtocolBuffers.ProtoGen {
 
       GenerateParseFromMethods(writer);
       GenerateBuilder(writer);
+
+      // Force the static initialization code for the file to run, since it may
+      // initialize static variables declared in this class.
+      writer.WriteLine(&quot;static {0}() {{&quot;, ClassName);
+      // Note that the variable is needed just so we can access the property
+      writer.WriteLine(&quot;  pbd::FileDescriptor descriptor = {0}.Descriptor;&quot;, DescriptorUtil.GetFullUmbrellaClassName(Descriptor));
+      writer.WriteLine(&quot;}&quot;);
+
+      writer.Outdent();
+      writer.WriteLine(&quot;}&quot;);
+      writer.WriteLine();
     }
 
     private void GenerateMessageSerializationMethods(TextGenerator writer) {
@@ -297,9 +325,6 @@ namespace Google.ProtocolBuffers.ProtoGen {
       }
       writer.Outdent();
       writer.WriteLine(&quot;}&quot;);
-      writer.Outdent();
-      writer.WriteLine(&quot;}&quot;);
-      writer.WriteLine();
     }
 
     private void GenerateCommonBuilderMethods(TextGenerator writer) {
@@ -472,5 +497,14 @@ namespace Google.ProtocolBuffers.ProtoGen {
       writer.WriteLine(&quot;}&quot;);
       writer.WriteLine();
     }
+
+    internal void GenerateExtensionRegistrationCode(TextGenerator writer) {
+      foreach (FieldDescriptor extension in Descriptor.Extensions) {
+        new ExtensionGenerator(extension).GenerateExtensionRegistrationCode(writer);
+      }
+      foreach (MessageDescriptor nestedMessage in Descriptor.NestedTypes) {
+        new MessageGenerator(nestedMessage).GenerateExtensionRegistrationCode(writer);
+      }
+    }
   }
 }</diff>
      <filename>src/ProtoGen/MessageGenerator.cs</filename>
    </modified>
    <modified>
      <diff>@@ -1,8 +1,4 @@
-using System;
-using System.Collections.Generic;
 using System.IO;
-using System.Text;
-using Google.ProtocolBuffers.Descriptors;
 
 namespace Google.ProtocolBuffers.ProtoGen {
   /// &lt;summary&gt;</diff>
      <filename>src/ProtoGen/SourceFileGenerator.cs</filename>
    </modified>
    <modified>
      <diff>@@ -31,7 +31,7 @@ namespace Google.ProtocolBuffers.ProtoGen {
     }
 
     internal static string GetFieldConstantName(FieldDescriptor field) {
-      return NameHelpers.UnderscoresToPascalCase(GetFieldName(field)) + &quot;FieldNumber&quot;;
+      return field.CSharpOptions.PropertyName + &quot;FieldNumber&quot;;
     }
 
     private static string ToCSharpName(string name, FileDescriptor file) {</diff>
      <filename>src/ProtoGen/SourceGeneratorBase.cs</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,6 @@
 using System;
+using System.Collections;
+using System.Collections.Generic;
 using Google.ProtocolBuffers.DescriptorProtos;
 using Google.ProtocolBuffers.Descriptors;
 
@@ -13,19 +15,49 @@ namespace Google.ProtocolBuffers.ProtoGen {
       : base(descriptor) {
     }
 
+    // Recursively searches the given message to see if it contains any extensions.
+    private static bool UsesExtensions(IMessage message) {
+      // We conservatively assume that unknown fields are extensions.
+      if (message.UnknownFields.FieldDictionary.Count &gt; 0) {
+        return true;
+      }
+
+      foreach (KeyValuePair&lt;FieldDescriptor, object&gt; keyValue in message.AllFields) {
+        FieldDescriptor field = keyValue.Key;
+        if (field.IsExtension) {
+          return true;
+        }
+        if (field.MappedType == MappedType.Message) {
+          if (field.IsRepeated) {
+            foreach (IMessage subMessage in (IEnumerable)keyValue.Value) {
+              if (UsesExtensions(subMessage)) {
+                return true;
+              }
+            }
+          } else {
+            if (UsesExtensions((IMessage)keyValue.Value)) {
+              return true;
+            }
+          }
+        }
+      }
+      return false;
+    }
+
     public string UmbrellaClassName {
       get { throw new NotImplementedException(); }
     }
 
     public void Generate(TextGenerator writer) {
       WriteIntroduction(writer);
-      WriteDescriptor(writer);
+      WriteExtensionRegistration(writer);
       WriteChildren(writer, &quot;Extensions&quot;, Descriptor.Extensions);
       writer.WriteLine(&quot;#region Static variables&quot;);
       foreach (MessageDescriptor message in Descriptor.MessageTypes) {
         new MessageGenerator(message).GenerateStaticVariables(writer);
       }
       writer.WriteLine(&quot;#endregion&quot;);
+      WriteDescriptor(writer);
       // The class declaration either gets closed before or after the children are written.
       if (!Descriptor.CSharpOptions.NestClasses) {
         writer.Outdent();
@@ -60,14 +92,32 @@ namespace Google.ProtocolBuffers.ProtoGen {
       writer.Indent();
     }
 
+    private void WriteExtensionRegistration(TextGenerator writer) {
+      writer.WriteLine(&quot;#region Extension registration&quot;);
+      writer.WriteLine(&quot;public static void RegisterAllExtensions(pb::ExtensionRegistry registry) {&quot;);
+      writer.Indent();
+      foreach (FieldDescriptor extension in Descriptor.Extensions) {
+        new ExtensionGenerator(extension).GenerateExtensionRegistrationCode(writer);
+      }
+      foreach (MessageDescriptor message in Descriptor.MessageTypes) {
+        new MessageGenerator(message).GenerateExtensionRegistrationCode(writer);
+      }
+      writer.Outdent();
+      writer.WriteLine(&quot;}&quot;);
+      writer.WriteLine(&quot;#endregion&quot;);
+    }
+
     private void WriteDescriptor(TextGenerator writer) {
       writer.WriteLine(&quot;#region Descriptor&quot;);
 
       writer.WriteLine(&quot;public static pbd::FileDescriptor Descriptor {&quot;);
       writer.WriteLine(&quot;  get { return descriptor; }&quot;);
       writer.WriteLine(&quot;}&quot;);
-      writer.WriteLine(&quot;private static readonly pbd::FileDescriptor descriptor = pbd::FileDescriptor.InternalBuildGeneratedFileFrom(&quot;);
-      writer.WriteLine(&quot;    global::System.Convert.FromBase64String(&quot;);
+      writer.WriteLine(&quot;private static pbd::FileDescriptor descriptor;&quot;);
+      writer.WriteLine();
+      writer.WriteLine(&quot;static {0}() {{&quot;, Descriptor.CSharpOptions.UmbrellaClassname);
+      writer.Indent();
+      writer.WriteLine(&quot;byte[] descriptorData = global::System.Convert.FromBase64String(&quot;);
       writer.Indent();
       writer.Indent();
 
@@ -79,15 +129,44 @@ namespace Google.ProtocolBuffers.ProtoGen {
         writer.WriteLine(&quot;\&quot;{0}\&quot; + &quot;, base64.Substring(0, 60));
         base64 = base64.Substring(60);
       }
-      writer.WriteLine(&quot;\&quot;{0}\&quot;),&quot;, base64);
+      writer.WriteLine(&quot;\&quot;{0}\&quot;);&quot;, base64);
+      writer.Outdent();
+      writer.Outdent();
+      writer.WriteLine(&quot;pbd::FileDescriptor.InternalDescriptorAssigner assigner = delegate(pbd::FileDescriptor root) {&quot;);
+      writer.Indent();
+      writer.WriteLine(&quot;descriptor = root;&quot;);
+      foreach (MessageDescriptor message in Descriptor.MessageTypes) {
+        new MessageGenerator(message).GenerateStaticVariableInitializers(writer);
+      }
+      foreach (FieldDescriptor extension in Descriptor.Extensions) {
+        new ExtensionGenerator(extension).GenerateStaticVariableInitializers(writer);
+      }
 
-      writer.WriteLine(&quot;new pbd::FileDescriptor[] {&quot;);
-      foreach (FileDescriptor dependency in Descriptor.Dependencies) {
-        writer.WriteLine(&quot;  {0}.Descriptor, &quot;, DescriptorUtil.GetFullUmbrellaClassName(dependency));
+      if (UsesExtensions(Descriptor.Proto)) {
+        // Must construct an ExtensionRegistry containing all possible extensions
+        // and return it.
+        writer.WriteLine(&quot;pb::ExtensionRegistry registry = pb::ExtensionRegistry.CreateInstance();&quot;);
+        writer.WriteLine(&quot;RegisterAllExtensions(registry);&quot;);
+        foreach (FileDescriptor dependency in Descriptor.Dependencies) {
+          writer.WriteLine(&quot;{0}.RegisterAllExtensions(registry);&quot;, DescriptorUtil.GetFullUmbrellaClassName(dependency));
+        }
+        writer.WriteLine(&quot;return registry;&quot;);
+      } else {
+        writer.WriteLine(&quot;return null;&quot;);
       }
-      writer.WriteLine(&quot;});&quot;);
       writer.Outdent();
+      writer.WriteLine(&quot;};&quot;);
+
+      // -----------------------------------------------------------------
+      // Invoke internalBuildGeneratedFileFrom() to build the file.
+      writer.WriteLine(&quot;pbd::FileDescriptor.InternalBuildGeneratedFileFrom(descriptorData,&quot;);
+      writer.WriteLine(&quot;    new pbd::FileDescriptor[] {&quot;);
+      foreach (FileDescriptor dependency in Descriptor.Dependencies) {
+        writer.WriteLine(&quot;    {0}.Descriptor, &quot;, DescriptorUtil.GetFullUmbrellaClassName(dependency));
+      }
+      writer.WriteLine(&quot;    }, assigner);&quot;);
       writer.Outdent();
+      writer.WriteLine(&quot;}&quot;);
       writer.WriteLine(&quot;#endregion&quot;);
       writer.WriteLine();
     }</diff>
      <filename>src/ProtoGen/UmbrellaClassGenerator.cs</filename>
    </modified>
    <modified>
      <diff>@@ -397,7 +397,7 @@ namespace Google.ProtocolBuffers {
       try {
         input.ReadRawByte();
         Assert.Fail(&quot;Should have thrown an exception!&quot;);
-      } catch (InvalidProtocolBufferException e) {
+      } catch (InvalidProtocolBufferException) {
         // Success.
       }
 
@@ -407,7 +407,7 @@ namespace Google.ProtocolBuffers {
       try {
         input.ReadRawBytes(16);  // Hits limit again.
         Assert.Fail(&quot;Should have thrown an exception!&quot;);
-      } catch (InvalidProtocolBufferException e) {
+      } catch (InvalidProtocolBufferException) {
         // Success.
       }
     }</diff>
      <filename>src/ProtocolBuffers.Test/CodedInputStreamTest.cs</filename>
    </modified>
    <modified>
      <diff>@@ -286,5 +286,41 @@ namespace Google.ProtocolBuffers {
         Assert.AreEqual(i, service.Methods[i].Index);
       }
     }
+
+    [Test]
+    public void CustomOptions() {
+      MessageDescriptor descriptor = TestMessageWithCustomOptions.Descriptor;
+      Assert.IsTrue(descriptor.Options.HasExtension(UnitTestCustomOptionsProtoFile.MessageOpt1));
+      Assert.AreEqual(-56, descriptor.Options.GetExtension(UnitTestCustomOptionsProtoFile.MessageOpt1));
+
+
+      FieldDescriptor field = descriptor.FindFieldByName(&quot;field1&quot;);
+      Assert.IsNotNull(field);
+
+      Assert.IsTrue(field.Options.HasExtension(UnitTestCustomOptionsProtoFile.FieldOpt1));
+      Assert.AreEqual(8765432109L, field.Options.GetExtension(UnitTestCustomOptionsProtoFile.FieldOpt1));
+
+      // TODO: Write out enum descriptors
+      /*
+      EnumDescriptor enumType = TestMessageWithCustomOptions.Types.
+        UnittestCustomOptions.TestMessageWithCustomOptions.AnEnum.getDescriptor();
+
+      Assert.IsTrue(
+        enumType.getOptions().hasExtension(UnittestCustomOptions.enumOpt1));
+      Assert.AreEqual(Integer.valueOf(-789),
+        enumType.getOptions().getExtension(UnittestCustomOptions.enumOpt1));
+        */
+
+      ServiceDescriptor service = TestServiceWithCustomOptions.Descriptor;
+
+      Assert.IsTrue(service.Options.HasExtension(UnitTestCustomOptionsProtoFile.ServiceOpt1));
+      Assert.AreEqual(-9876543210L, service.Options.GetExtension(UnitTestCustomOptionsProtoFile.ServiceOpt1));
+
+      MethodDescriptor method = service.FindMethodByName(&quot;Foo&quot;);
+      Assert.IsNotNull(method);
+
+      Assert.IsTrue(method.Options.HasExtension(UnitTestCustomOptionsProtoFile.MethodOpt1));
+      Assert.AreEqual(MethodOpt1.METHODOPT1_VAL2, method.Options.GetExtension(UnitTestCustomOptionsProtoFile.MethodOpt1));
+    }
   }
 }</diff>
      <filename>src/ProtocolBuffers.Test/DescriptorsTest.cs</filename>
    </modified>
    <modified>
      <diff>@@ -64,7 +64,7 @@ namespace Google.ProtocolBuffers {
       try {
         builder.Build();
         Assert.Fail(&quot;Should have thrown exception.&quot;);
-      } catch (InvalidOperationException e) {
+      } catch (InvalidOperationException) {
         // Success.
       }
     }</diff>
      <filename>src/ProtocolBuffers.Test/DynamicMessageTest.cs</filename>
    </modified>
    <modified>
      <diff>@@ -97,7 +97,7 @@ namespace Google.ProtocolBuffers {
       try {
         builder.Build();
         Assert.Fail(&quot;Should have thrown exception.&quot;);
-      } catch (InvalidOperationException e) {
+      } catch (InvalidOperationException) {
         // Success.
       }
     }</diff>
      <filename>src/ProtocolBuffers.Test/GeneratedMessageTest.cs</filename>
    </modified>
    <modified>
      <diff>@@ -53,6 +53,7 @@
     &lt;Compile Include=&quot;Collections\PopsicleListTest.cs&quot; /&gt;
     &lt;Compile Include=&quot;CSharpOptionsTest.cs&quot; /&gt;
     &lt;Compile Include=&quot;DescriptorsTest.cs&quot; /&gt;
+    &lt;Compile Include=&quot;Descriptors\MessageDescriptorTest.cs&quot; /&gt;
     &lt;Compile Include=&quot;DynamicMessageTest.cs&quot; /&gt;
     &lt;Compile Include=&quot;GeneratedMessageTest.cs&quot; /&gt;
     &lt;Compile Include=&quot;MessageStreamIteratorTest.cs&quot; /&gt;
@@ -63,6 +64,8 @@
     &lt;Compile Include=&quot;Properties\AssemblyInfo.cs&quot; /&gt;
     &lt;Compile Include=&quot;ReflectionTester.cs&quot; /&gt;
     &lt;Compile Include=&quot;ServiceTest.cs&quot; /&gt;
+    &lt;Compile Include=&quot;TestProtos\UnitTestCSharpOptionsProtoFile.cs&quot; /&gt;
+    &lt;Compile Include=&quot;TestProtos\UnitTestCustomOptionsProtoFile.cs&quot; /&gt;
     &lt;Compile Include=&quot;TestProtos\UnitTestEmbedOptimizeForProtoFile.cs&quot; /&gt;
     &lt;Compile Include=&quot;TestProtos\UnitTestImportProtoFile.cs&quot; /&gt;
     &lt;Compile Include=&quot;TestProtos\UnitTestMessageSetProtoFile.cs&quot; /&gt;</diff>
      <filename>src/ProtocolBuffers.Test/ProtocolBuffers.Test.csproj</filename>
    </modified>
    <modified>
      <diff>@@ -8,298 +8,365 @@ namespace Google.ProtocolBuffers.TestProtos {
   
   public static partial class UnitTestCustomOptionsProtoFile {
   
-    #region Descriptor
-    public static pbd::FileDescriptor Descriptor {
-      get { return descriptor; }
+    #region Extension registration
+    public static void RegisterAllExtensions(pb::ExtensionRegistry registry) {
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.FileOpt1);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.MessageOpt1);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.FieldOpt1);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.FieldOpt2);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.EnumOpt1);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.ServiceOpt1);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.MethodOpt1);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.BoolOpt);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Int32Opt);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Int64Opt);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Uint32Opt);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Uint64Opt);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Sint32Opt);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Sint64Opt);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Fixed32Opt);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Fixed64Opt);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Sfixed32Opt);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Sfixed64Opt);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.FloatOpt);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.DoubleOpt);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.StringOpt);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.BytesOpt);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.EnumOpt);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.MessageTypeOpt);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Quux);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Corge);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Grault);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Garply);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.ComplexOpt1);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.ComplexOpt2);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.ComplexOpt3);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.ComplexOpt6);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.ComplexOptionType2.Types.ComplexOptionType4.ComplexOpt4);
     }
-    private static readonly pbd::FileDescriptor descriptor = pbd::FileDescriptor.InternalBuildGeneratedFileFrom(
-        global::System.Convert.FromBase64String(
-        &quot;Ci1nb29nbGUvcHJvdG9idWYvdW5pdHRlc3RfY3VzdG9tX29wdGlvbnMucHJv&quot; + 
-        &quot;dG8SEXByb3RvYnVmX3VuaXR0ZXN0GiRnb29nbGUvcHJvdG9idWYvY3NoYXJw&quot; + 
-        &quot;X29wdGlvbnMucHJvdG8aIGdvb2dsZS9wcm90b2J1Zi9kZXNjcmlwdG9yLnBy&quot; + 
-        &quot;b3RvIoYBChxUZXN0TWVzc2FnZVdpdGhDdXN0b21PcHRpb25zEh4KBmZpZWxk&quot; + 
-        &quot;MRgBIAEoCUIOCAHB4MMdLeF1CgIAAAAiNAoGQW5FbnVtEg8KC0FORU5VTV9W&quot; + 
-        &quot;QUwxEAESDwoLQU5FTlVNX1ZBTDIQAhoIxfbJHev8//86EAgA4OnCHcj/////&quot; + 
-        &quot;/////wEiGAoWQ3VzdG9tT3B0aW9uRm9vUmVxdWVzdCIZChdDdXN0b21PcHRp&quot; + 
-        &quot;b25Gb29SZXNwb25zZSJtChpEdW1teU1lc3NhZ2VDb250YWluaW5nRW51bSJP&quot; + 
-        &quot;CgxUZXN0RW51bVR5cGUSGgoWVEVTVF9PUFRJT05fRU5VTV9UWVBFMRAWEiMK&quot; + 
-        &quot;FlRFU1RfT1BUSU9OX0VOVU1fVFlQRTIQ6f//////////ASIhCh9EdW1teU1l&quot; + 
-        &quot;c3NhZ2VJbnZhbGlkQXNPcHRpb25UeXBlIooBChxDdXN0b21PcHRpb25NaW5J&quot; + 
-        &quot;bnRlZ2VyVmFsdWVzOmqZ1qgdAAAAAAAAAICtja8dAAAAgJHurx0AAAAAAAAA&quot; + 
-        &quot;AJ31rx0AAAAA+JewHf///////////wGAxLAd/////w/49bAdAICTsh0AsLyy&quot; + 
-        &quot;HYCAgICAgICAgAHoxrIdgICAgPj/////AdDesh0AIpEBChxDdXN0b21PcHRp&quot; + 
-        &quot;b25NYXhJbnRlZ2VyVmFsdWVzOnGZ1qgd/////////3+tja8d////f5Hurx3/&quot; + 
-        &quot;/////////531rx3/////+JewHf7//////////wGAxLAd/v///w/49bAd////&quot; + 
-        &quot;////////AYCTsh3/////D7C8sh3//////////3/oxrId/////wfQ3rIdASJu&quot; + 
-        &quot;ChdDdXN0b21PcHRpb25PdGhlclZhbHVlczpTiNmiHen//////////wGy2aId&quot; + 
-        &quot;C0hlbGxvAFdvcmxkqtyiHQ5IZWxsbywgIldvcmxkIuncoh37WYxCysDzP/Xf&quot; + 
-        &quot;ox3nh0VB6MayHZz//////////wEiNAocU2V0dGluZ1JlYWxzRnJvbVBvc2l0&quot; + 
-        &quot;aXZlSW50czoU6dyiHQAAAAAAQGNA9d+jHQAAQEEiNAocU2V0dGluZ1JlYWxz&quot; + 
-        &quot;RnJvbU5lZ2F0aXZlSW50czoU6dyiHQAAAAAAQGPA9d+jHQAAQMEiKwoSQ29t&quot; + 
-        &quot;cGxleE9wdGlvblR5cGUxEgsKA2ZvbxgBIAEoBSoICGQQgICAgAIiwQIKEkNv&quot; + 
-        &quot;bXBsZXhPcHRpb25UeXBlMhIyCgNiYXIYASABKAsyJS5wcm90b2J1Zl91bml0&quot; + 
-        &quot;dGVzdC5Db21wbGV4T3B0aW9uVHlwZTESCwoDYmF6GAIgASgFEkYKBGZyZWQY&quot; + 
-        &quot;AyABKAsyOC5wcm90b2J1Zl91bml0dGVzdC5Db21wbGV4T3B0aW9uVHlwZTIu&quot; + 
-        &quot;Q29tcGxleE9wdGlvblR5cGU0GpcBChJDb21wbGV4T3B0aW9uVHlwZTQSDQoF&quot; + 
-        &quot;d2FsZG8YASABKAUycgoMY29tcGxleF9vcHQ0Eh8uZ29vZ2xlLnByb3RvYnVm&quot; + 
-        &quot;Lk1lc3NhZ2VPcHRpb25zGIr10QMgASgLMjgucHJvdG9idWZfdW5pdHRlc3Qu&quot; + 
-        &quot;Q29tcGxleE9wdGlvblR5cGUyLkNvbXBsZXhPcHRpb25UeXBlNCoICGQQgICA&quot; + 
-        &quot;gAIinAEKEkNvbXBsZXhPcHRpb25UeXBlMxILCgNxdXgYASABKAUSVAoSY29t&quot; + 
-        &quot;cGxleG9wdGlvbnR5cGU1GAIgASgKMjgucHJvdG9idWZfdW5pdHRlc3QuQ29t&quot; + 
-        &quot;cGxleE9wdGlvblR5cGUzLkNvbXBsZXhPcHRpb25UeXBlNRojChJDb21wbGV4&quot; + 
-        &quot;T3B0aW9uVHlwZTUSDQoFcGx1Z2gYAyABKAUiHwoLQ29tcGxleE9wdDYSEAoF&quot; + 
-        &quot;eHl6enkY37/PAyABKAUi0AEKFVZhcmlvdXNDb21wbGV4T3B0aW9uczq2AePc&quot; + 
-        &quot;/Bz4/fscGOTc/BzSqI8dAwizD/rekB0CCAn63pAdBBMYFhSq/ZAdAxDbB6r9&quot; + 
-        &quot;kB0G+OaXHY4Fqv2QHQUKAwjnBar9kB0ICgbYhZ4dzw+q/ZAdCgoIkvWdHQMI&quot; + 
-        &quot;2A+q/ZAdCMKslx0DCOUFqv2QHQvCrJcdBtiFnh3OD6r9kB0NwqyXHQiS9Z0d&quot; + 
-        &quot;AwjJEKr9kB0FGgMIwQKi4pUdAggqouKVHQbYhZ4dxAKi4pUdCJL1nR0DCOwG&quot; + 
-        &quot;KjYKCk1ldGhvZE9wdDESEwoPTUVUSE9ET1BUMV9WQUwxEAESEwoPTUVUSE9E&quot; + 
-        &quot;T1BUMV9WQUwyEAIyjgEKHFRlc3RTZXJ2aWNlV2l0aEN1c3RvbU9wdGlvbnMS&quot; + 
-        &quot;YwoDRm9vEikucHJvdG9idWZfdW5pdHRlc3QuQ3VzdG9tT3B0aW9uRm9vUmVx&quot; + 
-        &quot;dWVzdBoqLnByb3RvYnVmX3VuaXR0ZXN0LkN1c3RvbU9wdGlvbkZvb1Jlc3Bv&quot; + 
-        &quot;bnNlIgXg+oweAhoJkLKLHtPbgMtJOjIKCWZpbGVfb3B0MRIcLmdvb2dsZS5w&quot; + 
-        &quot;cm90b2J1Zi5GaWxlT3B0aW9ucxiOndgDIAEoBDo4CgxtZXNzYWdlX29wdDES&quot; + 
-        &quot;Hy5nb29nbGUucHJvdG9idWYuTWVzc2FnZU9wdGlvbnMYnK3YAyABKAU6NAoK&quot; + 
-        &quot;ZmllbGRfb3B0MRIdLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE9wdGlvbnMYiLzY&quot; + 
-        &quot;AyABKAY6OAoKZmllbGRfb3B0MhIdLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE9w&quot; + 
-        &quot;dGlvbnMYuaHZAyABKAU6AjQyOjIKCWVudW1fb3B0MRIcLmdvb2dsZS5wcm90&quot; + 
-        &quot;b2J1Zi5FbnVtT3B0aW9ucxjontkDIAEoDzo4CgxzZXJ2aWNlX29wdDESHy5n&quot; + 
-        &quot;b29nbGUucHJvdG9idWYuU2VydmljZU9wdGlvbnMYorbhAyABKBI6VQoLbWV0&quot; + 
-        &quot;aG9kX29wdDESHi5nb29nbGUucHJvdG9idWYuTWV0aG9kT3B0aW9ucxisz+ED&quot; + 
-        &quot;IAEoDjIdLnByb3RvYnVmX3VuaXR0ZXN0Lk1ldGhvZE9wdDE6NAoIYm9vbF9v&quot; + 
-        &quot;cHQSHy5nb29nbGUucHJvdG9idWYuTWVzc2FnZU9wdGlvbnMY6qvWAyABKAg6&quot; + 
-        &quot;NQoJaW50MzJfb3B0Eh8uZ29vZ2xlLnByb3RvYnVmLk1lc3NhZ2VPcHRpb25z&quot; + 
-        &quot;GO2o1gMgASgFOjUKCWludDY0X29wdBIfLmdvb2dsZS5wcm90b2J1Zi5NZXNz&quot; + 
-        &quot;YWdlT3B0aW9ucxjGp9YDIAEoAzo2Cgp1aW50MzJfb3B0Eh8uZ29vZ2xlLnBy&quot; + 
-        &quot;b3RvYnVmLk1lc3NhZ2VPcHRpb25zGLCi1gMgASgNOjYKCnVpbnQ2NF9vcHQS&quot; + 
-        &quot;Hy5nb29nbGUucHJvdG9idWYuTWVzc2FnZU9wdGlvbnMY347WAyABKAQ6NgoK&quot; + 
-        &quot;c2ludDMyX29wdBIfLmdvb2dsZS5wcm90b2J1Zi5NZXNzYWdlT3B0aW9ucxjA&quot; + 
-        &quot;iNYDIAEoETo2CgpzaW50NjRfb3B0Eh8uZ29vZ2xlLnByb3RvYnVmLk1lc3Nh&quot; + 
-        &quot;Z2VPcHRpb25zGP+C1gMgASgSOjcKC2ZpeGVkMzJfb3B0Eh8uZ29vZ2xlLnBy&quot; + 
-        &quot;b3RvYnVmLk1lc3NhZ2VPcHRpb25zGNP+1QMgASgHOjcKC2ZpeGVkNjRfb3B0&quot; + 
-        &quot;Eh8uZ29vZ2xlLnByb3RvYnVmLk1lc3NhZ2VPcHRpb25zGOL91QMgASgGOjgK&quot; + 
-        &quot;DHNmaXhlZDMyX29wdBIfLmdvb2dsZS5wcm90b2J1Zi5NZXNzYWdlT3B0aW9u&quot; + 
-        &quot;cxjV8dUDIAEoDzo4CgxzZml4ZWQ2NF9vcHQSHy5nb29nbGUucHJvdG9idWYu&quot; + 
-        &quot;TWVzc2FnZU9wdGlvbnMY44rVAyABKBA6NQoJZmxvYXRfb3B0Eh8uZ29vZ2xl&quot; + 
-        &quot;LnByb3RvYnVmLk1lc3NhZ2VPcHRpb25zGP671AMgASgCOjYKCmRvdWJsZV9v&quot; + 
-        &quot;cHQSHy5nb29nbGUucHJvdG9idWYuTWVzc2FnZU9wdGlvbnMYzavUAyABKAE6&quot; + 
-        &quot;NgoKc3RyaW5nX29wdBIfLmdvb2dsZS5wcm90b2J1Zi5NZXNzYWdlT3B0aW9u&quot; + 
-        &quot;cxjFq9QDIAEoCTo1CglieXRlc19vcHQSHy5nb29nbGUucHJvdG9idWYuTWVz&quot; + 
-        &quot;c2FnZU9wdGlvbnMYlqvUAyABKAw6cAoIZW51bV9vcHQSHy5nb29nbGUucHJv&quot; + 
-        &quot;dG9idWYuTWVzc2FnZU9wdGlvbnMYkavUAyABKA4yOi5wcm90b2J1Zl91bml0&quot; + 
-        &quot;dGVzdC5EdW1teU1lc3NhZ2VDb250YWluaW5nRW51bS5UZXN0RW51bVR5cGU6&quot; + 
-        &quot;cAoQbWVzc2FnZV90eXBlX29wdBIfLmdvb2dsZS5wcm90b2J1Zi5NZXNzYWdl&quot; + 
-        &quot;T3B0aW9ucxiv8tMDIAEoCzIyLnByb3RvYnVmX3VuaXR0ZXN0LkR1bW15TWVz&quot; + 
-        &quot;c2FnZUludmFsaWRBc09wdGlvblR5cGU6NgoEcXV1eBIlLnByb3RvYnVmX3Vu&quot; + 
-        &quot;aXR0ZXN0LkNvbXBsZXhPcHRpb25UeXBlMRjb4NMDIAEoBTpeCgVjb3JnZRIl&quot; + 
-        &quot;LnByb3RvYnVmX3VuaXR0ZXN0LkNvbXBsZXhPcHRpb25UeXBlMRjS3tMDIAEo&quot; + 
-        &quot;CzIlLnByb3RvYnVmX3VuaXR0ZXN0LkNvbXBsZXhPcHRpb25UeXBlMzo4CgZn&quot; + 
-        &quot;cmF1bHQSJS5wcm90b2J1Zl91bml0dGVzdC5Db21wbGV4T3B0aW9uVHlwZTIY&quot; + 
-        &quot;7/zSAyABKAU6XwoGZ2FycGx5EiUucHJvdG9idWZfdW5pdHRlc3QuQ29tcGxl&quot; + 
-        &quot;eE9wdGlvblR5cGUyGMj10gMgASgLMiUucHJvdG9idWZfdW5pdHRlc3QuQ29t&quot; + 
-        &quot;cGxleE9wdGlvblR5cGUxOl8KDGNvbXBsZXhfb3B0MRIfLmdvb2dsZS5wcm90&quot; + 
-        &quot;b2J1Zi5NZXNzYWdlT3B0aW9ucxik3NIDIAEoCzIlLnByb3RvYnVmX3VuaXR0&quot; + 
-        &quot;ZXN0LkNvbXBsZXhPcHRpb25UeXBlMTpfCgxjb21wbGV4X29wdDISHy5nb29n&quot; + 
-        &quot;bGUucHJvdG9idWYuTWVzc2FnZU9wdGlvbnMY1Y/SAyABKAsyJS5wcm90b2J1&quot; + 
-        &quot;Zl91bml0dGVzdC5Db21wbGV4T3B0aW9uVHlwZTI6XwoMY29tcGxleF9vcHQz&quot; + 
-        &quot;Eh8uZ29vZ2xlLnByb3RvYnVmLk1lc3NhZ2VPcHRpb25zGO+L0gMgASgLMiUu&quot; + 
-        &quot;cHJvdG9idWZfdW5pdHRlc3QuQ29tcGxleE9wdGlvblR5cGUzOlcKC2NvbXBs&quot; + 
-        &quot;ZXhvcHQ2Eh8uZ29vZ2xlLnByb3RvYnVmLk1lc3NhZ2VPcHRpb25zGMzLzwMg&quot; + 
-        &quot;ASgKMh4ucHJvdG9idWZfdW5pdHRlc3QuQ29tcGxleE9wdDZCT8I+QwohR29v&quot; + 
-        &quot;Z2xlLlByb3RvY29sQnVmZmVycy5UZXN0UHJvdG9zEh5Vbml0VGVzdEN1c3Rv&quot; + 
-        &quot;bU9wdGlvbnNQcm90b0ZpbGXw6MEd6q3A5SQ=&quot;),
-        new pbd::FileDescriptor[] {
-          global::Google.ProtocolBuffers.DescriptorProtos.CSharpOptions.Descriptor, 
-          global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.Descriptor, 
-        });
     #endregion
-    
     #region Extensions
     public const int FileOpt1FieldNumber = 7736974;
-    public static readonly pb::GeneratedExtensionBase&lt;ulong&gt; FileOpt1 =
-        pb::GeneratedSingleExtension&lt;ulong&gt;.CreateInstance(Descriptor.Extensions[0]);
+    public static pb::GeneratedExtensionBase&lt;ulong&gt; FileOpt1;
     public const int MessageOpt1FieldNumber = 7739036;
-    public static readonly pb::GeneratedExtensionBase&lt;int&gt; MessageOpt1 =
-        pb::GeneratedSingleExtension&lt;int&gt;.CreateInstance(Descriptor.Extensions[1]);
+    public static pb::GeneratedExtensionBase&lt;int&gt; MessageOpt1;
     public const int FieldOpt1FieldNumber = 7740936;
-    public static readonly pb::GeneratedExtensionBase&lt;ulong&gt; FieldOpt1 =
-        pb::GeneratedSingleExtension&lt;ulong&gt;.CreateInstance(Descriptor.Extensions[2]);
+    public static pb::GeneratedExtensionBase&lt;ulong&gt; FieldOpt1;
     public const int FieldOpt2FieldNumber = 7753913;
-    public static readonly pb::GeneratedExtensionBase&lt;int&gt; FieldOpt2 =
-        pb::GeneratedSingleExtension&lt;int&gt;.CreateInstance(Descriptor.Extensions[3]);
+    public static pb::GeneratedExtensionBase&lt;int&gt; FieldOpt2;
     public const int EnumOpt1FieldNumber = 7753576;
-    public static readonly pb::GeneratedExtensionBase&lt;int&gt; EnumOpt1 =
-        pb::GeneratedSingleExtension&lt;int&gt;.CreateInstance(Descriptor.Extensions[4]);
+    public static pb::GeneratedExtensionBase&lt;int&gt; EnumOpt1;
     public const int ServiceOpt1FieldNumber = 7887650;
-    public static readonly pb::GeneratedExtensionBase&lt;long&gt; ServiceOpt1 =
-        pb::GeneratedSingleExtension&lt;long&gt;.CreateInstance(Descriptor.Extensions[5]);
+    public static pb::GeneratedExtensionBase&lt;long&gt; ServiceOpt1;
     public const int MethodOpt1FieldNumber = 7890860;
-    public static readonly pb::GeneratedExtensionBase&lt;global::Google.ProtocolBuffers.TestProtos.MethodOpt1&gt; MethodOpt1 =
-        pb::GeneratedSingleExtension&lt;global::Google.ProtocolBuffers.TestProtos.MethodOpt1&gt;.CreateInstance(Descriptor.Extensions[6]);
+    public static pb::GeneratedExtensionBase&lt;global::Google.ProtocolBuffers.TestProtos.MethodOpt1&gt; MethodOpt1;
     public const int BoolOptFieldNumber = 7706090;
-    public static readonly pb::GeneratedExtensionBase&lt;bool&gt; BoolOpt =
-        pb::GeneratedSingleExtension&lt;bool&gt;.CreateInstance(Descriptor.Extensions[7]);
+    public static pb::GeneratedExtensionBase&lt;bool&gt; BoolOpt;
     public const int Int32OptFieldNumber = 7705709;
-    public static readonly pb::GeneratedExtensionBase&lt;int&gt; Int32Opt =
-        pb::GeneratedSingleExtension&lt;int&gt;.CreateInstance(Descriptor.Extensions[8]);
+    public static pb::GeneratedExtensionBase&lt;int&gt; Int32Opt;
     public const int Int64OptFieldNumber = 7705542;
-    public static readonly pb::GeneratedExtensionBase&lt;long&gt; Int64Opt =
-        pb::GeneratedSingleExtension&lt;long&gt;.CreateInstance(Descriptor.Extensions[9]);
+    public static pb::GeneratedExtensionBase&lt;long&gt; Int64Opt;
     public const int Uint32OptFieldNumber = 7704880;
-    public static readonly pb::GeneratedExtensionBase&lt;uint&gt; Uint32Opt =
-        pb::GeneratedSingleExtension&lt;uint&gt;.CreateInstance(Descriptor.Extensions[10]);
+    public static pb::GeneratedExtensionBase&lt;uint&gt; Uint32Opt;
     public const int Uint64OptFieldNumber = 7702367;
-    public static readonly pb::GeneratedExtensionBase&lt;ulong&gt; Uint64Opt =
-        pb::GeneratedSingleExtension&lt;ulong&gt;.CreateInstance(Descriptor.Extensions[11]);
+    public static pb::GeneratedExtensionBase&lt;ulong&gt; Uint64Opt;
     public const int Sint32OptFieldNumber = 7701568;
-    public static readonly pb::GeneratedExtensionBase&lt;int&gt; Sint32Opt =
-        pb::GeneratedSingleExtension&lt;int&gt;.CreateInstance(Descriptor.Extensions[12]);
+    public static pb::GeneratedExtensionBase&lt;int&gt; Sint32Opt;
     public const int Sint64OptFieldNumber = 7700863;
-    public static readonly pb::GeneratedExtensionBase&lt;long&gt; Sint64Opt =
-        pb::GeneratedSingleExtension&lt;long&gt;.CreateInstance(Descriptor.Extensions[13]);
+    public static pb::GeneratedExtensionBase&lt;long&gt; Sint64Opt;
     public const int Fixed32OptFieldNumber = 7700307;
-    public static readonly pb::GeneratedExtensionBase&lt;uint&gt; Fixed32Opt =
-        pb::GeneratedSingleExtension&lt;uint&gt;.CreateInstance(Descriptor.Extensions[14]);
+    public static pb::GeneratedExtensionBase&lt;uint&gt; Fixed32Opt;
     public const int Fixed64OptFieldNumber = 7700194;
-    public static readonly pb::GeneratedExtensionBase&lt;ulong&gt; Fixed64Opt =
-        pb::GeneratedSingleExtension&lt;ulong&gt;.CreateInstance(Descriptor.Extensions[15]);
+    public static pb::GeneratedExtensionBase&lt;ulong&gt; Fixed64Opt;
     public const int Sfixed32OptFieldNumber = 7698645;
-    public static readonly pb::GeneratedExtensionBase&lt;int&gt; Sfixed32Opt =
-        pb::GeneratedSingleExtension&lt;int&gt;.CreateInstance(Descriptor.Extensions[16]);
+    public static pb::GeneratedExtensionBase&lt;int&gt; Sfixed32Opt;
     public const int Sfixed64OptFieldNumber = 7685475;
-    public static readonly pb::GeneratedExtensionBase&lt;long&gt; Sfixed64Opt =
-        pb::GeneratedSingleExtension&lt;long&gt;.CreateInstance(Descriptor.Extensions[17]);
+    public static pb::GeneratedExtensionBase&lt;long&gt; Sfixed64Opt;
     public const int FloatOptFieldNumber = 7675390;
-    public static readonly pb::GeneratedExtensionBase&lt;float&gt; FloatOpt =
-        pb::GeneratedSingleExtension&lt;float&gt;.CreateInstance(Descriptor.Extensions[18]);
+    public static pb::GeneratedExtensionBase&lt;float&gt; FloatOpt;
     public const int DoubleOptFieldNumber = 7673293;
-    public static readonly pb::GeneratedExtensionBase&lt;double&gt; DoubleOpt =
-        pb::GeneratedSingleExtension&lt;double&gt;.CreateInstance(Descriptor.Extensions[19]);
+    public static pb::GeneratedExtensionBase&lt;double&gt; DoubleOpt;
     public const int StringOptFieldNumber = 7673285;
-    public static readonly pb::GeneratedExtensionBase&lt;string&gt; StringOpt =
-        pb::GeneratedSingleExtension&lt;string&gt;.CreateInstance(Descriptor.Extensions[20]);
+    public static pb::GeneratedExtensionBase&lt;string&gt; StringOpt;
     public const int BytesOptFieldNumber = 7673238;
-    public static readonly pb::GeneratedExtensionBase&lt;pb::ByteString&gt; BytesOpt =
-        pb::GeneratedSingleExtension&lt;pb::ByteString&gt;.CreateInstance(Descriptor.Extensions[21]);
+    public static pb::GeneratedExtensionBase&lt;pb::ByteString&gt; BytesOpt;
     public const int EnumOptFieldNumber = 7673233;
-    public static readonly pb::GeneratedExtensionBase&lt;global::Google.ProtocolBuffers.TestProtos.DummyMessageContainingEnum.Types.TestEnumType&gt; EnumOpt =
-        pb::GeneratedSingleExtension&lt;global::Google.ProtocolBuffers.TestProtos.DummyMessageContainingEnum.Types.TestEnumType&gt;.CreateInstance(Descriptor.Extensions[22]);
+    public static pb::GeneratedExtensionBase&lt;global::Google.ProtocolBuffers.TestProtos.DummyMessageContainingEnum.Types.TestEnumType&gt; EnumOpt;
     public const int MessageTypeOptFieldNumber = 7665967;
-    public static readonly pb::GeneratedExtensionBase&lt;global::Google.ProtocolBuffers.TestProtos.DummyMessageInvalidAsOptionType&gt; MessageTypeOpt =
-        pb::GeneratedSingleExtension&lt;global::Google.ProtocolBuffers.TestProtos.DummyMessageInvalidAsOptionType&gt;.CreateInstance(Descriptor.Extensions[23]);
+    public static pb::GeneratedExtensionBase&lt;global::Google.ProtocolBuffers.TestProtos.DummyMessageInvalidAsOptionType&gt; MessageTypeOpt;
     public const int QuuxFieldNumber = 7663707;
-    public static readonly pb::GeneratedExtensionBase&lt;int&gt; Quux =
-        pb::GeneratedSingleExtension&lt;int&gt;.CreateInstance(Descriptor.Extensions[24]);
+    public static pb::GeneratedExtensionBase&lt;int&gt; Quux;
     public const int CorgeFieldNumber = 7663442;
-    public static readonly pb::GeneratedExtensionBase&lt;global::Google.ProtocolBuffers.TestProtos.ComplexOptionType3&gt; Corge =
-        pb::GeneratedSingleExtension&lt;global::Google.ProtocolBuffers.TestProtos.ComplexOptionType3&gt;.CreateInstance(Descriptor.Extensions[25]);
+    public static pb::GeneratedExtensionBase&lt;global::Google.ProtocolBuffers.TestProtos.ComplexOptionType3&gt; Corge;
     public const int GraultFieldNumber = 7650927;
-    public static readonly pb::GeneratedExtensionBase&lt;int&gt; Grault =
-        pb::GeneratedSingleExtension&lt;int&gt;.CreateInstance(Descriptor.Extensions[26]);
+    public static pb::GeneratedExtensionBase&lt;int&gt; Grault;
     public const int GarplyFieldNumber = 7649992;
-    public static readonly pb::GeneratedExtensionBase&lt;global::Google.ProtocolBuffers.TestProtos.ComplexOptionType1&gt; Garply =
-        pb::GeneratedSingleExtension&lt;global::Google.ProtocolBuffers.TestProtos.ComplexOptionType1&gt;.CreateInstance(Descriptor.Extensions[27]);
+    public static pb::GeneratedExtensionBase&lt;global::Google.ProtocolBuffers.TestProtos.ComplexOptionType1&gt; Garply;
     public const int ComplexOpt1FieldNumber = 7646756;
-    public static readonly pb::GeneratedExtensionBase&lt;global::Google.ProtocolBuffers.TestProtos.ComplexOptionType1&gt; ComplexOpt1 =
-        pb::GeneratedSingleExtension&lt;global::Google.ProtocolBuffers.TestProtos.ComplexOptionType1&gt;.CreateInstance(Descriptor.Extensions[28]);
+    public static pb::GeneratedExtensionBase&lt;global::Google.ProtocolBuffers.TestProtos.ComplexOptionType1&gt; ComplexOpt1;
     public const int ComplexOpt2FieldNumber = 7636949;
-    public static readonly pb::GeneratedExtensionBase&lt;global::Google.ProtocolBuffers.TestProtos.ComplexOptionType2&gt; ComplexOpt2 =
-        pb::GeneratedSingleExtension&lt;global::Google.ProtocolBuffers.TestProtos.ComplexOptionType2&gt;.CreateInstance(Descriptor.Extensions[29]);
+    public static pb::GeneratedExtensionBase&lt;global::Google.ProtocolBuffers.TestProtos.ComplexOptionType2&gt; ComplexOpt2;
     public const int ComplexOpt3FieldNumber = 7636463;
-    public static readonly pb::GeneratedExtensionBase&lt;global::Google.ProtocolBuffers.TestProtos.ComplexOptionType3&gt; ComplexOpt3 =
-        pb::GeneratedSingleExtension&lt;global::Google.ProtocolBuffers.TestProtos.ComplexOptionType3&gt;.CreateInstance(Descriptor.Extensions[30]);
+    public static pb::GeneratedExtensionBase&lt;global::Google.ProtocolBuffers.TestProtos.ComplexOptionType3&gt; ComplexOpt3;
     public const int ComplexOpt6FieldNumber = 7595468;
-    public static readonly pb::GeneratedExtensionBase&lt;global::Google.ProtocolBuffers.TestProtos.ComplexOpt6&gt; ComplexOpt6 =
-        pb::GeneratedSingleExtension&lt;global::Google.ProtocolBuffers.TestProtos.ComplexOpt6&gt;.CreateInstance(Descriptor.Extensions[31]);
+    public static pb::GeneratedExtensionBase&lt;global::Google.ProtocolBuffers.TestProtos.ComplexOpt6&gt; ComplexOpt6;
     #endregion
     
     #region Static variables
-    internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_TestMessageWithCustomOptions__Descriptor
-        = Descriptor.MessageTypes[0];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestMessageWithCustomOptions, global::Google.ProtocolBuffers.TestProtos.TestMessageWithCustomOptions.Builder&gt; internal__static_protobuf_unittest_TestMessageWithCustomOptions__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestMessageWithCustomOptions, global::Google.ProtocolBuffers.TestProtos.TestMessageWithCustomOptions.Builder&gt;(internal__static_protobuf_unittest_TestMessageWithCustomOptions__Descriptor,
-            new string[] { &quot;Field1&quot;, });
-    internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_CustomOptionFooRequest__Descriptor
-        = Descriptor.MessageTypes[1];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.CustomOptionFooRequest, global::Google.ProtocolBuffers.TestProtos.CustomOptionFooRequest.Builder&gt; internal__static_protobuf_unittest_CustomOptionFooRequest__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.CustomOptionFooRequest, global::Google.ProtocolBuffers.TestProtos.CustomOptionFooRequest.Builder&gt;(internal__static_protobuf_unittest_CustomOptionFooRequest__Descriptor,
-            new string[] { });
-    internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_CustomOptionFooResponse__Descriptor
-        = Descriptor.MessageTypes[2];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.CustomOptionFooResponse, global::Google.ProtocolBuffers.TestProtos.CustomOptionFooResponse.Builder&gt; internal__static_protobuf_unittest_CustomOptionFooResponse__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.CustomOptionFooResponse, global::Google.ProtocolBuffers.TestProtos.CustomOptionFooResponse.Builder&gt;(internal__static_protobuf_unittest_CustomOptionFooResponse__Descriptor,
-            new string[] { });
-    internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_DummyMessageContainingEnum__Descriptor
-        = Descriptor.MessageTypes[3];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.DummyMessageContainingEnum, global::Google.ProtocolBuffers.TestProtos.DummyMessageContainingEnum.Builder&gt; internal__static_protobuf_unittest_DummyMessageContainingEnum__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.DummyMessageContainingEnum, global::Google.ProtocolBuffers.TestProtos.DummyMessageContainingEnum.Builder&gt;(internal__static_protobuf_unittest_DummyMessageContainingEnum__Descriptor,
-            new string[] { });
-    internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_DummyMessageInvalidAsOptionType__Descriptor
-        = Descriptor.MessageTypes[4];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.DummyMessageInvalidAsOptionType, global::Google.ProtocolBuffers.TestProtos.DummyMessageInvalidAsOptionType.Builder&gt; internal__static_protobuf_unittest_DummyMessageInvalidAsOptionType__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.DummyMessageInvalidAsOptionType, global::Google.ProtocolBuffers.TestProtos.DummyMessageInvalidAsOptionType.Builder&gt;(internal__static_protobuf_unittest_DummyMessageInvalidAsOptionType__Descriptor,
-            new string[] { });
-    internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_CustomOptionMinIntegerValues__Descriptor
-        = Descriptor.MessageTypes[5];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.CustomOptionMinIntegerValues, global::Google.ProtocolBuffers.TestProtos.CustomOptionMinIntegerValues.Builder&gt; internal__static_protobuf_unittest_CustomOptionMinIntegerValues__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.CustomOptionMinIntegerValues, global::Google.ProtocolBuffers.TestProtos.CustomOptionMinIntegerValues.Builder&gt;(internal__static_protobuf_unittest_CustomOptionMinIntegerValues__Descriptor,
-            new string[] { });
-    internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_CustomOptionMaxIntegerValues__Descriptor
-        = Descriptor.MessageTypes[6];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.CustomOptionMaxIntegerValues, global::Google.ProtocolBuffers.TestProtos.CustomOptionMaxIntegerValues.Builder&gt; internal__static_protobuf_unittest_CustomOptionMaxIntegerValues__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.CustomOptionMaxIntegerValues, global::Google.ProtocolBuffers.TestProtos.CustomOptionMaxIntegerValues.Builder&gt;(internal__static_protobuf_unittest_CustomOptionMaxIntegerValues__Descriptor,
-            new string[] { });
-    internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_CustomOptionOtherValues__Descriptor
-        = Descriptor.MessageTypes[7];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.CustomOptionOtherValues, global::Google.ProtocolBuffers.TestProtos.CustomOptionOtherValues.Builder&gt; internal__static_protobuf_unittest_CustomOptionOtherValues__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.CustomOptionOtherValues, global::Google.ProtocolBuffers.TestProtos.CustomOptionOtherValues.Builder&gt;(internal__static_protobuf_unittest_CustomOptionOtherValues__Descriptor,
-            new string[] { });
-    internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_SettingRealsFromPositiveInts__Descriptor
-        = Descriptor.MessageTypes[8];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.SettingRealsFromPositiveInts, global::Google.ProtocolBuffers.TestProtos.SettingRealsFromPositiveInts.Builder&gt; internal__static_protobuf_unittest_SettingRealsFromPositiveInts__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.SettingRealsFromPositiveInts, global::Google.ProtocolBuffers.TestProtos.SettingRealsFromPositiveInts.Builder&gt;(internal__static_protobuf_unittest_SettingRealsFromPositiveInts__Descriptor,
-            new string[] { });
-    internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_SettingRealsFromNegativeInts__Descriptor
-        = Descriptor.MessageTypes[9];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.SettingRealsFromNegativeInts, global::Google.ProtocolBuffers.TestProtos.SettingRealsFromNegativeInts.Builder&gt; internal__static_protobuf_unittest_SettingRealsFromNegativeInts__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.SettingRealsFromNegativeInts, global::Google.ProtocolBuffers.TestProtos.SettingRealsFromNegativeInts.Builder&gt;(internal__static_protobuf_unittest_SettingRealsFromNegativeInts__Descriptor,
-            new string[] { });
-    internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_ComplexOptionType1__Descriptor
-        = Descriptor.MessageTypes[10];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.ComplexOptionType1, global::Google.ProtocolBuffers.TestProtos.ComplexOptionType1.Builder&gt; internal__static_protobuf_unittest_ComplexOptionType1__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.ComplexOptionType1, global::Google.ProtocolBuffers.TestProtos.ComplexOptionType1.Builder&gt;(internal__static_protobuf_unittest_ComplexOptionType1__Descriptor,
-            new string[] { &quot;Foo&quot;, });
-    internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_ComplexOptionType2__Descriptor
-        = Descriptor.MessageTypes[11];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.ComplexOptionType2, global::Google.ProtocolBuffers.TestProtos.ComplexOptionType2.Builder&gt; internal__static_protobuf_unittest_ComplexOptionType2__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.ComplexOptionType2, global::Google.ProtocolBuffers.TestProtos.ComplexOptionType2.Builder&gt;(internal__static_protobuf_unittest_ComplexOptionType2__Descriptor,
-            new string[] { &quot;Bar&quot;, &quot;Baz&quot;, &quot;Fred&quot;, });
-    internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_ComplexOptionType2_ComplexOptionType4__Descriptor
-        = internal__static_protobuf_unittest_ComplexOptionType2__Descriptor.NestedTypes[0];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.ComplexOptionType2.Types.ComplexOptionType4, global::Google.ProtocolBuffers.TestProtos.ComplexOptionType2.Types.ComplexOptionType4.Builder&gt; internal__static_protobuf_unittest_ComplexOptionType2_ComplexOptionType4__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.ComplexOptionType2.Types.ComplexOptionType4, global::Google.ProtocolBuffers.TestProtos.ComplexOptionType2.Types.ComplexOptionType4.Builder&gt;(internal__static_protobuf_unittest_ComplexOptionType2_ComplexOptionType4__Descriptor,
-            new string[] { &quot;Waldo&quot;, });
-    internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_ComplexOptionType3__Descriptor
-        = Descriptor.MessageTypes[12];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.ComplexOptionType3, global::Google.ProtocolBuffers.TestProtos.ComplexOptionType3.Builder&gt; internal__static_protobuf_unittest_ComplexOptionType3__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.ComplexOptionType3, global::Google.ProtocolBuffers.TestProtos.ComplexOptionType3.Builder&gt;(internal__static_protobuf_unittest_ComplexOptionType3__Descriptor,
-            new string[] { &quot;Qux&quot;, &quot;ComplexOptionType5&quot;, });
-    internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_ComplexOptionType3_ComplexOptionType5__Descriptor
-        = internal__static_protobuf_unittest_ComplexOptionType3__Descriptor.NestedTypes[0];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.ComplexOptionType3.Types.ComplexOptionType5, global::Google.ProtocolBuffers.TestProtos.ComplexOptionType3.Types.ComplexOptionType5.Builder&gt; internal__static_protobuf_unittest_ComplexOptionType3_ComplexOptionType5__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.ComplexOptionType3.Types.ComplexOptionType5, global::Google.ProtocolBuffers.TestProtos.ComplexOptionType3.Types.ComplexOptionType5.Builder&gt;(internal__static_protobuf_unittest_ComplexOptionType3_ComplexOptionType5__Descriptor,
-            new string[] { &quot;Plugh&quot;, });
-    internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_ComplexOpt6__Descriptor
-        = Descriptor.MessageTypes[13];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.ComplexOpt6, global::Google.ProtocolBuffers.TestProtos.ComplexOpt6.Builder&gt; internal__static_protobuf_unittest_ComplexOpt6__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.ComplexOpt6, global::Google.ProtocolBuffers.TestProtos.ComplexOpt6.Builder&gt;(internal__static_protobuf_unittest_ComplexOpt6__Descriptor,
-            new string[] { &quot;Xyzzy&quot;, });
-    internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_VariousComplexOptions__Descriptor
-        = Descriptor.MessageTypes[14];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.VariousComplexOptions, global::Google.ProtocolBuffers.TestProtos.VariousComplexOptions.Builder&gt; internal__static_protobuf_unittest_VariousComplexOptions__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.VariousComplexOptions, global::Google.ProtocolBuffers.TestProtos.VariousComplexOptions.Builder&gt;(internal__static_protobuf_unittest_VariousComplexOptions__Descriptor,
-            new string[] { });
+    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestMessageWithCustomOptions__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestMessageWithCustomOptions, global::Google.ProtocolBuffers.TestProtos.TestMessageWithCustomOptions.Builder&gt; internal__static_protobuf_unittest_TestMessageWithCustomOptions__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_CustomOptionFooRequest__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.CustomOptionFooRequest, global::Google.ProtocolBuffers.TestProtos.CustomOptionFooRequest.Builder&gt; internal__static_protobuf_unittest_CustomOptionFooRequest__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_CustomOptionFooResponse__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.CustomOptionFooResponse, global::Google.ProtocolBuffers.TestProtos.CustomOptionFooResponse.Builder&gt; internal__static_protobuf_unittest_CustomOptionFooResponse__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_DummyMessageContainingEnum__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.DummyMessageContainingEnum, global::Google.ProtocolBuffers.TestProtos.DummyMessageContainingEnum.Builder&gt; internal__static_protobuf_unittest_DummyMessageContainingEnum__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_DummyMessageInvalidAsOptionType__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.DummyMessageInvalidAsOptionType, global::Google.ProtocolBuffers.TestProtos.DummyMessageInvalidAsOptionType.Builder&gt; internal__static_protobuf_unittest_DummyMessageInvalidAsOptionType__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_CustomOptionMinIntegerValues__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.CustomOptionMinIntegerValues, global::Google.ProtocolBuffers.TestProtos.CustomOptionMinIntegerValues.Builder&gt; internal__static_protobuf_unittest_CustomOptionMinIntegerValues__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_CustomOptionMaxIntegerValues__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.CustomOptionMaxIntegerValues, global::Google.ProtocolBuffers.TestProtos.CustomOptionMaxIntegerValues.Builder&gt; internal__static_protobuf_unittest_CustomOptionMaxIntegerValues__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_CustomOptionOtherValues__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.CustomOptionOtherValues, global::Google.ProtocolBuffers.TestProtos.CustomOptionOtherValues.Builder&gt; internal__static_protobuf_unittest_CustomOptionOtherValues__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_SettingRealsFromPositiveInts__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.SettingRealsFromPositiveInts, global::Google.ProtocolBuffers.TestProtos.SettingRealsFromPositiveInts.Builder&gt; internal__static_protobuf_unittest_SettingRealsFromPositiveInts__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_SettingRealsFromNegativeInts__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.SettingRealsFromNegativeInts, global::Google.ProtocolBuffers.TestProtos.SettingRealsFromNegativeInts.Builder&gt; internal__static_protobuf_unittest_SettingRealsFromNegativeInts__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_ComplexOptionType1__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.ComplexOptionType1, global::Google.ProtocolBuffers.TestProtos.ComplexOptionType1.Builder&gt; internal__static_protobuf_unittest_ComplexOptionType1__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_ComplexOptionType2__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.ComplexOptionType2, global::Google.ProtocolBuffers.TestProtos.ComplexOptionType2.Builder&gt; internal__static_protobuf_unittest_ComplexOptionType2__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_ComplexOptionType2_ComplexOptionType4__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.ComplexOptionType2.Types.ComplexOptionType4, global::Google.ProtocolBuffers.TestProtos.ComplexOptionType2.Types.ComplexOptionType4.Builder&gt; internal__static_protobuf_unittest_ComplexOptionType2_ComplexOptionType4__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_ComplexOptionType3__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.ComplexOptionType3, global::Google.ProtocolBuffers.TestProtos.ComplexOptionType3.Builder&gt; internal__static_protobuf_unittest_ComplexOptionType3__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_ComplexOptionType3_ComplexOptionType5__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.ComplexOptionType3.Types.ComplexOptionType5, global::Google.ProtocolBuffers.TestProtos.ComplexOptionType3.Types.ComplexOptionType5.Builder&gt; internal__static_protobuf_unittest_ComplexOptionType3_ComplexOptionType5__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_ComplexOpt6__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.ComplexOpt6, global::Google.ProtocolBuffers.TestProtos.ComplexOpt6.Builder&gt; internal__static_protobuf_unittest_ComplexOpt6__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_VariousComplexOptions__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.VariousComplexOptions, global::Google.ProtocolBuffers.TestProtos.VariousComplexOptions.Builder&gt; internal__static_protobuf_unittest_VariousComplexOptions__FieldAccessorTable;
+    #endregion
+    #region Descriptor
+    public static pbd::FileDescriptor Descriptor {
+      get { return descriptor; }
+    }
+    private static pbd::FileDescriptor descriptor;
+    
+    static UnitTestCustomOptionsProtoFile() {
+      byte[] descriptorData = global::System.Convert.FromBase64String(
+          &quot;Ci1nb29nbGUvcHJvdG9idWYvdW5pdHRlc3RfY3VzdG9tX29wdGlvbnMucHJv&quot; + 
+          &quot;dG8SEXByb3RvYnVmX3VuaXR0ZXN0GiRnb29nbGUvcHJvdG9idWYvY3NoYXJw&quot; + 
+          &quot;X29wdGlvbnMucHJvdG8aIGdvb2dsZS9wcm90b2J1Zi9kZXNjcmlwdG9yLnBy&quot; + 
+          &quot;b3RvIoYBChxUZXN0TWVzc2FnZVdpdGhDdXN0b21PcHRpb25zEh4KBmZpZWxk&quot; + 
+          &quot;MRgBIAEoCUIOCAHB4MMdLeF1CgIAAAAiNAoGQW5FbnVtEg8KC0FORU5VTV9W&quot; + 
+          &quot;QUwxEAESDwoLQU5FTlVNX1ZBTDIQAhoIxfbJHev8//86EAgA4OnCHcj/////&quot; + 
+          &quot;/////wEiGAoWQ3VzdG9tT3B0aW9uRm9vUmVxdWVzdCIZChdDdXN0b21PcHRp&quot; + 
+          &quot;b25Gb29SZXNwb25zZSJtChpEdW1teU1lc3NhZ2VDb250YWluaW5nRW51bSJP&quot; + 
+          &quot;CgxUZXN0RW51bVR5cGUSGgoWVEVTVF9PUFRJT05fRU5VTV9UWVBFMRAWEiMK&quot; + 
+          &quot;FlRFU1RfT1BUSU9OX0VOVU1fVFlQRTIQ6f//////////ASIhCh9EdW1teU1l&quot; + 
+          &quot;c3NhZ2VJbnZhbGlkQXNPcHRpb25UeXBlIooBChxDdXN0b21PcHRpb25NaW5J&quot; + 
+          &quot;bnRlZ2VyVmFsdWVzOmqZ1qgdAAAAAAAAAICtja8dAAAAgJHurx0AAAAAAAAA&quot; + 
+          &quot;AJ31rx0AAAAA+JewHf///////////wGAxLAd/////w/49bAdAICTsh0AsLyy&quot; + 
+          &quot;HYCAgICAgICAgAHoxrIdgICAgPj/////AdDesh0AIpEBChxDdXN0b21PcHRp&quot; + 
+          &quot;b25NYXhJbnRlZ2VyVmFsdWVzOnGZ1qgd/////////3+tja8d////f5Hurx3/&quot; + 
+          &quot;/////////531rx3/////+JewHf7//////////wGAxLAd/v///w/49bAd////&quot; + 
+          &quot;////////AYCTsh3/////D7C8sh3//////////3/oxrId/////wfQ3rIdASJu&quot; + 
+          &quot;ChdDdXN0b21PcHRpb25PdGhlclZhbHVlczpTiNmiHen//////////wGy2aId&quot; + 
+          &quot;C0hlbGxvAFdvcmxkqtyiHQ5IZWxsbywgIldvcmxkIuncoh37WYxCysDzP/Xf&quot; + 
+          &quot;ox3nh0VB6MayHZz//////////wEiNAocU2V0dGluZ1JlYWxzRnJvbVBvc2l0&quot; + 
+          &quot;aXZlSW50czoU6dyiHQAAAAAAQGNA9d+jHQAAQEEiNAocU2V0dGluZ1JlYWxz&quot; + 
+          &quot;RnJvbU5lZ2F0aXZlSW50czoU6dyiHQAAAAAAQGPA9d+jHQAAQMEiKwoSQ29t&quot; + 
+          &quot;cGxleE9wdGlvblR5cGUxEgsKA2ZvbxgBIAEoBSoICGQQgICAgAIiwQIKEkNv&quot; + 
+          &quot;bXBsZXhPcHRpb25UeXBlMhIyCgNiYXIYASABKAsyJS5wcm90b2J1Zl91bml0&quot; + 
+          &quot;dGVzdC5Db21wbGV4T3B0aW9uVHlwZTESCwoDYmF6GAIgASgFEkYKBGZyZWQY&quot; + 
+          &quot;AyABKAsyOC5wcm90b2J1Zl91bml0dGVzdC5Db21wbGV4T3B0aW9uVHlwZTIu&quot; + 
+          &quot;Q29tcGxleE9wdGlvblR5cGU0GpcBChJDb21wbGV4T3B0aW9uVHlwZTQSDQoF&quot; + 
+          &quot;d2FsZG8YASABKAUycgoMY29tcGxleF9vcHQ0Eh8uZ29vZ2xlLnByb3RvYnVm&quot; + 
+          &quot;Lk1lc3NhZ2VPcHRpb25zGIr10QMgASgLMjgucHJvdG9idWZfdW5pdHRlc3Qu&quot; + 
+          &quot;Q29tcGxleE9wdGlvblR5cGUyLkNvbXBsZXhPcHRpb25UeXBlNCoICGQQgICA&quot; + 
+          &quot;gAIinAEKEkNvbXBsZXhPcHRpb25UeXBlMxILCgNxdXgYASABKAUSVAoSY29t&quot; + 
+          &quot;cGxleG9wdGlvbnR5cGU1GAIgASgKMjgucHJvdG9idWZfdW5pdHRlc3QuQ29t&quot; + 
+          &quot;cGxleE9wdGlvblR5cGUzLkNvbXBsZXhPcHRpb25UeXBlNRojChJDb21wbGV4&quot; + 
+          &quot;T3B0aW9uVHlwZTUSDQoFcGx1Z2gYAyABKAUiHwoLQ29tcGxleE9wdDYSEAoF&quot; + 
+          &quot;eHl6enkY37/PAyABKAUi0AEKFVZhcmlvdXNDb21wbGV4T3B0aW9uczq2AePc&quot; + 
+          &quot;/Bz4/fscGOTc/BzSqI8dAwizD/rekB0CCAn63pAdBBMYFhSq/ZAdAxDbB6r9&quot; + 
+          &quot;kB0G+OaXHY4Fqv2QHQUKAwjnBar9kB0ICgbYhZ4dzw+q/ZAdCgoIkvWdHQMI&quot; + 
+          &quot;2A+q/ZAdCMKslx0DCOUFqv2QHQvCrJcdBtiFnh3OD6r9kB0NwqyXHQiS9Z0d&quot; + 
+          &quot;AwjJEKr9kB0FGgMIwQKi4pUdAggqouKVHQbYhZ4dxAKi4pUdCJL1nR0DCOwG&quot; + 
+          &quot;KjYKCk1ldGhvZE9wdDESEwoPTUVUSE9ET1BUMV9WQUwxEAESEwoPTUVUSE9E&quot; + 
+          &quot;T1BUMV9WQUwyEAIyjgEKHFRlc3RTZXJ2aWNlV2l0aEN1c3RvbU9wdGlvbnMS&quot; + 
+          &quot;YwoDRm9vEikucHJvdG9idWZfdW5pdHRlc3QuQ3VzdG9tT3B0aW9uRm9vUmVx&quot; + 
+          &quot;dWVzdBoqLnByb3RvYnVmX3VuaXR0ZXN0LkN1c3RvbU9wdGlvbkZvb1Jlc3Bv&quot; + 
+          &quot;bnNlIgXg+oweAhoJkLKLHtPbgMtJOjIKCWZpbGVfb3B0MRIcLmdvb2dsZS5w&quot; + 
+          &quot;cm90b2J1Zi5GaWxlT3B0aW9ucxiOndgDIAEoBDo4CgxtZXNzYWdlX29wdDES&quot; + 
+          &quot;Hy5nb29nbGUucHJvdG9idWYuTWVzc2FnZU9wdGlvbnMYnK3YAyABKAU6NAoK&quot; + 
+          &quot;ZmllbGRfb3B0MRIdLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE9wdGlvbnMYiLzY&quot; + 
+          &quot;AyABKAY6OAoKZmllbGRfb3B0MhIdLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE9w&quot; + 
+          &quot;dGlvbnMYuaHZAyABKAU6AjQyOjIKCWVudW1fb3B0MRIcLmdvb2dsZS5wcm90&quot; + 
+          &quot;b2J1Zi5FbnVtT3B0aW9ucxjontkDIAEoDzo4CgxzZXJ2aWNlX29wdDESHy5n&quot; + 
+          &quot;b29nbGUucHJvdG9idWYuU2VydmljZU9wdGlvbnMYorbhAyABKBI6VQoLbWV0&quot; + 
+          &quot;aG9kX29wdDESHi5nb29nbGUucHJvdG9idWYuTWV0aG9kT3B0aW9ucxisz+ED&quot; + 
+          &quot;IAEoDjIdLnByb3RvYnVmX3VuaXR0ZXN0Lk1ldGhvZE9wdDE6NAoIYm9vbF9v&quot; + 
+          &quot;cHQSHy5nb29nbGUucHJvdG9idWYuTWVzc2FnZU9wdGlvbnMY6qvWAyABKAg6&quot; + 
+          &quot;NQoJaW50MzJfb3B0Eh8uZ29vZ2xlLnByb3RvYnVmLk1lc3NhZ2VPcHRpb25z&quot; + 
+          &quot;GO2o1gMgASgFOjUKCWludDY0X29wdBIfLmdvb2dsZS5wcm90b2J1Zi5NZXNz&quot; + 
+          &quot;YWdlT3B0aW9ucxjGp9YDIAEoAzo2Cgp1aW50MzJfb3B0Eh8uZ29vZ2xlLnBy&quot; + 
+          &quot;b3RvYnVmLk1lc3NhZ2VPcHRpb25zGLCi1gMgASgNOjYKCnVpbnQ2NF9vcHQS&quot; + 
+          &quot;Hy5nb29nbGUucHJvdG9idWYuTWVzc2FnZU9wdGlvbnMY347WAyABKAQ6NgoK&quot; + 
+          &quot;c2ludDMyX29wdBIfLmdvb2dsZS5wcm90b2J1Zi5NZXNzYWdlT3B0aW9ucxjA&quot; + 
+          &quot;iNYDIAEoETo2CgpzaW50NjRfb3B0Eh8uZ29vZ2xlLnByb3RvYnVmLk1lc3Nh&quot; + 
+          &quot;Z2VPcHRpb25zGP+C1gMgASgSOjcKC2ZpeGVkMzJfb3B0Eh8uZ29vZ2xlLnBy&quot; + 
+          &quot;b3RvYnVmLk1lc3NhZ2VPcHRpb25zGNP+1QMgASgHOjcKC2ZpeGVkNjRfb3B0&quot; + 
+          &quot;Eh8uZ29vZ2xlLnByb3RvYnVmLk1lc3NhZ2VPcHRpb25zGOL91QMgASgGOjgK&quot; + 
+          &quot;DHNmaXhlZDMyX29wdBIfLmdvb2dsZS5wcm90b2J1Zi5NZXNzYWdlT3B0aW9u&quot; + 
+          &quot;cxjV8dUDIAEoDzo4CgxzZml4ZWQ2NF9vcHQSHy5nb29nbGUucHJvdG9idWYu&quot; + 
+          &quot;TWVzc2FnZU9wdGlvbnMY44rVAyABKBA6NQoJZmxvYXRfb3B0Eh8uZ29vZ2xl&quot; + 
+          &quot;LnByb3RvYnVmLk1lc3NhZ2VPcHRpb25zGP671AMgASgCOjYKCmRvdWJsZV9v&quot; + 
+          &quot;cHQSHy5nb29nbGUucHJvdG9idWYuTWVzc2FnZU9wdGlvbnMYzavUAyABKAE6&quot; + 
+          &quot;NgoKc3RyaW5nX29wdBIfLmdvb2dsZS5wcm90b2J1Zi5NZXNzYWdlT3B0aW9u&quot; + 
+          &quot;cxjFq9QDIAEoCTo1CglieXRlc19vcHQSHy5nb29nbGUucHJvdG9idWYuTWVz&quot; + 
+          &quot;c2FnZU9wdGlvbnMYlqvUAyABKAw6cAoIZW51bV9vcHQSHy5nb29nbGUucHJv&quot; + 
+          &quot;dG9idWYuTWVzc2FnZU9wdGlvbnMYkavUAyABKA4yOi5wcm90b2J1Zl91bml0&quot; + 
+          &quot;dGVzdC5EdW1teU1lc3NhZ2VDb250YWluaW5nRW51bS5UZXN0RW51bVR5cGU6&quot; + 
+          &quot;cAoQbWVzc2FnZV90eXBlX29wdBIfLmdvb2dsZS5wcm90b2J1Zi5NZXNzYWdl&quot; + 
+          &quot;T3B0aW9ucxiv8tMDIAEoCzIyLnByb3RvYnVmX3VuaXR0ZXN0LkR1bW15TWVz&quot; + 
+          &quot;c2FnZUludmFsaWRBc09wdGlvblR5cGU6NgoEcXV1eBIlLnByb3RvYnVmX3Vu&quot; + 
+          &quot;aXR0ZXN0LkNvbXBsZXhPcHRpb25UeXBlMRjb4NMDIAEoBTpeCgVjb3JnZRIl&quot; + 
+          &quot;LnByb3RvYnVmX3VuaXR0ZXN0LkNvbXBsZXhPcHRpb25UeXBlMRjS3tMDIAEo&quot; + 
+          &quot;CzIlLnByb3RvYnVmX3VuaXR0ZXN0LkNvbXBsZXhPcHRpb25UeXBlMzo4CgZn&quot; + 
+          &quot;cmF1bHQSJS5wcm90b2J1Zl91bml0dGVzdC5Db21wbGV4T3B0aW9uVHlwZTIY&quot; + 
+          &quot;7/zSAyABKAU6XwoGZ2FycGx5EiUucHJvdG9idWZfdW5pdHRlc3QuQ29tcGxl&quot; + 
+          &quot;eE9wdGlvblR5cGUyGMj10gMgASgLMiUucHJvdG9idWZfdW5pdHRlc3QuQ29t&quot; + 
+          &quot;cGxleE9wdGlvblR5cGUxOl8KDGNvbXBsZXhfb3B0MRIfLmdvb2dsZS5wcm90&quot; + 
+          &quot;b2J1Zi5NZXNzYWdlT3B0aW9ucxik3NIDIAEoCzIlLnByb3RvYnVmX3VuaXR0&quot; + 
+          &quot;ZXN0LkNvbXBsZXhPcHRpb25UeXBlMTpfCgxjb21wbGV4X29wdDISHy5nb29n&quot; + 
+          &quot;bGUucHJvdG9idWYuTWVzc2FnZU9wdGlvbnMY1Y/SAyABKAsyJS5wcm90b2J1&quot; + 
+          &quot;Zl91bml0dGVzdC5Db21wbGV4T3B0aW9uVHlwZTI6XwoMY29tcGxleF9vcHQz&quot; + 
+          &quot;Eh8uZ29vZ2xlLnByb3RvYnVmLk1lc3NhZ2VPcHRpb25zGO+L0gMgASgLMiUu&quot; + 
+          &quot;cHJvdG9idWZfdW5pdHRlc3QuQ29tcGxleE9wdGlvblR5cGUzOlcKC2NvbXBs&quot; + 
+          &quot;ZXhvcHQ2Eh8uZ29vZ2xlLnByb3RvYnVmLk1lc3NhZ2VPcHRpb25zGMzLzwMg&quot; + 
+          &quot;ASgKMh4ucHJvdG9idWZfdW5pdHRlc3QuQ29tcGxleE9wdDZCT8I+QwohR29v&quot; + 
+          &quot;Z2xlLlByb3RvY29sQnVmZmVycy5UZXN0UHJvdG9zEh5Vbml0VGVzdEN1c3Rv&quot; + 
+          &quot;bU9wdGlvbnNQcm90b0ZpbGXw6MEd6q3A5SQ=&quot;);
+      pbd::FileDescriptor.InternalDescriptorAssigner assigner = delegate(pbd::FileDescriptor root) {
+        descriptor = root;
+        internal__static_protobuf_unittest_TestMessageWithCustomOptions__Descriptor = Descriptor.MessageTypes[0];
+        internal__static_protobuf_unittest_TestMessageWithCustomOptions__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestMessageWithCustomOptions, global::Google.ProtocolBuffers.TestProtos.TestMessageWithCustomOptions.Builder&gt;(internal__static_protobuf_unittest_TestMessageWithCustomOptions__Descriptor,
+                new string[] { &quot;Field1&quot;, });
+        internal__static_protobuf_unittest_CustomOptionFooRequest__Descriptor = Descriptor.MessageTypes[1];
+        internal__static_protobuf_unittest_CustomOptionFooRequest__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.CustomOptionFooRequest, global::Google.ProtocolBuffers.TestProtos.CustomOptionFooRequest.Builder&gt;(internal__static_protobuf_unittest_CustomOptionFooRequest__Descriptor,
+                new string[] { });
+        internal__static_protobuf_unittest_CustomOptionFooResponse__Descriptor = Descriptor.MessageTypes[2];
+        internal__static_protobuf_unittest_CustomOptionFooResponse__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.CustomOptionFooResponse, global::Google.ProtocolBuffers.TestProtos.CustomOptionFooResponse.Builder&gt;(internal__static_protobuf_unittest_CustomOptionFooResponse__Descriptor,
+                new string[] { });
+        internal__static_protobuf_unittest_DummyMessageContainingEnum__Descriptor = Descriptor.MessageTypes[3];
+        internal__static_protobuf_unittest_DummyMessageContainingEnum__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.DummyMessageContainingEnum, global::Google.ProtocolBuffers.TestProtos.DummyMessageContainingEnum.Builder&gt;(internal__static_protobuf_unittest_DummyMessageContainingEnum__Descriptor,
+                new string[] { });
+        internal__static_protobuf_unittest_DummyMessageInvalidAsOptionType__Descriptor = Descriptor.MessageTypes[4];
+        internal__static_protobuf_unittest_DummyMessageInvalidAsOptionType__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.DummyMessageInvalidAsOptionType, global::Google.ProtocolBuffers.TestProtos.DummyMessageInvalidAsOptionType.Builder&gt;(internal__static_protobuf_unittest_DummyMessageInvalidAsOptionType__Descriptor,
+                new string[] { });
+        internal__static_protobuf_unittest_CustomOptionMinIntegerValues__Descriptor = Descriptor.MessageTypes[5];
+        internal__static_protobuf_unittest_CustomOptionMinIntegerValues__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.CustomOptionMinIntegerValues, global::Google.ProtocolBuffers.TestProtos.CustomOptionMinIntegerValues.Builder&gt;(internal__static_protobuf_unittest_CustomOptionMinIntegerValues__Descriptor,
+                new string[] { });
+        internal__static_protobuf_unittest_CustomOptionMaxIntegerValues__Descriptor = Descriptor.MessageTypes[6];
+        internal__static_protobuf_unittest_CustomOptionMaxIntegerValues__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.CustomOptionMaxIntegerValues, global::Google.ProtocolBuffers.TestProtos.CustomOptionMaxIntegerValues.Builder&gt;(internal__static_protobuf_unittest_CustomOptionMaxIntegerValues__Descriptor,
+                new string[] { });
+        internal__static_protobuf_unittest_CustomOptionOtherValues__Descriptor = Descriptor.MessageTypes[7];
+        internal__static_protobuf_unittest_CustomOptionOtherValues__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.CustomOptionOtherValues, global::Google.ProtocolBuffers.TestProtos.CustomOptionOtherValues.Builder&gt;(internal__static_protobuf_unittest_CustomOptionOtherValues__Descriptor,
+                new string[] { });
+        internal__static_protobuf_unittest_SettingRealsFromPositiveInts__Descriptor = Descriptor.MessageTypes[8];
+        internal__static_protobuf_unittest_SettingRealsFromPositiveInts__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.SettingRealsFromPositiveInts, global::Google.ProtocolBuffers.TestProtos.SettingRealsFromPositiveInts.Builder&gt;(internal__static_protobuf_unittest_SettingRealsFromPositiveInts__Descriptor,
+                new string[] { });
+        internal__static_protobuf_unittest_SettingRealsFromNegativeInts__Descriptor = Descriptor.MessageTypes[9];
+        internal__static_protobuf_unittest_SettingRealsFromNegativeInts__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.SettingRealsFromNegativeInts, global::Google.ProtocolBuffers.TestProtos.SettingRealsFromNegativeInts.Builder&gt;(internal__static_protobuf_unittest_SettingRealsFromNegativeInts__Descriptor,
+                new string[] { });
+        internal__static_protobuf_unittest_ComplexOptionType1__Descriptor = Descriptor.MessageTypes[10];
+        internal__static_protobuf_unittest_ComplexOptionType1__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.ComplexOptionType1, global::Google.ProtocolBuffers.TestProtos.ComplexOptionType1.Builder&gt;(internal__static_protobuf_unittest_ComplexOptionType1__Descriptor,
+                new string[] { &quot;Foo&quot;, });
+        internal__static_protobuf_unittest_ComplexOptionType2__Descriptor = Descriptor.MessageTypes[11];
+        internal__static_protobuf_unittest_ComplexOptionType2__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.ComplexOptionType2, global::Google.ProtocolBuffers.TestProtos.ComplexOptionType2.Builder&gt;(internal__static_protobuf_unittest_ComplexOptionType2__Descriptor,
+                new string[] { &quot;Bar&quot;, &quot;Baz&quot;, &quot;Fred&quot;, });
+        internal__static_protobuf_unittest_ComplexOptionType2_ComplexOptionType4__Descriptor = internal__static_protobuf_unittest_ComplexOptionType2__Descriptor.NestedTypes[0];
+        internal__static_protobuf_unittest_ComplexOptionType2_ComplexOptionType4__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.ComplexOptionType2.Types.ComplexOptionType4, global::Google.ProtocolBuffers.TestProtos.ComplexOptionType2.Types.ComplexOptionType4.Builder&gt;(internal__static_protobuf_unittest_ComplexOptionType2_ComplexOptionType4__Descriptor,
+                new string[] { &quot;Waldo&quot;, });
+        global::Google.ProtocolBuffers.TestProtos.ComplexOptionType2.Types.ComplexOptionType4.ComplexOpt4 = pb::GeneratedSingleExtension&lt;global::Google.ProtocolBuffers.TestProtos.ComplexOptionType2.Types.ComplexOptionType4&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.ComplexOptionType2.Types.ComplexOptionType4.Descriptor.Extensions[0]);
+        internal__static_protobuf_unittest_ComplexOptionType3__Descriptor = Descriptor.MessageTypes[12];
+        internal__static_protobuf_unittest_ComplexOptionType3__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.ComplexOptionType3, global::Google.ProtocolBuffers.TestProtos.ComplexOptionType3.Builder&gt;(internal__static_protobuf_unittest_ComplexOptionType3__Descriptor,
+                new string[] { &quot;Qux&quot;, &quot;ComplexOptionType5&quot;, });
+        internal__static_protobuf_unittest_ComplexOptionType3_ComplexOptionType5__Descriptor = internal__static_protobuf_unittest_ComplexOptionType3__Descriptor.NestedTypes[0];
+        internal__static_protobuf_unittest_ComplexOptionType3_ComplexOptionType5__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.ComplexOptionType3.Types.ComplexOptionType5, global::Google.ProtocolBuffers.TestProtos.ComplexOptionType3.Types.ComplexOptionType5.Builder&gt;(internal__static_protobuf_unittest_ComplexOptionType3_ComplexOptionType5__Descriptor,
+                new string[] { &quot;Plugh&quot;, });
+        internal__static_protobuf_unittest_ComplexOpt6__Descriptor = Descriptor.MessageTypes[13];
+        internal__static_protobuf_unittest_ComplexOpt6__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.ComplexOpt6, global::Google.ProtocolBuffers.TestProtos.ComplexOpt6.Builder&gt;(internal__static_protobuf_unittest_ComplexOpt6__Descriptor,
+                new string[] { &quot;Xyzzy&quot;, });
+        internal__static_protobuf_unittest_VariousComplexOptions__Descriptor = Descriptor.MessageTypes[14];
+        internal__static_protobuf_unittest_VariousComplexOptions__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.VariousComplexOptions, global::Google.ProtocolBuffers.TestProtos.VariousComplexOptions.Builder&gt;(internal__static_protobuf_unittest_VariousComplexOptions__Descriptor,
+                new string[] { });
+        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.FileOpt1 = pb::GeneratedSingleExtension&lt;ulong&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[0]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.MessageOpt1 = pb::GeneratedSingleExtension&lt;int&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[1]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.FieldOpt1 = pb::GeneratedSingleExtension&lt;ulong&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[2]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.FieldOpt2 = pb::GeneratedSingleExtension&lt;int&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[3]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.EnumOpt1 = pb::GeneratedSingleExtension&lt;int&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[4]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.ServiceOpt1 = pb::GeneratedSingleExtension&lt;long&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[5]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.MethodOpt1 = pb::GeneratedSingleExtension&lt;global::Google.ProtocolBuffers.TestProtos.MethodOpt1&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[6]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.BoolOpt = pb::GeneratedSingleExtension&lt;bool&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[7]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Int32Opt = pb::GeneratedSingleExtension&lt;int&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[8]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Int64Opt = pb::GeneratedSingleExtension&lt;long&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[9]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Uint32Opt = pb::GeneratedSingleExtension&lt;uint&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[10]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Uint64Opt = pb::GeneratedSingleExtension&lt;ulong&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[11]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Sint32Opt = pb::GeneratedSingleExtension&lt;int&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[12]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Sint64Opt = pb::GeneratedSingleExtension&lt;long&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[13]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Fixed32Opt = pb::GeneratedSingleExtension&lt;uint&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[14]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Fixed64Opt = pb::GeneratedSingleExtension&lt;ulong&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[15]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Sfixed32Opt = pb::GeneratedSingleExtension&lt;int&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[16]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Sfixed64Opt = pb::GeneratedSingleExtension&lt;long&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[17]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.FloatOpt = pb::GeneratedSingleExtension&lt;float&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[18]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.DoubleOpt = pb::GeneratedSingleExtension&lt;double&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[19]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.StringOpt = pb::GeneratedSingleExtension&lt;string&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[20]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.BytesOpt = pb::GeneratedSingleExtension&lt;pb::ByteString&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[21]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.EnumOpt = pb::GeneratedSingleExtension&lt;global::Google.ProtocolBuffers.TestProtos.DummyMessageContainingEnum.Types.TestEnumType&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[22]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.MessageTypeOpt = pb::GeneratedSingleExtension&lt;global::Google.ProtocolBuffers.TestProtos.DummyMessageInvalidAsOptionType&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[23]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Quux = pb::GeneratedSingleExtension&lt;int&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[24]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Corge = pb::GeneratedSingleExtension&lt;global::Google.ProtocolBuffers.TestProtos.ComplexOptionType3&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[25]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Grault = pb::GeneratedSingleExtension&lt;int&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[26]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Garply = pb::GeneratedSingleExtension&lt;global::Google.ProtocolBuffers.TestProtos.ComplexOptionType1&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[27]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.ComplexOpt1 = pb::GeneratedSingleExtension&lt;global::Google.ProtocolBuffers.TestProtos.ComplexOptionType1&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[28]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.ComplexOpt2 = pb::GeneratedSingleExtension&lt;global::Google.ProtocolBuffers.TestProtos.ComplexOptionType2&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[29]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.ComplexOpt3 = pb::GeneratedSingleExtension&lt;global::Google.ProtocolBuffers.TestProtos.ComplexOptionType3&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[30]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.ComplexOpt6 = pb::GeneratedSingleExtension&lt;global::Google.ProtocolBuffers.TestProtos.ComplexOpt6&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor.Extensions[31]);
+        pb::ExtensionRegistry registry = pb::ExtensionRegistry.CreateInstance();
+        RegisterAllExtensions(registry);
+        global::Google.ProtocolBuffers.DescriptorProtos.CSharpOptions.RegisterAllExtensions(registry);
+        global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.RegisterAllExtensions(registry);
+        return registry;
+      };
+      pbd::FileDescriptor.InternalBuildGeneratedFileFrom(descriptorData,
+          new pbd::FileDescriptor[] {
+          global::Google.ProtocolBuffers.DescriptorProtos.CSharpOptions.Descriptor, 
+          global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.Descriptor, 
+          }, assigner);
+    }
     #endregion
+    
   }
   #region Enums
   public enum MethodOpt1 {
@@ -447,6 +514,9 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
     }
+    static TestMessageWithCustomOptions() {
+      pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor;
+    }
   }
   
   public sealed partial class CustomOptionFooRequest : pb::GeneratedMessage&lt;CustomOptionFooRequest, CustomOptionFooRequest.Builder&gt; {
@@ -547,6 +617,9 @@ namespace Google.ProtocolBuffers.TestProtos {
       }
       
     }
+    static CustomOptionFooRequest() {
+      pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor;
+    }
   }
   
   public sealed partial class CustomOptionFooResponse : pb::GeneratedMessage&lt;CustomOptionFooResponse, CustomOptionFooResponse.Builder&gt; {
@@ -647,6 +720,9 @@ namespace Google.ProtocolBuffers.TestProtos {
       }
       
     }
+    static CustomOptionFooResponse() {
+      pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor;
+    }
   }
   
   public sealed partial class DummyMessageContainingEnum : pb::GeneratedMessage&lt;DummyMessageContainingEnum, DummyMessageContainingEnum.Builder&gt; {
@@ -757,6 +833,9 @@ namespace Google.ProtocolBuffers.TestProtos {
       }
       
     }
+    static DummyMessageContainingEnum() {
+      pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor;
+    }
   }
   
   public sealed partial class DummyMessageInvalidAsOptionType : pb::GeneratedMessage&lt;DummyMessageInvalidAsOptionType, DummyMessageInvalidAsOptionType.Builder&gt; {
@@ -857,6 +936,9 @@ namespace Google.ProtocolBuffers.TestProtos {
       }
       
     }
+    static DummyMessageInvalidAsOptionType() {
+      pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor;
+    }
   }
   
   public sealed partial class CustomOptionMinIntegerValues : pb::GeneratedMessage&lt;CustomOptionMinIntegerValues, CustomOptionMinIntegerValues.Builder&gt; {
@@ -957,6 +1039,9 @@ namespace Google.ProtocolBuffers.TestProtos {
       }
       
     }
+    static CustomOptionMinIntegerValues() {
+      pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor;
+    }
   }
   
   public sealed partial class CustomOptionMaxIntegerValues : pb::GeneratedMessage&lt;CustomOptionMaxIntegerValues, CustomOptionMaxIntegerValues.Builder&gt; {
@@ -1057,6 +1142,9 @@ namespace Google.ProtocolBuffers.TestProtos {
       }
       
     }
+    static CustomOptionMaxIntegerValues() {
+      pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor;
+    }
   }
   
   public sealed partial class CustomOptionOtherValues : pb::GeneratedMessage&lt;CustomOptionOtherValues, CustomOptionOtherValues.Builder&gt; {
@@ -1157,6 +1245,9 @@ namespace Google.ProtocolBuffers.TestProtos {
       }
       
     }
+    static CustomOptionOtherValues() {
+      pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor;
+    }
   }
   
   public sealed partial class SettingRealsFromPositiveInts : pb::GeneratedMessage&lt;SettingRealsFromPositiveInts, SettingRealsFromPositiveInts.Builder&gt; {
@@ -1257,6 +1348,9 @@ namespace Google.ProtocolBuffers.TestProtos {
       }
       
     }
+    static SettingRealsFromPositiveInts() {
+      pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor;
+    }
   }
   
   public sealed partial class SettingRealsFromNegativeInts : pb::GeneratedMessage&lt;SettingRealsFromNegativeInts, SettingRealsFromNegativeInts.Builder&gt; {
@@ -1357,6 +1451,9 @@ namespace Google.ProtocolBuffers.TestProtos {
       }
       
     }
+    static SettingRealsFromNegativeInts() {
+      pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor;
+    }
   }
   
   public sealed partial class ComplexOptionType1 : pb::ExtendableMessage&lt;ComplexOptionType1, ComplexOptionType1.Builder&gt; {
@@ -1485,6 +1582,9 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
     }
+    static ComplexOptionType1() {
+      pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor;
+    }
   }
   
   public sealed partial class ComplexOptionType2 : pb::ExtendableMessage&lt;ComplexOptionType2, ComplexOptionType2.Builder&gt; {
@@ -1534,8 +1634,7 @@ namespace Google.ProtocolBuffers.TestProtos {
         }
         
         public const int ComplexOpt4FieldNumber = 7633546;
-        public static readonly pb::GeneratedExtensionBase&lt;global::Google.ProtocolBuffers.TestProtos.ComplexOptionType2.Types.ComplexOptionType4&gt; ComplexOpt4 =
-            pb::GeneratedSingleExtension&lt;global::Google.ProtocolBuffers.TestProtos.ComplexOptionType2.Types.ComplexOptionType4&gt;.CreateInstance(Descriptor.Extensions[0]);
+        public static pb::GeneratedExtensionBase&lt;global::Google.ProtocolBuffers.TestProtos.ComplexOptionType2.Types.ComplexOptionType4&gt; ComplexOpt4;
         public const int WaldoFieldNumber = 1;
         private bool hasWaldo;
         private int waldo_ = 0;
@@ -1640,6 +1739,9 @@ namespace Google.ProtocolBuffers.TestProtos {
             return this;
           }
         }
+        static ComplexOptionType4() {
+          pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor;
+        }
       }
       
     }
@@ -1841,6 +1943,9 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
     }
+    static ComplexOptionType2() {
+      pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor;
+    }
   }
   
   public sealed partial class ComplexOptionType3 : pb::GeneratedMessage&lt;ComplexOptionType3, ComplexOptionType3.Builder&gt; {
@@ -1993,6 +2098,9 @@ namespace Google.ProtocolBuffers.TestProtos {
             return this;
           }
         }
+        static ComplexOptionType5() {
+          pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor;
+        }
       }
       
     }
@@ -2148,6 +2256,9 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
     }
+    static ComplexOptionType3() {
+      pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor;
+    }
   }
   
   public sealed partial class ComplexOpt6 : pb::GeneratedMessage&lt;ComplexOpt6, ComplexOpt6.Builder&gt; {
@@ -2276,6 +2387,9 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
     }
+    static ComplexOpt6() {
+      pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor;
+    }
   }
   
   public sealed partial class VariousComplexOptions : pb::GeneratedMessage&lt;VariousComplexOptions, VariousComplexOptions.Builder&gt; {
@@ -2376,6 +2490,9 @@ namespace Google.ProtocolBuffers.TestProtos {
       }
       
     }
+    static VariousComplexOptions() {
+      pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.TestProtos.UnitTestCustomOptionsProtoFile.Descriptor;
+    }
   }
   
   #endregion</diff>
      <filename>src/ProtocolBuffers.Test/TestProtos/UnitTestCustomOptionsProtoFile.cs</filename>
    </modified>
    <modified>
      <diff>@@ -8,34 +8,51 @@ namespace Google.ProtocolBuffers.TestProtos {
   
   public static partial class UnitTestEmbedOptimizeForProtoFile {
   
+    #region Extension registration
+    public static void RegisterAllExtensions(pb::ExtensionRegistry registry) {
+    }
+    #endregion
+    #region Static variables
+    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestEmbedOptimizedForSize__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestEmbedOptimizedForSize, global::Google.ProtocolBuffers.TestProtos.TestEmbedOptimizedForSize.Builder&gt; internal__static_protobuf_unittest_TestEmbedOptimizedForSize__FieldAccessorTable;
+    #endregion
     #region Descriptor
     public static pbd::FileDescriptor Descriptor {
       get { return descriptor; }
     }
-    private static readonly pbd::FileDescriptor descriptor = pbd::FileDescriptor.InternalBuildGeneratedFileFrom(
-        global::System.Convert.FromBase64String(
-        &quot;CjFnb29nbGUvcHJvdG9idWYvdW5pdHRlc3RfZW1iZWRfb3B0aW1pemVfZm9y&quot; + 
-        &quot;LnByb3RvEhFwcm90b2J1Zl91bml0dGVzdBokZ29vZ2xlL3Byb3RvYnVmL2Nz&quot; + 
-        &quot;aGFycF9vcHRpb25zLnByb3RvGitnb29nbGUvcHJvdG9idWYvdW5pdHRlc3Rf&quot; + 
-        &quot;b3B0aW1pemVfZm9yLnByb3RvIqEBChlUZXN0RW1iZWRPcHRpbWl6ZWRGb3JT&quot; + 
-        &quot;aXplEkEKEG9wdGlvbmFsX21lc3NhZ2UYASABKAsyJy5wcm90b2J1Zl91bml0&quot; + 
-        &quot;dGVzdC5UZXN0T3B0aW1pemVkRm9yU2l6ZRJBChByZXBlYXRlZF9tZXNzYWdl&quot; + 
-        &quot;GAIgAygLMicucHJvdG9idWZfdW5pdHRlc3QuVGVzdE9wdGltaXplZEZvclNp&quot; + 
-        &quot;emVCS0gBwj5GCiFHb29nbGUuUHJvdG9jb2xCdWZmZXJzLlRlc3RQcm90b3MS&quot; + 
-        &quot;IVVuaXRUZXN0RW1iZWRPcHRpbWl6ZUZvclByb3RvRmlsZQ==&quot;),
-        new pbd::FileDescriptor[] {
+    private static pbd::FileDescriptor descriptor;
+    
+    static UnitTestEmbedOptimizeForProtoFile() {
+      byte[] descriptorData = global::System.Convert.FromBase64String(
+          &quot;CjFnb29nbGUvcHJvdG9idWYvdW5pdHRlc3RfZW1iZWRfb3B0aW1pemVfZm9y&quot; + 
+          &quot;LnByb3RvEhFwcm90b2J1Zl91bml0dGVzdBokZ29vZ2xlL3Byb3RvYnVmL2Nz&quot; + 
+          &quot;aGFycF9vcHRpb25zLnByb3RvGitnb29nbGUvcHJvdG9idWYvdW5pdHRlc3Rf&quot; + 
+          &quot;b3B0aW1pemVfZm9yLnByb3RvIqEBChlUZXN0RW1iZWRPcHRpbWl6ZWRGb3JT&quot; + 
+          &quot;aXplEkEKEG9wdGlvbmFsX21lc3NhZ2UYASABKAsyJy5wcm90b2J1Zl91bml0&quot; + 
+          &quot;dGVzdC5UZXN0T3B0aW1pemVkRm9yU2l6ZRJBChByZXBlYXRlZF9tZXNzYWdl&quot; + 
+          &quot;GAIgAygLMicucHJvdG9idWZfdW5pdHRlc3QuVGVzdE9wdGltaXplZEZvclNp&quot; + 
+          &quot;emVCS0gBwj5GCiFHb29nbGUuUHJvdG9jb2xCdWZmZXJzLlRlc3RQcm90b3MS&quot; + 
+          &quot;IVVuaXRUZXN0RW1iZWRPcHRpbWl6ZUZvclByb3RvRmlsZQ==&quot;);
+      pbd::FileDescriptor.InternalDescriptorAssigner assigner = delegate(pbd::FileDescriptor root) {
+        descriptor = root;
+        internal__static_protobuf_unittest_TestEmbedOptimizedForSize__Descriptor = Descriptor.MessageTypes[0];
+        internal__static_protobuf_unittest_TestEmbedOptimizedForSize__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestEmbedOptimizedForSize, global::Google.ProtocolBuffers.TestProtos.TestEmbedOptimizedForSize.Builder&gt;(internal__static_protobuf_unittest_TestEmbedOptimizedForSize__Descriptor,
+                new string[] { &quot;OptionalMessage&quot;, &quot;RepeatedMessage&quot;, });
+        pb::ExtensionRegistry registry = pb::ExtensionRegistry.CreateInstance();
+        RegisterAllExtensions(registry);
+        global::Google.ProtocolBuffers.DescriptorProtos.CSharpOptions.RegisterAllExtensions(registry);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestOptimizeForProtoFile.RegisterAllExtensions(registry);
+        return registry;
+      };
+      pbd::FileDescriptor.InternalBuildGeneratedFileFrom(descriptorData,
+          new pbd::FileDescriptor[] {
           global::Google.ProtocolBuffers.DescriptorProtos.CSharpOptions.Descriptor, 
           global::Google.ProtocolBuffers.TestProtos.UnitTestOptimizeForProtoFile.Descriptor, 
-        });
+          }, assigner);
+    }
     #endregion
     
-    #region Static variables
-    internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_TestEmbedOptimizedForSize__Descriptor
-        = Descriptor.MessageTypes[0];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestEmbedOptimizedForSize, global::Google.ProtocolBuffers.TestProtos.TestEmbedOptimizedForSize.Builder&gt; internal__static_protobuf_unittest_TestEmbedOptimizedForSize__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestEmbedOptimizedForSize, global::Google.ProtocolBuffers.TestProtos.TestEmbedOptimizedForSize.Builder&gt;(internal__static_protobuf_unittest_TestEmbedOptimizedForSize__Descriptor,
-            new string[] { &quot;OptionalMessage&quot;, &quot;RepeatedMessage&quot;, });
-    #endregion
   }
   #region Messages
   public sealed partial class TestEmbedOptimizedForSize : pb::GeneratedMessage&lt;TestEmbedOptimizedForSize, TestEmbedOptimizedForSize.Builder&gt; {
@@ -342,6 +359,9 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
     }
+    static TestEmbedOptimizedForSize() {
+      pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.TestProtos.UnitTestEmbedOptimizeForProtoFile.Descriptor;
+    }
   }
   
   #endregion</diff>
      <filename>src/ProtocolBuffers.Test/TestProtos/UnitTestEmbedOptimizeForProtoFile.cs</filename>
    </modified>
    <modified>
      <diff>@@ -8,31 +8,47 @@ namespace Google.ProtocolBuffers.TestProtos {
   
   public static partial class UnitTestImportProtoFile {
   
+    #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&lt;global::Google.ProtocolBuffers.TestProtos.ImportMessage, global::Google.ProtocolBuffers.TestProtos.ImportMessage.Builder&gt; internal__static_protobuf_unittest_import_ImportMessage__FieldAccessorTable;
+    #endregion
     #region Descriptor
     public static pbd::FileDescriptor Descriptor {
       get { return descriptor; }
     }
-    private static readonly pbd::FileDescriptor descriptor = pbd::FileDescriptor.InternalBuildGeneratedFileFrom(
-        global::System.Convert.FromBase64String(
-        &quot;CiVnb29nbGUvcHJvdG9idWYvdW5pdHRlc3RfaW1wb3J0LnByb3RvEhhwcm90&quot; + 
-        &quot;b2J1Zl91bml0dGVzdF9pbXBvcnQaJGdvb2dsZS9wcm90b2J1Zi9jc2hhcnBf&quot; + 
-        &quot;b3B0aW9ucy5wcm90byIaCg1JbXBvcnRNZXNzYWdlEgkKAWQYASABKAUqPAoK&quot; + 
-        &quot;SW1wb3J0RW51bRIOCgpJTVBPUlRfRk9PEAcSDgoKSU1QT1JUX0JBUhAIEg4K&quot; + 
-        &quot;CklNUE9SVF9CQVoQCUJbChhjb20uZ29vZ2xlLnByb3RvYnVmLnRlc3RIAcI+&quot; + 
-        &quot;PAohR29vZ2xlLlByb3RvY29sQnVmZmVycy5UZXN0UHJvdG9zEhdVbml0VGVz&quot; + 
-        &quot;dEltcG9ydFByb3RvRmlsZQ==&quot;),
-        new pbd::FileDescriptor[] {
+    private static pbd::FileDescriptor descriptor;
+    
+    static UnitTestImportProtoFile() {
+      byte[] descriptorData = global::System.Convert.FromBase64String(
+          &quot;CiVnb29nbGUvcHJvdG9idWYvdW5pdHRlc3RfaW1wb3J0LnByb3RvEhhwcm90&quot; + 
+          &quot;b2J1Zl91bml0dGVzdF9pbXBvcnQaJGdvb2dsZS9wcm90b2J1Zi9jc2hhcnBf&quot; + 
+          &quot;b3B0aW9ucy5wcm90byIaCg1JbXBvcnRNZXNzYWdlEgkKAWQYASABKAUqPAoK&quot; + 
+          &quot;SW1wb3J0RW51bRIOCgpJTVBPUlRfRk9PEAcSDgoKSU1QT1JUX0JBUhAIEg4K&quot; + 
+          &quot;CklNUE9SVF9CQVoQCUJbChhjb20uZ29vZ2xlLnByb3RvYnVmLnRlc3RIAcI+&quot; + 
+          &quot;PAohR29vZ2xlLlByb3RvY29sQnVmZmVycy5UZXN0UHJvdG9zEhdVbml0VGVz&quot; + 
+          &quot;dEltcG9ydFByb3RvRmlsZQ==&quot;);
+      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&lt;global::Google.ProtocolBuffers.TestProtos.ImportMessage, global::Google.ProtocolBuffers.TestProtos.ImportMessage.Builder&gt;(internal__static_protobuf_unittest_import_ImportMessage__Descriptor,
+                new string[] { &quot;D&quot;, });
+        pb::ExtensionRegistry registry = pb::ExtensionRegistry.CreateInstance();
+        RegisterAllExtensions(registry);
+        global::Google.ProtocolBuffers.DescriptorProtos.CSharpOptions.RegisterAllExtensions(registry);
+        return registry;
+      };
+      pbd::FileDescriptor.InternalBuildGeneratedFileFrom(descriptorData,
+          new pbd::FileDescriptor[] {
           global::Google.ProtocolBuffers.DescriptorProtos.CSharpOptions.Descriptor, 
-        });
+          }, assigner);
+    }
     #endregion
     
-    #region Static variables
-    internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_import_ImportMessage__Descriptor
-        = Descriptor.MessageTypes[0];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.ImportMessage, global::Google.ProtocolBuffers.TestProtos.ImportMessage.Builder&gt; internal__static_protobuf_unittest_import_ImportMessage__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.ImportMessage, global::Google.ProtocolBuffers.TestProtos.ImportMessage.Builder&gt;(internal__static_protobuf_unittest_import_ImportMessage__Descriptor,
-            new string[] { &quot;D&quot;, });
-    #endregion
   }
   #region Enums
   public enum ImportEnum {
@@ -253,6 +269,9 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
     }
+    static ImportMessage() {
+      pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.TestProtos.UnitTestImportProtoFile.Descriptor;
+    }
   }
   
   #endregion</diff>
      <filename>src/ProtocolBuffers.Test/TestProtos/UnitTestImportProtoFile.cs</filename>
    </modified>
    <modified>
      <diff>@@ -8,65 +8,90 @@ namespace Google.ProtocolBuffers.TestProtos {
   
   public static partial class UnitTestMessageSetProtoFile {
   
+    #region Extension registration
+    public static void RegisterAllExtensions(pb::ExtensionRegistry registry) {
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.TestMessageSetExtension1.MessageSetExtension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.TestMessageSetExtension2.MessageSetExtension);
+    }
+    #endregion
+    #region Static variables
+    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestMessageSet__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestMessageSet, global::Google.ProtocolBuffers.TestProtos.TestMessageSet.Builder&gt; internal__static_protobuf_unittest_TestMessageSet__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestMessageSetContainer__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestMessageSetContainer, global::Google.ProtocolBuffers.TestProtos.TestMessageSetContainer.Builder&gt; internal__static_protobuf_unittest_TestMessageSetContainer__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestMessageSetExtension1__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestMessageSetExtension1, global::Google.ProtocolBuffers.TestProtos.TestMessageSetExtension1.Builder&gt; internal__static_protobuf_unittest_TestMessageSetExtension1__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestMessageSetExtension2__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestMessageSetExtension2, global::Google.ProtocolBuffers.TestProtos.TestMessageSetExtension2.Builder&gt; internal__static_protobuf_unittest_TestMessageSetExtension2__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_RawMessageSet__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.RawMessageSet, global::Google.ProtocolBuffers.TestProtos.RawMessageSet.Builder&gt; internal__static_protobuf_unittest_RawMessageSet__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_RawMessageSet_Item__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.RawMessageSet.Types.Item, global::Google.ProtocolBuffers.TestProtos.RawMessageSet.Types.Item.Builder&gt; internal__static_protobuf_unittest_RawMessageSet_Item__FieldAccessorTable;
+    #endregion
     #region Descriptor
     public static pbd::FileDescriptor Descriptor {
       get { return descriptor; }
     }
-    private static readonly pbd::FileDescriptor descriptor = pbd::FileDescriptor.InternalBuildGeneratedFileFrom(
-        global::System.Convert.FromBase64String(
-        &quot;CiNnb29nbGUvcHJvdG9idWYvdW5pdHRlc3RfbXNldC5wcm90bxIRcHJvdG9i&quot; + 
-        &quot;dWZfdW5pdHRlc3QaJGdvb2dsZS9wcm90b2J1Zi9jc2hhcnBfb3B0aW9ucy5w&quot; + 
-        &quot;cm90byIeCg5UZXN0TWVzc2FnZVNldCoICAQQgICAgAI6AggBIlEKF1Rlc3RN&quot; + 
-        &quot;ZXNzYWdlU2V0Q29udGFpbmVyEjYKC21lc3NhZ2Vfc2V0GAEgASgLMiEucHJv&quot; + 
-        &quot;dG9idWZfdW5pdHRlc3QuVGVzdE1lc3NhZ2VTZXQilgEKGFRlc3RNZXNzYWdl&quot; + 
-        &quot;U2V0RXh0ZW5zaW9uMRIJCgFpGA8gASgFMm8KFW1lc3NhZ2Vfc2V0X2V4dGVu&quot; + 
-        &quot;c2lvbhIhLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RNZXNzYWdlU2V0GLCmXiAB&quot; + 
-        &quot;KAsyKy5wcm90b2J1Zl91bml0dGVzdC5UZXN0TWVzc2FnZVNldEV4dGVuc2lv&quot; + 
-        &quot;bjEimAEKGFRlc3RNZXNzYWdlU2V0RXh0ZW5zaW9uMhILCgNzdHIYGSABKAky&quot; + 
-        &quot;bwoVbWVzc2FnZV9zZXRfZXh0ZW5zaW9uEiEucHJvdG9idWZfdW5pdHRlc3Qu&quot; + 
-        &quot;VGVzdE1lc3NhZ2VTZXQY+bteIAEoCzIrLnByb3RvYnVmX3VuaXR0ZXN0LlRl&quot; + 
-        &quot;c3RNZXNzYWdlU2V0RXh0ZW5zaW9uMiJuCg1SYXdNZXNzYWdlU2V0EjMKBGl0&quot; + 
-        &quot;ZW0YASADKAoyJS5wcm90b2J1Zl91bml0dGVzdC5SYXdNZXNzYWdlU2V0Lkl0&quot; + 
-        &quot;ZW0aKAoESXRlbRIPCgd0eXBlX2lkGAIgAigFEg8KB21lc3NhZ2UYAyACKAxC&quot; + 
-        &quot;RUgBwj5ACiFHb29nbGUuUHJvdG9jb2xCdWZmZXJzLlRlc3RQcm90b3MSG1Vu&quot; + 
-        &quot;aXRUZXN0TWVzc2FnZVNldFByb3RvRmlsZQ==&quot;),
-        new pbd::FileDescriptor[] {
+    private static pbd::FileDescriptor descriptor;
+    
+    static UnitTestMessageSetProtoFile() {
+      byte[] descriptorData = global::System.Convert.FromBase64String(
+          &quot;CiNnb29nbGUvcHJvdG9idWYvdW5pdHRlc3RfbXNldC5wcm90bxIRcHJvdG9i&quot; + 
+          &quot;dWZfdW5pdHRlc3QaJGdvb2dsZS9wcm90b2J1Zi9jc2hhcnBfb3B0aW9ucy5w&quot; + 
+          &quot;cm90byIeCg5UZXN0TWVzc2FnZVNldCoICAQQgICAgAI6AggBIlEKF1Rlc3RN&quot; + 
+          &quot;ZXNzYWdlU2V0Q29udGFpbmVyEjYKC21lc3NhZ2Vfc2V0GAEgASgLMiEucHJv&quot; + 
+          &quot;dG9idWZfdW5pdHRlc3QuVGVzdE1lc3NhZ2VTZXQilgEKGFRlc3RNZXNzYWdl&quot; + 
+          &quot;U2V0RXh0ZW5zaW9uMRIJCgFpGA8gASgFMm8KFW1lc3NhZ2Vfc2V0X2V4dGVu&quot; + 
+          &quot;c2lvbhIhLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RNZXNzYWdlU2V0GLCmXiAB&quot; + 
+          &quot;KAsyKy5wcm90b2J1Zl91bml0dGVzdC5UZXN0TWVzc2FnZVNldEV4dGVuc2lv&quot; + 
+          &quot;bjEimAEKGFRlc3RNZXNzYWdlU2V0RXh0ZW5zaW9uMhILCgNzdHIYGSABKAky&quot; + 
+          &quot;bwoVbWVzc2FnZV9zZXRfZXh0ZW5zaW9uEiEucHJvdG9idWZfdW5pdHRlc3Qu&quot; + 
+          &quot;VGVzdE1lc3NhZ2VTZXQY+bteIAEoCzIrLnByb3RvYnVmX3VuaXR0ZXN0LlRl&quot; + 
+          &quot;c3RNZXNzYWdlU2V0RXh0ZW5zaW9uMiJuCg1SYXdNZXNzYWdlU2V0EjMKBGl0&quot; + 
+          &quot;ZW0YASADKAoyJS5wcm90b2J1Zl91bml0dGVzdC5SYXdNZXNzYWdlU2V0Lkl0&quot; + 
+          &quot;ZW0aKAoESXRlbRIPCgd0eXBlX2lkGAIgAigFEg8KB21lc3NhZ2UYAyACKAxC&quot; + 
+          &quot;RUgBwj5ACiFHb29nbGUuUHJvdG9jb2xCdWZmZXJzLlRlc3RQcm90b3MSG1Vu&quot; + 
+          &quot;aXRUZXN0TWVzc2FnZVNldFByb3RvRmlsZQ==&quot;);
+      pbd::FileDescriptor.InternalDescriptorAssigner assigner = delegate(pbd::FileDescriptor root) {
+        descriptor = root;
+        internal__static_protobuf_unittest_TestMessageSet__Descriptor = Descriptor.MessageTypes[0];
+        internal__static_protobuf_unittest_TestMessageSet__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestMessageSet, global::Google.ProtocolBuffers.TestProtos.TestMessageSet.Builder&gt;(internal__static_protobuf_unittest_TestMessageSet__Descriptor,
+                new string[] { });
+        internal__static_protobuf_unittest_TestMessageSetContainer__Descriptor = Descriptor.MessageTypes[1];
+        internal__static_protobuf_unittest_TestMessageSetContainer__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestMessageSetContainer, global::Google.ProtocolBuffers.TestProtos.TestMessageSetContainer.Builder&gt;(internal__static_protobuf_unittest_TestMessageSetContainer__Descriptor,
+                new string[] { &quot;MessageSet&quot;, });
+        internal__static_protobuf_unittest_TestMessageSetExtension1__Descriptor = Descriptor.MessageTypes[2];
+        internal__static_protobuf_unittest_TestMessageSetExtension1__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestMessageSetExtension1, global::Google.ProtocolBuffers.TestProtos.TestMessageSetExtension1.Builder&gt;(internal__static_protobuf_unittest_TestMessageSetExtension1__Descriptor,
+                new string[] { &quot;I&quot;, });
+        global::Google.ProtocolBuffers.TestProtos.TestMessageSetExtension1.MessageSetExtension = pb::GeneratedSingleExtension&lt;global::Google.ProtocolBuffers.TestProtos.TestMessageSetExtension1&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.TestMessageSetExtension1.Descriptor.Extensions[0]);
+        internal__static_protobuf_unittest_TestMessageSetExtension2__Descriptor = Descriptor.MessageTypes[3];
+        internal__static_protobuf_unittest_TestMessageSetExtension2__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestMessageSetExtension2, global::Google.ProtocolBuffers.TestProtos.TestMessageSetExtension2.Builder&gt;(internal__static_protobuf_unittest_TestMessageSetExtension2__Descriptor,
+                new string[] { &quot;Str&quot;, });
+        global::Google.ProtocolBuffers.TestProtos.TestMessageSetExtension2.MessageSetExtension = pb::GeneratedSingleExtension&lt;global::Google.ProtocolBuffers.TestProtos.TestMessageSetExtension2&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.TestMessageSetExtension2.Descriptor.Extensions[0]);
+        internal__static_protobuf_unittest_RawMessageSet__Descriptor = Descriptor.MessageTypes[4];
+        internal__static_protobuf_unittest_RawMessageSet__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.RawMessageSet, global::Google.ProtocolBuffers.TestProtos.RawMessageSet.Builder&gt;(internal__static_protobuf_unittest_RawMessageSet__Descriptor,
+                new string[] { &quot;Item&quot;, });
+        internal__static_protobuf_unittest_RawMessageSet_Item__Descriptor = internal__static_protobuf_unittest_RawMessageSet__Descriptor.NestedTypes[0];
+        internal__static_protobuf_unittest_RawMessageSet_Item__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.RawMessageSet.Types.Item, global::Google.ProtocolBuffers.TestProtos.RawMessageSet.Types.Item.Builder&gt;(internal__static_protobuf_unittest_RawMessageSet_Item__Descriptor,
+                new string[] { &quot;TypeId&quot;, &quot;Message&quot;, });
+        pb::ExtensionRegistry registry = pb::ExtensionRegistry.CreateInstance();
+        RegisterAllExtensions(registry);
+        global::Google.ProtocolBuffers.DescriptorProtos.CSharpOptions.RegisterAllExtensions(registry);
+        return registry;
+      };
+      pbd::FileDescriptor.InternalBuildGeneratedFileFrom(descriptorData,
+          new pbd::FileDescriptor[] {
           global::Google.ProtocolBuffers.DescriptorProtos.CSharpOptions.Descriptor, 
-        });
+          }, assigner);
+    }
     #endregion
     
-    #region Static variables
-    internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_TestMessageSet__Descriptor
-        = Descriptor.MessageTypes[0];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestMessageSet, global::Google.ProtocolBuffers.TestProtos.TestMessageSet.Builder&gt; internal__static_protobuf_unittest_TestMessageSet__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestMessageSet, global::Google.ProtocolBuffers.TestProtos.TestMessageSet.Builder&gt;(internal__static_protobuf_unittest_TestMessageSet__Descriptor,
-            new string[] { });
-    internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_TestMessageSetContainer__Descriptor
-        = Descriptor.MessageTypes[1];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestMessageSetContainer, global::Google.ProtocolBuffers.TestProtos.TestMessageSetContainer.Builder&gt; internal__static_protobuf_unittest_TestMessageSetContainer__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestMessageSetContainer, global::Google.ProtocolBuffers.TestProtos.TestMessageSetContainer.Builder&gt;(internal__static_protobuf_unittest_TestMessageSetContainer__Descriptor,
-            new string[] { &quot;MessageSet&quot;, });
-    internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_TestMessageSetExtension1__Descriptor
-        = Descriptor.MessageTypes[2];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestMessageSetExtension1, global::Google.ProtocolBuffers.TestProtos.TestMessageSetExtension1.Builder&gt; internal__static_protobuf_unittest_TestMessageSetExtension1__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestMessageSetExtension1, global::Google.ProtocolBuffers.TestProtos.TestMessageSetExtension1.Builder&gt;(internal__static_protobuf_unittest_TestMessageSetExtension1__Descriptor,
-            new string[] { &quot;I&quot;, });
-    internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_TestMessageSetExtension2__Descriptor
-        = Descriptor.MessageTypes[3];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestMessageSetExtension2, global::Google.ProtocolBuffers.TestProtos.TestMessageSetExtension2.Builder&gt; internal__static_protobuf_unittest_TestMessageSetExtension2__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestMessageSetExtension2, global::Google.ProtocolBuffers.TestProtos.TestMessageSetExtension2.Builder&gt;(internal__static_protobuf_unittest_TestMessageSetExtension2__Descriptor,
-            new string[] { &quot;Str&quot;, });
-    internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_RawMessageSet__Descriptor
-        = Descriptor.MessageTypes[4];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.RawMessageSet, global::Google.ProtocolBuffers.TestProtos.RawMessageSet.Builder&gt; internal__static_protobuf_unittest_RawMessageSet__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.RawMessageSet, global::Google.ProtocolBuffers.TestProtos.RawMessageSet.Builder&gt;(internal__static_protobuf_unittest_RawMessageSet__Descriptor,
-            new string[] { &quot;Item&quot;, });
-    internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_RawMessageSet_Item__Descriptor
-        = internal__static_protobuf_unittest_RawMessageSet__Descriptor.NestedTypes[0];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.RawMessageSet.Types.Item, global::Google.ProtocolBuffers.TestProtos.RawMessageSet.Types.Item.Builder&gt; internal__static_protobuf_unittest_RawMessageSet_Item__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.RawMessageSet.Types.Item, global::Google.ProtocolBuffers.TestProtos.RawMessageSet.Types.Item.Builder&gt;(internal__static_protobuf_unittest_RawMessageSet_Item__Descriptor,
-            new string[] { &quot;TypeId&quot;, &quot;Message&quot;, });
-    #endregion
   }
   #region Messages
   public sealed partial class TestMessageSet : pb::ExtendableMessage&lt;TestMessageSet, TestMessageSet.Builder&gt; {
@@ -242,6 +267,9 @@ namespace Google.ProtocolBuffers.TestProtos {
       }
       
     }
+    static TestMessageSet() {
+      pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.TestProtos.UnitTestMessageSetProtoFile.Descriptor;
+    }
   }
   
   public sealed partial class TestMessageSetContainer : pb::GeneratedMessage&lt;TestMessageSetContainer, TestMessageSetContainer.Builder&gt; {
@@ -476,6 +504,9 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
     }
+    static TestMessageSetContainer() {
+      pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.TestProtos.UnitTestMessageSetProtoFile.Descriptor;
+    }
   }
   
   public sealed partial class TestMessageSetExtension1 : pb::GeneratedMessage&lt;TestMessageSetExtension1, TestMessageSetExtension1.Builder&gt; {
@@ -501,8 +532,7 @@ namespace Google.ProtocolBuffers.TestProtos {
     }
     
     public const int MessageSetExtensionFieldNumber = 1545008;
-    public static readonly pb::GeneratedExtensionBase&lt;global::Google.ProtocolBuffers.TestProtos.TestMessageSetExtension1&gt; MessageSetExtension =
-        pb::GeneratedSingleExtension&lt;global::Google.ProtocolBuffers.TestProtos.TestMessageSetExtension1&gt;.CreateInstance(Descriptor.Extensions[0]);
+    public static pb::GeneratedExtensionBase&lt;global::Google.ProtocolBuffers.TestProtos.TestMessageSetExtension1&gt; MessageSetExtension;
     public const int IFieldNumber = 15;
     private bool hasI;
     private int i_ = 0;
@@ -690,6 +720,9 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
     }
+    static TestMessageSetExtension1() {
+      pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.TestProtos.UnitTestMessageSetProtoFile.Descriptor;
+    }
   }
   
   public sealed partial class TestMessageSetExtension2 : pb::GeneratedMessage&lt;TestMessageSetExtension2, TestMessageSetExtension2.Builder&gt; {
@@ -715,8 +748,7 @@ namespace Google.ProtocolBuffers.TestProtos {
     }
     
     public const int MessageSetExtensionFieldNumber = 1547769;
-    public static readonly pb::GeneratedExtensionBase&lt;global::Google.ProtocolBuffers.TestProtos.TestMessageSetExtension2&gt; MessageSetExtension =
-        pb::GeneratedSingleExtension&lt;global::Google.ProtocolBuffers.TestProtos.TestMessageSetExtension2&gt;.CreateInstance(Descriptor.Extensions[0]);
+    public static pb::GeneratedExtensionBase&lt;global::Google.ProtocolBuffers.TestProtos.TestMessageSetExtension2&gt; MessageSetExtension;
     public const int StrFieldNumber = 25;
     private bool hasStr;
     private string str_ = &quot;&quot;;
@@ -905,6 +937,9 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
     }
+    static TestMessageSetExtension2() {
+      pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.TestProtos.UnitTestMessageSetProtoFile.Descriptor;
+    }
   }
   
   public sealed partial class RawMessageSet : pb::GeneratedMessage&lt;RawMessageSet, RawMessageSet.Builder&gt; {
@@ -1184,6 +1219,9 @@ namespace Google.ProtocolBuffers.TestProtos {
             return this;
           }
         }
+        static Item() {
+          pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.TestProtos.UnitTestMessageSetProtoFile.Descriptor;
+        }
       }
       
     }
@@ -1401,6 +1439,9 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
     }
+    static RawMessageSet() {
+      pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.TestProtos.UnitTestMessageSetProtoFile.Descriptor;
+    }
   }
   
   #endregion</diff>
      <filename>src/ProtocolBuffers.Test/TestProtos/UnitTestMessageSetProtoFile.cs</filename>
    </modified>
    <modified>
      <diff>@@ -8,49 +8,72 @@ namespace Google.ProtocolBuffers.TestProtos {
   
   public static partial class UnitTestOptimizeForProtoFile {
   
+    #region Extension registration
+    public static void RegisterAllExtensions(pb::ExtensionRegistry registry) {
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.TestOptimizedForSize.TestExtension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.TestOptimizedForSize.TestExtension2);
+    }
+    #endregion
+    #region Static variables
+    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestOptimizedForSize__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestOptimizedForSize, global::Google.ProtocolBuffers.TestProtos.TestOptimizedForSize.Builder&gt; internal__static_protobuf_unittest_TestOptimizedForSize__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestRequiredOptimizedForSize__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestRequiredOptimizedForSize, global::Google.ProtocolBuffers.TestProtos.TestRequiredOptimizedForSize.Builder&gt; internal__static_protobuf_unittest_TestRequiredOptimizedForSize__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestOptionalOptimizedForSize__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestOptionalOptimizedForSize, global::Google.ProtocolBuffers.TestProtos.TestOptionalOptimizedForSize.Builder&gt; internal__static_protobuf_unittest_TestOptionalOptimizedForSize__FieldAccessorTable;
+    #endregion
     #region Descriptor
     public static pbd::FileDescriptor Descriptor {
       get { return descriptor; }
     }
-    private static readonly pbd::FileDescriptor descriptor = pbd::FileDescriptor.InternalBuildGeneratedFileFrom(
-        global::System.Convert.FromBase64String(
-        &quot;Citnb29nbGUvcHJvdG9idWYvdW5pdHRlc3Rfb3B0aW1pemVfZm9yLnByb3Rv&quot; + 
-        &quot;EhFwcm90b2J1Zl91bml0dGVzdBokZ29vZ2xlL3Byb3RvYnVmL2NzaGFycF9v&quot; + 
-        &quot;cHRpb25zLnByb3RvGh5nb29nbGUvcHJvdG9idWYvdW5pdHRlc3QucHJvdG8i&quot; + 
-        &quot;kgIKFFRlc3RPcHRpbWl6ZWRGb3JTaXplEgkKAWkYASABKAUSLgoDbXNnGBMg&quot; + 
-        &quot;ASgLMiEucHJvdG9idWZfdW5pdHRlc3QuRm9yZWlnbk1lc3NhZ2UqCQjoBxCA&quot; + 
-        &quot;gICAAjJACg50ZXN0X2V4dGVuc2lvbhInLnByb3RvYnVmX3VuaXR0ZXN0LlRl&quot; + 
-        &quot;c3RPcHRpbWl6ZWRGb3JTaXplGNIJIAEoBTJyCg90ZXN0X2V4dGVuc2lvbjIS&quot; + 
-        &quot;Jy5wcm90b2J1Zl91bml0dGVzdC5UZXN0T3B0aW1pemVkRm9yU2l6ZRjTCSAB&quot; + 
-        &quot;KAsyLy5wcm90b2J1Zl91bml0dGVzdC5UZXN0UmVxdWlyZWRPcHRpbWl6ZWRG&quot; + 
-        &quot;b3JTaXplIikKHFRlc3RSZXF1aXJlZE9wdGltaXplZEZvclNpemUSCQoBeBgB&quot; + 
-        &quot;IAIoBSJaChxUZXN0T3B0aW9uYWxPcHRpbWl6ZWRGb3JTaXplEjoKAW8YASAB&quot; + 
-        &quot;KAsyLy5wcm90b2J1Zl91bml0dGVzdC5UZXN0UmVxdWlyZWRPcHRpbWl6ZWRG&quot; + 
-        &quot;b3JTaXplQkZIAsI+QQohR29vZ2xlLlByb3RvY29sQnVmZmVycy5UZXN0UHJv&quot; + 
-        &quot;dG9zEhxVbml0VGVzdE9wdGltaXplRm9yUHJvdG9GaWxl&quot;),
-        new pbd::FileDescriptor[] {
+    private static pbd::FileDescriptor descriptor;
+    
+    static UnitTestOptimizeForProtoFile() {
+      byte[] descriptorData = global::System.Convert.FromBase64String(
+          &quot;Citnb29nbGUvcHJvdG9idWYvdW5pdHRlc3Rfb3B0aW1pemVfZm9yLnByb3Rv&quot; + 
+          &quot;EhFwcm90b2J1Zl91bml0dGVzdBokZ29vZ2xlL3Byb3RvYnVmL2NzaGFycF9v&quot; + 
+          &quot;cHRpb25zLnByb3RvGh5nb29nbGUvcHJvdG9idWYvdW5pdHRlc3QucHJvdG8i&quot; + 
+          &quot;kgIKFFRlc3RPcHRpbWl6ZWRGb3JTaXplEgkKAWkYASABKAUSLgoDbXNnGBMg&quot; + 
+          &quot;ASgLMiEucHJvdG9idWZfdW5pdHRlc3QuRm9yZWlnbk1lc3NhZ2UqCQjoBxCA&quot; + 
+          &quot;gICAAjJACg50ZXN0X2V4dGVuc2lvbhInLnByb3RvYnVmX3VuaXR0ZXN0LlRl&quot; + 
+          &quot;c3RPcHRpbWl6ZWRGb3JTaXplGNIJIAEoBTJyCg90ZXN0X2V4dGVuc2lvbjIS&quot; + 
+          &quot;Jy5wcm90b2J1Zl91bml0dGVzdC5UZXN0T3B0aW1pemVkRm9yU2l6ZRjTCSAB&quot; + 
+          &quot;KAsyLy5wcm90b2J1Zl91bml0dGVzdC5UZXN0UmVxdWlyZWRPcHRpbWl6ZWRG&quot; + 
+          &quot;b3JTaXplIikKHFRlc3RSZXF1aXJlZE9wdGltaXplZEZvclNpemUSCQoBeBgB&quot; + 
+          &quot;IAIoBSJaChxUZXN0T3B0aW9uYWxPcHRpbWl6ZWRGb3JTaXplEjoKAW8YASAB&quot; + 
+          &quot;KAsyLy5wcm90b2J1Zl91bml0dGVzdC5UZXN0UmVxdWlyZWRPcHRpbWl6ZWRG&quot; + 
+          &quot;b3JTaXplQkZIAsI+QQohR29vZ2xlLlByb3RvY29sQnVmZmVycy5UZXN0UHJv&quot; + 
+          &quot;dG9zEhxVbml0VGVzdE9wdGltaXplRm9yUHJvdG9GaWxl&quot;);
+      pbd::FileDescriptor.InternalDescriptorAssigner assigner = delegate(pbd::FileDescriptor root) {
+        descriptor = root;
+        internal__static_protobuf_unittest_TestOptimizedForSize__Descriptor = Descriptor.MessageTypes[0];
+        internal__static_protobuf_unittest_TestOptimizedForSize__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestOptimizedForSize, global::Google.ProtocolBuffers.TestProtos.TestOptimizedForSize.Builder&gt;(internal__static_protobuf_unittest_TestOptimizedForSize__Descriptor,
+                new string[] { &quot;I&quot;, &quot;Msg&quot;, });
+        global::Google.ProtocolBuffers.TestProtos.TestOptimizedForSize.TestExtension = pb::GeneratedSingleExtension&lt;int&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.TestOptimizedForSize.Descriptor.Extensions[0]);
+        global::Google.ProtocolBuffers.TestProtos.TestOptimizedForSize.TestExtension2 = pb::GeneratedSingleExtension&lt;global::Google.ProtocolBuffers.TestProtos.TestRequiredOptimizedForSize&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.TestOptimizedForSize.Descriptor.Extensions[1]);
+        internal__static_protobuf_unittest_TestRequiredOptimizedForSize__Descriptor = Descriptor.MessageTypes[1];
+        internal__static_protobuf_unittest_TestRequiredOptimizedForSize__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestRequiredOptimizedForSize, global::Google.ProtocolBuffers.TestProtos.TestRequiredOptimizedForSize.Builder&gt;(internal__static_protobuf_unittest_TestRequiredOptimizedForSize__Descriptor,
+                new string[] { &quot;X&quot;, });
+        internal__static_protobuf_unittest_TestOptionalOptimizedForSize__Descriptor = Descriptor.MessageTypes[2];
+        internal__static_protobuf_unittest_TestOptionalOptimizedForSize__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestOptionalOptimizedForSize, global::Google.ProtocolBuffers.TestProtos.TestOptionalOptimizedForSize.Builder&gt;(internal__static_protobuf_unittest_TestOptionalOptimizedForSize__Descriptor,
+                new string[] { &quot;O&quot;, });
+        pb::ExtensionRegistry registry = pb::ExtensionRegistry.CreateInstance();
+        RegisterAllExtensions(registry);
+        global::Google.ProtocolBuffers.DescriptorProtos.CSharpOptions.RegisterAllExtensions(registry);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.RegisterAllExtensions(registry);
+        return registry;
+      };
+      pbd::FileDescriptor.InternalBuildGeneratedFileFrom(descriptorData,
+          new pbd::FileDescriptor[] {
           global::Google.ProtocolBuffers.DescriptorProtos.CSharpOptions.Descriptor, 
           global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor, 
-        });
+          }, assigner);
+    }
     #endregion
     
-    #region Static variables
-    internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_TestOptimizedForSize__Descriptor
-        = Descriptor.MessageTypes[0];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestOptimizedForSize, global::Google.ProtocolBuffers.TestProtos.TestOptimizedForSize.Builder&gt; internal__static_protobuf_unittest_TestOptimizedForSize__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestOptimizedForSize, global::Google.ProtocolBuffers.TestProtos.TestOptimizedForSize.Builder&gt;(internal__static_protobuf_unittest_TestOptimizedForSize__Descriptor,
-            new string[] { &quot;I&quot;, &quot;Msg&quot;, });
-    internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_TestRequiredOptimizedForSize__Descriptor
-        = Descriptor.MessageTypes[1];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestRequiredOptimizedForSize, global::Google.ProtocolBuffers.TestProtos.TestRequiredOptimizedForSize.Builder&gt; internal__static_protobuf_unittest_TestRequiredOptimizedForSize__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestRequiredOptimizedForSize, global::Google.ProtocolBuffers.TestProtos.TestRequiredOptimizedForSize.Builder&gt;(internal__static_protobuf_unittest_TestRequiredOptimizedForSize__Descriptor,
-            new string[] { &quot;X&quot;, });
-    internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_TestOptionalOptimizedForSize__Descriptor
-        = Descriptor.MessageTypes[2];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestOptionalOptimizedForSize, global::Google.ProtocolBuffers.TestProtos.TestOptionalOptimizedForSize.Builder&gt; internal__static_protobuf_unittest_TestOptionalOptimizedForSize__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestOptionalOptimizedForSize, global::Google.ProtocolBuffers.TestProtos.TestOptionalOptimizedForSize.Builder&gt;(internal__static_protobuf_unittest_TestOptionalOptimizedForSize__Descriptor,
-            new string[] { &quot;O&quot;, });
-    #endregion
   }
   #region Messages
   public sealed partial class TestOptimizedForSize : pb::ExtendableMessage&lt;TestOptimizedForSize, TestOptimizedForSize.Builder&gt; {
@@ -76,11 +99,9 @@ namespace Google.ProtocolBuffers.TestProtos {
     }
     
     public const int TestExtensionFieldNumber = 1234;
-    public static readonly pb::GeneratedExtensionBase&lt;int&gt; TestExtension =
-        pb::GeneratedSingleExtension&lt;int&gt;.CreateInstance(Descriptor.Extensions[0]);
+    public static pb::GeneratedExtensionBase&lt;int&gt; TestExtension;
     public const int TestExtension2FieldNumber = 1235;
-    public static readonly pb::GeneratedExtensionBase&lt;global::Google.ProtocolBuffers.TestProtos.TestRequiredOptimizedForSize&gt; TestExtension2 =
-        pb::GeneratedSingleExtension&lt;global::Google.ProtocolBuffers.TestProtos.TestRequiredOptimizedForSize&gt;.CreateInstance(Descriptor.Extensions[1]);
+    public static pb::GeneratedExtensionBase&lt;global::Google.ProtocolBuffers.TestProtos.TestRequiredOptimizedForSize&gt; TestExtension2;
     public const int IFieldNumber = 1;
     private bool hasI;
     private int i_ = 0;
@@ -231,6 +252,9 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
     }
+    static TestOptimizedForSize() {
+      pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.TestProtos.UnitTestOptimizeForProtoFile.Descriptor;
+    }
   }
   
   public sealed partial class TestRequiredOptimizedForSize : pb::GeneratedMessage&lt;TestRequiredOptimizedForSize, TestRequiredOptimizedForSize.Builder&gt; {
@@ -359,6 +383,9 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
     }
+    static TestRequiredOptimizedForSize() {
+      pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.TestProtos.UnitTestOptimizeForProtoFile.Descriptor;
+    }
   }
   
   public sealed partial class TestOptionalOptimizedForSize : pb::GeneratedMessage&lt;TestOptionalOptimizedForSize, TestOptionalOptimizedForSize.Builder&gt; {
@@ -505,6 +532,9 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
     }
+    static TestOptionalOptimizedForSize() {
+      pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.TestProtos.UnitTestOptimizeForProtoFile.Descriptor;
+    }
   }
   
   #endregion</diff>
      <filename>src/ProtocolBuffers.Test/TestProtos/UnitTestOptimizeForProtoFile.cs</filename>
    </modified>
    <modified>
      <diff>@@ -8,776 +8,873 @@ namespace Google.ProtocolBuffers.TestProtos {
   
   public static partial class UnitTestProtoFile {
   
-    #region Descriptor
-    public static pbd::FileDescriptor Descriptor {
-      get { return descriptor; }
+    #region Extension registration
+    public static void RegisterAllExtensions(pb::ExtensionRegistry registry) {
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.OptionalInt32Extension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.OptionalInt64Extension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.OptionalUint32Extension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.OptionalUint64Extension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.OptionalSint32Extension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.OptionalSint64Extension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.OptionalFixed32Extension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.OptionalFixed64Extension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.OptionalSfixed32Extension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.OptionalSfixed64Extension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.OptionalFloatExtension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.OptionalDoubleExtension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.OptionalBoolExtension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.OptionalStringExtension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.OptionalBytesExtension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.OptionalGroupExtension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.OptionalNestedMessageExtension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.OptionalForeignMessageExtension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.OptionalImportMessageExtension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.OptionalNestedEnumExtension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.OptionalForeignEnumExtension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.OptionalImportEnumExtension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.OptionalStringPieceExtension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.OptionalCordExtension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.RepeatedInt32Extension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.RepeatedInt64Extension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.RepeatedUint32Extension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.RepeatedUint64Extension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.RepeatedSint32Extension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.RepeatedSint64Extension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.RepeatedFixed32Extension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.RepeatedFixed64Extension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.RepeatedSfixed32Extension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.RepeatedSfixed64Extension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.RepeatedFloatExtension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.RepeatedDoubleExtension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.RepeatedBoolExtension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.RepeatedStringExtension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.RepeatedBytesExtension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.RepeatedGroupExtension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.RepeatedNestedMessageExtension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.RepeatedForeignMessageExtension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.RepeatedImportMessageExtension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.RepeatedNestedEnumExtension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.RepeatedForeignEnumExtension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.RepeatedImportEnumExtension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.RepeatedStringPieceExtension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.RepeatedCordExtension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.DefaultInt32Extension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.DefaultInt64Extension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.DefaultUint32Extension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.DefaultUint64Extension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.DefaultSint32Extension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.DefaultSint64Extension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.DefaultFixed32Extension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.DefaultFixed64Extension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.DefaultSfixed32Extension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.DefaultSfixed64Extension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.DefaultFloatExtension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.DefaultDoubleExtension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.DefaultBoolExtension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.DefaultStringExtension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.DefaultBytesExtension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.DefaultNestedEnumExtension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.DefaultForeignEnumExtension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.DefaultImportEnumExtension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.DefaultStringPieceExtension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.DefaultCordExtension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.MyExtensionString);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.MyExtensionInt);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.PackedInt32Extension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.PackedInt64Extension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.PackedUint32Extension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.PackedUint64Extension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.PackedSint32Extension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.PackedSint64Extension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.PackedFixed32Extension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.PackedFixed64Extension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.PackedSfixed32Extension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.PackedSfixed64Extension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.PackedFloatExtension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.PackedDoubleExtension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.PackedBoolExtension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.PackedEnumExtension);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.TestRequired.Single);
+      registry.Add(global::Google.ProtocolBuffers.TestProtos.TestRequired.Multi);
     }
-    private static readonly pbd::FileDescriptor descriptor = pbd::FileDescriptor.InternalBuildGeneratedFileFrom(
-        global::System.Convert.FromBase64String(
-        &quot;Ch5nb29nbGUvcHJvdG9idWYvdW5pdHRlc3QucHJvdG8SEXByb3RvYnVmX3Vu&quot; + 
-        &quot;aXR0ZXN0GiRnb29nbGUvcHJvdG9idWYvY3NoYXJwX29wdGlvbnMucHJvdG8a&quot; + 
-        &quot;JWdvb2dsZS9wcm90b2J1Zi91bml0dGVzdF9pbXBvcnQucHJvdG8iuxUKDFRl&quot; + 
-        &quot;c3RBbGxUeXBlcxIWCg5vcHRpb25hbF9pbnQzMhgBIAEoBRIWCg5vcHRpb25h&quot; + 
-        &quot;bF9pbnQ2NBgCIAEoAxIXCg9vcHRpb25hbF91aW50MzIYAyABKA0SFwoPb3B0&quot; + 
-        &quot;aW9uYWxfdWludDY0GAQgASgEEhcKD29wdGlvbmFsX3NpbnQzMhgFIAEoERIX&quot; + 
-        &quot;Cg9vcHRpb25hbF9zaW50NjQYBiABKBISGAoQb3B0aW9uYWxfZml4ZWQzMhgH&quot; + 
-        &quot;IAEoBxIYChBvcHRpb25hbF9maXhlZDY0GAggASgGEhkKEW9wdGlvbmFsX3Nm&quot; + 
-        &quot;aXhlZDMyGAkgASgPEhkKEW9wdGlvbmFsX3NmaXhlZDY0GAogASgQEhYKDm9w&quot; + 
-        &quot;dGlvbmFsX2Zsb2F0GAsgASgCEhcKD29wdGlvbmFsX2RvdWJsZRgMIAEoARIV&quot; + 
-        &quot;Cg1vcHRpb25hbF9ib29sGA0gASgIEhcKD29wdGlvbmFsX3N0cmluZxgOIAEo&quot; + 
-        &quot;CRIWCg5vcHRpb25hbF9ieXRlcxgPIAEoDBJECg1vcHRpb25hbGdyb3VwGBAg&quot; + 
-        &quot;ASgKMi0ucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbFR5cGVzLk9wdGlvbmFs&quot; + 
-        &quot;R3JvdXASTgoXb3B0aW9uYWxfbmVzdGVkX21lc3NhZ2UYEiABKAsyLS5wcm90&quot; + 
-        &quot;b2J1Zl91bml0dGVzdC5UZXN0QWxsVHlwZXMuTmVzdGVkTWVzc2FnZRJDChhv&quot; + 
-        &quot;cHRpb25hbF9mb3JlaWduX21lc3NhZ2UYEyABKAsyIS5wcm90b2J1Zl91bml0&quot; + 
-        &quot;dGVzdC5Gb3JlaWduTWVzc2FnZRJIChdvcHRpb25hbF9pbXBvcnRfbWVzc2Fn&quot; + 
-        &quot;ZRgUIAEoCzInLnByb3RvYnVmX3VuaXR0ZXN0X2ltcG9ydC5JbXBvcnRNZXNz&quot; + 
-        &quot;YWdlEkgKFG9wdGlvbmFsX25lc3RlZF9lbnVtGBUgASgOMioucHJvdG9idWZf&quot; + 
-        &quot;dW5pdHRlc3QuVGVzdEFsbFR5cGVzLk5lc3RlZEVudW0SPQoVb3B0aW9uYWxf&quot; + 
-        &quot;Zm9yZWlnbl9lbnVtGBYgASgOMh4ucHJvdG9idWZfdW5pdHRlc3QuRm9yZWln&quot; + 
-        &quot;bkVudW0SQgoUb3B0aW9uYWxfaW1wb3J0X2VudW0YFyABKA4yJC5wcm90b2J1&quot; + 
-        &quot;Zl91bml0dGVzdF9pbXBvcnQuSW1wb3J0RW51bRIhChVvcHRpb25hbF9zdHJp&quot; + 
-        &quot;bmdfcGllY2UYGCABKAlCAggCEhkKDW9wdGlvbmFsX2NvcmQYGSABKAlCAggB&quot; + 
-        &quot;EhYKDnJlcGVhdGVkX2ludDMyGB8gAygFEhYKDnJlcGVhdGVkX2ludDY0GCAg&quot; + 
-        &quot;AygDEhcKD3JlcGVhdGVkX3VpbnQzMhghIAMoDRIXCg9yZXBlYXRlZF91aW50&quot; + 
-        &quot;NjQYIiADKAQSFwoPcmVwZWF0ZWRfc2ludDMyGCMgAygREhcKD3JlcGVhdGVk&quot; + 
-        &quot;X3NpbnQ2NBgkIAMoEhIYChByZXBlYXRlZF9maXhlZDMyGCUgAygHEhgKEHJl&quot; + 
-        &quot;cGVhdGVkX2ZpeGVkNjQYJiADKAYSGQoRcmVwZWF0ZWRfc2ZpeGVkMzIYJyAD&quot; + 
-        &quot;KA8SGQoRcmVwZWF0ZWRfc2ZpeGVkNjQYKCADKBASFgoOcmVwZWF0ZWRfZmxv&quot; + 
-        &quot;YXQYKSADKAISFwoPcmVwZWF0ZWRfZG91YmxlGCogAygBEhUKDXJlcGVhdGVk&quot; + 
-        &quot;X2Jvb2wYKyADKAgSFwoPcmVwZWF0ZWRfc3RyaW5nGCwgAygJEhYKDnJlcGVh&quot; + 
-        &quot;dGVkX2J5dGVzGC0gAygMEkQKDXJlcGVhdGVkZ3JvdXAYLiADKAoyLS5wcm90&quot; + 
-        &quot;b2J1Zl91bml0dGVzdC5UZXN0QWxsVHlwZXMuUmVwZWF0ZWRHcm91cBJOChdy&quot; + 
-        &quot;ZXBlYXRlZF9uZXN0ZWRfbWVzc2FnZRgwIAMoCzItLnByb3RvYnVmX3VuaXR0&quot; + 
-        &quot;ZXN0LlRlc3RBbGxUeXBlcy5OZXN0ZWRNZXNzYWdlEkMKGHJlcGVhdGVkX2Zv&quot; + 
-        &quot;cmVpZ25fbWVzc2FnZRgxIAMoCzIhLnByb3RvYnVmX3VuaXR0ZXN0LkZvcmVp&quot; + 
-        &quot;Z25NZXNzYWdlEkgKF3JlcGVhdGVkX2ltcG9ydF9tZXNzYWdlGDIgAygLMicu&quot; + 
-        &quot;cHJvdG9idWZfdW5pdHRlc3RfaW1wb3J0LkltcG9ydE1lc3NhZ2USSAoUcmVw&quot; + 
-        &quot;ZWF0ZWRfbmVzdGVkX2VudW0YMyADKA4yKi5wcm90b2J1Zl91bml0dGVzdC5U&quot; + 
-        &quot;ZXN0QWxsVHlwZXMuTmVzdGVkRW51bRI9ChVyZXBlYXRlZF9mb3JlaWduX2Vu&quot; + 
-        &quot;dW0YNCADKA4yHi5wcm90b2J1Zl91bml0dGVzdC5Gb3JlaWduRW51bRJCChRy&quot; + 
-        &quot;ZXBlYXRlZF9pbXBvcnRfZW51bRg1IAMoDjIkLnByb3RvYnVmX3VuaXR0ZXN0&quot; + 
-        &quot;X2ltcG9ydC5JbXBvcnRFbnVtEiEKFXJlcGVhdGVkX3N0cmluZ19waWVjZRg2&quot; + 
-        &quot;IAMoCUICCAISGQoNcmVwZWF0ZWRfY29yZBg3IAMoCUICCAESGQoNZGVmYXVs&quot; + 
-        &quot;dF9pbnQzMhg9IAEoBToCNDESGQoNZGVmYXVsdF9pbnQ2NBg+IAEoAzoCNDIS&quot; + 
-        &quot;GgoOZGVmYXVsdF91aW50MzIYPyABKA06AjQzEhoKDmRlZmF1bHRfdWludDY0&quot; + 
-        &quot;GEAgASgEOgI0NBIbCg5kZWZhdWx0X3NpbnQzMhhBIAEoEToDLTQ1EhoKDmRl&quot; + 
-        &quot;ZmF1bHRfc2ludDY0GEIgASgSOgI0NhIbCg9kZWZhdWx0X2ZpeGVkMzIYQyAB&quot; + 
-        &quot;KAc6AjQ3EhsKD2RlZmF1bHRfZml4ZWQ2NBhEIAEoBjoCNDgSHAoQZGVmYXVs&quot; + 
-        &quot;dF9zZml4ZWQzMhhFIAEoDzoCNDkSHQoQZGVmYXVsdF9zZml4ZWQ2NBhGIAEo&quot; + 
-        &quot;EDoDLTUwEhsKDWRlZmF1bHRfZmxvYXQYRyABKAI6BDUxLjUSHQoOZGVmYXVs&quot; + 
-        &quot;dF9kb3VibGUYSCABKAE6BTUyMDAwEhoKDGRlZmF1bHRfYm9vbBhJIAEoCDoE&quot; + 
-        &quot;dHJ1ZRIdCg5kZWZhdWx0X3N0cmluZxhKIAEoCToFaGVsbG8SHAoNZGVmYXVs&quot; + 
-        &quot;dF9ieXRlcxhLIAEoDDoFd29ybGQSTAoTZGVmYXVsdF9uZXN0ZWRfZW51bRhR&quot; + 
-        &quot;IAEoDjIqLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxUeXBlcy5OZXN0ZWRF&quot; + 
-        &quot;bnVtOgNCQVISSQoUZGVmYXVsdF9mb3JlaWduX2VudW0YUiABKA4yHi5wcm90&quot; + 
-        &quot;b2J1Zl91bml0dGVzdC5Gb3JlaWduRW51bToLRk9SRUlHTl9CQVISTQoTZGVm&quot; + 
-        &quot;YXVsdF9pbXBvcnRfZW51bRhTIAEoDjIkLnByb3RvYnVmX3VuaXR0ZXN0X2lt&quot; + 
-        &quot;cG9ydC5JbXBvcnRFbnVtOgpJTVBPUlRfQkFSEiUKFGRlZmF1bHRfc3RyaW5n&quot; + 
-        &quot;X3BpZWNlGFQgASgJOgNhYmNCAggCEh0KDGRlZmF1bHRfY29yZBhVIAEoCToD&quot; + 
-        &quot;MTIzQgIIARobCg1OZXN0ZWRNZXNzYWdlEgoKAmJiGAEgASgFGhoKDU9wdGlv&quot; + 
-        &quot;bmFsR3JvdXASCQoBYRgRIAEoBRoaCg1SZXBlYXRlZEdyb3VwEgkKAWEYLyAB&quot; + 
-        &quot;KAUiJwoKTmVzdGVkRW51bRIHCgNGT08QARIHCgNCQVIQAhIHCgNCQVoQAyIb&quot; + 
-        &quot;Cg5Gb3JlaWduTWVzc2FnZRIJCgFjGAEgASgFIh0KEVRlc3RBbGxFeHRlbnNp&quot; + 
-        &quot;b25zKggIARCAgICAAiIkChdPcHRpb25hbEdyb3VwX2V4dGVuc2lvbhIJCgFh&quot; + 
-        &quot;GBEgASgFIiQKF1JlcGVhdGVkR3JvdXBfZXh0ZW5zaW9uEgkKAWEYLyABKAUi&quot; + 
-        &quot;1QUKDFRlc3RSZXF1aXJlZBIJCgFhGAEgAigFEg4KBmR1bW15MhgCIAEoBRIJ&quot; + 
-        &quot;CgFiGAMgAigFEg4KBmR1bW15NBgEIAEoBRIOCgZkdW1teTUYBSABKAUSDgoG&quot; + 
-        &quot;ZHVtbXk2GAYgASgFEg4KBmR1bW15NxgHIAEoBRIOCgZkdW1teTgYCCABKAUS&quot; + 
-        &quot;DgoGZHVtbXk5GAkgASgFEg8KB2R1bW15MTAYCiABKAUSDwoHZHVtbXkxMRgL&quot; + 
-        &quot;IAEoBRIPCgdkdW1teTEyGAwgASgFEg8KB2R1bW15MTMYDSABKAUSDwoHZHVt&quot; + 
-        &quot;bXkxNBgOIAEoBRIPCgdkdW1teTE1GA8gASgFEg8KB2R1bW15MTYYECABKAUS&quot; + 
-        &quot;DwoHZHVtbXkxNxgRIAEoBRIPCgdkdW1teTE4GBIgASgFEg8KB2R1bW15MTkY&quot; + 
-        &quot;EyABKAUSDwoHZHVtbXkyMBgUIAEoBRIPCgdkdW1teTIxGBUgASgFEg8KB2R1&quot; + 
-        &quot;bW15MjIYFiABKAUSDwoHZHVtbXkyMxgXIAEoBRIPCgdkdW1teTI0GBggASgF&quot; + 
-        &quot;Eg8KB2R1bW15MjUYGSABKAUSDwoHZHVtbXkyNhgaIAEoBRIPCgdkdW1teTI3&quot; + 
-        &quot;GBsgASgFEg8KB2R1bW15MjgYHCABKAUSDwoHZHVtbXkyORgdIAEoBRIPCgdk&quot; + 
-        &quot;dW1teTMwGB4gASgFEg8KB2R1bW15MzEYHyABKAUSDwoHZHVtbXkzMhggIAEo&quot; + 
-        &quot;BRIJCgFjGCEgAigFMlYKBnNpbmdsZRIkLnByb3RvYnVmX3VuaXR0ZXN0LlRl&quot; + 
-        &quot;c3RBbGxFeHRlbnNpb25zGOgHIAEoCzIfLnByb3RvYnVmX3VuaXR0ZXN0LlRl&quot; + 
-        &quot;c3RSZXF1aXJlZDJVCgVtdWx0aRIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RB&quot; + 
-        &quot;bGxFeHRlbnNpb25zGOkHIAMoCzIfLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RS&quot; + 
-        &quot;ZXF1aXJlZCKaAQoTVGVzdFJlcXVpcmVkRm9yZWlnbhI5ChBvcHRpb25hbF9t&quot; + 
-        &quot;ZXNzYWdlGAEgASgLMh8ucHJvdG9idWZfdW5pdHRlc3QuVGVzdFJlcXVpcmVk&quot; + 
-        &quot;EjkKEHJlcGVhdGVkX21lc3NhZ2UYAiADKAsyHy5wcm90b2J1Zl91bml0dGVz&quot; + 
-        &quot;dC5UZXN0UmVxdWlyZWQSDQoFZHVtbXkYAyABKAUiWgoRVGVzdEZvcmVpZ25O&quot; + 
-        &quot;ZXN0ZWQSRQoOZm9yZWlnbl9uZXN0ZWQYASABKAsyLS5wcm90b2J1Zl91bml0&quot; + 
-        &quot;dGVzdC5UZXN0QWxsVHlwZXMuTmVzdGVkTWVzc2FnZSISChBUZXN0RW1wdHlN&quot; + 
-        &quot;ZXNzYWdlIioKHlRlc3RFbXB0eU1lc3NhZ2VXaXRoRXh0ZW5zaW9ucyoICAEQ&quot; + 
-        &quot;gICAgAIiNAoYVGVzdFJlYWxseUxhcmdlVGFnTnVtYmVyEgkKAWEYASABKAUS&quot; + 
-        &quot;DQoCYmIY////fyABKAUiVQoUVGVzdFJlY3Vyc2l2ZU1lc3NhZ2USMgoBYRgB&quot; + 
-        &quot;IAEoCzInLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RSZWN1cnNpdmVNZXNzYWdl&quot; + 
-        &quot;EgkKAWkYAiABKAUiSwoUVGVzdE11dHVhbFJlY3Vyc2lvbkESMwoCYmIYASAB&quot; + 
-        &quot;KAsyJy5wcm90b2J1Zl91bml0dGVzdC5UZXN0TXV0dWFsUmVjdXJzaW9uQiJi&quot; + 
-        &quot;ChRUZXN0TXV0dWFsUmVjdXJzaW9uQhIyCgFhGAEgASgLMicucHJvdG9idWZf&quot; + 
-        &quot;dW5pdHRlc3QuVGVzdE11dHVhbFJlY3Vyc2lvbkESFgoOb3B0aW9uYWxfaW50&quot; + 
-        &quot;MzIYAiABKAUiswEKElRlc3REdXBGaWVsZE51bWJlchIJCgFhGAEgASgFEjYK&quot; + 
-        &quot;A2ZvbxgCIAEoCjIpLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3REdXBGaWVsZE51&quot; + 
-        &quot;bWJlci5Gb28SNgoDYmFyGAMgASgKMikucHJvdG9idWZfdW5pdHRlc3QuVGVz&quot; + 
-        &quot;dER1cEZpZWxkTnVtYmVyLkJhchoQCgNGb28SCQoBYRgBIAEoBRoQCgNCYXIS&quot; + 
-        &quot;CQoBYRgBIAEoBSKAAgoYVGVzdE5lc3RlZE1lc3NhZ2VIYXNCaXRzEloKF29w&quot; + 
-        &quot;dGlvbmFsX25lc3RlZF9tZXNzYWdlGAEgASgLMjkucHJvdG9idWZfdW5pdHRl&quot; + 
-        &quot;c3QuVGVzdE5lc3RlZE1lc3NhZ2VIYXNCaXRzLk5lc3RlZE1lc3NhZ2UahwEK&quot; + 
-        &quot;DU5lc3RlZE1lc3NhZ2USJAocbmVzdGVkbWVzc2FnZV9yZXBlYXRlZF9pbnQz&quot; + 
-        &quot;MhgBIAMoBRJQCiVuZXN0ZWRtZXNzYWdlX3JlcGVhdGVkX2ZvcmVpZ25tZXNz&quot; + 
-        &quot;YWdlGAIgAygLMiEucHJvdG9idWZfdW5pdHRlc3QuRm9yZWlnbk1lc3NhZ2Ui&quot; + 
-        &quot;5QMKF1Rlc3RDYW1lbENhc2VGaWVsZE5hbWVzEhYKDlByaW1pdGl2ZUZpZWxk&quot; + 
-        &quot;GAEgASgFEhMKC1N0cmluZ0ZpZWxkGAIgASgJEjEKCUVudW1GaWVsZBgDIAEo&quot; + 
-        &quot;DjIeLnByb3RvYnVmX3VuaXR0ZXN0LkZvcmVpZ25FbnVtEjcKDE1lc3NhZ2VG&quot; + 
-        &quot;aWVsZBgEIAEoCzIhLnByb3RvYnVmX3VuaXR0ZXN0LkZvcmVpZ25NZXNzYWdl&quot; + 
-        &quot;EhwKEFN0cmluZ1BpZWNlRmllbGQYBSABKAlCAggCEhUKCUNvcmRGaWVsZBgG&quot; + 
-        &quot;IAEoCUICCAESHgoWUmVwZWF0ZWRQcmltaXRpdmVGaWVsZBgHIAMoBRIbChNS&quot; + 
-        &quot;ZXBlYXRlZFN0cmluZ0ZpZWxkGAggAygJEjkKEVJlcGVhdGVkRW51bUZpZWxk&quot; + 
-        &quot;GAkgAygOMh4ucHJvdG9idWZfdW5pdHRlc3QuRm9yZWlnbkVudW0SPwoUUmVw&quot; + 
-        &quot;ZWF0ZWRNZXNzYWdlRmllbGQYCiADKAsyIS5wcm90b2J1Zl91bml0dGVzdC5G&quot; + 
-        &quot;b3JlaWduTWVzc2FnZRIkChhSZXBlYXRlZFN0cmluZ1BpZWNlRmllbGQYCyAD&quot; + 
-        &quot;KAlCAggCEh0KEVJlcGVhdGVkQ29yZEZpZWxkGAwgAygJQgIIASJVChJUZXN0&quot; + 
-        &quot;RmllbGRPcmRlcmluZ3MSEQoJbXlfc3RyaW5nGAsgASgJEg4KBm15X2ludBgB&quot; + 
-        &quot;IAEoAxIQCghteV9mbG9hdBhlIAEoAioECAIQCyoECAwQZSKQAgoYVGVzdEV4&quot; + 
-        &quot;dHJlbWVEZWZhdWx0VmFsdWVzEj8KDWVzY2FwZWRfYnl0ZXMYASABKAw6KFww&quot; + 
-        &quot;MDBcMDAxXDAwN1wwMTBcMDE0XG5cclx0XDAxM1xcXCdcIlwzNzYSIAoMbGFy&quot; + 
-        &quot;Z2VfdWludDMyGAIgASgNOgo0Mjk0OTY3Mjk1EioKDGxhcmdlX3VpbnQ2NBgD&quot; + 
-        &quot;IAEoBDoUMTg0NDY3NDQwNzM3MDk1NTE2MTUSIAoLc21hbGxfaW50MzIYBCAB&quot; + 
-        &quot;KAU6Cy0yMTQ3NDgzNjQ3EikKC3NtYWxsX2ludDY0GAUgASgDOhQtOTIyMzM3&quot; + 
-        &quot;MjAzNjg1NDc3NTgwNxIYCgt1dGY4X3N0cmluZxgGIAEoCToD4Yi0IqoDCg9U&quot; + 
-        &quot;ZXN0UGFja2VkVHlwZXMSGAoMcGFja2VkX2ludDMyGFogAygFQgIQARIYCgxw&quot; + 
-        &quot;YWNrZWRfaW50NjQYWyADKANCAhABEhkKDXBhY2tlZF91aW50MzIYXCADKA1C&quot; + 
-        &quot;AhABEhkKDXBhY2tlZF91aW50NjQYXSADKARCAhABEhkKDXBhY2tlZF9zaW50&quot; + 
-        &quot;MzIYXiADKBFCAhABEhkKDXBhY2tlZF9zaW50NjQYXyADKBJCAhABEhoKDnBh&quot; + 
-        &quot;Y2tlZF9maXhlZDMyGGAgAygHQgIQARIaCg5wYWNrZWRfZml4ZWQ2NBhhIAMo&quot; + 
-        &quot;BkICEAESGwoPcGFja2VkX3NmaXhlZDMyGGIgAygPQgIQARIbCg9wYWNrZWRf&quot; + 
-        &quot;c2ZpeGVkNjQYYyADKBBCAhABEhgKDHBhY2tlZF9mbG9hdBhkIAMoAkICEAES&quot; + 
-        &quot;GQoNcGFja2VkX2RvdWJsZRhlIAMoAUICEAESFwoLcGFja2VkX2Jvb2wYZiAD&quot; + 
-        &quot;KAhCAhABEjcKC3BhY2tlZF9lbnVtGGcgAygOMh4ucHJvdG9idWZfdW5pdHRl&quot; + 
-        &quot;c3QuRm9yZWlnbkVudW1CAhABIiAKFFRlc3RQYWNrZWRFeHRlbnNpb25zKggI&quot; + 
-        &quot;ARCAgICAAiIMCgpGb29SZXF1ZXN0Ig0KC0Zvb1Jlc3BvbnNlIgwKCkJhclJl&quot; + 
-        &quot;cXVlc3QiDQoLQmFyUmVzcG9uc2UqQAoLRm9yZWlnbkVudW0SDwoLRk9SRUlH&quot; + 
-        &quot;Tl9GT08QBBIPCgtGT1JFSUdOX0JBUhAFEg8KC0ZPUkVJR05fQkFaEAYqRwoU&quot; + 
-        &quot;VGVzdEVudW1XaXRoRHVwVmFsdWUSCAoERk9PMRABEggKBEJBUjEQAhIHCgNC&quot; + 
-        &quot;QVoQAxIICgRGT08yEAESCAoEQkFSMhACKokBCg5UZXN0U3BhcnNlRW51bRIM&quot; + 
-        &quot;CghTUEFSU0VfQRB7Eg4KCFNQQVJTRV9CEKbnAxIPCghTUEFSU0VfQxCysYAG&quot; + 
-        &quot;EhUKCFNQQVJTRV9EEPH//////////wESFQoIU1BBUlNFX0UQtN78////////&quot; + 
-        &quot;ARIMCghTUEFSU0VfRhAAEgwKCFNQQVJTRV9HEAIymQEKC1Rlc3RTZXJ2aWNl&quot; + 
-        &quot;EkQKA0ZvbxIdLnByb3RvYnVmX3VuaXR0ZXN0LkZvb1JlcXVlc3QaHi5wcm90&quot; + 
-        &quot;b2J1Zl91bml0dGVzdC5Gb29SZXNwb25zZRJECgNCYXISHS5wcm90b2J1Zl91&quot; + 
-        &quot;bml0dGVzdC5CYXJSZXF1ZXN0Gh4ucHJvdG9idWZfdW5pdHRlc3QuQmFyUmVz&quot; + 
-        &quot;cG9uc2U6RgoYb3B0aW9uYWxfaW50MzJfZXh0ZW5zaW9uEiQucHJvdG9idWZf&quot; + 
-        &quot;dW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYASABKAU6RgoYb3B0aW9uYWxf&quot; + 
-        &quot;aW50NjRfZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4&quot; + 
-        &quot;dGVuc2lvbnMYAiABKAM6RwoZb3B0aW9uYWxfdWludDMyX2V4dGVuc2lvbhIk&quot; + 
-        &quot;LnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGAMgASgNOkcK&quot; + 
-        &quot;GW9wdGlvbmFsX3VpbnQ2NF9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVz&quot; + 
-        &quot;dC5UZXN0QWxsRXh0ZW5zaW9ucxgEIAEoBDpHChlvcHRpb25hbF9zaW50MzJf&quot; + 
-        &quot;ZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lv&quot; + 
-        &quot;bnMYBSABKBE6RwoZb3B0aW9uYWxfc2ludDY0X2V4dGVuc2lvbhIkLnByb3Rv&quot; + 
-        &quot;YnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGAYgASgSOkgKGm9wdGlv&quot; + 
-        &quot;bmFsX2ZpeGVkMzJfZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVz&quot; + 
-        &quot;dEFsbEV4dGVuc2lvbnMYByABKAc6SAoab3B0aW9uYWxfZml4ZWQ2NF9leHRl&quot; + 
-        &quot;bnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgI&quot; + 
-        &quot;IAEoBjpJChtvcHRpb25hbF9zZml4ZWQzMl9leHRlbnNpb24SJC5wcm90b2J1&quot; + 
-        &quot;Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgJIAEoDzpJChtvcHRpb25h&quot; + 
-        &quot;bF9zZml4ZWQ2NF9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0&quot; + 
-        &quot;QWxsRXh0ZW5zaW9ucxgKIAEoEDpGChhvcHRpb25hbF9mbG9hdF9leHRlbnNp&quot; + 
-        &quot;b24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgLIAEo&quot; + 
-        &quot;AjpHChlvcHRpb25hbF9kb3VibGVfZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5p&quot; + 
-        &quot;dHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYDCABKAE6RQoXb3B0aW9uYWxfYm9v&quot; + 
-        &quot;bF9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5z&quot; + 
-        &quot;aW9ucxgNIAEoCDpHChlvcHRpb25hbF9zdHJpbmdfZXh0ZW5zaW9uEiQucHJv&quot; + 
-        &quot;dG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYDiABKAk6RgoYb3B0&quot; + 
-        &quot;aW9uYWxfYnl0ZXNfZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVz&quot; + 
-        &quot;dEFsbEV4dGVuc2lvbnMYDyABKAw6cQoXb3B0aW9uYWxncm91cF9leHRlbnNp&quot; + 
-        &quot;b24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgQIAEo&quot; + 
-        &quot;CjIqLnByb3RvYnVmX3VuaXR0ZXN0Lk9wdGlvbmFsR3JvdXBfZXh0ZW5zaW9u&quot; + 
-        &quot;On4KIW9wdGlvbmFsX25lc3RlZF9tZXNzYWdlX2V4dGVuc2lvbhIkLnByb3Rv&quot; + 
-        &quot;YnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGBIgASgLMi0ucHJvdG9i&quot; + 
-        &quot;dWZfdW5pdHRlc3QuVGVzdEFsbFR5cGVzLk5lc3RlZE1lc3NhZ2U6cwoib3B0&quot; + 
-        &quot;aW9uYWxfZm9yZWlnbl9tZXNzYWdlX2V4dGVuc2lvbhIkLnByb3RvYnVmX3Vu&quot; + 
-        &quot;aXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGBMgASgLMiEucHJvdG9idWZfdW5p&quot; + 
-        &quot;dHRlc3QuRm9yZWlnbk1lc3NhZ2U6eAohb3B0aW9uYWxfaW1wb3J0X21lc3Nh&quot; + 
-        &quot;Z2VfZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVu&quot; + 
-        &quot;c2lvbnMYFCABKAsyJy5wcm90b2J1Zl91bml0dGVzdF9pbXBvcnQuSW1wb3J0&quot; + 
-        &quot;TWVzc2FnZTp4Ch5vcHRpb25hbF9uZXN0ZWRfZW51bV9leHRlbnNpb24SJC5w&quot; + 
-        &quot;cm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgVIAEoDjIqLnBy&quot; + 
-        &quot;b3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxUeXBlcy5OZXN0ZWRFbnVtOm0KH29w&quot; + 
-        &quot;dGlvbmFsX2ZvcmVpZ25fZW51bV9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0&quot; + 
-        &quot;dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgWIAEoDjIeLnByb3RvYnVmX3VuaXR0&quot; + 
-        &quot;ZXN0LkZvcmVpZ25FbnVtOnIKHm9wdGlvbmFsX2ltcG9ydF9lbnVtX2V4dGVu&quot; + 
-        &quot;c2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGBcg&quot; + 
-        &quot;ASgOMiQucHJvdG9idWZfdW5pdHRlc3RfaW1wb3J0LkltcG9ydEVudW06UQof&quot; + 
-        &quot;b3B0aW9uYWxfc3RyaW5nX3BpZWNlX2V4dGVuc2lvbhIkLnByb3RvYnVmX3Vu&quot; + 
-        &quot;aXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGBggASgJQgIIAjpJChdvcHRpb25h&quot; + 
-        &quot;bF9jb3JkX2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxF&quot; + 
-        &quot;eHRlbnNpb25zGBkgASgJQgIIATpGChhyZXBlYXRlZF9pbnQzMl9leHRlbnNp&quot; + 
-        &quot;b24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgfIAMo&quot; + 
-        &quot;BTpGChhyZXBlYXRlZF9pbnQ2NF9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0&quot; + 
-        &quot;dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxggIAMoAzpHChlyZXBlYXRlZF91aW50&quot; + 
-        &quot;MzJfZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVu&quot; + 
-        &quot;c2lvbnMYISADKA06RwoZcmVwZWF0ZWRfdWludDY0X2V4dGVuc2lvbhIkLnBy&quot; + 
-        &quot;b3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGCIgAygEOkcKGXJl&quot; + 
-        &quot;cGVhdGVkX3NpbnQzMl9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5U&quot; + 
-        &quot;ZXN0QWxsRXh0ZW5zaW9ucxgjIAMoETpHChlyZXBlYXRlZF9zaW50NjRfZXh0&quot; + 
-        &quot;ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMY&quot; + 
-        &quot;JCADKBI6SAoacmVwZWF0ZWRfZml4ZWQzMl9leHRlbnNpb24SJC5wcm90b2J1&quot; + 
-        &quot;Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxglIAMoBzpIChpyZXBlYXRl&quot; + 
-        &quot;ZF9maXhlZDY0X2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RB&quot; + 
-        &quot;bGxFeHRlbnNpb25zGCYgAygGOkkKG3JlcGVhdGVkX3NmaXhlZDMyX2V4dGVu&quot; + 
-        &quot;c2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGCcg&quot; + 
-        &quot;AygPOkkKG3JlcGVhdGVkX3NmaXhlZDY0X2V4dGVuc2lvbhIkLnByb3RvYnVm&quot; + 
-        &quot;X3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGCggAygQOkYKGHJlcGVhdGVk&quot; + 
-        &quot;X2Zsb2F0X2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxF&quot; + 
-        &quot;eHRlbnNpb25zGCkgAygCOkcKGXJlcGVhdGVkX2RvdWJsZV9leHRlbnNpb24S&quot; + 
-        &quot;JC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgqIAMoATpF&quot; + 
-        &quot;ChdyZXBlYXRlZF9ib29sX2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0&quot; + 
-        &quot;LlRlc3RBbGxFeHRlbnNpb25zGCsgAygIOkcKGXJlcGVhdGVkX3N0cmluZ19l&quot; + 
-        &quot;eHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9u&quot; + 
-        &quot;cxgsIAMoCTpGChhyZXBlYXRlZF9ieXRlc19leHRlbnNpb24SJC5wcm90b2J1&quot; + 
-        &quot;Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgtIAMoDDpxChdyZXBlYXRl&quot; + 
-        &quot;ZGdyb3VwX2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxF&quot; + 
-        &quot;eHRlbnNpb25zGC4gAygKMioucHJvdG9idWZfdW5pdHRlc3QuUmVwZWF0ZWRH&quot; + 
-        &quot;cm91cF9leHRlbnNpb246fgohcmVwZWF0ZWRfbmVzdGVkX21lc3NhZ2VfZXh0&quot; + 
-        &quot;ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMY&quot; + 
-        &quot;MCADKAsyLS5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsVHlwZXMuTmVzdGVk&quot; + 
-        &quot;TWVzc2FnZTpzCiJyZXBlYXRlZF9mb3JlaWduX21lc3NhZ2VfZXh0ZW5zaW9u&quot; + 
-        &quot;EiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYMSADKAsy&quot; + 
-        &quot;IS5wcm90b2J1Zl91bml0dGVzdC5Gb3JlaWduTWVzc2FnZTp4CiFyZXBlYXRl&quot; + 
-        &quot;ZF9pbXBvcnRfbWVzc2FnZV9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVz&quot; + 
-        &quot;dC5UZXN0QWxsRXh0ZW5zaW9ucxgyIAMoCzInLnByb3RvYnVmX3VuaXR0ZXN0&quot; + 
-        &quot;X2ltcG9ydC5JbXBvcnRNZXNzYWdlOngKHnJlcGVhdGVkX25lc3RlZF9lbnVt&quot; + 
-        &quot;X2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNp&quot; + 
-        &quot;b25zGDMgAygOMioucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbFR5cGVzLk5l&quot; + 
-        &quot;c3RlZEVudW06bQofcmVwZWF0ZWRfZm9yZWlnbl9lbnVtX2V4dGVuc2lvbhIk&quot; + 
-        &quot;LnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGDQgAygOMh4u&quot; + 
-        &quot;cHJvdG9idWZfdW5pdHRlc3QuRm9yZWlnbkVudW06cgoecmVwZWF0ZWRfaW1w&quot; + 
-        &quot;b3J0X2VudW1fZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFs&quot; + 
-        &quot;bEV4dGVuc2lvbnMYNSADKA4yJC5wcm90b2J1Zl91bml0dGVzdF9pbXBvcnQu&quot; + 
-        &quot;SW1wb3J0RW51bTpRCh9yZXBlYXRlZF9zdHJpbmdfcGllY2VfZXh0ZW5zaW9u&quot; + 
-        &quot;EiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYNiADKAlC&quot; + 
-        &quot;AggCOkkKF3JlcGVhdGVkX2NvcmRfZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5p&quot; + 
-        &quot;dHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYNyADKAlCAggBOkkKF2RlZmF1bHRf&quot; + 
-        &quot;aW50MzJfZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4&quot; + 
-        &quot;dGVuc2lvbnMYPSABKAU6AjQxOkkKF2RlZmF1bHRfaW50NjRfZXh0ZW5zaW9u&quot; + 
-        &quot;EiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYPiABKAM6&quot; + 
-        &quot;AjQyOkoKGGRlZmF1bHRfdWludDMyX2V4dGVuc2lvbhIkLnByb3RvYnVmX3Vu&quot; + 
-        &quot;aXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGD8gASgNOgI0MzpKChhkZWZhdWx0&quot; + 
-        &quot;X3VpbnQ2NF9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxs&quot; + 
-        &quot;RXh0ZW5zaW9ucxhAIAEoBDoCNDQ6SwoYZGVmYXVsdF9zaW50MzJfZXh0ZW5z&quot; + 
-        &quot;aW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYQSAB&quot; + 
-        &quot;KBE6Ay00NTpKChhkZWZhdWx0X3NpbnQ2NF9leHRlbnNpb24SJC5wcm90b2J1&quot; + 
-        &quot;Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxhCIAEoEjoCNDY6SwoZZGVm&quot; + 
-        &quot;YXVsdF9maXhlZDMyX2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRl&quot; + 
-        &quot;c3RBbGxFeHRlbnNpb25zGEMgASgHOgI0NzpLChlkZWZhdWx0X2ZpeGVkNjRf&quot; + 
-        &quot;ZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lv&quot; + 
-        &quot;bnMYRCABKAY6AjQ4OkwKGmRlZmF1bHRfc2ZpeGVkMzJfZXh0ZW5zaW9uEiQu&quot; + 
-        &quot;cHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYRSABKA86AjQ5&quot; + 
-        &quot;Ok0KGmRlZmF1bHRfc2ZpeGVkNjRfZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5p&quot; + 
-        &quot;dHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYRiABKBA6Ay01MDpLChdkZWZhdWx0&quot; + 
-        &quot;X2Zsb2F0X2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxF&quot; + 
-        &quot;eHRlbnNpb25zGEcgASgCOgQ1MS41Ok0KGGRlZmF1bHRfZG91YmxlX2V4dGVu&quot; + 
-        &quot;c2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGEgg&quot; + 
-        &quot;ASgBOgU1MjAwMDpKChZkZWZhdWx0X2Jvb2xfZXh0ZW5zaW9uEiQucHJvdG9i&quot; + 
-        &quot;dWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYSSABKAg6BHRydWU6TQoY&quot; + 
-        &quot;ZGVmYXVsdF9zdHJpbmdfZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3Qu&quot; + 
-        &quot;VGVzdEFsbEV4dGVuc2lvbnMYSiABKAk6BWhlbGxvOkwKF2RlZmF1bHRfYnl0&quot; + 
-        &quot;ZXNfZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVu&quot; + 
-        &quot;c2lvbnMYSyABKAw6BXdvcmxkOnwKHWRlZmF1bHRfbmVzdGVkX2VudW1fZXh0&quot; + 
-        &quot;ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMY&quot; + 
-        &quot;USABKA4yKi5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsVHlwZXMuTmVzdGVk&quot; + 
-        &quot;RW51bToDQkFSOnkKHmRlZmF1bHRfZm9yZWlnbl9lbnVtX2V4dGVuc2lvbhIk&quot; + 
-        &quot;LnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGFIgASgOMh4u&quot; + 
-        &quot;cHJvdG9idWZfdW5pdHRlc3QuRm9yZWlnbkVudW06C0ZPUkVJR05fQkFSOn0K&quot; + 
-        &quot;HWRlZmF1bHRfaW1wb3J0X2VudW1fZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5p&quot; + 
-        &quot;dHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYUyABKA4yJC5wcm90b2J1Zl91bml0&quot; + 
-        &quot;dGVzdF9pbXBvcnQuSW1wb3J0RW51bToKSU1QT1JUX0JBUjpVCh5kZWZhdWx0&quot; + 
-        &quot;X3N0cmluZ19waWVjZV9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5U&quot; + 
-        &quot;ZXN0QWxsRXh0ZW5zaW9ucxhUIAEoCToDYWJjQgIIAjpNChZkZWZhdWx0X2Nv&quot; + 
-        &quot;cmRfZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVu&quot; + 
-        &quot;c2lvbnMYVSABKAk6AzEyM0ICCAE6QgoTbXlfZXh0ZW5zaW9uX3N0cmluZxIl&quot; + 
-        &quot;LnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RGaWVsZE9yZGVyaW5ncxgyIAEoCTo/&quot; + 
-        &quot;ChBteV9leHRlbnNpb25faW50EiUucHJvdG9idWZfdW5pdHRlc3QuVGVzdEZp&quot; + 
-        &quot;ZWxkT3JkZXJpbmdzGAUgASgFOksKFnBhY2tlZF9pbnQzMl9leHRlbnNpb24S&quot; + 
-        &quot;Jy5wcm90b2J1Zl91bml0dGVzdC5UZXN0UGFja2VkRXh0ZW5zaW9ucxhaIAMo&quot; + 
-        &quot;BUICEAE6SwoWcGFja2VkX2ludDY0X2V4dGVuc2lvbhInLnByb3RvYnVmX3Vu&quot; + 
-        &quot;aXR0ZXN0LlRlc3RQYWNrZWRFeHRlbnNpb25zGFsgAygDQgIQATpMChdwYWNr&quot; + 
-        &quot;ZWRfdWludDMyX2V4dGVuc2lvbhInLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RQ&quot; + 
-        &quot;YWNrZWRFeHRlbnNpb25zGFwgAygNQgIQATpMChdwYWNrZWRfdWludDY0X2V4&quot; + 
-        &quot;dGVuc2lvbhInLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RQYWNrZWRFeHRlbnNp&quot; + 
-        &quot;b25zGF0gAygEQgIQATpMChdwYWNrZWRfc2ludDMyX2V4dGVuc2lvbhInLnBy&quot; + 
-        &quot;b3RvYnVmX3VuaXR0ZXN0LlRlc3RQYWNrZWRFeHRlbnNpb25zGF4gAygRQgIQ&quot; + 
-        &quot;ATpMChdwYWNrZWRfc2ludDY0X2V4dGVuc2lvbhInLnByb3RvYnVmX3VuaXR0&quot; + 
-        &quot;ZXN0LlRlc3RQYWNrZWRFeHRlbnNpb25zGF8gAygSQgIQATpNChhwYWNrZWRf&quot; + 
-        &quot;Zml4ZWQzMl9leHRlbnNpb24SJy5wcm90b2J1Zl91bml0dGVzdC5UZXN0UGFj&quot; + 
-        &quot;a2VkRXh0ZW5zaW9ucxhgIAMoB0ICEAE6TQoYcGFja2VkX2ZpeGVkNjRfZXh0&quot; + 
-        &quot;ZW5zaW9uEicucHJvdG9idWZfdW5pdHRlc3QuVGVzdFBhY2tlZEV4dGVuc2lv&quot; + 
-        &quot;bnMYYSADKAZCAhABOk4KGXBhY2tlZF9zZml4ZWQzMl9leHRlbnNpb24SJy5w&quot; + 
-        &quot;cm90b2J1Zl91bml0dGVzdC5UZXN0UGFja2VkRXh0ZW5zaW9ucxhiIAMoD0IC&quot; + 
-        &quot;EAE6TgoZcGFja2VkX3NmaXhlZDY0X2V4dGVuc2lvbhInLnByb3RvYnVmX3Vu&quot; + 
-        &quot;aXR0ZXN0LlRlc3RQYWNrZWRFeHRlbnNpb25zGGMgAygQQgIQATpLChZwYWNr&quot; + 
-        &quot;ZWRfZmxvYXRfZXh0ZW5zaW9uEicucHJvdG9idWZfdW5pdHRlc3QuVGVzdFBh&quot; + 
-        &quot;Y2tlZEV4dGVuc2lvbnMYZCADKAJCAhABOkwKF3BhY2tlZF9kb3VibGVfZXh0&quot; + 
-        &quot;ZW5zaW9uEicucHJvdG9idWZfdW5pdHRlc3QuVGVzdFBhY2tlZEV4dGVuc2lv&quot; + 
-        &quot;bnMYZSADKAFCAhABOkoKFXBhY2tlZF9ib29sX2V4dGVuc2lvbhInLnByb3Rv&quot; + 
-        &quot;YnVmX3VuaXR0ZXN0LlRlc3RQYWNrZWRFeHRlbnNpb25zGGYgAygIQgIQATpq&quot; + 
-        &quot;ChVwYWNrZWRfZW51bV9leHRlbnNpb24SJy5wcm90b2J1Zl91bml0dGVzdC5U&quot; + 
-        &quot;ZXN0UGFja2VkRXh0ZW5zaW9ucxhnIAMoDjIeLnByb3RvYnVmX3VuaXR0ZXN0&quot; + 
-        &quot;LkZvcmVpZ25FbnVtQgIQAUJKQg1Vbml0dGVzdFByb3RvSAHCPjYKIUdvb2ds&quot; + 
-        &quot;ZS5Qcm90b2NvbEJ1ZmZlcnMuVGVzdFByb3RvcxIRVW5pdFRlc3RQcm90b0Zp&quot; + 
-        &quot;bGU=&quot;),
-        new pbd::FileDescriptor[] {
-          global::Google.ProtocolBuffers.DescriptorProtos.CSharpOptions.Descriptor, 
-          global::Google.ProtocolBuffers.TestProtos.UnitTestImportProtoFile.Descriptor, 
-        });
     #endregion
-    
     #region Extensions
     public const int OptionalInt32ExtensionFieldNumber = 1;
-    public static readonly pb::GeneratedExtensionBase&lt;int&gt; OptionalInt32Extension =
-        pb::GeneratedSingleExtension&lt;int&gt;.CreateInstance(Descriptor.Extensions[0]);
+    public static pb::GeneratedExtensionBase&lt;int&gt; OptionalInt32Extension;
     public const int OptionalInt64ExtensionFieldNumber = 2;
-    public static readonly pb::GeneratedExtensionBase&lt;long&gt; OptionalInt64Extension =
-        pb::GeneratedSingleExtension&lt;long&gt;.CreateInstance(Descriptor.Extensions[1]);
+    public static pb::GeneratedExtensionBase&lt;long&gt; OptionalInt64Extension;
     public const int OptionalUint32ExtensionFieldNumber = 3;
-    public static readonly pb::GeneratedExtensionBase&lt;uint&gt; OptionalUint32Extension =
-        pb::GeneratedSingleExtension&lt;uint&gt;.CreateInstance(Descriptor.Extensions[2]);
+    public static pb::GeneratedExtensionBase&lt;uint&gt; OptionalUint32Extension;
     public const int OptionalUint64ExtensionFieldNumber = 4;
-    public static readonly pb::GeneratedExtensionBase&lt;ulong&gt; OptionalUint64Extension =
-        pb::GeneratedSingleExtension&lt;ulong&gt;.CreateInstance(Descriptor.Extensions[3]);
+    public static pb::GeneratedExtensionBase&lt;ulong&gt; OptionalUint64Extension;
     public const int OptionalSint32ExtensionFieldNumber = 5;
-    public static readonly pb::GeneratedExtensionBase&lt;int&gt; OptionalSint32Extension =
-        pb::GeneratedSingleExtension&lt;int&gt;.CreateInstance(Descriptor.Extensions[4]);
+    public static pb::GeneratedExtensionBase&lt;int&gt; OptionalSint32Extension;
     public const int OptionalSint64ExtensionFieldNumber = 6;
-    public static readonly pb::GeneratedExtensionBase&lt;long&gt; OptionalSint64Extension =
-        pb::GeneratedSingleExtension&lt;long&gt;.CreateInstance(Descriptor.Extensions[5]);
+    public static pb::GeneratedExtensionBase&lt;long&gt; OptionalSint64Extension;
     public const int OptionalFixed32ExtensionFieldNumber = 7;
-    public static readonly pb::GeneratedExtensionBase&lt;uint&gt; OptionalFixed32Extension =
-        pb::GeneratedSingleExtension&lt;uint&gt;.CreateInstance(Descriptor.Extensions[6]);
+    public static pb::GeneratedExtensionBase&lt;uint&gt; OptionalFixed32Extension;
     public const int OptionalFixed64ExtensionFieldNumber = 8;
-    public static readonly pb::GeneratedExtensionBase&lt;ulong&gt; OptionalFixed64Extension =
-        pb::GeneratedSingleExtension&lt;ulong&gt;.CreateInstance(Descriptor.Extensions[7]);
+    public static pb::GeneratedExtensionBase&lt;ulong&gt; OptionalFixed64Extension;
     public const int OptionalSfixed32ExtensionFieldNumber = 9;
-    public static readonly pb::GeneratedExtensionBase&lt;int&gt; OptionalSfixed32Extension =
-        pb::GeneratedSingleExtension&lt;int&gt;.CreateInstance(Descriptor.Extensions[8]);
+    public static pb::GeneratedExtensionBase&lt;int&gt; OptionalSfixed32Extension;
     public const int OptionalSfixed64ExtensionFieldNumber = 10;
-    public static readonly pb::GeneratedExtensionBase&lt;long&gt; OptionalSfixed64Extension =
-        pb::GeneratedSingleExtension&lt;long&gt;.CreateInstance(Descriptor.Extensions[9]);
+    public static pb::GeneratedExtensionBase&lt;long&gt; OptionalSfixed64Extension;
     public const int OptionalFloatExtensionFieldNumber = 11;
-    public static readonly pb::GeneratedExtensionBase&lt;float&gt; OptionalFloatExtension =
-        pb::GeneratedSingleExtension&lt;float&gt;.CreateInstance(Descriptor.Extensions[10]);
+    public static pb::GeneratedExtensionBase&lt;float&gt; OptionalFloatExtension;
     public const int OptionalDoubleExtensionFieldNumber = 12;
-    public static readonly pb::GeneratedExtensionBase&lt;double&gt; OptionalDoubleExtension =
-        pb::GeneratedSingleExtension&lt;double&gt;.CreateInstance(Descriptor.Extensions[11]);
+    public static pb::GeneratedExtensionBase&lt;double&gt; OptionalDoubleExtension;
     public const int OptionalBoolExtensionFieldNumber = 13;
-    public static readonly pb::GeneratedExtensionBase&lt;bool&gt; OptionalBoolExtension =
-        pb::GeneratedSingleExtension&lt;bool&gt;.CreateInstance(Descriptor.Extensions[12]);
+    public static pb::GeneratedExtensionBase&lt;bool&gt; OptionalBoolExtension;
     public const int OptionalStringExtensionFieldNumber = 14;
-    public static readonly pb::GeneratedExtensionBase&lt;string&gt; OptionalStringExtension =
-        pb::GeneratedSingleExtension&lt;string&gt;.CreateInstance(Descriptor.Extensions[13]);
+    public static pb::GeneratedExtensionBase&lt;string&gt; OptionalStringExtension;
     public const int OptionalBytesExtensionFieldNumber = 15;
-    public static readonly pb::GeneratedExtensionBase&lt;pb::ByteString&gt; OptionalBytesExtension =
-        pb::GeneratedSingleExtension&lt;pb::ByteString&gt;.CreateInstance(Descriptor.Extensions[14]);
+    public static pb::GeneratedExtensionBase&lt;pb::ByteString&gt; OptionalBytesExtension;
     public const int OptionalGroupExtensionFieldNumber = 16;
-    public static readonly pb::GeneratedExtensionBase&lt;global::Google.ProtocolBuffers.TestProtos.OptionalGroup_extension&gt; OptionalGroupExtension =
-        pb::GeneratedSingleExtension&lt;global::Google.ProtocolBuffers.TestProtos.OptionalGroup_extension&gt;.CreateInstance(Descriptor.Extensions[15]);
+    public static pb::GeneratedExtensionBase&lt;global::Google.ProtocolBuffers.TestProtos.OptionalGroup_extension&gt; OptionalGroupExtension;
     public const int OptionalNestedMessageExtensionFieldNumber = 18;
-    public static readonly pb::GeneratedExtensionBase&lt;global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage&gt; OptionalNestedMessageExtension =
-        pb::GeneratedSingleExtension&lt;global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage&gt;.CreateInstance(Descriptor.Extensions[16]);
+    public static pb::GeneratedExtensionBase&lt;global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage&gt; OptionalNestedMessageExtension;
     public const int OptionalForeignMessageExtensionFieldNumber = 19;
-    public static readonly pb::GeneratedExtensionBase&lt;global::Google.ProtocolBuffers.TestProtos.ForeignMessage&gt; OptionalForeignMessageExtension =
-        pb::GeneratedSingleExtension&lt;global::Google.ProtocolBuffers.TestProtos.ForeignMessage&gt;.CreateInstance(Descriptor.Extensions[17]);
+    public static pb::GeneratedExtensionBase&lt;global::Google.ProtocolBuffers.TestProtos.ForeignMessage&gt; OptionalForeignMessageExtension;
     public const int OptionalImportMessageExtensionFieldNumber = 20;
-    public static readonly pb::GeneratedExtensionBase&lt;global::Google.ProtocolBuffers.TestProtos.ImportMessage&gt; OptionalImportMessageExtension =
-        pb::GeneratedSingleExtension&lt;global::Google.ProtocolBuffers.TestProtos.ImportMessage&gt;.CreateInstance(Descriptor.Extensions[18]);
+    public static pb::GeneratedExtensionBase&lt;global::Google.ProtocolBuffers.TestProtos.ImportMessage&gt; OptionalImportMessageExtension;
     public const int OptionalNestedEnumExtensionFieldNumber = 21;
-    public static readonly pb::GeneratedExtensionBase&lt;global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedEnum&gt; OptionalNestedEnumExtension =
-        pb::GeneratedSingleExtension&lt;global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedEnum&gt;.CreateInstance(Descriptor.Extensions[19]);
+    public static pb::GeneratedExtensionBase&lt;global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedEnum&gt; OptionalNestedEnumExtension;
     public const int OptionalForeignEnumExtensionFieldNumber = 22;
-    public static readonly pb::GeneratedExtensionBase&lt;global::Google.ProtocolBuffers.TestProtos.ForeignEnum&gt; OptionalForeignEnumExtension =
-        pb::GeneratedSingleExtension&lt;global::Google.ProtocolBuffers.TestProtos.ForeignEnum&gt;.CreateInstance(Descriptor.Extensions[20]);
+    public static pb::GeneratedExtensionBase&lt;global::Google.ProtocolBuffers.TestProtos.ForeignEnum&gt; OptionalForeignEnumExtension;
     public const int OptionalImportEnumExtensionFieldNumber = 23;
-    public static readonly pb::GeneratedExtensionBase&lt;global::Google.ProtocolBuffers.TestProtos.ImportEnum&gt; OptionalImportEnumExtension =
-        pb::GeneratedSingleExtension&lt;global::Google.ProtocolBuffers.TestProtos.ImportEnum&gt;.CreateInstance(Descriptor.Extensions[21]);
+    public static pb::GeneratedExtensionBase&lt;global::Google.ProtocolBuffers.TestProtos.ImportEnum&gt; OptionalImportEnumExtension;
     public const int OptionalStringPieceExtensionFieldNumber = 24;
-    public static readonly pb::GeneratedExtensionBase&lt;string&gt; OptionalStringPieceExtension =
-        pb::GeneratedSingleExtension&lt;string&gt;.CreateInstance(Descriptor.Extensions[22]);
+    public static pb::GeneratedExtensionBase&lt;string&gt; OptionalStringPieceExtension;
     public const int OptionalCordExtensionFieldNumber = 25;
-    public static readonly pb::GeneratedExtensionBase&lt;string&gt; OptionalCordExtension =
-        pb::GeneratedSingleExtension&lt;string&gt;.CreateInstance(Descriptor.Extensions[23]);
+    public static pb::GeneratedExtensionBase&lt;string&gt; OptionalCordExtension;
     public const int RepeatedInt32ExtensionFieldNumber = 31;
-    public static readonly
-        pb::GeneratedExtensionBase&lt;scg::IList&lt;int&gt;&gt; RepeatedInt32Extension =
-        pb::GeneratedRepeatExtension&lt;int&gt;.CreateInstance(Descriptor.Extensions[24]);
+    public static pb::GeneratedExtensionBase&lt;scg::IList&lt;int&gt;&gt; RepeatedInt32Extension;
     public const int RepeatedInt64ExtensionFieldNumber = 32;
-    public static readonly
-        pb::GeneratedExtensionBase&lt;scg::IList&lt;long&gt;&gt; RepeatedInt64Extension =
-        pb::GeneratedRepeatExtension&lt;long&gt;.CreateInstance(Descriptor.Extensions[25]);
+    public static pb::GeneratedExtensionBase&lt;scg::IList&lt;long&gt;&gt; RepeatedInt64Extension;
     public const int RepeatedUint32ExtensionFieldNumber = 33;
-    public static readonly
-        pb::GeneratedExtensionBase&lt;scg::IList&lt;uint&gt;&gt; RepeatedUint32Extension =
-        pb::GeneratedRepeatExtension&lt;uint&gt;.CreateInstance(Descriptor.Extensions[26]);
+    public static pb::GeneratedExtensionBase&lt;scg::IList&lt;uint&gt;&gt; RepeatedUint32Extension;
     public const int RepeatedUint64ExtensionFieldNumber = 34;
-    public static readonly
-        pb::GeneratedExtensionBase&lt;scg::IList&lt;ulong&gt;&gt; RepeatedUint64Extension =
-        pb::GeneratedRepeatExtension&lt;ulong&gt;.CreateInstance(Descriptor.Extensions[27]);
+    public static pb::GeneratedExtensionBase&lt;scg::IList&lt;ulong&gt;&gt; RepeatedUint64Extension;
     public const int RepeatedSint32ExtensionFieldNumber = 35;
-    public static readonly
-        pb::GeneratedExtensionBase&lt;scg::IList&lt;int&gt;&gt; RepeatedSint32Extension =
-        pb::GeneratedRepeatExtension&lt;int&gt;.CreateInstance(Descriptor.Extensions[28]);
+    public static pb::GeneratedExtensionBase&lt;scg::IList&lt;int&gt;&gt; RepeatedSint32Extension;
     public const int RepeatedSint64ExtensionFieldNumber = 36;
-    public static readonly
-        pb::GeneratedExtensionBase&lt;scg::IList&lt;long&gt;&gt; RepeatedSint64Extension =
-        pb::GeneratedRepeatExtension&lt;long&gt;.CreateInstance(Descriptor.Extensions[29]);
+    public static pb::GeneratedExtensionBase&lt;scg::IList&lt;long&gt;&gt; RepeatedSint64Extension;
     public const int RepeatedFixed32ExtensionFieldNumber = 37;
-    public static readonly
-        pb::GeneratedExtensionBase&lt;scg::IList&lt;uint&gt;&gt; RepeatedFixed32Extension =
-        pb::GeneratedRepeatExtension&lt;uint&gt;.CreateInstance(Descriptor.Extensions[30]);
+    public static pb::GeneratedExtensionBase&lt;scg::IList&lt;uint&gt;&gt; RepeatedFixed32Extension;
     public const int RepeatedFixed64ExtensionFieldNumber = 38;
-    public static readonly
-        pb::GeneratedExtensionBase&lt;scg::IList&lt;ulong&gt;&gt; RepeatedFixed64Extension =
-        pb::GeneratedRepeatExtension&lt;ulong&gt;.CreateInstance(Descriptor.Extensions[31]);
+    public static pb::GeneratedExtensionBase&lt;scg::IList&lt;ulong&gt;&gt; RepeatedFixed64Extension;
     public const int RepeatedSfixed32ExtensionFieldNumber = 39;
-    public static readonly
-        pb::GeneratedExtensionBase&lt;scg::IList&lt;int&gt;&gt; RepeatedSfixed32Extension =
-        pb::GeneratedRepeatExtension&lt;int&gt;.CreateInstance(Descriptor.Extensions[32]);
+    public static pb::GeneratedExtensionBase&lt;scg::IList&lt;int&gt;&gt; RepeatedSfixed32Extension;
     public const int RepeatedSfixed64ExtensionFieldNumber = 40;
-    public static readonly
-        pb::GeneratedExtensionBase&lt;scg::IList&lt;long&gt;&gt; RepeatedSfixed64Extension =
-        pb::GeneratedRepeatExtension&lt;long&gt;.CreateInstance(Descriptor.Extensions[33]);
+    public static pb::GeneratedExtensionBase&lt;scg::IList&lt;long&gt;&gt; RepeatedSfixed64Extension;
     public const int RepeatedFloatExtensionFieldNumber = 41;
-    public static readonly
-        pb::GeneratedExtensionBase&lt;scg::IList&lt;float&gt;&gt; RepeatedFloatExtension =
-        pb::GeneratedRepeatExtension&lt;float&gt;.CreateInstance(Descriptor.Extensions[34]);
+    public static pb::GeneratedExtensionBase&lt;scg::IList&lt;float&gt;&gt; RepeatedFloatExtension;
     public const int RepeatedDoubleExtensionFieldNumber = 42;
-    public static readonly
-        pb::GeneratedExtensionBase&lt;scg::IList&lt;double&gt;&gt; RepeatedDoubleExtension =
-        pb::GeneratedRepeatExtension&lt;double&gt;.CreateInstance(Descriptor.Extensions[35]);
+    public static pb::GeneratedExtensionBase&lt;scg::IList&lt;double&gt;&gt; RepeatedDoubleExtension;
     public const int RepeatedBoolExtensionFieldNumber = 43;
-    public static readonly
-        pb::GeneratedExtensionBase&lt;scg::IList&lt;bool&gt;&gt; RepeatedBoolExtension =
-        pb::GeneratedRepeatExtension&lt;bool&gt;.CreateInstance(Descriptor.Extensions[36]);
+    public static pb::GeneratedExtensionBase&lt;scg::IList&lt;bool&gt;&gt; RepeatedBoolExtension;
     public const int RepeatedStringExtensionFieldNumber = 44;
-    public static readonly
-        pb::GeneratedExtensionBase&lt;scg::IList&lt;string&gt;&gt; RepeatedStringExtension =
-        pb::GeneratedRepeatExtension&lt;string&gt;.CreateInstance(Descriptor.Extensions[37]);
+    public static pb::GeneratedExtensionBase&lt;scg::IList&lt;string&gt;&gt; RepeatedStringExtension;
     public const int RepeatedBytesExtensionFieldNumber = 45;
-    public static readonly
-        pb::GeneratedExtensionBase&lt;scg::IList&lt;pb::ByteString&gt;&gt; RepeatedBytesExtension =
-        pb::GeneratedRepeatExtension&lt;pb::ByteString&gt;.CreateInstance(Descriptor.Extensions[38]);
+    public static pb::GeneratedExtensionBase&lt;scg::IList&lt;pb::ByteString&gt;&gt; RepeatedBytesExtension;
     public const int RepeatedGroupExtensionFieldNumber = 46;
-    public static readonly
-        pb::GeneratedExtensionBase&lt;scg::IList&lt;global::Google.ProtocolBuffers.TestProtos.RepeatedGroup_extension&gt;&gt; RepeatedGroupExtension =
-        pb::GeneratedRepeatExtension&lt;global::Google.ProtocolBuffers.TestProtos.RepeatedGroup_extension&gt;.CreateInstance(Descriptor.Extensions[39]);
+    public static pb::GeneratedExtensionBase&lt;scg::IList&lt;global::Google.ProtocolBuffers.TestProtos.RepeatedGroup_extension&gt;&gt; RepeatedGroupExtension;
     public const int RepeatedNestedMessageExtensionFieldNumber = 48;
-    public static readonly
-        pb::GeneratedExtensionBase&lt;scg::IList&lt;global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage&gt;&gt; RepeatedNestedMessageExtension =
-        pb::GeneratedRepeatExtension&lt;global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage&gt;.CreateInstance(Descriptor.Extensions[40]);
+    public static pb::GeneratedExtensionBase&lt;scg::IList&lt;global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage&gt;&gt; RepeatedNestedMessageExtension;
     public const int RepeatedForeignMessageExtensionFieldNumber = 49;
-    public static readonly
-        pb::GeneratedExtensionBase&lt;scg::IList&lt;global::Google.ProtocolBuffers.TestProtos.ForeignMessage&gt;&gt; RepeatedForeignMessageExtension =
-        pb::GeneratedRepeatExtension&lt;global::Google.ProtocolBuffers.TestProtos.ForeignMessage&gt;.CreateInstance(Descriptor.Extensions[41]);
+    public static pb::GeneratedExtensionBase&lt;scg::IList&lt;global::Google.ProtocolBuffers.TestProtos.ForeignMessage&gt;&gt; RepeatedForeignMessageExtension;
     public const int RepeatedImportMessageExtensionFieldNumber = 50;
-    public static readonly
-        pb::GeneratedExtensionBase&lt;scg::IList&lt;global::Google.ProtocolBuffers.TestProtos.ImportMessage&gt;&gt; RepeatedImportMessageExtension =
-        pb::GeneratedRepeatExtension&lt;global::Google.ProtocolBuffers.TestProtos.ImportMessage&gt;.CreateInstance(Descriptor.Extensions[42]);
+    public static pb::GeneratedExtensionBase&lt;scg::IList&lt;global::Google.ProtocolBuffers.TestProtos.ImportMessage&gt;&gt; RepeatedImportMessageExtension;
     public const int RepeatedNestedEnumExtensionFieldNumber = 51;
-    public static readonly
-        pb::GeneratedExtensionBase&lt;scg::IList&lt;global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedEnum&gt;&gt; RepeatedNestedEnumExtension =
-        pb::GeneratedRepeatExtension&lt;global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedEnum&gt;.CreateInstance(Descriptor.Extensions[43]);
+    public static pb::GeneratedExtensionBase&lt;scg::IList&lt;global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedEnum&gt;&gt; RepeatedNestedEnumExtension;
     public const int RepeatedForeignEnumExtensionFieldNumber = 52;
-    public static readonly
-        pb::GeneratedExtensionBase&lt;scg::IList&lt;global::Google.ProtocolBuffers.TestProtos.ForeignEnum&gt;&gt; RepeatedForeignEnumExtension =
-        pb::GeneratedRepeatExtension&lt;global::Google.ProtocolBuffers.TestProtos.ForeignEnum&gt;.CreateInstance(Descriptor.Extensions[44]);
+    public static pb::GeneratedExtensionBase&lt;scg::IList&lt;global::Google.ProtocolBuffers.TestProtos.ForeignEnum&gt;&gt; RepeatedForeignEnumExtension;
     public const int RepeatedImportEnumExtensionFieldNumber = 53;
-    public static readonly
-        pb::GeneratedExtensionBase&lt;scg::IList&lt;global::Google.ProtocolBuffers.TestProtos.ImportEnum&gt;&gt; RepeatedImportEnumExtension =
-        pb::GeneratedRepeatExtension&lt;global::Google.ProtocolBuffers.TestProtos.ImportEnum&gt;.CreateInstance(Descriptor.Extensions[45]);
+    public static pb::GeneratedExtensionBase&lt;scg::IList&lt;global::Google.ProtocolBuffers.TestProtos.ImportEnum&gt;&gt; RepeatedImportEnumExtension;
     public const int RepeatedStringPieceExtensionFieldNumber = 54;
-    public static readonly
-        pb::GeneratedExtensionBase&lt;scg::IList&lt;string&gt;&gt; RepeatedStringPieceExtension =
-        pb::GeneratedRepeatExtension&lt;string&gt;.CreateInstance(Descriptor.Extensions[46]);
+    public static pb::GeneratedExtensionBase&lt;scg::IList&lt;string&gt;&gt; RepeatedStringPieceExtension;
     public const int RepeatedCordExtensionFieldNumber = 55;
-    public static readonly
-        pb::GeneratedExtensionBase&lt;scg::IList&lt;string&gt;&gt; RepeatedCordExtension =
-        pb::GeneratedRepeatExtension&lt;string&gt;.CreateInstance(Descriptor.Extensions[47]);
+    public static pb::GeneratedExtensionBase&lt;scg::IList&lt;string&gt;&gt; RepeatedCordExtension;
     public const int DefaultInt32ExtensionFieldNumber = 61;
-    public static readonly pb::GeneratedExtensionBase&lt;int&gt; DefaultInt32Extension =
-        pb::GeneratedSingleExtension&lt;int&gt;.CreateInstance(Descriptor.Extensions[48]);
+    public static pb::GeneratedExtensionBase&lt;int&gt; DefaultInt32Extension;
     public const int DefaultInt64ExtensionFieldNumber = 62;
-    public static readonly pb::GeneratedExtensionBase&lt;long&gt; DefaultInt64Extension =
-        pb::GeneratedSingleExtension&lt;long&gt;.CreateInstance(Descriptor.Extensions[49]);
+    public static pb::GeneratedExtensionBase&lt;long&gt; DefaultInt64Extension;
     public const int DefaultUint32ExtensionFieldNumber = 63;
-    public static readonly pb::GeneratedExtensionBase&lt;uint&gt; DefaultUint32Extension =
-        pb::GeneratedSingleExtension&lt;uint&gt;.CreateInstance(Descriptor.Extensions[50]);
+    public static pb::GeneratedExtensionBase&lt;uint&gt; DefaultUint32Extension;
     public const int DefaultUint64ExtensionFieldNumber = 64;
-    public static readonly pb::GeneratedExtensionBase&lt;ulong&gt; DefaultUint64Extension =
-        pb::GeneratedSingleExtension&lt;ulong&gt;.CreateInstance(Descriptor.Extensions[51]);
+    public static pb::GeneratedExtensionBase&lt;ulong&gt; DefaultUint64Extension;
     public const int DefaultSint32ExtensionFieldNumber = 65;
-    public static readonly pb::GeneratedExtensionBase&lt;int&gt; DefaultSint32Extension =
-        pb::GeneratedSingleExtension&lt;int&gt;.CreateInstance(Descriptor.Extensions[52]);
+    public static pb::GeneratedExtensionBase&lt;int&gt; DefaultSint32Extension;
     public const int DefaultSint64ExtensionFieldNumber = 66;
-    public static readonly pb::GeneratedExtensionBase&lt;long&gt; DefaultSint64Extension =
-        pb::GeneratedSingleExtension&lt;long&gt;.CreateInstance(Descriptor.Extensions[53]);
+    public static pb::GeneratedExtensionBase&lt;long&gt; DefaultSint64Extension;
     public const int DefaultFixed32ExtensionFieldNumber = 67;
-    public static readonly pb::GeneratedExtensionBase&lt;uint&gt; DefaultFixed32Extension =
-        pb::GeneratedSingleExtension&lt;uint&gt;.CreateInstance(Descriptor.Extensions[54]);
+    public static pb::GeneratedExtensionBase&lt;uint&gt; DefaultFixed32Extension;
     public const int DefaultFixed64ExtensionFieldNumber = 68;
-    public static readonly pb::GeneratedExtensionBase&lt;ulong&gt; DefaultFixed64Extension =
-        pb::GeneratedSingleExtension&lt;ulong&gt;.CreateInstance(Descriptor.Extensions[55]);
+    public static pb::GeneratedExtensionBase&lt;ulong&gt; DefaultFixed64Extension;
     public const int DefaultSfixed32ExtensionFieldNumber = 69;
-    public static readonly pb::GeneratedExtensionBase&lt;int&gt; DefaultSfixed32Extension =
-        pb::GeneratedSingleExtension&lt;int&gt;.CreateInstance(Descriptor.Extensions[56]);
+    public static pb::GeneratedExtensionBase&lt;int&gt; DefaultSfixed32Extension;
     public const int DefaultSfixed64ExtensionFieldNumber = 70;
-    public static readonly pb::GeneratedExtensionBase&lt;long&gt; DefaultSfixed64Extension =
-        pb::GeneratedSingleExtension&lt;long&gt;.CreateInstance(Descriptor.Extensions[57]);
+    public static pb::GeneratedExtensionBase&lt;long&gt; DefaultSfixed64Extension;
     public const int DefaultFloatExtensionFieldNumber = 71;
-    public static readonly pb::GeneratedExtensionBase&lt;float&gt; DefaultFloatExtension =
-        pb::GeneratedSingleExtension&lt;float&gt;.CreateInstance(Descriptor.Extensions[58]);
+    public static pb::GeneratedExtensionBase&lt;float&gt; DefaultFloatExtension;
     public const int DefaultDoubleExtensionFieldNumber = 72;
-    public static readonly pb::GeneratedExtensionBase&lt;double&gt; DefaultDoubleExtension =
-        pb::GeneratedSingleExtension&lt;double&gt;.CreateInstance(Descriptor.Extensions[59]);
+    public static pb::GeneratedExtensionBase&lt;double&gt; DefaultDoubleExtension;
     public const int DefaultBoolExtensionFieldNumber = 73;
-    public static readonly pb::GeneratedExtensionBase&lt;bool&gt; DefaultBoolExtension =
-        pb::GeneratedSingleExtension&lt;bool&gt;.CreateInstance(Descriptor.Extensions[60]);
+    public static pb::GeneratedExtensionBase&lt;bool&gt; DefaultBoolExtension;
     public const int DefaultStringExtensionFieldNumber = 74;
-    public static readonly pb::GeneratedExtensionBase&lt;string&gt; DefaultStringExtension =
-        pb::GeneratedSingleExtension&lt;string&gt;.CreateInstance(Descriptor.Extensions[61]);
+    public static pb::GeneratedExtensionBase&lt;string&gt; DefaultStringExtension;
     public const int DefaultBytesExtensionFieldNumber = 75;
-    public static readonly pb::GeneratedExtensionBase&lt;pb::ByteString&gt; DefaultBytesExtension =
-        pb::GeneratedSingleExtension&lt;pb::ByteString&gt;.CreateInstance(Descriptor.Extensions[62]);
+    public static pb::GeneratedExtensionBase&lt;pb::ByteString&gt; DefaultBytesExtension;
     public const int DefaultNestedEnumExtensionFieldNumber = 81;
-    public static readonly pb::GeneratedExtensionBase&lt;global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedEnum&gt; DefaultNestedEnumExtension =
-        pb::GeneratedSingleExtension&lt;global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedEnum&gt;.CreateInstance(Descriptor.Extensions[63]);
+    public static pb::GeneratedExtensionBase&lt;global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedEnum&gt; DefaultNestedEnumExtension;
     public const int DefaultForeignEnumExtensionFieldNumber = 82;
-    public static readonly pb::GeneratedExtensionBase&lt;global::Google.ProtocolBuffers.TestProtos.ForeignEnum&gt; DefaultForeignEnumExtension =
-        pb::GeneratedSingleExtension&lt;global::Google.ProtocolBuffers.TestProtos.ForeignEnum&gt;.CreateInstance(Descriptor.Extensions[64]);
+    public static pb::GeneratedExtensionBase&lt;global::Google.ProtocolBuffers.TestProtos.ForeignEnum&gt; DefaultForeignEnumExtension;
     public const int DefaultImportEnumExtensionFieldNumber = 83;
-    public static readonly pb::GeneratedExtensionBase&lt;global::Google.ProtocolBuffers.TestProtos.ImportEnum&gt; DefaultImportEnumExtension =
-        pb::GeneratedSingleExtension&lt;global::Google.ProtocolBuffers.TestProtos.ImportEnum&gt;.CreateInstance(Descriptor.Extensions[65]);
+    public static pb::GeneratedExtensionBase&lt;global::Google.ProtocolBuffers.TestProtos.ImportEnum&gt; DefaultImportEnumExtension;
     public const int DefaultStringPieceExtensionFieldNumber = 84;
-    public static readonly pb::GeneratedExtensionBase&lt;string&gt; DefaultStringPieceExtension =
-        pb::GeneratedSingleExtension&lt;string&gt;.CreateInstance(Descriptor.Extensions[66]);
+    public static pb::GeneratedExtensionBase&lt;string&gt; DefaultStringPieceExtension;
     public const int DefaultCordExtensionFieldNumber = 85;
-    public static readonly pb::GeneratedExtensionBase&lt;string&gt; DefaultCordExtension =
-        pb::GeneratedSingleExtension&lt;string&gt;.CreateInstance(Descriptor.Extensions[67]);
+    public static pb::GeneratedExtensionBase&lt;string&gt; DefaultCordExtension;
     public const int MyExtensionStringFieldNumber = 50;
-    public static readonly pb::GeneratedExtensionBase&lt;string&gt; MyExtensionString =
-        pb::GeneratedSingleExtension&lt;string&gt;.CreateInstance(Descriptor.Extensions[68]);
+    public static pb::GeneratedExtensionBase&lt;string&gt; MyExtensionString;
     public const int MyExtensionIntFieldNumber = 5;
-    public static readonly pb::GeneratedExtensionBase&lt;int&gt; MyExtensionInt =
-        pb::GeneratedSingleExtension&lt;int&gt;.CreateInstance(Descriptor.Extensions[69]);
+    public static pb::GeneratedExtensionBase&lt;int&gt; MyExtensionInt;
     public const int PackedInt32ExtensionFieldNumber = 90;
-    public static readonly
-        pb::GeneratedExtensionBase&lt;scg::IList&lt;int&gt;&gt; PackedInt32Extension =
-        pb::GeneratedRepeatExtension&lt;int&gt;.CreateInstance(Descriptor.Extensions[70]);
+    public static pb::GeneratedExtensionBase&lt;scg::IList&lt;int&gt;&gt; PackedInt32Extension;
     public const int PackedInt64ExtensionFieldNumber = 91;
-    public static readonly
-        pb::GeneratedExtensionBase&lt;scg::IList&lt;long&gt;&gt; PackedInt64Extension =
-        pb::GeneratedRepeatExtension&lt;long&gt;.CreateInstance(Descriptor.Extensions[71]);
+    public static pb::GeneratedExtensionBase&lt;scg::IList&lt;long&gt;&gt; PackedInt64Extension;
     public const int PackedUint32ExtensionFieldNumber = 92;
-    public static readonly
-        pb::GeneratedExtensionBase&lt;scg::IList&lt;uint&gt;&gt; PackedUint32Extension =
-        pb::GeneratedRepeatExtension&lt;uint&gt;.CreateInstance(Descriptor.Extensions[72]);
+    public static pb::GeneratedExtensionBase&lt;scg::IList&lt;uint&gt;&gt; PackedUint32Extension;
     public const int PackedUint64ExtensionFieldNumber = 93;
-    public static readonly
-        pb::GeneratedExtensionBase&lt;scg::IList&lt;ulong&gt;&gt; PackedUint64Extension =
-        pb::GeneratedRepeatExtension&lt;ulong&gt;.CreateInstance(Descriptor.Extensions[73]);
+    public static pb::GeneratedExtensionBase&lt;scg::IList&lt;ulong&gt;&gt; PackedUint64Extension;
     public const int PackedSint32ExtensionFieldNumber = 94;
-    public static readonly
-        pb::GeneratedExtensionBase&lt;scg::IList&lt;int&gt;&gt; PackedSint32Extension =
-        pb::GeneratedRepeatExtension&lt;int&gt;.CreateInstance(Descriptor.Extensions[74]);
+    public static pb::GeneratedExtensionBase&lt;scg::IList&lt;int&gt;&gt; PackedSint32Extension;
     public const int PackedSint64ExtensionFieldNumber = 95;
-    public static readonly
-        pb::GeneratedExtensionBase&lt;scg::IList&lt;long&gt;&gt; PackedSint64Extension =
-        pb::GeneratedRepeatExtension&lt;long&gt;.CreateInstance(Descriptor.Extensions[75]);
+    public static pb::GeneratedExtensionBase&lt;scg::IList&lt;long&gt;&gt; PackedSint64Extension;
     public const int PackedFixed32ExtensionFieldNumber = 96;
-    public static readonly
-        pb::GeneratedExtensionBase&lt;scg::IList&lt;uint&gt;&gt; PackedFixed32Extension =
-        pb::GeneratedRepeatExtension&lt;uint&gt;.CreateInstance(Descriptor.Extensions[76]);
+    public static pb::GeneratedExtensionBase&lt;scg::IList&lt;uint&gt;&gt; PackedFixed32Extension;
     public const int PackedFixed64ExtensionFieldNumber = 97;
-    public static readonly
-        pb::GeneratedExtensionBase&lt;scg::IList&lt;ulong&gt;&gt; PackedFixed64Extension =
-        pb::GeneratedRepeatExtension&lt;ulong&gt;.CreateInstance(Descriptor.Extensions[77]);
+    public static pb::GeneratedExtensionBase&lt;scg::IList&lt;ulong&gt;&gt; PackedFixed64Extension;
     public const int PackedSfixed32ExtensionFieldNumber = 98;
-    public static readonly
-        pb::GeneratedExtensionBase&lt;scg::IList&lt;int&gt;&gt; PackedSfixed32Extension =
-        pb::GeneratedRepeatExtension&lt;int&gt;.CreateInstance(Descriptor.Extensions[78]);
+    public static pb::GeneratedExtensionBase&lt;scg::IList&lt;int&gt;&gt; PackedSfixed32Extension;
     public const int PackedSfixed64ExtensionFieldNumber = 99;
-    public static readonly
-        pb::GeneratedExtensionBase&lt;scg::IList&lt;long&gt;&gt; PackedSfixed64Extension =
-        pb::GeneratedRepeatExtension&lt;long&gt;.CreateInstance(Descriptor.Extensions[79]);
+    public static pb::GeneratedExtensionBase&lt;scg::IList&lt;long&gt;&gt; PackedSfixed64Extension;
     public const int PackedFloatExtensionFieldNumber = 100;
-    public static readonly
-        pb::GeneratedExtensionBase&lt;scg::IList&lt;float&gt;&gt; PackedFloatExtension =
-        pb::GeneratedRepeatExtension&lt;float&gt;.CreateInstance(Descriptor.Extensions[80]);
+    public static pb::GeneratedExtensionBase&lt;scg::IList&lt;float&gt;&gt; PackedFloatExtension;
     public const int PackedDoubleExtensionFieldNumber = 101;
-    public static readonly
-        pb::GeneratedExtensionBase&lt;scg::IList&lt;double&gt;&gt; PackedDoubleExtension =
-        pb::GeneratedRepeatExtension&lt;double&gt;.CreateInstance(Descriptor.Extensions[81]);
+    public static pb::GeneratedExtensionBase&lt;scg::IList&lt;double&gt;&gt; PackedDoubleExtension;
     public const int PackedBoolExtensionFieldNumber = 102;
-    public static readonly
-        pb::GeneratedExtensionBase&lt;scg::IList&lt;bool&gt;&gt; PackedBoolExtension =
-        pb::GeneratedRepeatExtension&lt;bool&gt;.CreateInstance(Descriptor.Extensions[82]);
+    public static pb::GeneratedExtensionBase&lt;scg::IList&lt;bool&gt;&gt; PackedBoolExtension;
     public const int PackedEnumExtensionFieldNumber = 103;
-    public static readonly
-        pb::GeneratedExtensionBase&lt;scg::IList&lt;global::Google.ProtocolBuffers.TestProtos.ForeignEnum&gt;&gt; PackedEnumExtension =
-        pb::GeneratedRepeatExtension&lt;global::Google.ProtocolBuffers.TestProtos.ForeignEnum&gt;.CreateInstance(Descriptor.Extensions[83]);
+    public static pb::GeneratedExtensionBase&lt;scg::IList&lt;global::Google.ProtocolBuffers.TestProtos.ForeignEnum&gt;&gt; PackedEnumExtension;
     #endregion
     
     #region Static variables
-    internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_TestAllTypes__Descriptor
-        = Descriptor.MessageTypes[0];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestAllTypes, global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Builder&gt; internal__static_protobuf_unittest_TestAllTypes__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestAllTypes, global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Builder&gt;(internal__static_protobuf_unittest_TestAllTypes__Descriptor,
-            new string[] { &quot;OptionalInt32&quot;, &quot;OptionalInt64&quot;, &quot;OptionalUint32&quot;, &quot;OptionalUint64&quot;, &quot;OptionalSint32&quot;, &quot;OptionalSint64&quot;, &quot;OptionalFixed32&quot;, &quot;OptionalFixed64&quot;, &quot;OptionalSfixed32&quot;, &quot;OptionalSfixed64&quot;, &quot;OptionalFloat&quot;, &quot;OptionalDouble&quot;, &quot;OptionalBool&quot;, &quot;OptionalString&quot;, &quot;OptionalBytes&quot;, &quot;OptionalGroup&quot;, &quot;OptionalNestedMessage&quot;, &quot;OptionalForeignMessage&quot;, &quot;OptionalImportMessage&quot;, &quot;OptionalNestedEnum&quot;, &quot;OptionalForeignEnum&quot;, &quot;OptionalImportEnum&quot;, &quot;OptionalStringPiece&quot;, &quot;OptionalCord&quot;, &quot;RepeatedInt32&quot;, &quot;RepeatedInt64&quot;, &quot;RepeatedUint32&quot;, &quot;RepeatedUint64&quot;, &quot;RepeatedSint32&quot;, &quot;RepeatedSint64&quot;, &quot;RepeatedFixed32&quot;, &quot;RepeatedFixed64&quot;, &quot;RepeatedSfixed32&quot;, &quot;RepeatedSfixed64&quot;, &quot;RepeatedFloat&quot;, &quot;RepeatedDouble&quot;, &quot;RepeatedBool&quot;, &quot;RepeatedString&quot;, &quot;RepeatedBytes&quot;, &quot;RepeatedGroup&quot;, &quot;RepeatedNestedMessage&quot;, &quot;RepeatedForeignMessage&quot;, &quot;RepeatedImportMessage&quot;, &quot;RepeatedNestedEnum&quot;, &quot;RepeatedForeignEnum&quot;, &quot;RepeatedImportEnum&quot;, &quot;RepeatedStringPiece&quot;, &quot;RepeatedCord&quot;, &quot;DefaultInt32&quot;, &quot;DefaultInt64&quot;, &quot;DefaultUint32&quot;, &quot;DefaultUint64&quot;, &quot;DefaultSint32&quot;, &quot;DefaultSint64&quot;, &quot;DefaultFixed32&quot;, &quot;DefaultFixed64&quot;, &quot;DefaultSfixed32&quot;, &quot;DefaultSfixed64&quot;, &quot;DefaultFloat&quot;, &quot;DefaultDouble&quot;, &quot;DefaultBool&quot;, &quot;DefaultString&quot;, &quot;DefaultBytes&quot;, &quot;DefaultNestedEnum&quot;, &quot;DefaultForeignEnum&quot;, &quot;DefaultImportEnum&quot;, &quot;DefaultStringPiece&quot;, &quot;DefaultCord&quot;, });
-    internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_TestAllTypes_NestedMessage__Descriptor
-        = internal__static_protobuf_unittest_TestAllTypes__Descriptor.NestedTypes[0];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage, global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage.Builder&gt; internal__static_protobuf_unittest_TestAllTypes_NestedMessage__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage, global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage.Builder&gt;(internal__static_protobuf_unittest_TestAllTypes_NestedMessage__Descriptor,
-            new string[] { &quot;Bb&quot;, });
-    internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_TestAllTypes_OptionalGroup__Descriptor
-        = internal__static_protobuf_unittest_TestAllTypes__Descriptor.NestedTypes[1];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.OptionalGroup, global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.OptionalGroup.Builder&gt; internal__static_protobuf_unittest_TestAllTypes_OptionalGroup__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.OptionalGroup, global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.OptionalGroup.Builder&gt;(internal__static_protobuf_unittest_TestAllTypes_OptionalGroup__Descriptor,
-            new string[] { &quot;A&quot;, });
-    internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_TestAllTypes_RepeatedGroup__Descriptor
-        = internal__static_protobuf_unittest_TestAllTypes__Descriptor.NestedTypes[2];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.RepeatedGroup, global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.RepeatedGroup.Builder&gt; internal__static_protobuf_unittest_TestAllTypes_RepeatedGroup__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.RepeatedGroup, global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.RepeatedGroup.Builder&gt;(internal__static_protobuf_unittest_TestAllTypes_RepeatedGroup__Descriptor,
-            new string[] { &quot;A&quot;, });
-    internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_ForeignMessage__Descriptor
-        = Descriptor.MessageTypes[1];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.ForeignMessage, global::Google.ProtocolBuffers.TestProtos.ForeignMessage.Builder&gt; internal__static_protobuf_unittest_ForeignMessage__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.ForeignMessage, global::Google.ProtocolBuffers.TestProtos.ForeignMessage.Builder&gt;(internal__static_protobuf_unittest_ForeignMessage__Descriptor,
-            new string[] { &quot;C&quot;, });
-    internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_TestAllExtensions__Descriptor
-        = Descriptor.MessageTypes[2];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestAllExtensions, global::Google.ProtocolBuffers.TestProtos.TestAllExtensions.Builder&gt; internal__static_protobuf_unittest_TestAllExtensions__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestAllExtensions, global::Google.ProtocolBuffers.TestProtos.TestAllExtensions.Builder&gt;(internal__static_protobuf_unittest_TestAllExtensions__Descriptor,
-            new string[] { });
-    internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_OptionalGroup_extension__Descriptor
-        = Descriptor.MessageTypes[3];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.OptionalGroup_extension, global::Google.ProtocolBuffers.TestProtos.OptionalGroup_extension.Builder&gt; internal__static_protobuf_unittest_OptionalGroup_extension__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.OptionalGroup_extension, global::Google.ProtocolBuffers.TestProtos.OptionalGroup_extension.Builder&gt;(internal__static_protobuf_unittest_OptionalGroup_extension__Descriptor,
-            new string[] { &quot;A&quot;, });
-    internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_RepeatedGroup_extension__Descriptor
-        = Descriptor.MessageTypes[4];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.RepeatedGroup_extension, global::Google.ProtocolBuffers.TestProtos.RepeatedGroup_extension.Builder&gt; internal__static_protobuf_unittest_RepeatedGroup_extension__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.RepeatedGroup_extension, global::Google.ProtocolBuffers.TestProtos.RepeatedGroup_extension.Builder&gt;(internal__static_protobuf_unittest_RepeatedGroup_extension__Descriptor,
-            new string[] { &quot;A&quot;, });
-    internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_TestRequired__Descriptor
-        = Descriptor.MessageTypes[5];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestRequired, global::Google.ProtocolBuffers.TestProtos.TestRequired.Builder&gt; internal__static_protobuf_unittest_TestRequired__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestRequired, global::Google.ProtocolBuffers.TestProtos.TestRequired.Builder&gt;(internal__static_protobuf_unittest_TestRequired__Descriptor,
-            new string[] { &quot;A&quot;, &quot;Dummy2&quot;, &quot;B&quot;, &quot;Dummy4&quot;, &quot;Dummy5&quot;, &quot;Dummy6&quot;, &quot;Dummy7&quot;, &quot;Dummy8&quot;, &quot;Dummy9&quot;, &quot;Dummy10&quot;, &quot;Dummy11&quot;, &quot;Dummy12&quot;, &quot;Dummy13&quot;, &quot;Dummy14&quot;, &quot;Dummy15&quot;, &quot;Dummy16&quot;, &quot;Dummy17&quot;, &quot;Dummy18&quot;, &quot;Dummy19&quot;, &quot;Dummy20&quot;, &quot;Dummy21&quot;, &quot;Dummy22&quot;, &quot;Dummy23&quot;, &quot;Dummy24&quot;, &quot;Dummy25&quot;, &quot;Dummy26&quot;, &quot;Dummy27&quot;, &quot;Dummy28&quot;, &quot;Dummy29&quot;, &quot;Dummy30&quot;, &quot;Dummy31&quot;, &quot;Dummy32&quot;, &quot;C&quot;, });
-    internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_TestRequiredForeign__Descriptor
-        = Descriptor.MessageTypes[6];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestRequiredForeign, global::Google.ProtocolBuffers.TestProtos.TestRequiredForeign.Builder&gt; internal__static_protobuf_unittest_TestRequiredForeign__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestRequiredForeign, global::Google.ProtocolBuffers.TestProtos.TestRequiredForeign.Builder&gt;(internal__static_protobuf_unittest_TestRequiredForeign__Descriptor,
-            new string[] { &quot;OptionalMessage&quot;, &quot;RepeatedMessage&quot;, &quot;Dummy&quot;, });
-    internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_TestForeignNested__Descriptor
-        = Descriptor.MessageTypes[7];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestForeignNested, global::Google.ProtocolBuffers.TestProtos.TestForeignNested.Builder&gt; internal__static_protobuf_unittest_TestForeignNested__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestForeignNested, global::Google.ProtocolBuffers.TestProtos.TestForeignNested.Builder&gt;(internal__static_protobuf_unittest_TestForeignNested__Descriptor,
-            new string[] { &quot;ForeignNested&quot;, });
-    internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_TestEmptyMessage__Descriptor
-        = Descriptor.MessageTypes[8];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestEmptyMessage, global::Google.ProtocolBuffers.TestProtos.TestEmptyMessage.Builder&gt; internal__static_protobuf_unittest_TestEmptyMessage__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestEmptyMessage, global::Google.ProtocolBuffers.TestProtos.TestEmptyMessage.Builder&gt;(internal__static_protobuf_unittest_TestEmptyMessage__Descriptor,
-            new string[] { });
-    internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_TestEmptyMessageWithExtensions__Descriptor
-        = Descriptor.MessageTypes[9];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestEmptyMessageWithExtensions, global::Google.ProtocolBuffers.TestProtos.TestEmptyMessageWithExtensions.Builder&gt; internal__static_protobuf_unittest_TestEmptyMessageWithExtensions__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestEmptyMessageWithExtensions, global::Google.ProtocolBuffers.TestProtos.TestEmptyMessageWithExtensions.Builder&gt;(internal__static_protobuf_unittest_TestEmptyMessageWithExtensions__Descriptor,
-            new string[] { });
-    internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_TestReallyLargeTagNumber__Descriptor
-        = Descriptor.MessageTypes[10];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestReallyLargeTagNumber, global::Google.ProtocolBuffers.TestProtos.TestReallyLargeTagNumber.Builder&gt; internal__static_protobuf_unittest_TestReallyLargeTagNumber__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestReallyLargeTagNumber, global::Google.ProtocolBuffers.TestProtos.TestReallyLargeTagNumber.Builder&gt;(internal__static_protobuf_unittest_TestReallyLargeTagNumber__Descriptor,
-            new string[] { &quot;A&quot;, &quot;Bb&quot;, });
-    internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_TestRecursiveMessage__Descriptor
-        = Descriptor.MessageTypes[11];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestRecursiveMessage, global::Google.ProtocolBuffers.TestProtos.TestRecursiveMessage.Builder&gt; internal__static_protobuf_unittest_TestRecursiveMessage__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestRecursiveMessage, global::Google.ProtocolBuffers.TestProtos.TestRecursiveMessage.Builder&gt;(internal__static_protobuf_unittest_TestRecursiveMessage__Descriptor,
-            new string[] { &quot;A&quot;, &quot;I&quot;, });
-    internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_TestMutualRecursionA__Descriptor
-        = Descriptor.MessageTypes[12];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionA, global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionA.Builder&gt; internal__static_protobuf_unittest_TestMutualRecursionA__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionA, global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionA.Builder&gt;(internal__static_protobuf_unittest_TestMutualRecursionA__Descriptor,
-            new string[] { &quot;Bb&quot;, });
-    internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_TestMutualRecursionB__Descriptor
-        = Descriptor.MessageTypes[13];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionB, global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionB.Builder&gt; internal__static_protobuf_unittest_TestMutualRecursionB__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionB, global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionB.Builder&gt;(internal__static_protobuf_unittest_TestMutualRecursionB__Descriptor,
-            new string[] { &quot;A&quot;, &quot;OptionalInt32&quot;, });
-    internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_TestDupFieldNumber__Descriptor
-        = Descriptor.MessageTypes[14];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber, global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Builder&gt; internal__static_protobuf_unittest_TestDupFieldNumber__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber, global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Builder&gt;(internal__static_protobuf_unittest_TestDupFieldNumber__Descriptor,
-            new string[] { &quot;A&quot;, &quot;Foo&quot;, &quot;Bar&quot;, });
-    internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_TestDupFieldNumber_Foo__Descriptor
-        = internal__static_protobuf_unittest_TestDupFieldNumber__Descriptor.NestedTypes[0];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Foo, global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Foo.Builder&gt; internal__static_protobuf_unittest_TestDupFieldNumber_Foo__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Foo, global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Foo.Builder&gt;(internal__static_protobuf_unittest_TestDupFieldNumber_Foo__Descriptor,
-            new string[] { &quot;A&quot;, });
-    internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_TestDupFieldNumber_Bar__Descriptor
-        = internal__static_protobuf_unittest_TestDupFieldNumber__Descriptor.NestedTypes[1];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Bar, global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Bar.Builder&gt; internal__static_protobuf_unittest_TestDupFieldNumber_Bar__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Bar, global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Bar.Builder&gt;(internal__static_protobuf_unittest_TestDupFieldNumber_Bar__Descriptor,
-            new string[] { &quot;A&quot;, });
-    internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_TestNestedMessageHasBits__Descriptor
-        = Descriptor.MessageTypes[15];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestNestedMessageHasBits, global::Google.ProtocolBuffers.TestProtos.TestNestedMessageHasBits.Builder&gt; internal__static_protobuf_unittest_TestNestedMessageHasBits__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestNestedMessageHasBits, global::Google.ProtocolBuffers.TestProtos.TestNestedMessageHasBits.Builder&gt;(internal__static_protobuf_unittest_TestNestedMessageHasBits__Descriptor,
-            new string[] { &quot;OptionalNestedMessage&quot;, });
-    internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_TestNestedMessageHasBits_NestedMessage__Descriptor
-        = internal__static_protobuf_unittest_TestNestedMessageHasBits__Descriptor.NestedTypes[0];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestNestedMessageHasBits.Types.NestedMessage, global::Google.ProtocolBuffers.TestProtos.TestNestedMessageHasBits.Types.NestedMessage.Builder&gt; internal__static_protobuf_unittest_TestNestedMessageHasBits_NestedMessage__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestNestedMessageHasBits.Types.NestedMessage, global::Google.ProtocolBuffers.TestProtos.TestNestedMessageHasBits.Types.NestedMessage.Builder&gt;(internal__static_protobuf_unittest_TestNestedMessageHasBits_NestedMessage__Descriptor,
-            new string[] { &quot;NestedmessageRepeatedInt32&quot;, &quot;NestedmessageRepeatedForeignmessage&quot;, });
-    internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_TestCamelCaseFieldNames__Descriptor
-        = Descriptor.MessageTypes[16];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestCamelCaseFieldNames, global::Google.ProtocolBuffers.TestProtos.TestCamelCaseFieldNames.Builder&gt; internal__static_protobuf_unittest_TestCamelCaseFieldNames__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestCamelCaseFieldNames, global::Google.ProtocolBuffers.TestProtos.TestCamelCaseFieldNames.Builder&gt;(internal__static_protobuf_unittest_TestCamelCaseFieldNames__Descriptor,
-            new string[] { &quot;PrimitiveField&quot;, &quot;StringField&quot;, &quot;EnumField&quot;, &quot;MessageField&quot;, &quot;StringPieceField&quot;, &quot;CordField&quot;, &quot;RepeatedPrimitiveField&quot;, &quot;RepeatedStringField&quot;, &quot;RepeatedEnumField&quot;, &quot;RepeatedMessageField&quot;, &quot;RepeatedStringPieceField&quot;, &quot;RepeatedCordField&quot;, });
-    internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_TestFieldOrderings__Descriptor
-        = Descriptor.MessageTypes[17];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestFieldOrderings, global::Google.ProtocolBuffers.TestProtos.TestFieldOrderings.Builder&gt; internal__static_protobuf_unittest_TestFieldOrderings__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestFieldOrderings, global::Google.ProtocolBuffers.TestProtos.TestFieldOrderings.Builder&gt;(internal__static_protobuf_unittest_TestFieldOrderings__Descriptor,
-            new string[] { &quot;MyString&quot;, &quot;MyInt&quot;, &quot;MyFloat&quot;, });
-    internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_TestExtremeDefaultValues__Descriptor
-        = Descriptor.MessageTypes[18];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestExtremeDefaultValues, global::Google.ProtocolBuffers.TestProtos.TestExtremeDefaultValues.Builder&gt; internal__static_protobuf_unittest_TestExtremeDefaultValues__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestExtremeDefaultValues, global::Google.ProtocolBuffers.TestProtos.TestExtremeDefaultValues.Builder&gt;(internal__static_protobuf_unittest_TestExtremeDefaultValues__Descriptor,
-            new string[] { &quot;EscapedBytes&quot;, &quot;LargeUint32&quot;, &quot;LargeUint64&quot;, &quot;SmallInt32&quot;, &quot;SmallInt64&quot;, &quot;Utf8String&quot;, });
-    internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_TestPackedTypes__Descriptor
-        = Descriptor.MessageTypes[19];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestPackedTypes, global::Google.ProtocolBuffers.TestProtos.TestPackedTypes.Builder&gt; internal__static_protobuf_unittest_TestPackedTypes__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestPackedTypes, global::Google.ProtocolBuffers.TestProtos.TestPackedTypes.Builder&gt;(internal__static_protobuf_unittest_TestPackedTypes__Descriptor,
-            new string[] { &quot;PackedInt32&quot;, &quot;PackedInt64&quot;, &quot;PackedUint32&quot;, &quot;PackedUint64&quot;, &quot;PackedSint32&quot;, &quot;PackedSint64&quot;, &quot;PackedFixed32&quot;, &quot;PackedFixed64&quot;, &quot;PackedSfixed32&quot;, &quot;PackedSfixed64&quot;, &quot;PackedFloat&quot;, &quot;PackedDouble&quot;, &quot;PackedBool&quot;, &quot;PackedEnum&quot;, });
-    internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_TestPackedExtensions__Descriptor
-        = Descriptor.MessageTypes[20];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestPackedExtensions, global::Google.ProtocolBuffers.TestProtos.TestPackedExtensions.Builder&gt; internal__static_protobuf_unittest_TestPackedExtensions__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestPackedExtensions, global::Google.ProtocolBuffers.TestProtos.TestPackedExtensions.Builder&gt;(internal__static_protobuf_unittest_TestPackedExtensions__Descriptor,
-            new string[] { });
-    internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_FooRequest__Descriptor
-        = Descriptor.MessageTypes[21];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.FooRequest, global::Google.ProtocolBuffers.TestProtos.FooRequest.Builder&gt; internal__static_protobuf_unittest_FooRequest__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.FooRequest, global::Google.ProtocolBuffers.TestProtos.FooRequest.Builder&gt;(internal__static_protobuf_unittest_FooRequest__Descriptor,
-            new string[] { });
-    internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_FooResponse__Descriptor
-        = Descriptor.MessageTypes[22];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.FooResponse, global::Google.ProtocolBuffers.TestProtos.FooResponse.Builder&gt; internal__static_protobuf_unittest_FooResponse__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.FooResponse, global::Google.ProtocolBuffers.TestProtos.FooResponse.Builder&gt;(internal__static_protobuf_unittest_FooResponse__Descriptor,
-            new string[] { });
-    internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_BarRequest__Descriptor
-        = Descriptor.MessageTypes[23];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.BarRequest, global::Google.ProtocolBuffers.TestProtos.BarRequest.Builder&gt; internal__static_protobuf_unittest_BarRequest__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.BarRequest, global::Google.ProtocolBuffers.TestProtos.BarRequest.Builder&gt;(internal__static_protobuf_unittest_BarRequest__Descriptor,
-            new string[] { });
-    internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_BarResponse__Descriptor
-        = Descriptor.MessageTypes[24];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.BarResponse, global::Google.ProtocolBuffers.TestProtos.BarResponse.Builder&gt; internal__static_protobuf_unittest_BarResponse__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.BarResponse, global::Google.ProtocolBuffers.TestProtos.BarResponse.Builder&gt;(internal__static_protobuf_unittest_BarResponse__Descriptor,
-            new string[] { });
+    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestAllTypes__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestAllTypes, global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Builder&gt; internal__static_protobuf_unittest_TestAllTypes__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestAllTypes_NestedMessage__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage, global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage.Builder&gt; internal__static_protobuf_unittest_TestAllTypes_NestedMessage__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestAllTypes_OptionalGroup__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.OptionalGroup, global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.OptionalGroup.Builder&gt; internal__static_protobuf_unittest_TestAllTypes_OptionalGroup__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestAllTypes_RepeatedGroup__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.RepeatedGroup, global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.RepeatedGroup.Builder&gt; internal__static_protobuf_unittest_TestAllTypes_RepeatedGroup__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_ForeignMessage__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.ForeignMessage, global::Google.ProtocolBuffers.TestProtos.ForeignMessage.Builder&gt; internal__static_protobuf_unittest_ForeignMessage__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestAllExtensions__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestAllExtensions, global::Google.ProtocolBuffers.TestProtos.TestAllExtensions.Builder&gt; internal__static_protobuf_unittest_TestAllExtensions__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_OptionalGroup_extension__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.OptionalGroup_extension, global::Google.ProtocolBuffers.TestProtos.OptionalGroup_extension.Builder&gt; internal__static_protobuf_unittest_OptionalGroup_extension__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_RepeatedGroup_extension__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.RepeatedGroup_extension, global::Google.ProtocolBuffers.TestProtos.RepeatedGroup_extension.Builder&gt; internal__static_protobuf_unittest_RepeatedGroup_extension__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestRequired__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestRequired, global::Google.ProtocolBuffers.TestProtos.TestRequired.Builder&gt; internal__static_protobuf_unittest_TestRequired__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestRequiredForeign__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestRequiredForeign, global::Google.ProtocolBuffers.TestProtos.TestRequiredForeign.Builder&gt; internal__static_protobuf_unittest_TestRequiredForeign__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestForeignNested__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestForeignNested, global::Google.ProtocolBuffers.TestProtos.TestForeignNested.Builder&gt; internal__static_protobuf_unittest_TestForeignNested__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestEmptyMessage__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestEmptyMessage, global::Google.ProtocolBuffers.TestProtos.TestEmptyMessage.Builder&gt; internal__static_protobuf_unittest_TestEmptyMessage__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestEmptyMessageWithExtensions__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestEmptyMessageWithExtensions, global::Google.ProtocolBuffers.TestProtos.TestEmptyMessageWithExtensions.Builder&gt; internal__static_protobuf_unittest_TestEmptyMessageWithExtensions__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestReallyLargeTagNumber__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestReallyLargeTagNumber, global::Google.ProtocolBuffers.TestProtos.TestReallyLargeTagNumber.Builder&gt; internal__static_protobuf_unittest_TestReallyLargeTagNumber__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestRecursiveMessage__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestRecursiveMessage, global::Google.ProtocolBuffers.TestProtos.TestRecursiveMessage.Builder&gt; internal__static_protobuf_unittest_TestRecursiveMessage__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestMutualRecursionA__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionA, global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionA.Builder&gt; internal__static_protobuf_unittest_TestMutualRecursionA__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestMutualRecursionB__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionB, global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionB.Builder&gt; internal__static_protobuf_unittest_TestMutualRecursionB__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestDupFieldNumber__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber, global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Builder&gt; internal__static_protobuf_unittest_TestDupFieldNumber__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestDupFieldNumber_Foo__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Foo, global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Foo.Builder&gt; internal__static_protobuf_unittest_TestDupFieldNumber_Foo__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestDupFieldNumber_Bar__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Bar, global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Bar.Builder&gt; internal__static_protobuf_unittest_TestDupFieldNumber_Bar__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestNestedMessageHasBits__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestNestedMessageHasBits, global::Google.ProtocolBuffers.TestProtos.TestNestedMessageHasBits.Builder&gt; internal__static_protobuf_unittest_TestNestedMessageHasBits__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestNestedMessageHasBits_NestedMessage__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestNestedMessageHasBits.Types.NestedMessage, global::Google.ProtocolBuffers.TestProtos.TestNestedMessageHasBits.Types.NestedMessage.Builder&gt; internal__static_protobuf_unittest_TestNestedMessageHasBits_NestedMessage__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestCamelCaseFieldNames__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestCamelCaseFieldNames, global::Google.ProtocolBuffers.TestProtos.TestCamelCaseFieldNames.Builder&gt; internal__static_protobuf_unittest_TestCamelCaseFieldNames__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestFieldOrderings__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestFieldOrderings, global::Google.ProtocolBuffers.TestProtos.TestFieldOrderings.Builder&gt; internal__static_protobuf_unittest_TestFieldOrderings__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestExtremeDefaultValues__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestExtremeDefaultValues, global::Google.ProtocolBuffers.TestProtos.TestExtremeDefaultValues.Builder&gt; internal__static_protobuf_unittest_TestExtremeDefaultValues__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestPackedTypes__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestPackedTypes, global::Google.ProtocolBuffers.TestProtos.TestPackedTypes.Builder&gt; internal__static_protobuf_unittest_TestPackedTypes__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestPackedExtensions__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestPackedExtensions, global::Google.ProtocolBuffers.TestProtos.TestPackedExtensions.Builder&gt; internal__static_protobuf_unittest_TestPackedExtensions__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_FooRequest__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.FooRequest, global::Google.ProtocolBuffers.TestProtos.FooRequest.Builder&gt; internal__static_protobuf_unittest_FooRequest__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_FooResponse__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.FooResponse, global::Google.ProtocolBuffers.TestProtos.FooResponse.Builder&gt; internal__static_protobuf_unittest_FooResponse__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_BarRequest__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.BarRequest, global::Google.ProtocolBuffers.TestProtos.BarRequest.Builder&gt; internal__static_protobuf_unittest_BarRequest__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_protobuf_unittest_BarResponse__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.BarResponse, global::Google.ProtocolBuffers.TestProtos.BarResponse.Builder&gt; internal__static_protobuf_unittest_BarResponse__FieldAccessorTable;
     #endregion
+    #region Descriptor
+    public static pbd::FileDescriptor Descriptor {
+      get { return descriptor; }
+    }
+    private static pbd::FileDescriptor descriptor;
+    
+    static UnitTestProtoFile() {
+      byte[] descriptorData = global::System.Convert.FromBase64String(
+          &quot;Ch5nb29nbGUvcHJvdG9idWYvdW5pdHRlc3QucHJvdG8SEXByb3RvYnVmX3Vu&quot; + 
+          &quot;aXR0ZXN0GiRnb29nbGUvcHJvdG9idWYvY3NoYXJwX29wdGlvbnMucHJvdG8a&quot; + 
+          &quot;JWdvb2dsZS9wcm90b2J1Zi91bml0dGVzdF9pbXBvcnQucHJvdG8iuxUKDFRl&quot; + 
+          &quot;c3RBbGxUeXBlcxIWCg5vcHRpb25hbF9pbnQzMhgBIAEoBRIWCg5vcHRpb25h&quot; + 
+          &quot;bF9pbnQ2NBgCIAEoAxIXCg9vcHRpb25hbF91aW50MzIYAyABKA0SFwoPb3B0&quot; + 
+          &quot;aW9uYWxfdWludDY0GAQgASgEEhcKD29wdGlvbmFsX3NpbnQzMhgFIAEoERIX&quot; + 
+          &quot;Cg9vcHRpb25hbF9zaW50NjQYBiABKBISGAoQb3B0aW9uYWxfZml4ZWQzMhgH&quot; + 
+          &quot;IAEoBxIYChBvcHRpb25hbF9maXhlZDY0GAggASgGEhkKEW9wdGlvbmFsX3Nm&quot; + 
+          &quot;aXhlZDMyGAkgASgPEhkKEW9wdGlvbmFsX3NmaXhlZDY0GAogASgQEhYKDm9w&quot; + 
+          &quot;dGlvbmFsX2Zsb2F0GAsgASgCEhcKD29wdGlvbmFsX2RvdWJsZRgMIAEoARIV&quot; + 
+          &quot;Cg1vcHRpb25hbF9ib29sGA0gASgIEhcKD29wdGlvbmFsX3N0cmluZxgOIAEo&quot; + 
+          &quot;CRIWCg5vcHRpb25hbF9ieXRlcxgPIAEoDBJECg1vcHRpb25hbGdyb3VwGBAg&quot; + 
+          &quot;ASgKMi0ucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbFR5cGVzLk9wdGlvbmFs&quot; + 
+          &quot;R3JvdXASTgoXb3B0aW9uYWxfbmVzdGVkX21lc3NhZ2UYEiABKAsyLS5wcm90&quot; + 
+          &quot;b2J1Zl91bml0dGVzdC5UZXN0QWxsVHlwZXMuTmVzdGVkTWVzc2FnZRJDChhv&quot; + 
+          &quot;cHRpb25hbF9mb3JlaWduX21lc3NhZ2UYEyABKAsyIS5wcm90b2J1Zl91bml0&quot; + 
+          &quot;dGVzdC5Gb3JlaWduTWVzc2FnZRJIChdvcHRpb25hbF9pbXBvcnRfbWVzc2Fn&quot; + 
+          &quot;ZRgUIAEoCzInLnByb3RvYnVmX3VuaXR0ZXN0X2ltcG9ydC5JbXBvcnRNZXNz&quot; + 
+          &quot;YWdlEkgKFG9wdGlvbmFsX25lc3RlZF9lbnVtGBUgASgOMioucHJvdG9idWZf&quot; + 
+          &quot;dW5pdHRlc3QuVGVzdEFsbFR5cGVzLk5lc3RlZEVudW0SPQoVb3B0aW9uYWxf&quot; + 
+          &quot;Zm9yZWlnbl9lbnVtGBYgASgOMh4ucHJvdG9idWZfdW5pdHRlc3QuRm9yZWln&quot; + 
+          &quot;bkVudW0SQgoUb3B0aW9uYWxfaW1wb3J0X2VudW0YFyABKA4yJC5wcm90b2J1&quot; + 
+          &quot;Zl91bml0dGVzdF9pbXBvcnQuSW1wb3J0RW51bRIhChVvcHRpb25hbF9zdHJp&quot; + 
+          &quot;bmdfcGllY2UYGCABKAlCAggCEhkKDW9wdGlvbmFsX2NvcmQYGSABKAlCAggB&quot; + 
+          &quot;EhYKDnJlcGVhdGVkX2ludDMyGB8gAygFEhYKDnJlcGVhdGVkX2ludDY0GCAg&quot; + 
+          &quot;AygDEhcKD3JlcGVhdGVkX3VpbnQzMhghIAMoDRIXCg9yZXBlYXRlZF91aW50&quot; + 
+          &quot;NjQYIiADKAQSFwoPcmVwZWF0ZWRfc2ludDMyGCMgAygREhcKD3JlcGVhdGVk&quot; + 
+          &quot;X3NpbnQ2NBgkIAMoEhIYChByZXBlYXRlZF9maXhlZDMyGCUgAygHEhgKEHJl&quot; + 
+          &quot;cGVhdGVkX2ZpeGVkNjQYJiADKAYSGQoRcmVwZWF0ZWRfc2ZpeGVkMzIYJyAD&quot; + 
+          &quot;KA8SGQoRcmVwZWF0ZWRfc2ZpeGVkNjQYKCADKBASFgoOcmVwZWF0ZWRfZmxv&quot; + 
+          &quot;YXQYKSADKAISFwoPcmVwZWF0ZWRfZG91YmxlGCogAygBEhUKDXJlcGVhdGVk&quot; + 
+          &quot;X2Jvb2wYKyADKAgSFwoPcmVwZWF0ZWRfc3RyaW5nGCwgAygJEhYKDnJlcGVh&quot; + 
+          &quot;dGVkX2J5dGVzGC0gAygMEkQKDXJlcGVhdGVkZ3JvdXAYLiADKAoyLS5wcm90&quot; + 
+          &quot;b2J1Zl91bml0dGVzdC5UZXN0QWxsVHlwZXMuUmVwZWF0ZWRHcm91cBJOChdy&quot; + 
+          &quot;ZXBlYXRlZF9uZXN0ZWRfbWVzc2FnZRgwIAMoCzItLnByb3RvYnVmX3VuaXR0&quot; + 
+          &quot;ZXN0LlRlc3RBbGxUeXBlcy5OZXN0ZWRNZXNzYWdlEkMKGHJlcGVhdGVkX2Zv&quot; + 
+          &quot;cmVpZ25fbWVzc2FnZRgxIAMoCzIhLnByb3RvYnVmX3VuaXR0ZXN0LkZvcmVp&quot; + 
+          &quot;Z25NZXNzYWdlEkgKF3JlcGVhdGVkX2ltcG9ydF9tZXNzYWdlGDIgAygLMicu&quot; + 
+          &quot;cHJvdG9idWZfdW5pdHRlc3RfaW1wb3J0LkltcG9ydE1lc3NhZ2USSAoUcmVw&quot; + 
+          &quot;ZWF0ZWRfbmVzdGVkX2VudW0YMyADKA4yKi5wcm90b2J1Zl91bml0dGVzdC5U&quot; + 
+          &quot;ZXN0QWxsVHlwZXMuTmVzdGVkRW51bRI9ChVyZXBlYXRlZF9mb3JlaWduX2Vu&quot; + 
+          &quot;dW0YNCADKA4yHi5wcm90b2J1Zl91bml0dGVzdC5Gb3JlaWduRW51bRJCChRy&quot; + 
+          &quot;ZXBlYXRlZF9pbXBvcnRfZW51bRg1IAMoDjIkLnByb3RvYnVmX3VuaXR0ZXN0&quot; + 
+          &quot;X2ltcG9ydC5JbXBvcnRFbnVtEiEKFXJlcGVhdGVkX3N0cmluZ19waWVjZRg2&quot; + 
+          &quot;IAMoCUICCAISGQoNcmVwZWF0ZWRfY29yZBg3IAMoCUICCAESGQoNZGVmYXVs&quot; + 
+          &quot;dF9pbnQzMhg9IAEoBToCNDESGQoNZGVmYXVsdF9pbnQ2NBg+IAEoAzoCNDIS&quot; + 
+          &quot;GgoOZGVmYXVsdF91aW50MzIYPyABKA06AjQzEhoKDmRlZmF1bHRfdWludDY0&quot; + 
+          &quot;GEAgASgEOgI0NBIbCg5kZWZhdWx0X3NpbnQzMhhBIAEoEToDLTQ1EhoKDmRl&quot; + 
+          &quot;ZmF1bHRfc2ludDY0GEIgASgSOgI0NhIbCg9kZWZhdWx0X2ZpeGVkMzIYQyAB&quot; + 
+          &quot;KAc6AjQ3EhsKD2RlZmF1bHRfZml4ZWQ2NBhEIAEoBjoCNDgSHAoQZGVmYXVs&quot; + 
+          &quot;dF9zZml4ZWQzMhhFIAEoDzoCNDkSHQoQZGVmYXVsdF9zZml4ZWQ2NBhGIAEo&quot; + 
+          &quot;EDoDLTUwEhsKDWRlZmF1bHRfZmxvYXQYRyABKAI6BDUxLjUSHQoOZGVmYXVs&quot; + 
+          &quot;dF9kb3VibGUYSCABKAE6BTUyMDAwEhoKDGRlZmF1bHRfYm9vbBhJIAEoCDoE&quot; + 
+          &quot;dHJ1ZRIdCg5kZWZhdWx0X3N0cmluZxhKIAEoCToFaGVsbG8SHAoNZGVmYXVs&quot; + 
+          &quot;dF9ieXRlcxhLIAEoDDoFd29ybGQSTAoTZGVmYXVsdF9uZXN0ZWRfZW51bRhR&quot; + 
+          &quot;IAEoDjIqLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxUeXBlcy5OZXN0ZWRF&quot; + 
+          &quot;bnVtOgNCQVISSQoUZGVmYXVsdF9mb3JlaWduX2VudW0YUiABKA4yHi5wcm90&quot; + 
+          &quot;b2J1Zl91bml0dGVzdC5Gb3JlaWduRW51bToLRk9SRUlHTl9CQVISTQoTZGVm&quot; + 
+          &quot;YXVsdF9pbXBvcnRfZW51bRhTIAEoDjIkLnByb3RvYnVmX3VuaXR0ZXN0X2lt&quot; + 
+          &quot;cG9ydC5JbXBvcnRFbnVtOgpJTVBPUlRfQkFSEiUKFGRlZmF1bHRfc3RyaW5n&quot; + 
+          &quot;X3BpZWNlGFQgASgJOgNhYmNCAggCEh0KDGRlZmF1bHRfY29yZBhVIAEoCToD&quot; + 
+          &quot;MTIzQgIIARobCg1OZXN0ZWRNZXNzYWdlEgoKAmJiGAEgASgFGhoKDU9wdGlv&quot; + 
+          &quot;bmFsR3JvdXASCQoBYRgRIAEoBRoaCg1SZXBlYXRlZEdyb3VwEgkKAWEYLyAB&quot; + 
+          &quot;KAUiJwoKTmVzdGVkRW51bRIHCgNGT08QARIHCgNCQVIQAhIHCgNCQVoQAyIb&quot; + 
+          &quot;Cg5Gb3JlaWduTWVzc2FnZRIJCgFjGAEgASgFIh0KEVRlc3RBbGxFeHRlbnNp&quot; + 
+          &quot;b25zKggIARCAgICAAiIkChdPcHRpb25hbEdyb3VwX2V4dGVuc2lvbhIJCgFh&quot; + 
+          &quot;GBEgASgFIiQKF1JlcGVhdGVkR3JvdXBfZXh0ZW5zaW9uEgkKAWEYLyABKAUi&quot; + 
+          &quot;1QUKDFRlc3RSZXF1aXJlZBIJCgFhGAEgAigFEg4KBmR1bW15MhgCIAEoBRIJ&quot; + 
+          &quot;CgFiGAMgAigFEg4KBmR1bW15NBgEIAEoBRIOCgZkdW1teTUYBSABKAUSDgoG&quot; + 
+          &quot;ZHVtbXk2GAYgASgFEg4KBmR1bW15NxgHIAEoBRIOCgZkdW1teTgYCCABKAUS&quot; + 
+          &quot;DgoGZHVtbXk5GAkgASgFEg8KB2R1bW15MTAYCiABKAUSDwoHZHVtbXkxMRgL&quot; + 
+          &quot;IAEoBRIPCgdkdW1teTEyGAwgASgFEg8KB2R1bW15MTMYDSABKAUSDwoHZHVt&quot; + 
+          &quot;bXkxNBgOIAEoBRIPCgdkdW1teTE1GA8gASgFEg8KB2R1bW15MTYYECABKAUS&quot; + 
+          &quot;DwoHZHVtbXkxNxgRIAEoBRIPCgdkdW1teTE4GBIgASgFEg8KB2R1bW15MTkY&quot; + 
+          &quot;EyABKAUSDwoHZHVtbXkyMBgUIAEoBRIPCgdkdW1teTIxGBUgASgFEg8KB2R1&quot; + 
+          &quot;bW15MjIYFiABKAUSDwoHZHVtbXkyMxgXIAEoBRIPCgdkdW1teTI0GBggASgF&quot; + 
+          &quot;Eg8KB2R1bW15MjUYGSABKAUSDwoHZHVtbXkyNhgaIAEoBRIPCgdkdW1teTI3&quot; + 
+          &quot;GBsgASgFEg8KB2R1bW15MjgYHCABKAUSDwoHZHVtbXkyORgdIAEoBRIPCgdk&quot; + 
+          &quot;dW1teTMwGB4gASgFEg8KB2R1bW15MzEYHyABKAUSDwoHZHVtbXkzMhggIAEo&quot; + 
+          &quot;BRIJCgFjGCEgAigFMlYKBnNpbmdsZRIkLnByb3RvYnVmX3VuaXR0ZXN0LlRl&quot; + 
+          &quot;c3RBbGxFeHRlbnNpb25zGOgHIAEoCzIfLnByb3RvYnVmX3VuaXR0ZXN0LlRl&quot; + 
+          &quot;c3RSZXF1aXJlZDJVCgVtdWx0aRIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RB&quot; + 
+          &quot;bGxFeHRlbnNpb25zGOkHIAMoCzIfLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RS&quot; + 
+          &quot;ZXF1aXJlZCKaAQoTVGVzdFJlcXVpcmVkRm9yZWlnbhI5ChBvcHRpb25hbF9t&quot; + 
+          &quot;ZXNzYWdlGAEgASgLMh8ucHJvdG9idWZfdW5pdHRlc3QuVGVzdFJlcXVpcmVk&quot; + 
+          &quot;EjkKEHJlcGVhdGVkX21lc3NhZ2UYAiADKAsyHy5wcm90b2J1Zl91bml0dGVz&quot; + 
+          &quot;dC5UZXN0UmVxdWlyZWQSDQoFZHVtbXkYAyABKAUiWgoRVGVzdEZvcmVpZ25O&quot; + 
+          &quot;ZXN0ZWQSRQoOZm9yZWlnbl9uZXN0ZWQYASABKAsyLS5wcm90b2J1Zl91bml0&quot; + 
+          &quot;dGVzdC5UZXN0QWxsVHlwZXMuTmVzdGVkTWVzc2FnZSISChBUZXN0RW1wdHlN&quot; + 
+          &quot;ZXNzYWdlIioKHlRlc3RFbXB0eU1lc3NhZ2VXaXRoRXh0ZW5zaW9ucyoICAEQ&quot; + 
+          &quot;gICAgAIiNAoYVGVzdFJlYWxseUxhcmdlVGFnTnVtYmVyEgkKAWEYASABKAUS&quot; + 
+          &quot;DQoCYmIY////fyABKAUiVQoUVGVzdFJlY3Vyc2l2ZU1lc3NhZ2USMgoBYRgB&quot; + 
+          &quot;IAEoCzInLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RSZWN1cnNpdmVNZXNzYWdl&quot; + 
+          &quot;EgkKAWkYAiABKAUiSwoUVGVzdE11dHVhbFJlY3Vyc2lvbkESMwoCYmIYASAB&quot; + 
+          &quot;KAsyJy5wcm90b2J1Zl91bml0dGVzdC5UZXN0TXV0dWFsUmVjdXJzaW9uQiJi&quot; + 
+          &quot;ChRUZXN0TXV0dWFsUmVjdXJzaW9uQhIyCgFhGAEgASgLMicucHJvdG9idWZf&quot; + 
+          &quot;dW5pdHRlc3QuVGVzdE11dHVhbFJlY3Vyc2lvbkESFgoOb3B0aW9uYWxfaW50&quot; + 
+          &quot;MzIYAiABKAUiswEKElRlc3REdXBGaWVsZE51bWJlchIJCgFhGAEgASgFEjYK&quot; + 
+          &quot;A2ZvbxgCIAEoCjIpLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3REdXBGaWVsZE51&quot; + 
+          &quot;bWJlci5Gb28SNgoDYmFyGAMgASgKMikucHJvdG9idWZfdW5pdHRlc3QuVGVz&quot; + 
+          &quot;dER1cEZpZWxkTnVtYmVyLkJhchoQCgNGb28SCQoBYRgBIAEoBRoQCgNCYXIS&quot; + 
+          &quot;CQoBYRgBIAEoBSKAAgoYVGVzdE5lc3RlZE1lc3NhZ2VIYXNCaXRzEloKF29w&quot; + 
+          &quot;dGlvbmFsX25lc3RlZF9tZXNzYWdlGAEgASgLMjkucHJvdG9idWZfdW5pdHRl&quot; + 
+          &quot;c3QuVGVzdE5lc3RlZE1lc3NhZ2VIYXNCaXRzLk5lc3RlZE1lc3NhZ2UahwEK&quot; + 
+          &quot;DU5lc3RlZE1lc3NhZ2USJAocbmVzdGVkbWVzc2FnZV9yZXBlYXRlZF9pbnQz&quot; + 
+          &quot;MhgBIAMoBRJQCiVuZXN0ZWRtZXNzYWdlX3JlcGVhdGVkX2ZvcmVpZ25tZXNz&quot; + 
+          &quot;YWdlGAIgAygLMiEucHJvdG9idWZfdW5pdHRlc3QuRm9yZWlnbk1lc3NhZ2Ui&quot; + 
+          &quot;5QMKF1Rlc3RDYW1lbENhc2VGaWVsZE5hbWVzEhYKDlByaW1pdGl2ZUZpZWxk&quot; + 
+          &quot;GAEgASgFEhMKC1N0cmluZ0ZpZWxkGAIgASgJEjEKCUVudW1GaWVsZBgDIAEo&quot; + 
+          &quot;DjIeLnByb3RvYnVmX3VuaXR0ZXN0LkZvcmVpZ25FbnVtEjcKDE1lc3NhZ2VG&quot; + 
+          &quot;aWVsZBgEIAEoCzIhLnByb3RvYnVmX3VuaXR0ZXN0LkZvcmVpZ25NZXNzYWdl&quot; + 
+          &quot;EhwKEFN0cmluZ1BpZWNlRmllbGQYBSABKAlCAggCEhUKCUNvcmRGaWVsZBgG&quot; + 
+          &quot;IAEoCUICCAESHgoWUmVwZWF0ZWRQcmltaXRpdmVGaWVsZBgHIAMoBRIbChNS&quot; + 
+          &quot;ZXBlYXRlZFN0cmluZ0ZpZWxkGAggAygJEjkKEVJlcGVhdGVkRW51bUZpZWxk&quot; + 
+          &quot;GAkgAygOMh4ucHJvdG9idWZfdW5pdHRlc3QuRm9yZWlnbkVudW0SPwoUUmVw&quot; + 
+          &quot;ZWF0ZWRNZXNzYWdlRmllbGQYCiADKAsyIS5wcm90b2J1Zl91bml0dGVzdC5G&quot; + 
+          &quot;b3JlaWduTWVzc2FnZRIkChhSZXBlYXRlZFN0cmluZ1BpZWNlRmllbGQYCyAD&quot; + 
+          &quot;KAlCAggCEh0KEVJlcGVhdGVkQ29yZEZpZWxkGAwgAygJQgIIASJVChJUZXN0&quot; + 
+          &quot;RmllbGRPcmRlcmluZ3MSEQoJbXlfc3RyaW5nGAsgASgJEg4KBm15X2ludBgB&quot; + 
+          &quot;IAEoAxIQCghteV9mbG9hdBhlIAEoAioECAIQCyoECAwQZSKQAgoYVGVzdEV4&quot; + 
+          &quot;dHJlbWVEZWZhdWx0VmFsdWVzEj8KDWVzY2FwZWRfYnl0ZXMYASABKAw6KFww&quot; + 
+          &quot;MDBcMDAxXDAwN1wwMTBcMDE0XG5cclx0XDAxM1xcXCdcIlwzNzYSIAoMbGFy&quot; + 
+          &quot;Z2VfdWludDMyGAIgASgNOgo0Mjk0OTY3Mjk1EioKDGxhcmdlX3VpbnQ2NBgD&quot; + 
+          &quot;IAEoBDoUMTg0NDY3NDQwNzM3MDk1NTE2MTUSIAoLc21hbGxfaW50MzIYBCAB&quot; + 
+          &quot;KAU6Cy0yMTQ3NDgzNjQ3EikKC3NtYWxsX2ludDY0GAUgASgDOhQtOTIyMzM3&quot; + 
+          &quot;MjAzNjg1NDc3NTgwNxIYCgt1dGY4X3N0cmluZxgGIAEoCToD4Yi0IqoDCg9U&quot; + 
+          &quot;ZXN0UGFja2VkVHlwZXMSGAoMcGFja2VkX2ludDMyGFogAygFQgIQARIYCgxw&quot; + 
+          &quot;YWNrZWRfaW50NjQYWyADKANCAhABEhkKDXBhY2tlZF91aW50MzIYXCADKA1C&quot; + 
+          &quot;AhABEhkKDXBhY2tlZF91aW50NjQYXSADKARCAhABEhkKDXBhY2tlZF9zaW50&quot; + 
+          &quot;MzIYXiADKBFCAhABEhkKDXBhY2tlZF9zaW50NjQYXyADKBJCAhABEhoKDnBh&quot; + 
+          &quot;Y2tlZF9maXhlZDMyGGAgAygHQgIQARIaCg5wYWNrZWRfZml4ZWQ2NBhhIAMo&quot; + 
+          &quot;BkICEAESGwoPcGFja2VkX3NmaXhlZDMyGGIgAygPQgIQARIbCg9wYWNrZWRf&quot; + 
+          &quot;c2ZpeGVkNjQYYyADKBBCAhABEhgKDHBhY2tlZF9mbG9hdBhkIAMoAkICEAES&quot; + 
+          &quot;GQoNcGFja2VkX2RvdWJsZRhlIAMoAUICEAESFwoLcGFja2VkX2Jvb2wYZiAD&quot; + 
+          &quot;KAhCAhABEjcKC3BhY2tlZF9lbnVtGGcgAygOMh4ucHJvdG9idWZfdW5pdHRl&quot; + 
+          &quot;c3QuRm9yZWlnbkVudW1CAhABIiAKFFRlc3RQYWNrZWRFeHRlbnNpb25zKggI&quot; + 
+          &quot;ARCAgICAAiIMCgpGb29SZXF1ZXN0Ig0KC0Zvb1Jlc3BvbnNlIgwKCkJhclJl&quot; + 
+          &quot;cXVlc3QiDQoLQmFyUmVzcG9uc2UqQAoLRm9yZWlnbkVudW0SDwoLRk9SRUlH&quot; + 
+          &quot;Tl9GT08QBBIPCgtGT1JFSUdOX0JBUhAFEg8KC0ZPUkVJR05fQkFaEAYqRwoU&quot; + 
+          &quot;VGVzdEVudW1XaXRoRHVwVmFsdWUSCAoERk9PMRABEggKBEJBUjEQAhIHCgNC&quot; + 
+          &quot;QVoQAxIICgRGT08yEAESCAoEQkFSMhACKokBCg5UZXN0U3BhcnNlRW51bRIM&quot; + 
+          &quot;CghTUEFSU0VfQRB7Eg4KCFNQQVJTRV9CEKbnAxIPCghTUEFSU0VfQxCysYAG&quot; + 
+          &quot;EhUKCFNQQVJTRV9EEPH//////////wESFQoIU1BBUlNFX0UQtN78////////&quot; + 
+          &quot;ARIMCghTUEFSU0VfRhAAEgwKCFNQQVJTRV9HEAIymQEKC1Rlc3RTZXJ2aWNl&quot; + 
+          &quot;EkQKA0ZvbxIdLnByb3RvYnVmX3VuaXR0ZXN0LkZvb1JlcXVlc3QaHi5wcm90&quot; + 
+          &quot;b2J1Zl91bml0dGVzdC5Gb29SZXNwb25zZRJECgNCYXISHS5wcm90b2J1Zl91&quot; + 
+          &quot;bml0dGVzdC5CYXJSZXF1ZXN0Gh4ucHJvdG9idWZfdW5pdHRlc3QuQmFyUmVz&quot; + 
+          &quot;cG9uc2U6RgoYb3B0aW9uYWxfaW50MzJfZXh0ZW5zaW9uEiQucHJvdG9idWZf&quot; + 
+          &quot;dW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYASABKAU6RgoYb3B0aW9uYWxf&quot; + 
+          &quot;aW50NjRfZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4&quot; + 
+          &quot;dGVuc2lvbnMYAiABKAM6RwoZb3B0aW9uYWxfdWludDMyX2V4dGVuc2lvbhIk&quot; + 
+          &quot;LnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGAMgASgNOkcK&quot; + 
+          &quot;GW9wdGlvbmFsX3VpbnQ2NF9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVz&quot; + 
+          &quot;dC5UZXN0QWxsRXh0ZW5zaW9ucxgEIAEoBDpHChlvcHRpb25hbF9zaW50MzJf&quot; + 
+          &quot;ZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lv&quot; + 
+          &quot;bnMYBSABKBE6RwoZb3B0aW9uYWxfc2ludDY0X2V4dGVuc2lvbhIkLnByb3Rv&quot; + 
+          &quot;YnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGAYgASgSOkgKGm9wdGlv&quot; + 
+          &quot;bmFsX2ZpeGVkMzJfZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVz&quot; + 
+          &quot;dEFsbEV4dGVuc2lvbnMYByABKAc6SAoab3B0aW9uYWxfZml4ZWQ2NF9leHRl&quot; + 
+          &quot;bnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgI&quot; + 
+          &quot;IAEoBjpJChtvcHRpb25hbF9zZml4ZWQzMl9leHRlbnNpb24SJC5wcm90b2J1&quot; + 
+          &quot;Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgJIAEoDzpJChtvcHRpb25h&quot; + 
+          &quot;bF9zZml4ZWQ2NF9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0&quot; + 
+          &quot;QWxsRXh0ZW5zaW9ucxgKIAEoEDpGChhvcHRpb25hbF9mbG9hdF9leHRlbnNp&quot; + 
+          &quot;b24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgLIAEo&quot; + 
+          &quot;AjpHChlvcHRpb25hbF9kb3VibGVfZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5p&quot; + 
+          &quot;dHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYDCABKAE6RQoXb3B0aW9uYWxfYm9v&quot; + 
+          &quot;bF9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5z&quot; + 
+          &quot;aW9ucxgNIAEoCDpHChlvcHRpb25hbF9zdHJpbmdfZXh0ZW5zaW9uEiQucHJv&quot; + 
+          &quot;dG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYDiABKAk6RgoYb3B0&quot; + 
+          &quot;aW9uYWxfYnl0ZXNfZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVz&quot; + 
+          &quot;dEFsbEV4dGVuc2lvbnMYDyABKAw6cQoXb3B0aW9uYWxncm91cF9leHRlbnNp&quot; + 
+          &quot;b24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgQIAEo&quot; + 
+          &quot;CjIqLnByb3RvYnVmX3VuaXR0ZXN0Lk9wdGlvbmFsR3JvdXBfZXh0ZW5zaW9u&quot; + 
+          &quot;On4KIW9wdGlvbmFsX25lc3RlZF9tZXNzYWdlX2V4dGVuc2lvbhIkLnByb3Rv&quot; + 
+          &quot;YnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGBIgASgLMi0ucHJvdG9i&quot; + 
+          &quot;dWZfdW5pdHRlc3QuVGVzdEFsbFR5cGVzLk5lc3RlZE1lc3NhZ2U6cwoib3B0&quot; + 
+          &quot;aW9uYWxfZm9yZWlnbl9tZXNzYWdlX2V4dGVuc2lvbhIkLnByb3RvYnVmX3Vu&quot; + 
+          &quot;aXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGBMgASgLMiEucHJvdG9idWZfdW5p&quot; + 
+          &quot;dHRlc3QuRm9yZWlnbk1lc3NhZ2U6eAohb3B0aW9uYWxfaW1wb3J0X21lc3Nh&quot; + 
+          &quot;Z2VfZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVu&quot; + 
+          &quot;c2lvbnMYFCABKAsyJy5wcm90b2J1Zl91bml0dGVzdF9pbXBvcnQuSW1wb3J0&quot; + 
+          &quot;TWVzc2FnZTp4Ch5vcHRpb25hbF9uZXN0ZWRfZW51bV9leHRlbnNpb24SJC5w&quot; + 
+          &quot;cm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgVIAEoDjIqLnBy&quot; + 
+          &quot;b3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxUeXBlcy5OZXN0ZWRFbnVtOm0KH29w&quot; + 
+          &quot;dGlvbmFsX2ZvcmVpZ25fZW51bV9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0&quot; + 
+          &quot;dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgWIAEoDjIeLnByb3RvYnVmX3VuaXR0&quot; + 
+          &quot;ZXN0LkZvcmVpZ25FbnVtOnIKHm9wdGlvbmFsX2ltcG9ydF9lbnVtX2V4dGVu&quot; + 
+          &quot;c2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGBcg&quot; + 
+          &quot;ASgOMiQucHJvdG9idWZfdW5pdHRlc3RfaW1wb3J0LkltcG9ydEVudW06UQof&quot; + 
+          &quot;b3B0aW9uYWxfc3RyaW5nX3BpZWNlX2V4dGVuc2lvbhIkLnByb3RvYnVmX3Vu&quot; + 
+          &quot;aXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGBggASgJQgIIAjpJChdvcHRpb25h&quot; + 
+          &quot;bF9jb3JkX2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxF&quot; + 
+          &quot;eHRlbnNpb25zGBkgASgJQgIIATpGChhyZXBlYXRlZF9pbnQzMl9leHRlbnNp&quot; + 
+          &quot;b24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgfIAMo&quot; + 
+          &quot;BTpGChhyZXBlYXRlZF9pbnQ2NF9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0&quot; + 
+          &quot;dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxggIAMoAzpHChlyZXBlYXRlZF91aW50&quot; + 
+          &quot;MzJfZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVu&quot; + 
+          &quot;c2lvbnMYISADKA06RwoZcmVwZWF0ZWRfdWludDY0X2V4dGVuc2lvbhIkLnBy&quot; + 
+          &quot;b3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGCIgAygEOkcKGXJl&quot; + 
+          &quot;cGVhdGVkX3NpbnQzMl9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5U&quot; + 
+          &quot;ZXN0QWxsRXh0ZW5zaW9ucxgjIAMoETpHChlyZXBlYXRlZF9zaW50NjRfZXh0&quot; + 
+          &quot;ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMY&quot; + 
+          &quot;JCADKBI6SAoacmVwZWF0ZWRfZml4ZWQzMl9leHRlbnNpb24SJC5wcm90b2J1&quot; + 
+          &quot;Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxglIAMoBzpIChpyZXBlYXRl&quot; + 
+          &quot;ZF9maXhlZDY0X2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RB&quot; + 
+          &quot;bGxFeHRlbnNpb25zGCYgAygGOkkKG3JlcGVhdGVkX3NmaXhlZDMyX2V4dGVu&quot; + 
+          &quot;c2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGCcg&quot; + 
+          &quot;AygPOkkKG3JlcGVhdGVkX3NmaXhlZDY0X2V4dGVuc2lvbhIkLnByb3RvYnVm&quot; + 
+          &quot;X3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGCggAygQOkYKGHJlcGVhdGVk&quot; + 
+          &quot;X2Zsb2F0X2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxF&quot; + 
+          &quot;eHRlbnNpb25zGCkgAygCOkcKGXJlcGVhdGVkX2RvdWJsZV9leHRlbnNpb24S&quot; + 
+          &quot;JC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgqIAMoATpF&quot; + 
+          &quot;ChdyZXBlYXRlZF9ib29sX2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0&quot; + 
+          &quot;LlRlc3RBbGxFeHRlbnNpb25zGCsgAygIOkcKGXJlcGVhdGVkX3N0cmluZ19l&quot; + 
+          &quot;eHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9u&quot; + 
+          &quot;cxgsIAMoCTpGChhyZXBlYXRlZF9ieXRlc19leHRlbnNpb24SJC5wcm90b2J1&quot; + 
+          &quot;Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgtIAMoDDpxChdyZXBlYXRl&quot; + 
+          &quot;ZGdyb3VwX2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxF&quot; + 
+          &quot;eHRlbnNpb25zGC4gAygKMioucHJvdG9idWZfdW5pdHRlc3QuUmVwZWF0ZWRH&quot; + 
+          &quot;cm91cF9leHRlbnNpb246fgohcmVwZWF0ZWRfbmVzdGVkX21lc3NhZ2VfZXh0&quot; + 
+          &quot;ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMY&quot; + 
+          &quot;MCADKAsyLS5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsVHlwZXMuTmVzdGVk&quot; + 
+          &quot;TWVzc2FnZTpzCiJyZXBlYXRlZF9mb3JlaWduX21lc3NhZ2VfZXh0ZW5zaW9u&quot; + 
+          &quot;EiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYMSADKAsy&quot; + 
+          &quot;IS5wcm90b2J1Zl91bml0dGVzdC5Gb3JlaWduTWVzc2FnZTp4CiFyZXBlYXRl&quot; + 
+          &quot;ZF9pbXBvcnRfbWVzc2FnZV9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVz&quot; + 
+          &quot;dC5UZXN0QWxsRXh0ZW5zaW9ucxgyIAMoCzInLnByb3RvYnVmX3VuaXR0ZXN0&quot; + 
+          &quot;X2ltcG9ydC5JbXBvcnRNZXNzYWdlOngKHnJlcGVhdGVkX25lc3RlZF9lbnVt&quot; + 
+          &quot;X2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNp&quot; + 
+          &quot;b25zGDMgAygOMioucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbFR5cGVzLk5l&quot; + 
+          &quot;c3RlZEVudW06bQofcmVwZWF0ZWRfZm9yZWlnbl9lbnVtX2V4dGVuc2lvbhIk&quot; + 
+          &quot;LnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGDQgAygOMh4u&quot; + 
+          &quot;cHJvdG9idWZfdW5pdHRlc3QuRm9yZWlnbkVudW06cgoecmVwZWF0ZWRfaW1w&quot; + 
+          &quot;b3J0X2VudW1fZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFs&quot; + 
+          &quot;bEV4dGVuc2lvbnMYNSADKA4yJC5wcm90b2J1Zl91bml0dGVzdF9pbXBvcnQu&quot; + 
+          &quot;SW1wb3J0RW51bTpRCh9yZXBlYXRlZF9zdHJpbmdfcGllY2VfZXh0ZW5zaW9u&quot; + 
+          &quot;EiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYNiADKAlC&quot; + 
+          &quot;AggCOkkKF3JlcGVhdGVkX2NvcmRfZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5p&quot; + 
+          &quot;dHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYNyADKAlCAggBOkkKF2RlZmF1bHRf&quot; + 
+          &quot;aW50MzJfZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4&quot; + 
+          &quot;dGVuc2lvbnMYPSABKAU6AjQxOkkKF2RlZmF1bHRfaW50NjRfZXh0ZW5zaW9u&quot; + 
+          &quot;EiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYPiABKAM6&quot; + 
+          &quot;AjQyOkoKGGRlZmF1bHRfdWludDMyX2V4dGVuc2lvbhIkLnByb3RvYnVmX3Vu&quot; + 
+          &quot;aXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGD8gASgNOgI0MzpKChhkZWZhdWx0&quot; + 
+          &quot;X3VpbnQ2NF9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxs&quot; + 
+          &quot;RXh0ZW5zaW9ucxhAIAEoBDoCNDQ6SwoYZGVmYXVsdF9zaW50MzJfZXh0ZW5z&quot; + 
+          &quot;aW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYQSAB&quot; + 
+          &quot;KBE6Ay00NTpKChhkZWZhdWx0X3NpbnQ2NF9leHRlbnNpb24SJC5wcm90b2J1&quot; + 
+          &quot;Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxhCIAEoEjoCNDY6SwoZZGVm&quot; + 
+          &quot;YXVsdF9maXhlZDMyX2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRl&quot; + 
+          &quot;c3RBbGxFeHRlbnNpb25zGEMgASgHOgI0NzpLChlkZWZhdWx0X2ZpeGVkNjRf&quot; + 
+          &quot;ZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lv&quot; + 
+          &quot;bnMYRCABKAY6AjQ4OkwKGmRlZmF1bHRfc2ZpeGVkMzJfZXh0ZW5zaW9uEiQu&quot; + 
+          &quot;cHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYRSABKA86AjQ5&quot; + 
+          &quot;Ok0KGmRlZmF1bHRfc2ZpeGVkNjRfZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5p&quot; + 
+          &quot;dHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYRiABKBA6Ay01MDpLChdkZWZhdWx0&quot; + 
+          &quot;X2Zsb2F0X2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxF&quot; + 
+          &quot;eHRlbnNpb25zGEcgASgCOgQ1MS41Ok0KGGRlZmF1bHRfZG91YmxlX2V4dGVu&quot; + 
+          &quot;c2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGEgg&quot; + 
+          &quot;ASgBOgU1MjAwMDpKChZkZWZhdWx0X2Jvb2xfZXh0ZW5zaW9uEiQucHJvdG9i&quot; + 
+          &quot;dWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYSSABKAg6BHRydWU6TQoY&quot; + 
+          &quot;ZGVmYXVsdF9zdHJpbmdfZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3Qu&quot; + 
+          &quot;VGVzdEFsbEV4dGVuc2lvbnMYSiABKAk6BWhlbGxvOkwKF2RlZmF1bHRfYnl0&quot; + 
+          &quot;ZXNfZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVu&quot; + 
+          &quot;c2lvbnMYSyABKAw6BXdvcmxkOnwKHWRlZmF1bHRfbmVzdGVkX2VudW1fZXh0&quot; + 
+          &quot;ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMY&quot; + 
+          &quot;USABKA4yKi5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsVHlwZXMuTmVzdGVk&quot; + 
+          &quot;RW51bToDQkFSOnkKHmRlZmF1bHRfZm9yZWlnbl9lbnVtX2V4dGVuc2lvbhIk&quot; + 
+          &quot;LnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGFIgASgOMh4u&quot; + 
+          &quot;cHJvdG9idWZfdW5pdHRlc3QuRm9yZWlnbkVudW06C0ZPUkVJR05fQkFSOn0K&quot; + 
+          &quot;HWRlZmF1bHRfaW1wb3J0X2VudW1fZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5p&quot; + 
+          &quot;dHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYUyABKA4yJC5wcm90b2J1Zl91bml0&quot; + 
+          &quot;dGVzdF9pbXBvcnQuSW1wb3J0RW51bToKSU1QT1JUX0JBUjpVCh5kZWZhdWx0&quot; + 
+          &quot;X3N0cmluZ19waWVjZV9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5U&quot; + 
+          &quot;ZXN0QWxsRXh0ZW5zaW9ucxhUIAEoCToDYWJjQgIIAjpNChZkZWZhdWx0X2Nv&quot; + 
+          &quot;cmRfZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVu&quot; + 
+          &quot;c2lvbnMYVSABKAk6AzEyM0ICCAE6QgoTbXlfZXh0ZW5zaW9uX3N0cmluZxIl&quot; + 
+          &quot;LnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RGaWVsZE9yZGVyaW5ncxgyIAEoCTo/&quot; + 
+          &quot;ChBteV9leHRlbnNpb25faW50EiUucHJvdG9idWZfdW5pdHRlc3QuVGVzdEZp&quot; + 
+          &quot;ZWxkT3JkZXJpbmdzGAUgASgFOksKFnBhY2tlZF9pbnQzMl9leHRlbnNpb24S&quot; + 
+          &quot;Jy5wcm90b2J1Zl91bml0dGVzdC5UZXN0UGFja2VkRXh0ZW5zaW9ucxhaIAMo&quot; + 
+          &quot;BUICEAE6SwoWcGFja2VkX2ludDY0X2V4dGVuc2lvbhInLnByb3RvYnVmX3Vu&quot; + 
+          &quot;aXR0ZXN0LlRlc3RQYWNrZWRFeHRlbnNpb25zGFsgAygDQgIQATpMChdwYWNr&quot; + 
+          &quot;ZWRfdWludDMyX2V4dGVuc2lvbhInLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RQ&quot; + 
+          &quot;YWNrZWRFeHRlbnNpb25zGFwgAygNQgIQATpMChdwYWNrZWRfdWludDY0X2V4&quot; + 
+          &quot;dGVuc2lvbhInLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RQYWNrZWRFeHRlbnNp&quot; + 
+          &quot;b25zGF0gAygEQgIQATpMChdwYWNrZWRfc2ludDMyX2V4dGVuc2lvbhInLnBy&quot; + 
+          &quot;b3RvYnVmX3VuaXR0ZXN0LlRlc3RQYWNrZWRFeHRlbnNpb25zGF4gAygRQgIQ&quot; + 
+          &quot;ATpMChdwYWNrZWRfc2ludDY0X2V4dGVuc2lvbhInLnByb3RvYnVmX3VuaXR0&quot; + 
+          &quot;ZXN0LlRlc3RQYWNrZWRFeHRlbnNpb25zGF8gAygSQgIQATpNChhwYWNrZWRf&quot; + 
+          &quot;Zml4ZWQzMl9leHRlbnNpb24SJy5wcm90b2J1Zl91bml0dGVzdC5UZXN0UGFj&quot; + 
+          &quot;a2VkRXh0ZW5zaW9ucxhgIAMoB0ICEAE6TQoYcGFja2VkX2ZpeGVkNjRfZXh0&quot; + 
+          &quot;ZW5zaW9uEicucHJvdG9idWZfdW5pdHRlc3QuVGVzdFBhY2tlZEV4dGVuc2lv&quot; + 
+          &quot;bnMYYSADKAZCAhABOk4KGXBhY2tlZF9zZml4ZWQzMl9leHRlbnNpb24SJy5w&quot; + 
+          &quot;cm90b2J1Zl91bml0dGVzdC5UZXN0UGFja2VkRXh0ZW5zaW9ucxhiIAMoD0IC&quot; + 
+          &quot;EAE6TgoZcGFja2VkX3NmaXhlZDY0X2V4dGVuc2lvbhInLnByb3RvYnVmX3Vu&quot; + 
+          &quot;aXR0ZXN0LlRlc3RQYWNrZWRFeHRlbnNpb25zGGMgAygQQgIQATpLChZwYWNr&quot; + 
+          &quot;ZWRfZmxvYXRfZXh0ZW5zaW9uEicucHJvdG9idWZfdW5pdHRlc3QuVGVzdFBh&quot; + 
+          &quot;Y2tlZEV4dGVuc2lvbnMYZCADKAJCAhABOkwKF3BhY2tlZF9kb3VibGVfZXh0&quot; + 
+          &quot;ZW5zaW9uEicucHJvdG9idWZfdW5pdHRlc3QuVGVzdFBhY2tlZEV4dGVuc2lv&quot; + 
+          &quot;bnMYZSADKAFCAhABOkoKFXBhY2tlZF9ib29sX2V4dGVuc2lvbhInLnByb3Rv&quot; + 
+          &quot;YnVmX3VuaXR0ZXN0LlRlc3RQYWNrZWRFeHRlbnNpb25zGGYgAygIQgIQATpq&quot; + 
+          &quot;ChVwYWNrZWRfZW51bV9leHRlbnNpb24SJy5wcm90b2J1Zl91bml0dGVzdC5U&quot; + 
+          &quot;ZXN0UGFja2VkRXh0ZW5zaW9ucxhnIAMoDjIeLnByb3RvYnVmX3VuaXR0ZXN0&quot; + 
+          &quot;LkZvcmVpZ25FbnVtQgIQAUJKQg1Vbml0dGVzdFByb3RvSAHCPjYKIUdvb2ds&quot; + 
+          &quot;ZS5Qcm90b2NvbEJ1ZmZlcnMuVGVzdFByb3RvcxIRVW5pdFRlc3RQcm90b0Zp&quot; + 
+          &quot;bGU=&quot;);
+      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&lt;global::Google.ProtocolBuffers.TestProtos.TestAllTypes, global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Builder&gt;(internal__static_protobuf_unittest_TestAllTypes__Descriptor,
+                new string[] { &quot;OptionalInt32&quot;, &quot;OptionalInt64&quot;, &quot;OptionalUint32&quot;, &quot;OptionalUint64&quot;, &quot;OptionalSint32&quot;, &quot;OptionalSint64&quot;, &quot;OptionalFixed32&quot;, &quot;OptionalFixed64&quot;, &quot;OptionalSfixed32&quot;, &quot;OptionalSfixed64&quot;, &quot;OptionalFloat&quot;, &quot;OptionalDouble&quot;, &quot;OptionalBool&quot;, &quot;OptionalString&quot;, &quot;OptionalBytes&quot;, &quot;OptionalGroup&quot;, &quot;OptionalNestedMessage&quot;, &quot;OptionalForeignMessage&quot;, &quot;OptionalImportMessage&quot;, &quot;OptionalNestedEnum&quot;, &quot;OptionalForeignEnum&quot;, &quot;OptionalImportEnum&quot;, &quot;OptionalStringPiece&quot;, &quot;OptionalCord&quot;, &quot;RepeatedInt32&quot;, &quot;RepeatedInt64&quot;, &quot;RepeatedUint32&quot;, &quot;RepeatedUint64&quot;, &quot;RepeatedSint32&quot;, &quot;RepeatedSint64&quot;, &quot;RepeatedFixed32&quot;, &quot;RepeatedFixed64&quot;, &quot;RepeatedSfixed32&quot;, &quot;RepeatedSfixed64&quot;, &quot;RepeatedFloat&quot;, &quot;RepeatedDouble&quot;, &quot;RepeatedBool&quot;, &quot;RepeatedString&quot;, &quot;RepeatedBytes&quot;, &quot;RepeatedGroup&quot;, &quot;RepeatedNestedMessage&quot;, &quot;RepeatedForeignMessage&quot;, &quot;RepeatedImportMessage&quot;, &quot;RepeatedNestedEnum&quot;, &quot;RepeatedForeignEnum&quot;, &quot;RepeatedImportEnum&quot;, &quot;RepeatedStringPiece&quot;, &quot;RepeatedCord&quot;, &quot;DefaultInt32&quot;, &quot;DefaultInt64&quot;, &quot;DefaultUint32&quot;, &quot;DefaultUint64&quot;, &quot;DefaultSint32&quot;, &quot;DefaultSint64&quot;, &quot;DefaultFixed32&quot;, &quot;DefaultFixed64&quot;, &quot;DefaultSfixed32&quot;, &quot;DefaultSfixed64&quot;, &quot;DefaultFloat&quot;, &quot;DefaultDouble&quot;, &quot;DefaultBool&quot;, &quot;DefaultString&quot;, &quot;DefaultBytes&quot;, &quot;DefaultNestedEnum&quot;, &quot;DefaultForeignEnum&quot;, &quot;DefaultImportEnum&quot;, &quot;DefaultStringPiece&quot;, &quot;DefaultCord&quot;, });
+        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&lt;global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage, global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage.Builder&gt;(internal__static_protobuf_unittest_TestAllTypes_NestedMessage__Descriptor,
+                new string[] { &quot;Bb&quot;, });
+        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&lt;global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.OptionalGroup, global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.OptionalGroup.Builder&gt;(internal__static_protobuf_unittest_TestAllTypes_OptionalGroup__Descriptor,
+                new string[] { &quot;A&quot;, });
+        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&lt;global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.RepeatedGroup, global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.RepeatedGroup.Builder&gt;(internal__static_protobuf_unittest_TestAllTypes_RepeatedGroup__Descriptor,
+                new string[] { &quot;A&quot;, });
+        internal__static_protobuf_unittest_ForeignMessage__Descriptor = Descriptor.MessageTypes[1];
+        internal__static_protobuf_unittest_ForeignMessage__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.ForeignMessage, global::Google.ProtocolBuffers.TestProtos.ForeignMessage.Builder&gt;(internal__static_protobuf_unittest_ForeignMessage__Descriptor,
+                new string[] { &quot;C&quot;, });
+        internal__static_protobuf_unittest_TestAllExtensions__Descriptor = Descriptor.MessageTypes[2];
+        internal__static_protobuf_unittest_TestAllExtensions__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestAllExtensions, global::Google.ProtocolBuffers.TestProtos.TestAllExtensions.Builder&gt;(internal__static_protobuf_unittest_TestAllExtensions__Descriptor,
+                new string[] { });
+        internal__static_protobuf_unittest_OptionalGroup_extension__Descriptor = Descriptor.MessageTypes[3];
+        internal__static_protobuf_unittest_OptionalGroup_extension__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.OptionalGroup_extension, global::Google.ProtocolBuffers.TestProtos.OptionalGroup_extension.Builder&gt;(internal__static_protobuf_unittest_OptionalGroup_extension__Descriptor,
+                new string[] { &quot;A&quot;, });
+        internal__static_protobuf_unittest_RepeatedGroup_extension__Descriptor = Descriptor.MessageTypes[4];
+        internal__static_protobuf_unittest_RepeatedGroup_extension__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.RepeatedGroup_extension, global::Google.ProtocolBuffers.TestProtos.RepeatedGroup_extension.Builder&gt;(internal__static_protobuf_unittest_RepeatedGroup_extension__Descriptor,
+                new string[] { &quot;A&quot;, });
+        internal__static_protobuf_unittest_TestRequired__Descriptor = Descriptor.MessageTypes[5];
+        internal__static_protobuf_unittest_TestRequired__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestRequired, global::Google.ProtocolBuffers.TestProtos.TestRequired.Builder&gt;(internal__static_protobuf_unittest_TestRequired__Descriptor,
+                new string[] { &quot;A&quot;, &quot;Dummy2&quot;, &quot;B&quot;, &quot;Dummy4&quot;, &quot;Dummy5&quot;, &quot;Dummy6&quot;, &quot;Dummy7&quot;, &quot;Dummy8&quot;, &quot;Dummy9&quot;, &quot;Dummy10&quot;, &quot;Dummy11&quot;, &quot;Dummy12&quot;, &quot;Dummy13&quot;, &quot;Dummy14&quot;, &quot;Dummy15&quot;, &quot;Dummy16&quot;, &quot;Dummy17&quot;, &quot;Dummy18&quot;, &quot;Dummy19&quot;, &quot;Dummy20&quot;, &quot;Dummy21&quot;, &quot;Dummy22&quot;, &quot;Dummy23&quot;, &quot;Dummy24&quot;, &quot;Dummy25&quot;, &quot;Dummy26&quot;, &quot;Dummy27&quot;, &quot;Dummy28&quot;, &quot;Dummy29&quot;, &quot;Dummy30&quot;, &quot;Dummy31&quot;, &quot;Dummy32&quot;, &quot;C&quot;, });
+        global::Google.ProtocolBuffers.TestProtos.TestRequired.Single = pb::GeneratedSingleExtension&lt;global::Google.ProtocolBuffers.TestProtos.TestRequired&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.TestRequired.Descriptor.Extensions[0]);
+        global::Google.ProtocolBuffers.TestProtos.TestRequired.Multi = pb::GeneratedRepeatExtension&lt;global::Google.ProtocolBuffers.TestProtos.TestRequired&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.TestRequired.Descriptor.Extensions[1]);
+        internal__static_protobuf_unittest_TestRequiredForeign__Descriptor = Descriptor.MessageTypes[6];
+        internal__static_protobuf_unittest_TestRequiredForeign__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestRequiredForeign, global::Google.ProtocolBuffers.TestProtos.TestRequiredForeign.Builder&gt;(internal__static_protobuf_unittest_TestRequiredForeign__Descriptor,
+                new string[] { &quot;OptionalMessage&quot;, &quot;RepeatedMessage&quot;, &quot;Dummy&quot;, });
+        internal__static_protobuf_unittest_TestForeignNested__Descriptor = Descriptor.MessageTypes[7];
+        internal__static_protobuf_unittest_TestForeignNested__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestForeignNested, global::Google.ProtocolBuffers.TestProtos.TestForeignNested.Builder&gt;(internal__static_protobuf_unittest_TestForeignNested__Descriptor,
+                new string[] { &quot;ForeignNested&quot;, });
+        internal__static_protobuf_unittest_TestEmptyMessage__Descriptor = Descriptor.MessageTypes[8];
+        internal__static_protobuf_unittest_TestEmptyMessage__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestEmptyMessage, global::Google.ProtocolBuffers.TestProtos.TestEmptyMessage.Builder&gt;(internal__static_protobuf_unittest_TestEmptyMessage__Descriptor,
+                new string[] { });
+        internal__static_protobuf_unittest_TestEmptyMessageWithExtensions__Descriptor = Descriptor.MessageTypes[9];
+        internal__static_protobuf_unittest_TestEmptyMessageWithExtensions__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestEmptyMessageWithExtensions, global::Google.ProtocolBuffers.TestProtos.TestEmptyMessageWithExtensions.Builder&gt;(internal__static_protobuf_unittest_TestEmptyMessageWithExtensions__Descriptor,
+                new string[] { });
+        internal__static_protobuf_unittest_TestReallyLargeTagNumber__Descriptor = Descriptor.MessageTypes[10];
+        internal__static_protobuf_unittest_TestReallyLargeTagNumber__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestReallyLargeTagNumber, global::Google.ProtocolBuffers.TestProtos.TestReallyLargeTagNumber.Builder&gt;(internal__static_protobuf_unittest_TestReallyLargeTagNumber__Descriptor,
+                new string[] { &quot;A&quot;, &quot;Bb&quot;, });
+        internal__static_protobuf_unittest_TestRecursiveMessage__Descriptor = Descriptor.MessageTypes[11];
+        internal__static_protobuf_unittest_TestRecursiveMessage__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestRecursiveMessage, global::Google.ProtocolBuffers.TestProtos.TestRecursiveMessage.Builder&gt;(internal__static_protobuf_unittest_TestRecursiveMessage__Descriptor,
+                new string[] { &quot;A&quot;, &quot;I&quot;, });
+        internal__static_protobuf_unittest_TestMutualRecursionA__Descriptor = Descriptor.MessageTypes[12];
+        internal__static_protobuf_unittest_TestMutualRecursionA__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionA, global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionA.Builder&gt;(internal__static_protobuf_unittest_TestMutualRecursionA__Descriptor,
+                new string[] { &quot;Bb&quot;, });
+        internal__static_protobuf_unittest_TestMutualRecursionB__Descriptor = Descriptor.MessageTypes[13];
+        internal__static_protobuf_unittest_TestMutualRecursionB__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionB, global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionB.Builder&gt;(internal__static_protobuf_unittest_TestMutualRecursionB__Descriptor,
+                new string[] { &quot;A&quot;, &quot;OptionalInt32&quot;, });
+        internal__static_protobuf_unittest_TestDupFieldNumber__Descriptor = Descriptor.MessageTypes[14];
+        internal__static_protobuf_unittest_TestDupFieldNumber__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber, global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Builder&gt;(internal__static_protobuf_unittest_TestDupFieldNumber__Descriptor,
+                new string[] { &quot;A&quot;, &quot;Foo&quot;, &quot;Bar&quot;, });
+        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&lt;global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Foo, global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Foo.Builder&gt;(internal__static_protobuf_unittest_TestDupFieldNumber_Foo__Descriptor,
+                new string[] { &quot;A&quot;, });
+        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&lt;global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Bar, global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Bar.Builder&gt;(internal__static_protobuf_unittest_TestDupFieldNumber_Bar__Descriptor,
+                new string[] { &quot;A&quot;, });
+        internal__static_protobuf_unittest_TestNestedMessageHasBits__Descriptor = Descriptor.MessageTypes[15];
+        internal__static_protobuf_unittest_TestNestedMessageHasBits__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestNestedMessageHasBits, global::Google.ProtocolBuffers.TestProtos.TestNestedMessageHasBits.Builder&gt;(internal__static_protobuf_unittest_TestNestedMessageHasBits__Descriptor,
+                new string[] { &quot;OptionalNestedMessage&quot;, });
+        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&lt;global::Google.ProtocolBuffers.TestProtos.TestNestedMessageHasBits.Types.NestedMessage, global::Google.ProtocolBuffers.TestProtos.TestNestedMessageHasBits.Types.NestedMessage.Builder&gt;(internal__static_protobuf_unittest_TestNestedMessageHasBits_NestedMessage__Descriptor,
+                new string[] { &quot;NestedmessageRepeatedInt32&quot;, &quot;NestedmessageRepeatedForeignmessage&quot;, });
+        internal__static_protobuf_unittest_TestCamelCaseFieldNames__Descriptor = Descriptor.MessageTypes[16];
+        internal__static_protobuf_unittest_TestCamelCaseFieldNames__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestCamelCaseFieldNames, global::Google.ProtocolBuffers.TestProtos.TestCamelCaseFieldNames.Builder&gt;(internal__static_protobuf_unittest_TestCamelCaseFieldNames__Descriptor,
+                new string[] { &quot;PrimitiveField&quot;, &quot;StringField&quot;, &quot;EnumField&quot;, &quot;MessageField&quot;, &quot;StringPieceField&quot;, &quot;CordField&quot;, &quot;RepeatedPrimitiveField&quot;, &quot;RepeatedStringField&quot;, &quot;RepeatedEnumField&quot;, &quot;RepeatedMessageField&quot;, &quot;RepeatedStringPieceField&quot;, &quot;RepeatedCordField&quot;, });
+        internal__static_protobuf_unittest_TestFieldOrderings__Descriptor = Descriptor.MessageTypes[17];
+        internal__static_protobuf_unittest_TestFieldOrderings__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestFieldOrderings, global::Google.ProtocolBuffers.TestProtos.TestFieldOrderings.Builder&gt;(internal__static_protobuf_unittest_TestFieldOrderings__Descriptor,
+                new string[] { &quot;MyString&quot;, &quot;MyInt&quot;, &quot;MyFloat&quot;, });
+        internal__static_protobuf_unittest_TestExtremeDefaultValues__Descriptor = Descriptor.MessageTypes[18];
+        internal__static_protobuf_unittest_TestExtremeDefaultValues__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestExtremeDefaultValues, global::Google.ProtocolBuffers.TestProtos.TestExtremeDefaultValues.Builder&gt;(internal__static_protobuf_unittest_TestExtremeDefaultValues__Descriptor,
+                new string[] { &quot;EscapedBytes&quot;, &quot;LargeUint32&quot;, &quot;LargeUint64&quot;, &quot;SmallInt32&quot;, &quot;SmallInt64&quot;, &quot;Utf8String&quot;, });
+        internal__static_protobuf_unittest_TestPackedTypes__Descriptor = Descriptor.MessageTypes[19];
+        internal__static_protobuf_unittest_TestPackedTypes__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestPackedTypes, global::Google.ProtocolBuffers.TestProtos.TestPackedTypes.Builder&gt;(internal__static_protobuf_unittest_TestPackedTypes__Descriptor,
+                new string[] { &quot;PackedInt32&quot;, &quot;PackedInt64&quot;, &quot;PackedUint32&quot;, &quot;PackedUint64&quot;, &quot;PackedSint32&quot;, &quot;PackedSint64&quot;, &quot;PackedFixed32&quot;, &quot;PackedFixed64&quot;, &quot;PackedSfixed32&quot;, &quot;PackedSfixed64&quot;, &quot;PackedFloat&quot;, &quot;PackedDouble&quot;, &quot;PackedBool&quot;, &quot;PackedEnum&quot;, });
+        internal__static_protobuf_unittest_TestPackedExtensions__Descriptor = Descriptor.MessageTypes[20];
+        internal__static_protobuf_unittest_TestPackedExtensions__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.TestPackedExtensions, global::Google.ProtocolBuffers.TestProtos.TestPackedExtensions.Builder&gt;(internal__static_protobuf_unittest_TestPackedExtensions__Descriptor,
+                new string[] { });
+        internal__static_protobuf_unittest_FooRequest__Descriptor = Descriptor.MessageTypes[21];
+        internal__static_protobuf_unittest_FooRequest__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.FooRequest, global::Google.ProtocolBuffers.TestProtos.FooRequest.Builder&gt;(internal__static_protobuf_unittest_FooRequest__Descriptor,
+                new string[] { });
+        internal__static_protobuf_unittest_FooResponse__Descriptor = Descriptor.MessageTypes[22];
+        internal__static_protobuf_unittest_FooResponse__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.FooResponse, global::Google.ProtocolBuffers.TestProtos.FooResponse.Builder&gt;(internal__static_protobuf_unittest_FooResponse__Descriptor,
+                new string[] { });
+        internal__static_protobuf_unittest_BarRequest__Descriptor = Descriptor.MessageTypes[23];
+        internal__static_protobuf_unittest_BarRequest__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.BarRequest, global::Google.ProtocolBuffers.TestProtos.BarRequest.Builder&gt;(internal__static_protobuf_unittest_BarRequest__Descriptor,
+                new string[] { });
+        internal__static_protobuf_unittest_BarResponse__Descriptor = Descriptor.MessageTypes[24];
+        internal__static_protobuf_unittest_BarResponse__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.TestProtos.BarResponse, global::Google.ProtocolBuffers.TestProtos.BarResponse.Builder&gt;(internal__static_protobuf_unittest_BarResponse__Descriptor,
+                new string[] { });
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.OptionalInt32Extension = pb::GeneratedSingleExtension&lt;int&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[0]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.OptionalInt64Extension = pb::GeneratedSingleExtension&lt;long&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[1]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.OptionalUint32Extension = pb::GeneratedSingleExtension&lt;uint&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[2]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.OptionalUint64Extension = pb::GeneratedSingleExtension&lt;ulong&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[3]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.OptionalSint32Extension = pb::GeneratedSingleExtension&lt;int&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[4]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.OptionalSint64Extension = pb::GeneratedSingleExtension&lt;long&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[5]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.OptionalFixed32Extension = pb::GeneratedSingleExtension&lt;uint&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[6]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.OptionalFixed64Extension = pb::GeneratedSingleExtension&lt;ulong&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[7]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.OptionalSfixed32Extension = pb::GeneratedSingleExtension&lt;int&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[8]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.OptionalSfixed64Extension = pb::GeneratedSingleExtension&lt;long&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[9]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.OptionalFloatExtension = pb::GeneratedSingleExtension&lt;float&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[10]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.OptionalDoubleExtension = pb::GeneratedSingleExtension&lt;double&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[11]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.OptionalBoolExtension = pb::GeneratedSingleExtension&lt;bool&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[12]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.OptionalStringExtension = pb::GeneratedSingleExtension&lt;string&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[13]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.OptionalBytesExtension = pb::GeneratedSingleExtension&lt;pb::ByteString&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[14]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.OptionalGroupExtension = pb::GeneratedSingleExtension&lt;global::Google.ProtocolBuffers.TestProtos.OptionalGroup_extension&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[15]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.OptionalNestedMessageExtension = pb::GeneratedSingleExtension&lt;global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[16]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.OptionalForeignMessageExtension = pb::GeneratedSingleExtension&lt;global::Google.ProtocolBuffers.TestProtos.ForeignMessage&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[17]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.OptionalImportMessageExtension = pb::GeneratedSingleExtension&lt;global::Google.ProtocolBuffers.TestProtos.ImportMessage&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[18]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.OptionalNestedEnumExtension = pb::GeneratedSingleExtension&lt;global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedEnum&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[19]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.OptionalForeignEnumExtension = pb::GeneratedSingleExtension&lt;global::Google.ProtocolBuffers.TestProtos.ForeignEnum&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[20]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.OptionalImportEnumExtension = pb::GeneratedSingleExtension&lt;global::Google.ProtocolBuffers.TestProtos.ImportEnum&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[21]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.OptionalStringPieceExtension = pb::GeneratedSingleExtension&lt;string&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[22]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.OptionalCordExtension = pb::GeneratedSingleExtension&lt;string&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[23]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.RepeatedInt32Extension = pb::GeneratedRepeatExtension&lt;int&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[24]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.RepeatedInt64Extension = pb::GeneratedRepeatExtension&lt;long&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[25]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.RepeatedUint32Extension = pb::GeneratedRepeatExtension&lt;uint&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[26]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.RepeatedUint64Extension = pb::GeneratedRepeatExtension&lt;ulong&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[27]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.RepeatedSint32Extension = pb::GeneratedRepeatExtension&lt;int&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[28]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.RepeatedSint64Extension = pb::GeneratedRepeatExtension&lt;long&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[29]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.RepeatedFixed32Extension = pb::GeneratedRepeatExtension&lt;uint&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[30]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.RepeatedFixed64Extension = pb::GeneratedRepeatExtension&lt;ulong&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[31]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.RepeatedSfixed32Extension = pb::GeneratedRepeatExtension&lt;int&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[32]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.RepeatedSfixed64Extension = pb::GeneratedRepeatExtension&lt;long&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[33]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.RepeatedFloatExtension = pb::GeneratedRepeatExtension&lt;float&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[34]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.RepeatedDoubleExtension = pb::GeneratedRepeatExtension&lt;double&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[35]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.RepeatedBoolExtension = pb::GeneratedRepeatExtension&lt;bool&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[36]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.RepeatedStringExtension = pb::GeneratedRepeatExtension&lt;string&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[37]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.RepeatedBytesExtension = pb::GeneratedRepeatExtension&lt;pb::ByteString&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[38]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.RepeatedGroupExtension = pb::GeneratedRepeatExtension&lt;global::Google.ProtocolBuffers.TestProtos.RepeatedGroup_extension&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[39]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.RepeatedNestedMessageExtension = pb::GeneratedRepeatExtension&lt;global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[40]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.RepeatedForeignMessageExtension = pb::GeneratedRepeatExtension&lt;global::Google.ProtocolBuffers.TestProtos.ForeignMessage&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[41]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.RepeatedImportMessageExtension = pb::GeneratedRepeatExtension&lt;global::Google.ProtocolBuffers.TestProtos.ImportMessage&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[42]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.RepeatedNestedEnumExtension = pb::GeneratedRepeatExtension&lt;global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedEnum&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[43]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.RepeatedForeignEnumExtension = pb::GeneratedRepeatExtension&lt;global::Google.ProtocolBuffers.TestProtos.ForeignEnum&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[44]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.RepeatedImportEnumExtension = pb::GeneratedRepeatExtension&lt;global::Google.ProtocolBuffers.TestProtos.ImportEnum&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[45]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.RepeatedStringPieceExtension = pb::GeneratedRepeatExtension&lt;string&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[46]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.RepeatedCordExtension = pb::GeneratedRepeatExtension&lt;string&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[47]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.DefaultInt32Extension = pb::GeneratedSingleExtension&lt;int&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[48]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.DefaultInt64Extension = pb::GeneratedSingleExtension&lt;long&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[49]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.DefaultUint32Extension = pb::GeneratedSingleExtension&lt;uint&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[50]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.DefaultUint64Extension = pb::GeneratedSingleExtension&lt;ulong&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[51]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.DefaultSint32Extension = pb::GeneratedSingleExtension&lt;int&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[52]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.DefaultSint64Extension = pb::GeneratedSingleExtension&lt;long&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[53]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.DefaultFixed32Extension = pb::GeneratedSingleExtension&lt;uint&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[54]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.DefaultFixed64Extension = pb::GeneratedSingleExtension&lt;ulong&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[55]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.DefaultSfixed32Extension = pb::GeneratedSingleExtension&lt;int&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[56]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.DefaultSfixed64Extension = pb::GeneratedSingleExtension&lt;long&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[57]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.DefaultFloatExtension = pb::GeneratedSingleExtension&lt;float&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[58]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.DefaultDoubleExtension = pb::GeneratedSingleExtension&lt;double&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[59]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.DefaultBoolExtension = pb::GeneratedSingleExtension&lt;bool&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[60]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.DefaultStringExtension = pb::GeneratedSingleExtension&lt;string&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[61]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.DefaultBytesExtension = pb::GeneratedSingleExtension&lt;pb::ByteString&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[62]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.DefaultNestedEnumExtension = pb::GeneratedSingleExtension&lt;global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedEnum&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[63]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.DefaultForeignEnumExtension = pb::GeneratedSingleExtension&lt;global::Google.ProtocolBuffers.TestProtos.ForeignEnum&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[64]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.DefaultImportEnumExtension = pb::GeneratedSingleExtension&lt;global::Google.ProtocolBuffers.TestProtos.ImportEnum&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[65]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.DefaultStringPieceExtension = pb::GeneratedSingleExtension&lt;string&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[66]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.DefaultCordExtension = pb::GeneratedSingleExtension&lt;string&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[67]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.MyExtensionString = pb::GeneratedSingleExtension&lt;string&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[68]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.MyExtensionInt = pb::GeneratedSingleExtension&lt;int&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[69]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.PackedInt32Extension = pb::GeneratedRepeatExtension&lt;int&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[70]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.PackedInt64Extension = pb::GeneratedRepeatExtension&lt;long&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[71]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.PackedUint32Extension = pb::GeneratedRepeatExtension&lt;uint&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[72]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.PackedUint64Extension = pb::GeneratedRepeatExtension&lt;ulong&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[73]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.PackedSint32Extension = pb::GeneratedRepeatExtension&lt;int&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[74]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.PackedSint64Extension = pb::GeneratedRepeatExtension&lt;long&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[75]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.PackedFixed32Extension = pb::GeneratedRepeatExtension&lt;uint&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[76]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.PackedFixed64Extension = pb::GeneratedRepeatExtension&lt;ulong&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[77]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.PackedSfixed32Extension = pb::GeneratedRepeatExtension&lt;int&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[78]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.PackedSfixed64Extension = pb::GeneratedRepeatExtension&lt;long&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[79]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.PackedFloatExtension = pb::GeneratedRepeatExtension&lt;float&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[80]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.PackedDoubleExtension = pb::GeneratedRepeatExtension&lt;double&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[81]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.PackedBoolExtension = pb::GeneratedRepeatExtension&lt;bool&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[82]);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.PackedEnumExtension = pb::GeneratedRepeatExtension&lt;global::Google.ProtocolBuffers.TestProtos.ForeignEnum&gt;.CreateInstance(global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor.Extensions[83]);
+        pb::ExtensionRegistry registry = pb::ExtensionRegistry.CreateInstance();
+        RegisterAllExtensions(registry);
+        global::Google.ProtocolBuffers.DescriptorProtos.CSharpOptions.RegisterAllExtensions(registry);
+        global::Google.ProtocolBuffers.TestProtos.UnitTestImportProtoFile.RegisterAllExtensions(registry);
+        return registry;
+      };
+      pbd::FileDescriptor.InternalBuildGeneratedFileFrom(descriptorData,
+          new pbd::FileDescriptor[] {
+          global::Google.ProtocolBuffers.DescriptorProtos.CSharpOptions.Descriptor, 
+          global::Google.ProtocolBuffers.TestProtos.UnitTestImportProtoFile.Descriptor, 
+          }, assigner);
+    }
+    #endregion
+    
   }
   #region Enums
   public enum ForeignEnum {
@@ -1046,6 +1143,9 @@ namespace Google.ProtocolBuffers.TestProtos {
             return this;
           }
         }
+        static NestedMessage() {
+          pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor;
+        }
       }
       
       public sealed partial class OptionalGroup : pb::GeneratedMessage&lt;OptionalGroup, OptionalGroup.Builder&gt; {
@@ -1257,6 +1357,9 @@ namespace Google.ProtocolBuffers.TestProtos {
             return this;
           }
         }
+        static OptionalGroup() {
+          pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor;
+        }
       }
       
       public sealed partial class RepeatedGroup : pb::GeneratedMessage&lt;RepeatedGroup, RepeatedGroup.Builder&gt; {
@@ -1468,6 +1571,9 @@ namespace Google.ProtocolBuffers.TestProtos {
             return this;
           }
         }
+        static RepeatedGroup() {
+          pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor;
+        }
       }
       
     }
@@ -5039,6 +5145,9 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
     }
+    static TestAllTypes() {
+      pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor;
+    }
   }
   
   public sealed partial class ForeignMessage : pb::GeneratedMessage&lt;ForeignMessage, ForeignMessage.Builder&gt; {
@@ -5250,6 +5359,9 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
     }
+    static ForeignMessage() {
+      pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor;
+    }
   }
   
   public sealed partial class TestAllExtensions : pb::ExtendableMessage&lt;TestAllExtensions, TestAllExtensions.Builder&gt; {
@@ -5425,6 +5537,9 @@ namespace Google.ProtocolBuffers.TestProtos {
       }
       
     }
+    static TestAllExtensions() {
+      pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor;
+    }
   }
   
   public sealed partial class OptionalGroup_extension : pb::GeneratedMessage&lt;OptionalGroup_extension, OptionalGroup_extension.Builder&gt; {
@@ -5636,6 +5751,9 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
     }
+    static OptionalGroup_extension() {
+      pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor;
+    }
   }
   
   public sealed partial class RepeatedGroup_extension : pb::GeneratedMessage&lt;RepeatedGroup_extension, RepeatedGroup_extension.Builder&gt; {
@@ -5847,6 +5965,9 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
     }
+    static RepeatedGroup_extension() {
+      pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor;
+    }
   }
   
   public sealed partial class TestRequired : pb::GeneratedMessage&lt;TestRequired, TestRequired.Builder&gt; {
@@ -5872,12 +5993,9 @@ namespace Google.ProtocolBuffers.TestProtos {
     }
     
     public const int SingleFieldNumber = 1000;
-    public static readonly pb::GeneratedExtensionBase&lt;global::Google.ProtocolBuffers.TestProtos.TestRequired&gt; Single =
-        pb::GeneratedSingleExtension&lt;global::Google.ProtocolBuffers.TestProtos.TestRequired&gt;.CreateInstance(Descriptor.Extensions[0]);
+    public static pb::GeneratedExtensionBase&lt;global::Google.ProtocolBuffers.TestProtos.TestRequired&gt; Single;
     public const int MultiFieldNumber = 1001;
-    public static readonly
-        pb::GeneratedExtensionBase&lt;scg::IList&lt;global::Google.ProtocolBuffers.TestProtos.TestRequired&gt;&gt; Multi =
-        pb::GeneratedRepeatExtension&lt;global::Google.ProtocolBuffers.TestProtos.TestRequired&gt;.CreateInstance(Descriptor.Extensions[1]);
+    public static pb::GeneratedExtensionBase&lt;scg::IList&lt;global::Google.ProtocolBuffers.TestProtos.TestRequired&gt;&gt; Multi;
     public const int AFieldNumber = 1;
     private bool hasA;
     private int a_ = 0;
@@ -7380,6 +7498,9 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
     }
+    static TestRequired() {
+      pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor;
+    }
   }
   
   public sealed partial class TestRequiredForeign : pb::GeneratedMessage&lt;TestRequiredForeign, TestRequiredForeign.Builder&gt; {
@@ -7727,6 +7848,9 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
     }
+    static TestRequiredForeign() {
+      pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor;
+    }
   }
   
   public sealed partial class TestForeignNested : pb::GeneratedMessage&lt;TestForeignNested, TestForeignNested.Builder&gt; {
@@ -7961,6 +8085,9 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
     }
+    static TestForeignNested() {
+      pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor;
+    }
   }
   
   public sealed partial class TestEmptyMessage : pb::GeneratedMessage&lt;TestEmptyMessage, TestEmptyMessage.Builder&gt; {
@@ -8131,6 +8258,9 @@ namespace Google.ProtocolBuffers.TestProtos {
       }
       
     }
+    static TestEmptyMessage() {
+      pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor;
+    }
   }
   
   public sealed partial class TestEmptyMessageWithExtensions : pb::ExtendableMessage&lt;TestEmptyMessageWithExtensions, TestEmptyMessageWithExtensions.Builder&gt; {
@@ -8306,6 +8436,9 @@ namespace Google.ProtocolBuffers.TestProtos {
       }
       
     }
+    static TestEmptyMessageWithExtensions() {
+      pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor;
+    }
   }
   
   public sealed partial class TestReallyLargeTagNumber : pb::GeneratedMessage&lt;TestReallyLargeTagNumber, TestReallyLargeTagNumber.Builder&gt; {
@@ -8558,6 +8691,9 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
     }
+    static TestReallyLargeTagNumber() {
+      pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor;
+    }
   }
   
   public sealed partial class TestRecursiveMessage : pb::GeneratedMessage&lt;TestRecursiveMessage, TestRecursiveMessage.Builder&gt; {
@@ -8833,6 +8969,9 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
     }
+    static TestRecursiveMessage() {
+      pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor;
+    }
   }
   
   public sealed partial class TestMutualRecursionA : pb::GeneratedMessage&lt;TestMutualRecursionA, TestMutualRecursionA.Builder&gt; {
@@ -9067,6 +9206,9 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
     }
+    static TestMutualRecursionA() {
+      pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor;
+    }
   }
   
   public sealed partial class TestMutualRecursionB : pb::GeneratedMessage&lt;TestMutualRecursionB, TestMutualRecursionB.Builder&gt; {
@@ -9342,6 +9484,9 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
     }
+    static TestMutualRecursionB() {
+      pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor;
+    }
   }
   
   public sealed partial class TestDupFieldNumber : pb::GeneratedMessage&lt;TestDupFieldNumber, TestDupFieldNumber.Builder&gt; {
@@ -9577,6 +9722,9 @@ namespace Google.ProtocolBuffers.TestProtos {
             return this;
           }
         }
+        static Foo() {
+          pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor;
+        }
       }
       
       public sealed partial class Bar : pb::GeneratedMessage&lt;Bar, Bar.Builder&gt; {
@@ -9788,6 +9936,9 @@ namespace Google.ProtocolBuffers.TestProtos {
             return this;
           }
         }
+        static Bar() {
+          pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor;
+        }
       }
       
     }
@@ -10108,6 +10259,9 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
     }
+    static TestDupFieldNumber() {
+      pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor;
+    }
   }
   
   public sealed partial class TestNestedMessageHasBits : pb::GeneratedMessage&lt;TestNestedMessageHasBits, TestNestedMessageHasBits.Builder&gt; {
@@ -10427,6 +10581,9 @@ namespace Google.ProtocolBuffers.TestProtos {
             return this;
           }
         }
+        static NestedMessage() {
+          pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor;
+        }
       }
       
     }
@@ -10642,6 +10799,9 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
     }
+    static TestNestedMessageHasBits() {
+      pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor;
+    }
   }
   
   public sealed partial class TestCamelCaseFieldNames : pb::GeneratedMessage&lt;TestCamelCaseFieldNames, TestCamelCaseFieldNames.Builder&gt; {
@@ -11469,6 +11629,9 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
     }
+    static TestCamelCaseFieldNames() {
+      pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor;
+    }
   }
   
   public sealed partial class TestFieldOrderings : pb::ExtendableMessage&lt;TestFieldOrderings, TestFieldOrderings.Builder&gt; {
@@ -11769,6 +11932,9 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
     }
+    static TestFieldOrderings() {
+      pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor;
+    }
   }
   
   public sealed partial class TestExtremeDefaultValues : pb::GeneratedMessage&lt;TestExtremeDefaultValues, TestExtremeDefaultValues.Builder&gt; {
@@ -12187,6 +12353,9 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
     }
+    static TestExtremeDefaultValues() {
+      pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor;
+    }
   }
   
   public sealed partial class TestPackedTypes : pb::GeneratedMessage&lt;TestPackedTypes, TestPackedTypes.Builder&gt; {
@@ -13319,6 +13488,9 @@ namespace Google.ProtocolBuffers.TestProtos {
         return this;
       }
     }
+    static TestPackedTypes() {
+      pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor;
+    }
   }
   
   public sealed partial class TestPackedExtensions : pb::ExtendableMessage&lt;TestPackedExtensions, TestPackedExtensions.Builder&gt; {
@@ -13494,6 +13666,9 @@ namespace Google.ProtocolBuffers.TestProtos {
       }
       
     }
+    static TestPackedExtensions() {
+      pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor;
+    }
   }
   
   public sealed partial class FooRequest : pb::GeneratedMessage&lt;FooRequest, FooRequest.Builder&gt; {
@@ -13664,6 +13839,9 @@ namespace Google.ProtocolBuffers.TestProtos {
       }
       
     }
+    static FooRequest() {
+      pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor;
+    }
   }
   
   public sealed partial class FooResponse : pb::GeneratedMessage&lt;FooResponse, FooResponse.Builder&gt; {
@@ -13834,6 +14012,9 @@ namespace Google.ProtocolBuffers.TestProtos {
       }
       
     }
+    static FooResponse() {
+      pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor;
+    }
   }
   
   public sealed partial class BarRequest : pb::GeneratedMessage&lt;BarRequest, BarRequest.Builder&gt; {
@@ -14004,6 +14185,9 @@ namespace Google.ProtocolBuffers.TestProtos {
       }
       
     }
+    static BarRequest() {
+      pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor;
+    }
   }
   
   public sealed partial class BarResponse : pb::GeneratedMessage&lt;BarResponse, BarResponse.Builder&gt; {
@@ -14174,6 +14358,9 @@ namespace Google.ProtocolBuffers.TestProtos {
       }
       
     }
+    static BarResponse() {
+      pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.Descriptor;
+    }
   }
   
   #endregion</diff>
      <filename>src/ProtocolBuffers.Test/TestProtos/UnitTestProtoFile.cs</filename>
    </modified>
    <modified>
      <diff>@@ -8,49 +8,65 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
   
   public static partial class CSharpOptions {
   
-    #region Descriptor
-    public static pbd::FileDescriptor Descriptor {
-      get { return descriptor; }
+    #region Extension registration
+    public static void RegisterAllExtensions(pb::ExtensionRegistry registry) {
+      registry.Add(global::Google.ProtocolBuffers.DescriptorProtos.CSharpOptions.CSharpFileOptions);
+      registry.Add(global::Google.ProtocolBuffers.DescriptorProtos.CSharpOptions.CSharpFieldOptions);
     }
-    private static readonly pbd::FileDescriptor descriptor = pbd::FileDescriptor.InternalBuildGeneratedFileFrom(
-        global::System.Convert.FromBase64String(
-        &quot;CiRnb29nbGUvcHJvdG9idWYvY3NoYXJwX29wdGlvbnMucHJvdG8SD2dvb2ds&quot; + 
-        &quot;ZS5wcm90b2J1ZhogZ29vZ2xlL3Byb3RvYnVmL2Rlc2NyaXB0b3IucHJvdG8i&quot; + 
-        &quot;iAEKEUNTaGFycEZpbGVPcHRpb25zEhEKCW5hbWVzcGFjZRgBIAEoCRIaChJ1&quot; + 
-        &quot;bWJyZWxsYV9jbGFzc25hbWUYAiABKAkSFgoOcHVibGljX2NsYXNzZXMYAyAB&quot; + 
-        &quot;KAgSFgoObXVsdGlwbGVfZmlsZXMYBCABKAgSFAoMbmVzdF9jbGFzc2VzGAUg&quot; + 
-        &quot;ASgIIisKEkNTaGFycEZpZWxkT3B0aW9ucxIVCg1wcm9wZXJ0eV9uYW1lGAEg&quot; + 
-        &quot;ASgJOl4KE2NzaGFycF9maWxlX29wdGlvbnMSHC5nb29nbGUucHJvdG9idWYu&quot; + 
-        &quot;RmlsZU9wdGlvbnMY6AcgASgLMiIuZ29vZ2xlLnByb3RvYnVmLkNTaGFycEZp&quot; + 
-        &quot;bGVPcHRpb25zOmEKFGNzaGFycF9maWVsZF9vcHRpb25zEh0uZ29vZ2xlLnBy&quot; + 
-        &quot;b3RvYnVmLkZpZWxkT3B0aW9ucxjoByABKAsyIy5nb29nbGUucHJvdG9idWYu&quot; + 
-        &quot;Q1NoYXJwRmllbGRPcHRpb25z&quot;),
-        new pbd::FileDescriptor[] {
-          global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.Descriptor, 
-        });
     #endregion
-    
     #region Extensions
-    public const int CsharpFileOptionsFieldNumber = 1000;
-    public static readonly pb::GeneratedExtensionBase&lt;global::Google.ProtocolBuffers.DescriptorProtos.CSharpFileOptions&gt; CSharpFileOptions =
-        pb::GeneratedSingleExtension&lt;global::Google.ProtocolBuffers.DescriptorProtos.CSharpFileOptions&gt;.CreateInstance(Descriptor.Extensions[0]);
-    public const int CsharpFieldOptionsFieldNumber = 1000;
-    public static readonly pb::GeneratedExtensionBase&lt;global::Google.ProtocolBuffers.DescriptorProtos.CSharpFieldOptions&gt; CSharpFieldOptions =
-        pb::GeneratedSingleExtension&lt;global::Google.ProtocolBuffers.DescriptorProtos.CSharpFieldOptions&gt;.CreateInstance(Descriptor.Extensions[1]);
+    public const int CSharpFileOptionsFieldNumber = 1000;
+    public static pb::GeneratedExtensionBase&lt;global::Google.ProtocolBuffers.DescriptorProtos.CSharpFileOptions&gt; CSharpFileOptions;
+    public const int CSharpFieldOptionsFieldNumber = 1000;
+    public static pb::GeneratedExtensionBase&lt;global::Google.ProtocolBuffers.DescriptorProtos.CSharpFieldOptions&gt; CSharpFieldOptions;
     #endregion
     
     #region Static variables
-    internal static readonly pbd::MessageDescriptor internal__static_google_protobuf_CSharpFileOptions__Descriptor
-        = Descriptor.MessageTypes[0];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.DescriptorProtos.CSharpFileOptions, global::Google.ProtocolBuffers.DescriptorProtos.CSharpFileOptions.Builder&gt; internal__static_google_protobuf_CSharpFileOptions__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.DescriptorProtos.CSharpFileOptions, global::Google.ProtocolBuffers.DescriptorProtos.CSharpFileOptions.Builder&gt;(internal__static_google_protobuf_CSharpFileOptions__Descriptor,
-            new string[] { &quot;Namespace&quot;, &quot;UmbrellaClassname&quot;, &quot;PublicClasses&quot;, &quot;MultipleFiles&quot;, &quot;NestClasses&quot;, });
-    internal static readonly pbd::MessageDescriptor internal__static_google_protobuf_CSharpFieldOptions__Descriptor
-        = Descriptor.MessageTypes[1];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.DescriptorProtos.CSharpFieldOptions, global::Google.ProtocolBuffers.DescriptorProtos.CSharpFieldOptions.Builder&gt; internal__static_google_protobuf_CSharpFieldOptions__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.DescriptorProtos.CSharpFieldOptions, global::Google.ProtocolBuffers.DescriptorProtos.CSharpFieldOptions.Builder&gt;(internal__static_google_protobuf_CSharpFieldOptions__Descriptor,
-            new string[] { &quot;PropertyName&quot;, });
+    internal static pbd::MessageDescriptor internal__static_google_protobuf_CSharpFileOptions__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.DescriptorProtos.CSharpFileOptions, global::Google.ProtocolBuffers.DescriptorProtos.CSharpFileOptions.Builder&gt; internal__static_google_protobuf_CSharpFileOptions__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_google_protobuf_CSharpFieldOptions__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.DescriptorProtos.CSharpFieldOptions, global::Google.ProtocolBuffers.DescriptorProtos.CSharpFieldOptions.Builder&gt; internal__static_google_protobuf_CSharpFieldOptions__FieldAccessorTable;
+    #endregion
+    #region Descriptor
+    public static pbd::FileDescriptor Descriptor {
+      get { return descriptor; }
+    }
+    private static pbd::FileDescriptor descriptor;
+    
+    static CSharpOptions() {
+      byte[] descriptorData = global::System.Convert.FromBase64String(
+          &quot;CiRnb29nbGUvcHJvdG9idWYvY3NoYXJwX29wdGlvbnMucHJvdG8SD2dvb2ds&quot; + 
+          &quot;ZS5wcm90b2J1ZhogZ29vZ2xlL3Byb3RvYnVmL2Rlc2NyaXB0b3IucHJvdG8i&quot; + 
+          &quot;iAEKEUNTaGFycEZpbGVPcHRpb25zEhEKCW5hbWVzcGFjZRgBIAEoCRIaChJ1&quot; + 
+          &quot;bWJyZWxsYV9jbGFzc25hbWUYAiABKAkSFgoOcHVibGljX2NsYXNzZXMYAyAB&quot; + 
+          &quot;KAgSFgoObXVsdGlwbGVfZmlsZXMYBCABKAgSFAoMbmVzdF9jbGFzc2VzGAUg&quot; + 
+          &quot;ASgIIisKEkNTaGFycEZpZWxkT3B0aW9ucxIVCg1wcm9wZXJ0eV9uYW1lGAEg&quot; + 
+          &quot;ASgJOl4KE2NzaGFycF9maWxlX29wdGlvbnMSHC5nb29nbGUucHJvdG9idWYu&quot; + 
+          &quot;RmlsZU9wdGlvbnMY6AcgASgLMiIuZ29vZ2xlLnByb3RvYnVmLkNTaGFycEZp&quot; + 
+          &quot;bGVPcHRpb25zOmEKFGNzaGFycF9maWVsZF9vcHRpb25zEh0uZ29vZ2xlLnBy&quot; + 
+          &quot;b3RvYnVmLkZpZWxkT3B0aW9ucxjoByABKAsyIy5nb29nbGUucHJvdG9idWYu&quot; + 
+          &quot;Q1NoYXJwRmllbGRPcHRpb25z&quot;);
+      pbd::FileDescriptor.InternalDescriptorAssigner assigner = delegate(pbd::FileDescriptor root) {
+        descriptor = root;
+        internal__static_google_protobuf_CSharpFileOptions__Descriptor = Descriptor.MessageTypes[0];
+        internal__static_google_protobuf_CSharpFileOptions__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.DescriptorProtos.CSharpFileOptions, global::Google.ProtocolBuffers.DescriptorProtos.CSharpFileOptions.Builder&gt;(internal__static_google_protobuf_CSharpFileOptions__Descriptor,
+                new string[] { &quot;Namespace&quot;, &quot;UmbrellaClassname&quot;, &quot;PublicClasses&quot;, &quot;MultipleFiles&quot;, &quot;NestClasses&quot;, });
+        internal__static_google_protobuf_CSharpFieldOptions__Descriptor = Descriptor.MessageTypes[1];
+        internal__static_google_protobuf_CSharpFieldOptions__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.DescriptorProtos.CSharpFieldOptions, global::Google.ProtocolBuffers.DescriptorProtos.CSharpFieldOptions.Builder&gt;(internal__static_google_protobuf_CSharpFieldOptions__Descriptor,
+                new string[] { &quot;PropertyName&quot;, });
+        global::Google.ProtocolBuffers.DescriptorProtos.CSharpOptions.CSharpFileOptions = pb::GeneratedSingleExtension&lt;global::Google.ProtocolBuffers.DescriptorProtos.CSharpFileOptions&gt;.CreateInstance(global::Google.ProtocolBuffers.DescriptorProtos.CSharpOptions.Descriptor.Extensions[0]);
+        global::Google.ProtocolBuffers.DescriptorProtos.CSharpOptions.CSharpFieldOptions = pb::GeneratedSingleExtension&lt;global::Google.ProtocolBuffers.DescriptorProtos.CSharpFieldOptions&gt;.CreateInstance(global::Google.ProtocolBuffers.DescriptorProtos.CSharpOptions.Descriptor.Extensions[1]);
+        return null;
+      };
+      pbd::FileDescriptor.InternalBuildGeneratedFileFrom(descriptorData,
+          new pbd::FileDescriptor[] {
+          global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.Descriptor, 
+          }, assigner);
+    }
     #endregion
+    
   }
   #region Messages
   public sealed partial class CSharpFileOptions : pb::GeneratedMessage&lt;CSharpFileOptions, CSharpFileOptions.Builder&gt; {
@@ -293,6 +309,9 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
         return this;
       }
     }
+    static CSharpFileOptions() {
+      pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.DescriptorProtos.CSharpOptions.Descriptor;
+    }
   }
   
   public sealed partial class CSharpFieldOptions : pb::GeneratedMessage&lt;CSharpFieldOptions, CSharpFieldOptions.Builder&gt; {
@@ -422,6 +441,9 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
         return this;
       }
     }
+    static CSharpFieldOptions() {
+      pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.DescriptorProtos.CSharpOptions.Descriptor;
+    }
   }
   
   #endregion</diff>
      <filename>src/ProtocolBuffers/DescriptorProtos/CSharpOptions.cs</filename>
    </modified>
    <modified>
      <diff>@@ -8,185 +8,216 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
   
   public static partial class DescriptorProtoFile {
   
+    #region Extension registration
+    public static void RegisterAllExtensions(pb::ExtensionRegistry registry) {
+    }
+    #endregion
+    #region Static variables
+    internal static pbd::MessageDescriptor internal__static_google_protobuf_FileDescriptorSet__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.DescriptorProtos.FileDescriptorSet, global::Google.ProtocolBuffers.DescriptorProtos.FileDescriptorSet.Builder&gt; internal__static_google_protobuf_FileDescriptorSet__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_google_protobuf_FileDescriptorProto__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.DescriptorProtos.FileDescriptorProto, global::Google.ProtocolBuffers.DescriptorProtos.FileDescriptorProto.Builder&gt; internal__static_google_protobuf_FileDescriptorProto__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_google_protobuf_DescriptorProto__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto, global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto.Builder&gt; internal__static_google_protobuf_DescriptorProto__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_google_protobuf_DescriptorProto_ExtensionRange__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto.Types.ExtensionRange, global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto.Types.ExtensionRange.Builder&gt; internal__static_google_protobuf_DescriptorProto_ExtensionRange__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_google_protobuf_FieldDescriptorProto__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto, global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto.Builder&gt; internal__static_google_protobuf_FieldDescriptorProto__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_google_protobuf_EnumDescriptorProto__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.DescriptorProtos.EnumDescriptorProto, global::Google.ProtocolBuffers.DescriptorProtos.EnumDescriptorProto.Builder&gt; internal__static_google_protobuf_EnumDescriptorProto__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_google_protobuf_EnumValueDescriptorProto__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.DescriptorProtos.EnumValueDescriptorProto, global::Google.ProtocolBuffers.DescriptorProtos.EnumValueDescriptorProto.Builder&gt; internal__static_google_protobuf_EnumValueDescriptorProto__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_google_protobuf_ServiceDescriptorProto__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.DescriptorProtos.ServiceDescriptorProto, global::Google.ProtocolBuffers.DescriptorProtos.ServiceDescriptorProto.Builder&gt; internal__static_google_protobuf_ServiceDescriptorProto__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_google_protobuf_MethodDescriptorProto__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.DescriptorProtos.MethodDescriptorProto, global::Google.ProtocolBuffers.DescriptorProtos.MethodDescriptorProto.Builder&gt; internal__static_google_protobuf_MethodDescriptorProto__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_google_protobuf_FileOptions__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.DescriptorProtos.FileOptions, global::Google.ProtocolBuffers.DescriptorProtos.FileOptions.Builder&gt; internal__static_google_protobuf_FileOptions__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_google_protobuf_MessageOptions__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.DescriptorProtos.MessageOptions, global::Google.ProtocolBuffers.DescriptorProtos.MessageOptions.Builder&gt; internal__static_google_protobuf_MessageOptions__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_google_protobuf_FieldOptions__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.DescriptorProtos.FieldOptions, global::Google.ProtocolBuffers.DescriptorProtos.FieldOptions.Builder&gt; internal__static_google_protobuf_FieldOptions__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_google_protobuf_EnumOptions__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.DescriptorProtos.EnumOptions, global::Google.ProtocolBuffers.DescriptorProtos.EnumOptions.Builder&gt; internal__static_google_protobuf_EnumOptions__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_google_protobuf_EnumValueOptions__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.DescriptorProtos.EnumValueOptions, global::Google.ProtocolBuffers.DescriptorProtos.EnumValueOptions.Builder&gt; internal__static_google_protobuf_EnumValueOptions__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_google_protobuf_ServiceOptions__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.DescriptorProtos.ServiceOptions, global::Google.ProtocolBuffers.DescriptorProtos.ServiceOptions.Builder&gt; internal__static_google_protobuf_ServiceOptions__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_google_protobuf_MethodOptions__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.DescriptorProtos.MethodOptions, global::Google.ProtocolBuffers.DescriptorProtos.MethodOptions.Builder&gt; internal__static_google_protobuf_MethodOptions__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_google_protobuf_UninterpretedOption__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption, global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption.Builder&gt; internal__static_google_protobuf_UninterpretedOption__FieldAccessorTable;
+    internal static pbd::MessageDescriptor internal__static_google_protobuf_UninterpretedOption_NamePart__Descriptor;
+    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption.Types.NamePart, global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption.Types.NamePart.Builder&gt; internal__static_google_protobuf_UninterpretedOption_NamePart__FieldAccessorTable;
+    #endregion
     #region Descriptor
     public static pbd::FileDescriptor Descriptor {
       get { return descriptor; }
     }
-    private static readonly pbd::FileDescriptor descriptor = pbd::FileDescriptor.InternalBuildGeneratedFileFrom(
-        global::System.Convert.FromBase64String(
-        &quot;CiBnb29nbGUvcHJvdG9idWYvZGVzY3JpcHRvci5wcm90bxIPZ29vZ2xlLnBy&quot; + 
-        &quot;b3RvYnVmIkcKEUZpbGVEZXNjcmlwdG9yU2V0EjIKBGZpbGUYASADKAsyJC5n&quot; + 
-        &quot;b29nbGUucHJvdG9idWYuRmlsZURlc2NyaXB0b3JQcm90byLcAgoTRmlsZURl&quot; + 
-        &quot;c2NyaXB0b3JQcm90bxIMCgRuYW1lGAEgASgJEg8KB3BhY2thZ2UYAiABKAkS&quot; + 
-        &quot;EgoKZGVwZW5kZW5jeRgDIAMoCRI2CgxtZXNzYWdlX3R5cGUYBCADKAsyIC5n&quot; + 
-        &quot;b29nbGUucHJvdG9idWYuRGVzY3JpcHRvclByb3RvEjcKCWVudW1fdHlwZRgF&quot; + 
-        &quot;IAMoCzIkLmdvb2dsZS5wcm90b2J1Zi5FbnVtRGVzY3JpcHRvclByb3RvEjgK&quot; + 
-        &quot;B3NlcnZpY2UYBiADKAsyJy5nb29nbGUucHJvdG9idWYuU2VydmljZURlc2Ny&quot; + 
-        &quot;aXB0b3JQcm90bxI4CglleHRlbnNpb24YByADKAsyJS5nb29nbGUucHJvdG9i&quot; + 
-        &quot;dWYuRmllbGREZXNjcmlwdG9yUHJvdG8SLQoHb3B0aW9ucxgIIAEoCzIcLmdv&quot; + 
-        &quot;b2dsZS5wcm90b2J1Zi5GaWxlT3B0aW9ucyKpAwoPRGVzY3JpcHRvclByb3Rv&quot; + 
-        &quot;EgwKBG5hbWUYASABKAkSNAoFZmllbGQYAiADKAsyJS5nb29nbGUucHJvdG9i&quot; + 
-        &quot;dWYuRmllbGREZXNjcmlwdG9yUHJvdG8SOAoJZXh0ZW5zaW9uGAYgAygLMiUu&quot; + 
-        &quot;Z29vZ2xlLnByb3RvYnVmLkZpZWxkRGVzY3JpcHRvclByb3RvEjUKC25lc3Rl&quot; + 
-        &quot;ZF90eXBlGAMgAygLMiAuZ29vZ2xlLnByb3RvYnVmLkRlc2NyaXB0b3JQcm90&quot; + 
-        &quot;bxI3CgllbnVtX3R5cGUYBCADKAsyJC5nb29nbGUucHJvdG9idWYuRW51bURl&quot; + 
-        &quot;c2NyaXB0b3JQcm90bxJICg9leHRlbnNpb25fcmFuZ2UYBSADKAsyLy5nb29n&quot; + 
-        &quot;bGUucHJvdG9idWYuRGVzY3JpcHRvclByb3RvLkV4dGVuc2lvblJhbmdlEjAK&quot; + 
-        &quot;B29wdGlvbnMYByABKAsyHy5nb29nbGUucHJvdG9idWYuTWVzc2FnZU9wdGlv&quot; + 
-        &quot;bnMaLAoORXh0ZW5zaW9uUmFuZ2USDQoFc3RhcnQYASABKAUSCwoDZW5kGAIg&quot; + 
-        &quot;ASgFIpQFChRGaWVsZERlc2NyaXB0b3JQcm90bxIMCgRuYW1lGAEgASgJEg4K&quot; + 
-        &quot;Bm51bWJlchgDIAEoBRI6CgVsYWJlbBgEIAEoDjIrLmdvb2dsZS5wcm90b2J1&quot; + 
-        &quot;Zi5GaWVsZERlc2NyaXB0b3JQcm90by5MYWJlbBI4CgR0eXBlGAUgASgOMiou&quot; + 
-        &quot;Z29vZ2xlLnByb3RvYnVmLkZpZWxkRGVzY3JpcHRvclByb3RvLlR5cGUSEQoJ&quot; + 
-        &quot;dHlwZV9uYW1lGAYgASgJEhAKCGV4dGVuZGVlGAIgASgJEhUKDWRlZmF1bHRf&quot; + 
-        &quot;dmFsdWUYByABKAkSLgoHb3B0aW9ucxgIIAEoCzIdLmdvb2dsZS5wcm90b2J1&quot; + 
-        &quot;Zi5GaWVsZE9wdGlvbnMitgIKBFR5cGUSDwoLVFlQRV9ET1VCTEUQARIOCgpU&quot; + 
-        &quot;WVBFX0ZMT0FUEAISDgoKVFlQRV9JTlQ2NBADEg8KC1RZUEVfVUlOVDY0EAQS&quot; + 
-        &quot;DgoKVFlQRV9JTlQzMhAFEhAKDFRZUEVfRklYRUQ2NBAGEhAKDFRZUEVfRklY&quot; + 
-        &quot;RUQzMhAHEg0KCVRZUEVfQk9PTBAIEg8KC1RZUEVfU1RSSU5HEAkSDgoKVFlQ&quot; + 
-        &quot;RV9HUk9VUBAKEhAKDFRZUEVfTUVTU0FHRRALEg4KClRZUEVfQllURVMQDBIP&quot; + 
-        &quot;CgtUWVBFX1VJTlQzMhANEg0KCVRZUEVfRU5VTRAOEhEKDVRZUEVfU0ZJWEVE&quot; + 
-        &quot;MzIQDxIRCg1UWVBFX1NGSVhFRDY0EBASDwoLVFlQRV9TSU5UMzIQERIPCgtU&quot; + 
-        &quot;WVBFX1NJTlQ2NBASIkMKBUxhYmVsEhIKDkxBQkVMX09QVElPTkFMEAESEgoO&quot; + 
-        &quot;TEFCRUxfUkVRVUlSRUQQAhISCg5MQUJFTF9SRVBFQVRFRBADIowBChNFbnVt&quot; + 
-        &quot;RGVzY3JpcHRvclByb3RvEgwKBG5hbWUYASABKAkSOAoFdmFsdWUYAiADKAsy&quot; + 
-        &quot;KS5nb29nbGUucHJvdG9idWYuRW51bVZhbHVlRGVzY3JpcHRvclByb3RvEi0K&quot; + 
-        &quot;B29wdGlvbnMYAyABKAsyHC5nb29nbGUucHJvdG9idWYuRW51bU9wdGlvbnMi&quot; + 
-        &quot;bAoYRW51bVZhbHVlRGVzY3JpcHRvclByb3RvEgwKBG5hbWUYASABKAkSDgoG&quot; + 
-        &quot;bnVtYmVyGAIgASgFEjIKB29wdGlvbnMYAyABKAsyIS5nb29nbGUucHJvdG9i&quot; + 
-        &quot;dWYuRW51bVZhbHVlT3B0aW9ucyKQAQoWU2VydmljZURlc2NyaXB0b3JQcm90&quot; + 
-        &quot;bxIMCgRuYW1lGAEgASgJEjYKBm1ldGhvZBgCIAMoCzImLmdvb2dsZS5wcm90&quot; + 
-        &quot;b2J1Zi5NZXRob2REZXNjcmlwdG9yUHJvdG8SMAoHb3B0aW9ucxgDIAEoCzIf&quot; + 
-        &quot;Lmdvb2dsZS5wcm90b2J1Zi5TZXJ2aWNlT3B0aW9ucyJ/ChVNZXRob2REZXNj&quot; + 
-        &quot;cmlwdG9yUHJvdG8SDAoEbmFtZRgBIAEoCRISCgppbnB1dF90eXBlGAIgASgJ&quot; + 
-        &quot;EhMKC291dHB1dF90eXBlGAMgASgJEi8KB29wdGlvbnMYBCABKAsyHi5nb29n&quot; + 
-        &quot;bGUucHJvdG9idWYuTWV0aG9kT3B0aW9ucyKrAgoLRmlsZU9wdGlvbnMSFAoM&quot; + 
-        &quot;amF2YV9wYWNrYWdlGAEgASgJEhwKFGphdmFfb3V0ZXJfY2xhc3NuYW1lGAgg&quot; + 
-        &quot;ASgJEiIKE2phdmFfbXVsdGlwbGVfZmlsZXMYCiABKAg6BWZhbHNlEkoKDG9w&quot; + 
-        &quot;dGltaXplX2ZvchgJIAEoDjIpLmdvb2dsZS5wcm90b2J1Zi5GaWxlT3B0aW9u&quot; + 
-        &quot;cy5PcHRpbWl6ZU1vZGU6CUNPREVfU0laRRJDChR1bmludGVycHJldGVkX29w&quot; + 
-        &quot;dGlvbhjnByADKAsyJC5nb29nbGUucHJvdG9idWYuVW5pbnRlcnByZXRlZE9w&quot; + 
-        &quot;dGlvbiIoCgxPcHRpbWl6ZU1vZGUSCQoFU1BFRUQQARINCglDT0RFX1NJWkUQ&quot; + 
-        &quot;AioJCOgHEICAgIACIogBCg5NZXNzYWdlT3B0aW9ucxImChdtZXNzYWdlX3Nl&quot; + 
-        &quot;dF93aXJlX2Zvcm1hdBgBIAEoCDoFZmFsc2USQwoUdW5pbnRlcnByZXRlZF9v&quot; + 
-        &quot;cHRpb24Y5wcgAygLMiQuZ29vZ2xlLnByb3RvYnVmLlVuaW50ZXJwcmV0ZWRP&quot; + 
-        &quot;cHRpb24qCQjoBxCAgICAAiLlAQoMRmllbGRPcHRpb25zEjIKBWN0eXBlGAEg&quot; + 
-        &quot;ASgOMiMuZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucy5DVHlwZRIOCgZw&quot; + 
-        &quot;YWNrZWQYAiABKAgSHAoUZXhwZXJpbWVudGFsX21hcF9rZXkYCSABKAkSQwoU&quot; + 
-        &quot;dW5pbnRlcnByZXRlZF9vcHRpb24Y5wcgAygLMiQuZ29vZ2xlLnByb3RvYnVm&quot; + 
-        &quot;LlVuaW50ZXJwcmV0ZWRPcHRpb24iIwoFQ1R5cGUSCAoEQ09SRBABEhAKDFNU&quot; + 
-        &quot;UklOR19QSUVDRRACKgkI6AcQgICAgAIiXQoLRW51bU9wdGlvbnMSQwoUdW5p&quot; + 
-        &quot;bnRlcnByZXRlZF9vcHRpb24Y5wcgAygLMiQuZ29vZ2xlLnByb3RvYnVmLlVu&quot; + 
-        &quot;aW50ZXJwcmV0ZWRPcHRpb24qCQjoBxCAgICAAiJiChBFbnVtVmFsdWVPcHRp&quot; + 
-        &quot;b25zEkMKFHVuaW50ZXJwcmV0ZWRfb3B0aW9uGOcHIAMoCzIkLmdvb2dsZS5w&quot; + 
-        &quot;cm90b2J1Zi5VbmludGVycHJldGVkT3B0aW9uKgkI6AcQgICAgAIiYAoOU2Vy&quot; + 
-        &quot;dmljZU9wdGlvbnMSQwoUdW5pbnRlcnByZXRlZF9vcHRpb24Y5wcgAygLMiQu&quot; + 
-        &quot;Z29vZ2xlLnByb3RvYnVmLlVuaW50ZXJwcmV0ZWRPcHRpb24qCQjoBxCAgICA&quot; + 
-        &quot;AiJfCg1NZXRob2RPcHRpb25zEkMKFHVuaW50ZXJwcmV0ZWRfb3B0aW9uGOcH&quot; + 
-        &quot;IAMoCzIkLmdvb2dsZS5wcm90b2J1Zi5VbmludGVycHJldGVkT3B0aW9uKgkI&quot; + 
-        &quot;6AcQgICAgAIihQIKE1VuaW50ZXJwcmV0ZWRPcHRpb24SOwoEbmFtZRgCIAMo&quot; + 
-        &quot;CzItLmdvb2dsZS5wcm90b2J1Zi5VbmludGVycHJldGVkT3B0aW9uLk5hbWVQ&quot; + 
-        &quot;YXJ0EhgKEGlkZW50aWZpZXJfdmFsdWUYAyABKAkSGgoScG9zaXRpdmVfaW50&quot; + 
-        &quot;X3ZhbHVlGAQgASgEEhoKEm5lZ2F0aXZlX2ludF92YWx1ZRgFIAEoAxIUCgxk&quot; + 
-        &quot;b3VibGVfdmFsdWUYBiABKAESFAoMc3RyaW5nX3ZhbHVlGAcgASgMGjMKCE5h&quot; + 
-        &quot;bWVQYXJ0EhEKCW5hbWVfcGFydBgBIAIoCRIUCgxpc19leHRlbnNpb24YAiAC&quot; + 
-        &quot;KAhCKQoTY29tLmdvb2dsZS5wcm90b2J1ZkIQRGVzY3JpcHRvclByb3Rvc0gB&quot;),
-        new pbd::FileDescriptor[] {
-        });
+    private static pbd::FileDescriptor descriptor;
+    
+    static DescriptorProtoFile() {
+      byte[] descriptorData = global::System.Convert.FromBase64String(
+          &quot;CiBnb29nbGUvcHJvdG9idWYvZGVzY3JpcHRvci5wcm90bxIPZ29vZ2xlLnBy&quot; + 
+          &quot;b3RvYnVmIkcKEUZpbGVEZXNjcmlwdG9yU2V0EjIKBGZpbGUYASADKAsyJC5n&quot; + 
+          &quot;b29nbGUucHJvdG9idWYuRmlsZURlc2NyaXB0b3JQcm90byLcAgoTRmlsZURl&quot; + 
+          &quot;c2NyaXB0b3JQcm90bxIMCgRuYW1lGAEgASgJEg8KB3BhY2thZ2UYAiABKAkS&quot; + 
+          &quot;EgoKZGVwZW5kZW5jeRgDIAMoCRI2CgxtZXNzYWdlX3R5cGUYBCADKAsyIC5n&quot; + 
+          &quot;b29nbGUucHJvdG9idWYuRGVzY3JpcHRvclByb3RvEjcKCWVudW1fdHlwZRgF&quot; + 
+          &quot;IAMoCzIkLmdvb2dsZS5wcm90b2J1Zi5FbnVtRGVzY3JpcHRvclByb3RvEjgK&quot; + 
+          &quot;B3NlcnZpY2UYBiADKAsyJy5nb29nbGUucHJvdG9idWYuU2VydmljZURlc2Ny&quot; + 
+          &quot;aXB0b3JQcm90bxI4CglleHRlbnNpb24YByADKAsyJS5nb29nbGUucHJvdG9i&quot; + 
+          &quot;dWYuRmllbGREZXNjcmlwdG9yUHJvdG8SLQoHb3B0aW9ucxgIIAEoCzIcLmdv&quot; + 
+          &quot;b2dsZS5wcm90b2J1Zi5GaWxlT3B0aW9ucyKpAwoPRGVzY3JpcHRvclByb3Rv&quot; + 
+          &quot;EgwKBG5hbWUYASABKAkSNAoFZmllbGQYAiADKAsyJS5nb29nbGUucHJvdG9i&quot; + 
+          &quot;dWYuRmllbGREZXNjcmlwdG9yUHJvdG8SOAoJZXh0ZW5zaW9uGAYgAygLMiUu&quot; + 
+          &quot;Z29vZ2xlLnByb3RvYnVmLkZpZWxkRGVzY3JpcHRvclByb3RvEjUKC25lc3Rl&quot; + 
+          &quot;ZF90eXBlGAMgAygLMiAuZ29vZ2xlLnByb3RvYnVmLkRlc2NyaXB0b3JQcm90&quot; + 
+          &quot;bxI3CgllbnVtX3R5cGUYBCADKAsyJC5nb29nbGUucHJvdG9idWYuRW51bURl&quot; + 
+          &quot;c2NyaXB0b3JQcm90bxJICg9leHRlbnNpb25fcmFuZ2UYBSADKAsyLy5nb29n&quot; + 
+          &quot;bGUucHJvdG9idWYuRGVzY3JpcHRvclByb3RvLkV4dGVuc2lvblJhbmdlEjAK&quot; + 
+          &quot;B29wdGlvbnMYByABKAsyHy5nb29nbGUucHJvdG9idWYuTWVzc2FnZU9wdGlv&quot; + 
+          &quot;bnMaLAoORXh0ZW5zaW9uUmFuZ2USDQoFc3RhcnQYASABKAUSCwoDZW5kGAIg&quot; + 
+          &quot;ASgFIpQFChRGaWVsZERlc2NyaXB0b3JQcm90bxIMCgRuYW1lGAEgASgJEg4K&quot; + 
+          &quot;Bm51bWJlchgDIAEoBRI6CgVsYWJlbBgEIAEoDjIrLmdvb2dsZS5wcm90b2J1&quot; + 
+          &quot;Zi5GaWVsZERlc2NyaXB0b3JQcm90by5MYWJlbBI4CgR0eXBlGAUgASgOMiou&quot; + 
+          &quot;Z29vZ2xlLnByb3RvYnVmLkZpZWxkRGVzY3JpcHRvclByb3RvLlR5cGUSEQoJ&quot; + 
+          &quot;dHlwZV9uYW1lGAYgASgJEhAKCGV4dGVuZGVlGAIgASgJEhUKDWRlZmF1bHRf&quot; + 
+          &quot;dmFsdWUYByABKAkSLgoHb3B0aW9ucxgIIAEoCzIdLmdvb2dsZS5wcm90b2J1&quot; + 
+          &quot;Zi5GaWVsZE9wdGlvbnMitgIKBFR5cGUSDwoLVFlQRV9ET1VCTEUQARIOCgpU&quot; + 
+          &quot;WVBFX0ZMT0FUEAISDgoKVFlQRV9JTlQ2NBADEg8KC1RZUEVfVUlOVDY0EAQS&quot; + 
+          &quot;DgoKVFlQRV9JTlQzMhAFEhAKDFRZUEVfRklYRUQ2NBAGEhAKDFRZUEVfRklY&quot; + 
+          &quot;RUQzMhAHEg0KCVRZUEVfQk9PTBAIEg8KC1RZUEVfU1RSSU5HEAkSDgoKVFlQ&quot; + 
+          &quot;RV9HUk9VUBAKEhAKDFRZUEVfTUVTU0FHRRALEg4KClRZUEVfQllURVMQDBIP&quot; + 
+          &quot;CgtUWVBFX1VJTlQzMhANEg0KCVRZUEVfRU5VTRAOEhEKDVRZUEVfU0ZJWEVE&quot; + 
+          &quot;MzIQDxIRCg1UWVBFX1NGSVhFRDY0EBASDwoLVFlQRV9TSU5UMzIQERIPCgtU&quot; + 
+          &quot;WVBFX1NJTlQ2NBASIkMKBUxhYmVsEhIKDkxBQkVMX09QVElPTkFMEAESEgoO&quot; + 
+          &quot;TEFCRUxfUkVRVUlSRUQQAhISCg5MQUJFTF9SRVBFQVRFRBADIowBChNFbnVt&quot; + 
+          &quot;RGVzY3JpcHRvclByb3RvEgwKBG5hbWUYASABKAkSOAoFdmFsdWUYAiADKAsy&quot; + 
+          &quot;KS5nb29nbGUucHJvdG9idWYuRW51bVZhbHVlRGVzY3JpcHRvclByb3RvEi0K&quot; + 
+          &quot;B29wdGlvbnMYAyABKAsyHC5nb29nbGUucHJvdG9idWYuRW51bU9wdGlvbnMi&quot; + 
+          &quot;bAoYRW51bVZhbHVlRGVzY3JpcHRvclByb3RvEgwKBG5hbWUYASABKAkSDgoG&quot; + 
+          &quot;bnVtYmVyGAIgASgFEjIKB29wdGlvbnMYAyABKAsyIS5nb29nbGUucHJvdG9i&quot; + 
+          &quot;dWYuRW51bVZhbHVlT3B0aW9ucyKQAQoWU2VydmljZURlc2NyaXB0b3JQcm90&quot; + 
+          &quot;bxIMCgRuYW1lGAEgASgJEjYKBm1ldGhvZBgCIAMoCzImLmdvb2dsZS5wcm90&quot; + 
+          &quot;b2J1Zi5NZXRob2REZXNjcmlwdG9yUHJvdG8SMAoHb3B0aW9ucxgDIAEoCzIf&quot; + 
+          &quot;Lmdvb2dsZS5wcm90b2J1Zi5TZXJ2aWNlT3B0aW9ucyJ/ChVNZXRob2REZXNj&quot; + 
+          &quot;cmlwdG9yUHJvdG8SDAoEbmFtZRgBIAEoCRISCgppbnB1dF90eXBlGAIgASgJ&quot; + 
+          &quot;EhMKC291dHB1dF90eXBlGAMgASgJEi8KB29wdGlvbnMYBCABKAsyHi5nb29n&quot; + 
+          &quot;bGUucHJvdG9idWYuTWV0aG9kT3B0aW9ucyKnAgoLRmlsZU9wdGlvbnMSFAoM&quot; + 
+          &quot;amF2YV9wYWNrYWdlGAEgASgJEhwKFGphdmFfb3V0ZXJfY2xhc3NuYW1lGAgg&quot; + 
+          &quot;ASgJEiIKE2phdmFfbXVsdGlwbGVfZmlsZXMYCiABKAg6BWZhbHNlEkYKDG9w&quot; + 
+          &quot;dGltaXplX2ZvchgJIAEoDjIpLmdvb2dsZS5wcm90b2J1Zi5GaWxlT3B0aW9u&quot; + 
+          &quot;cy5PcHRpbWl6ZU1vZGU6BVNQRUVEEkMKFHVuaW50ZXJwcmV0ZWRfb3B0aW9u&quot; + 
+          &quot;GOcHIAMoCzIkLmdvb2dsZS5wcm90b2J1Zi5VbmludGVycHJldGVkT3B0aW9u&quot; + 
+          &quot;IigKDE9wdGltaXplTW9kZRIJCgVTUEVFRBABEg0KCUNPREVfU0laRRACKgkI&quot; + 
+          &quot;6AcQgICAgAIiiAEKDk1lc3NhZ2VPcHRpb25zEiYKF21lc3NhZ2Vfc2V0X3dp&quot; + 
+          &quot;cmVfZm9ybWF0GAEgASgIOgVmYWxzZRJDChR1bmludGVycHJldGVkX29wdGlv&quot; + 
+          &quot;bhjnByADKAsyJC5nb29nbGUucHJvdG9idWYuVW5pbnRlcnByZXRlZE9wdGlv&quot; + 
+          &quot;bioJCOgHEICAgIACIoACCgxGaWVsZE9wdGlvbnMSMgoFY3R5cGUYASABKA4y&quot; + 
+          &quot;Iy5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zLkNUeXBlEg4KBnBhY2tl&quot; + 
+          &quot;ZBgCIAEoCBIZCgpkZXByZWNhdGVkGAMgASgIOgVmYWxzZRIcChRleHBlcmlt&quot; + 
+          &quot;ZW50YWxfbWFwX2tleRgJIAEoCRJDChR1bmludGVycHJldGVkX29wdGlvbhjn&quot; + 
+          &quot;ByADKAsyJC5nb29nbGUucHJvdG9idWYuVW5pbnRlcnByZXRlZE9wdGlvbiIj&quot; + 
+          &quot;CgVDVHlwZRIICgRDT1JEEAESEAoMU1RSSU5HX1BJRUNFEAIqCQjoBxCAgICA&quot; + 
+          &quot;AiJdCgtFbnVtT3B0aW9ucxJDChR1bmludGVycHJldGVkX29wdGlvbhjnByAD&quot; + 
+          &quot;KAsyJC5nb29nbGUucHJvdG9idWYuVW5pbnRlcnByZXRlZE9wdGlvbioJCOgH&quot; + 
+          &quot;EICAgIACImIKEEVudW1WYWx1ZU9wdGlvbnMSQwoUdW5pbnRlcnByZXRlZF9v&quot; + 
+          &quot;cHRpb24Y5wcgAygLMiQuZ29vZ2xlLnByb3RvYnVmLlVuaW50ZXJwcmV0ZWRP&quot; + 
+          &quot;cHRpb24qCQjoBxCAgICAAiJgCg5TZXJ2aWNlT3B0aW9ucxJDChR1bmludGVy&quot; + 
+          &quot;cHJldGVkX29wdGlvbhjnByADKAsyJC5nb29nbGUucHJvdG9idWYuVW5pbnRl&quot; + 
+          &quot;cnByZXRlZE9wdGlvbioJCOgHEICAgIACIl8KDU1ldGhvZE9wdGlvbnMSQwoU&quot; + 
+          &quot;dW5pbnRlcnByZXRlZF9vcHRpb24Y5wcgAygLMiQuZ29vZ2xlLnByb3RvYnVm&quot; + 
+          &quot;LlVuaW50ZXJwcmV0ZWRPcHRpb24qCQjoBxCAgICAAiKFAgoTVW5pbnRlcnBy&quot; + 
+          &quot;ZXRlZE9wdGlvbhI7CgRuYW1lGAIgAygLMi0uZ29vZ2xlLnByb3RvYnVmLlVu&quot; + 
+          &quot;aW50ZXJwcmV0ZWRPcHRpb24uTmFtZVBhcnQSGAoQaWRlbnRpZmllcl92YWx1&quot; + 
+          &quot;ZRgDIAEoCRIaChJwb3NpdGl2ZV9pbnRfdmFsdWUYBCABKAQSGgoSbmVnYXRp&quot; + 
+          &quot;dmVfaW50X3ZhbHVlGAUgASgDEhQKDGRvdWJsZV92YWx1ZRgGIAEoARIUCgxz&quot; + 
+          &quot;dHJpbmdfdmFsdWUYByABKAwaMwoITmFtZVBhcnQSEQoJbmFtZV9wYXJ0GAEg&quot; + 
+          &quot;AigJEhQKDGlzX2V4dGVuc2lvbhgCIAIoCEIpChNjb20uZ29vZ2xlLnByb3Rv&quot; + 
+          &quot;YnVmQhBEZXNjcmlwdG9yUHJvdG9zSAE=&quot;);
+      pbd::FileDescriptor.InternalDescriptorAssigner assigner = delegate(pbd::FileDescriptor root) {
+        descriptor = root;
+        internal__static_google_protobuf_FileDescriptorSet__Descriptor = Descriptor.MessageTypes[0];
+        internal__static_google_protobuf_FileDescriptorSet__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.DescriptorProtos.FileDescriptorSet, global::Google.ProtocolBuffers.DescriptorProtos.FileDescriptorSet.Builder&gt;(internal__static_google_protobuf_FileDescriptorSet__Descriptor,
+                new string[] { &quot;File&quot;, });
+        internal__static_google_protobuf_FileDescriptorProto__Descriptor = Descriptor.MessageTypes[1];
+        internal__static_google_protobuf_FileDescriptorProto__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.DescriptorProtos.FileDescriptorProto, global::Google.ProtocolBuffers.DescriptorProtos.FileDescriptorProto.Builder&gt;(internal__static_google_protobuf_FileDescriptorProto__Descriptor,
+                new string[] { &quot;Name&quot;, &quot;Package&quot;, &quot;Dependency&quot;, &quot;MessageType&quot;, &quot;EnumType&quot;, &quot;Service&quot;, &quot;Extension&quot;, &quot;Options&quot;, });
+        internal__static_google_protobuf_DescriptorProto__Descriptor = Descriptor.MessageTypes[2];
+        internal__static_google_protobuf_DescriptorProto__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto, global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto.Builder&gt;(internal__static_google_protobuf_DescriptorProto__Descriptor,
+                new string[] { &quot;Name&quot;, &quot;Field&quot;, &quot;Extension&quot;, &quot;NestedType&quot;, &quot;EnumType&quot;, &quot;ExtensionRange&quot;, &quot;Options&quot;, });
+        internal__static_google_protobuf_DescriptorProto_ExtensionRange__Descriptor = internal__static_google_protobuf_DescriptorProto__Descriptor.NestedTypes[0];
+        internal__static_google_protobuf_DescriptorProto_ExtensionRange__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto.Types.ExtensionRange, global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto.Types.ExtensionRange.Builder&gt;(internal__static_google_protobuf_DescriptorProto_ExtensionRange__Descriptor,
+                new string[] { &quot;Start&quot;, &quot;End&quot;, });
+        internal__static_google_protobuf_FieldDescriptorProto__Descriptor = Descriptor.MessageTypes[3];
+        internal__static_google_protobuf_FieldDescriptorProto__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto, global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto.Builder&gt;(internal__static_google_protobuf_FieldDescriptorProto__Descriptor,
+                new string[] { &quot;Name&quot;, &quot;Number&quot;, &quot;Label&quot;, &quot;Type&quot;, &quot;TypeName&quot;, &quot;Extendee&quot;, &quot;DefaultValue&quot;, &quot;Options&quot;, });
+        internal__static_google_protobuf_EnumDescriptorProto__Descriptor = Descriptor.MessageTypes[4];
+        internal__static_google_protobuf_EnumDescriptorProto__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.DescriptorProtos.EnumDescriptorProto, global::Google.ProtocolBuffers.DescriptorProtos.EnumDescriptorProto.Builder&gt;(internal__static_google_protobuf_EnumDescriptorProto__Descriptor,
+                new string[] { &quot;Name&quot;, &quot;Value&quot;, &quot;Options&quot;, });
+        internal__static_google_protobuf_EnumValueDescriptorProto__Descriptor = Descriptor.MessageTypes[5];
+        internal__static_google_protobuf_EnumValueDescriptorProto__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.DescriptorProtos.EnumValueDescriptorProto, global::Google.ProtocolBuffers.DescriptorProtos.EnumValueDescriptorProto.Builder&gt;(internal__static_google_protobuf_EnumValueDescriptorProto__Descriptor,
+                new string[] { &quot;Name&quot;, &quot;Number&quot;, &quot;Options&quot;, });
+        internal__static_google_protobuf_ServiceDescriptorProto__Descriptor = Descriptor.MessageTypes[6];
+        internal__static_google_protobuf_ServiceDescriptorProto__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.DescriptorProtos.ServiceDescriptorProto, global::Google.ProtocolBuffers.DescriptorProtos.ServiceDescriptorProto.Builder&gt;(internal__static_google_protobuf_ServiceDescriptorProto__Descriptor,
+                new string[] { &quot;Name&quot;, &quot;Method&quot;, &quot;Options&quot;, });
+        internal__static_google_protobuf_MethodDescriptorProto__Descriptor = Descriptor.MessageTypes[7];
+        internal__static_google_protobuf_MethodDescriptorProto__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.DescriptorProtos.MethodDescriptorProto, global::Google.ProtocolBuffers.DescriptorProtos.MethodDescriptorProto.Builder&gt;(internal__static_google_protobuf_MethodDescriptorProto__Descriptor,
+                new string[] { &quot;Name&quot;, &quot;InputType&quot;, &quot;OutputType&quot;, &quot;Options&quot;, });
+        internal__static_google_protobuf_FileOptions__Descriptor = Descriptor.MessageTypes[8];
+        internal__static_google_protobuf_FileOptions__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.DescriptorProtos.FileOptions, global::Google.ProtocolBuffers.DescriptorProtos.FileOptions.Builder&gt;(internal__static_google_protobuf_FileOptions__Descriptor,
+                new string[] { &quot;JavaPackage&quot;, &quot;JavaOuterClassname&quot;, &quot;JavaMultipleFiles&quot;, &quot;OptimizeFor&quot;, &quot;UninterpretedOption&quot;, });
+        internal__static_google_protobuf_MessageOptions__Descriptor = Descriptor.MessageTypes[9];
+        internal__static_google_protobuf_MessageOptions__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.DescriptorProtos.MessageOptions, global::Google.ProtocolBuffers.DescriptorProtos.MessageOptions.Builder&gt;(internal__static_google_protobuf_MessageOptions__Descriptor,
+                new string[] { &quot;MessageSetWireFormat&quot;, &quot;UninterpretedOption&quot;, });
+        internal__static_google_protobuf_FieldOptions__Descriptor = Descriptor.MessageTypes[10];
+        internal__static_google_protobuf_FieldOptions__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.DescriptorProtos.FieldOptions, global::Google.ProtocolBuffers.DescriptorProtos.FieldOptions.Builder&gt;(internal__static_google_protobuf_FieldOptions__Descriptor,
+                new string[] { &quot;Ctype&quot;, &quot;Packed&quot;, &quot;Deprecated&quot;, &quot;ExperimentalMapKey&quot;, &quot;UninterpretedOption&quot;, });
+        internal__static_google_protobuf_EnumOptions__Descriptor = Descriptor.MessageTypes[11];
+        internal__static_google_protobuf_EnumOptions__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.DescriptorProtos.EnumOptions, global::Google.ProtocolBuffers.DescriptorProtos.EnumOptions.Builder&gt;(internal__static_google_protobuf_EnumOptions__Descriptor,
+                new string[] { &quot;UninterpretedOption&quot;, });
+        internal__static_google_protobuf_EnumValueOptions__Descriptor = Descriptor.MessageTypes[12];
+        internal__static_google_protobuf_EnumValueOptions__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.DescriptorProtos.EnumValueOptions, global::Google.ProtocolBuffers.DescriptorProtos.EnumValueOptions.Builder&gt;(internal__static_google_protobuf_EnumValueOptions__Descriptor,
+                new string[] { &quot;UninterpretedOption&quot;, });
+        internal__static_google_protobuf_ServiceOptions__Descriptor = Descriptor.MessageTypes[13];
+        internal__static_google_protobuf_ServiceOptions__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.DescriptorProtos.ServiceOptions, global::Google.ProtocolBuffers.DescriptorProtos.ServiceOptions.Builder&gt;(internal__static_google_protobuf_ServiceOptions__Descriptor,
+                new string[] { &quot;UninterpretedOption&quot;, });
+        internal__static_google_protobuf_MethodOptions__Descriptor = Descriptor.MessageTypes[14];
+        internal__static_google_protobuf_MethodOptions__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.DescriptorProtos.MethodOptions, global::Google.ProtocolBuffers.DescriptorProtos.MethodOptions.Builder&gt;(internal__static_google_protobuf_MethodOptions__Descriptor,
+                new string[] { &quot;UninterpretedOption&quot;, });
+        internal__static_google_protobuf_UninterpretedOption__Descriptor = Descriptor.MessageTypes[15];
+        internal__static_google_protobuf_UninterpretedOption__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption, global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption.Builder&gt;(internal__static_google_protobuf_UninterpretedOption__Descriptor,
+                new string[] { &quot;Name&quot;, &quot;IdentifierValue&quot;, &quot;PositiveIntValue&quot;, &quot;NegativeIntValue&quot;, &quot;DoubleValue&quot;, &quot;StringValue&quot;, });
+        internal__static_google_protobuf_UninterpretedOption_NamePart__Descriptor = internal__static_google_protobuf_UninterpretedOption__Descriptor.NestedTypes[0];
+        internal__static_google_protobuf_UninterpretedOption_NamePart__FieldAccessorTable = 
+            new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption.Types.NamePart, global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption.Types.NamePart.Builder&gt;(internal__static_google_protobuf_UninterpretedOption_NamePart__Descriptor,
+                new string[] { &quot;NamePart_&quot;, &quot;IsExtension&quot;, });
+        return null;
+      };
+      pbd::FileDescriptor.InternalBuildGeneratedFileFrom(descriptorData,
+          new pbd::FileDescriptor[] {
+          }, assigner);
+    }
     #endregion
     
-    #region Static variables
-    internal static readonly pbd::MessageDescriptor internal__static_google_protobuf_FileDescriptorSet__Descriptor
-        = Descriptor.MessageTypes[0];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.DescriptorProtos.FileDescriptorSet, global::Google.ProtocolBuffers.DescriptorProtos.FileDescriptorSet.Builder&gt; internal__static_google_protobuf_FileDescriptorSet__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.DescriptorProtos.FileDescriptorSet, global::Google.ProtocolBuffers.DescriptorProtos.FileDescriptorSet.Builder&gt;(internal__static_google_protobuf_FileDescriptorSet__Descriptor,
-            new string[] { &quot;File&quot;, });
-    internal static readonly pbd::MessageDescriptor internal__static_google_protobuf_FileDescriptorProto__Descriptor
-        = Descriptor.MessageTypes[1];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.DescriptorProtos.FileDescriptorProto, global::Google.ProtocolBuffers.DescriptorProtos.FileDescriptorProto.Builder&gt; internal__static_google_protobuf_FileDescriptorProto__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.DescriptorProtos.FileDescriptorProto, global::Google.ProtocolBuffers.DescriptorProtos.FileDescriptorProto.Builder&gt;(internal__static_google_protobuf_FileDescriptorProto__Descriptor,
-            new string[] { &quot;Name&quot;, &quot;Package&quot;, &quot;Dependency&quot;, &quot;MessageType&quot;, &quot;EnumType&quot;, &quot;Service&quot;, &quot;Extension&quot;, &quot;Options&quot;, });
-    internal static readonly pbd::MessageDescriptor internal__static_google_protobuf_DescriptorProto__Descriptor
-        = Descriptor.MessageTypes[2];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto, global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto.Builder&gt; internal__static_google_protobuf_DescriptorProto__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto, global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto.Builder&gt;(internal__static_google_protobuf_DescriptorProto__Descriptor,
-            new string[] { &quot;Name&quot;, &quot;Field&quot;, &quot;Extension&quot;, &quot;NestedType&quot;, &quot;EnumType&quot;, &quot;ExtensionRange&quot;, &quot;Options&quot;, });
-    internal static readonly pbd::MessageDescriptor internal__static_google_protobuf_DescriptorProto_ExtensionRange__Descriptor
-        = internal__static_google_protobuf_DescriptorProto__Descriptor.NestedTypes[0];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto.Types.ExtensionRange, global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto.Types.ExtensionRange.Builder&gt; internal__static_google_protobuf_DescriptorProto_ExtensionRange__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto.Types.ExtensionRange, global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto.Types.ExtensionRange.Builder&gt;(internal__static_google_protobuf_DescriptorProto_ExtensionRange__Descriptor,
-            new string[] { &quot;Start&quot;, &quot;End&quot;, });
-    internal static readonly pbd::MessageDescriptor internal__static_google_protobuf_FieldDescriptorProto__Descriptor
-        = Descriptor.MessageTypes[3];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto, global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto.Builder&gt; internal__static_google_protobuf_FieldDescriptorProto__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto, global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto.Builder&gt;(internal__static_google_protobuf_FieldDescriptorProto__Descriptor,
-            new string[] { &quot;Name&quot;, &quot;Number&quot;, &quot;Label&quot;, &quot;Type&quot;, &quot;TypeName&quot;, &quot;Extendee&quot;, &quot;DefaultValue&quot;, &quot;Options&quot;, });
-    internal static readonly pbd::MessageDescriptor internal__static_google_protobuf_EnumDescriptorProto__Descriptor
-        = Descriptor.MessageTypes[4];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.DescriptorProtos.EnumDescriptorProto, global::Google.ProtocolBuffers.DescriptorProtos.EnumDescriptorProto.Builder&gt; internal__static_google_protobuf_EnumDescriptorProto__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.DescriptorProtos.EnumDescriptorProto, global::Google.ProtocolBuffers.DescriptorProtos.EnumDescriptorProto.Builder&gt;(internal__static_google_protobuf_EnumDescriptorProto__Descriptor,
-            new string[] { &quot;Name&quot;, &quot;Value&quot;, &quot;Options&quot;, });
-    internal static readonly pbd::MessageDescriptor internal__static_google_protobuf_EnumValueDescriptorProto__Descriptor
-        = Descriptor.MessageTypes[5];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.DescriptorProtos.EnumValueDescriptorProto, global::Google.ProtocolBuffers.DescriptorProtos.EnumValueDescriptorProto.Builder&gt; internal__static_google_protobuf_EnumValueDescriptorProto__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.DescriptorProtos.EnumValueDescriptorProto, global::Google.ProtocolBuffers.DescriptorProtos.EnumValueDescriptorProto.Builder&gt;(internal__static_google_protobuf_EnumValueDescriptorProto__Descriptor,
-            new string[] { &quot;Name&quot;, &quot;Number&quot;, &quot;Options&quot;, });
-    internal static readonly pbd::MessageDescriptor internal__static_google_protobuf_ServiceDescriptorProto__Descriptor
-        = Descriptor.MessageTypes[6];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.DescriptorProtos.ServiceDescriptorProto, global::Google.ProtocolBuffers.DescriptorProtos.ServiceDescriptorProto.Builder&gt; internal__static_google_protobuf_ServiceDescriptorProto__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.DescriptorProtos.ServiceDescriptorProto, global::Google.ProtocolBuffers.DescriptorProtos.ServiceDescriptorProto.Builder&gt;(internal__static_google_protobuf_ServiceDescriptorProto__Descriptor,
-            new string[] { &quot;Name&quot;, &quot;Method&quot;, &quot;Options&quot;, });
-    internal static readonly pbd::MessageDescriptor internal__static_google_protobuf_MethodDescriptorProto__Descriptor
-        = Descriptor.MessageTypes[7];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.DescriptorProtos.MethodDescriptorProto, global::Google.ProtocolBuffers.DescriptorProtos.MethodDescriptorProto.Builder&gt; internal__static_google_protobuf_MethodDescriptorProto__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.DescriptorProtos.MethodDescriptorProto, global::Google.ProtocolBuffers.DescriptorProtos.MethodDescriptorProto.Builder&gt;(internal__static_google_protobuf_MethodDescriptorProto__Descriptor,
-            new string[] { &quot;Name&quot;, &quot;InputType&quot;, &quot;OutputType&quot;, &quot;Options&quot;, });
-    internal static readonly pbd::MessageDescriptor internal__static_google_protobuf_FileOptions__Descriptor
-        = Descriptor.MessageTypes[8];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.DescriptorProtos.FileOptions, global::Google.ProtocolBuffers.DescriptorProtos.FileOptions.Builder&gt; internal__static_google_protobuf_FileOptions__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.DescriptorProtos.FileOptions, global::Google.ProtocolBuffers.DescriptorProtos.FileOptions.Builder&gt;(internal__static_google_protobuf_FileOptions__Descriptor,
-            new string[] { &quot;JavaPackage&quot;, &quot;JavaOuterClassname&quot;, &quot;JavaMultipleFiles&quot;, &quot;OptimizeFor&quot;, &quot;UninterpretedOption&quot;, });
-    internal static readonly pbd::MessageDescriptor internal__static_google_protobuf_MessageOptions__Descriptor
-        = Descriptor.MessageTypes[9];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.DescriptorProtos.MessageOptions, global::Google.ProtocolBuffers.DescriptorProtos.MessageOptions.Builder&gt; internal__static_google_protobuf_MessageOptions__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.DescriptorProtos.MessageOptions, global::Google.ProtocolBuffers.DescriptorProtos.MessageOptions.Builder&gt;(internal__static_google_protobuf_MessageOptions__Descriptor,
-            new string[] { &quot;MessageSetWireFormat&quot;, &quot;UninterpretedOption&quot;, });
-    internal static readonly pbd::MessageDescriptor internal__static_google_protobuf_FieldOptions__Descriptor
-        = Descriptor.MessageTypes[10];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.DescriptorProtos.FieldOptions, global::Google.ProtocolBuffers.DescriptorProtos.FieldOptions.Builder&gt; internal__static_google_protobuf_FieldOptions__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.DescriptorProtos.FieldOptions, global::Google.ProtocolBuffers.DescriptorProtos.FieldOptions.Builder&gt;(internal__static_google_protobuf_FieldOptions__Descriptor,
-            new string[] { &quot;Ctype&quot;, &quot;Packed&quot;, &quot;ExperimentalMapKey&quot;, &quot;UninterpretedOption&quot;, });
-    internal static readonly pbd::MessageDescriptor internal__static_google_protobuf_EnumOptions__Descriptor
-        = Descriptor.MessageTypes[11];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.DescriptorProtos.EnumOptions, global::Google.ProtocolBuffers.DescriptorProtos.EnumOptions.Builder&gt; internal__static_google_protobuf_EnumOptions__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.DescriptorProtos.EnumOptions, global::Google.ProtocolBuffers.DescriptorProtos.EnumOptions.Builder&gt;(internal__static_google_protobuf_EnumOptions__Descriptor,
-            new string[] { &quot;UninterpretedOption&quot;, });
-    internal static readonly pbd::MessageDescriptor internal__static_google_protobuf_EnumValueOptions__Descriptor
-        = Descriptor.MessageTypes[12];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.DescriptorProtos.EnumValueOptions, global::Google.ProtocolBuffers.DescriptorProtos.EnumValueOptions.Builder&gt; internal__static_google_protobuf_EnumValueOptions__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.DescriptorProtos.EnumValueOptions, global::Google.ProtocolBuffers.DescriptorProtos.EnumValueOptions.Builder&gt;(internal__static_google_protobuf_EnumValueOptions__Descriptor,
-            new string[] { &quot;UninterpretedOption&quot;, });
-    internal static readonly pbd::MessageDescriptor internal__static_google_protobuf_ServiceOptions__Descriptor
-        = Descriptor.MessageTypes[13];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.DescriptorProtos.ServiceOptions, global::Google.ProtocolBuffers.DescriptorProtos.ServiceOptions.Builder&gt; internal__static_google_protobuf_ServiceOptions__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.DescriptorProtos.ServiceOptions, global::Google.ProtocolBuffers.DescriptorProtos.ServiceOptions.Builder&gt;(internal__static_google_protobuf_ServiceOptions__Descriptor,
-            new string[] { &quot;UninterpretedOption&quot;, });
-    internal static readonly pbd::MessageDescriptor internal__static_google_protobuf_MethodOptions__Descriptor
-        = Descriptor.MessageTypes[14];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.DescriptorProtos.MethodOptions, global::Google.ProtocolBuffers.DescriptorProtos.MethodOptions.Builder&gt; internal__static_google_protobuf_MethodOptions__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.DescriptorProtos.MethodOptions, global::Google.ProtocolBuffers.DescriptorProtos.MethodOptions.Builder&gt;(internal__static_google_protobuf_MethodOptions__Descriptor,
-            new string[] { &quot;UninterpretedOption&quot;, });
-    internal static readonly pbd::MessageDescriptor internal__static_google_protobuf_UninterpretedOption__Descriptor
-        = Descriptor.MessageTypes[15];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption, global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption.Builder&gt; internal__static_google_protobuf_UninterpretedOption__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption, global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption.Builder&gt;(internal__static_google_protobuf_UninterpretedOption__Descriptor,
-            new string[] { &quot;Name&quot;, &quot;IdentifierValue&quot;, &quot;PositiveIntValue&quot;, &quot;NegativeIntValue&quot;, &quot;DoubleValue&quot;, &quot;StringValue&quot;, });
-    internal static readonly pbd::MessageDescriptor internal__static_google_protobuf_UninterpretedOption_NamePart__Descriptor
-        = internal__static_google_protobuf_UninterpretedOption__Descriptor.NestedTypes[0];
-    internal static pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption.Types.NamePart, global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption.Types.NamePart.Builder&gt; internal__static_google_protobuf_UninterpretedOption_NamePart__FieldAccessorTable
-        = new pb::FieldAccess.FieldAccessorTable&lt;global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption.Types.NamePart, global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption.Types.NamePart.Builder&gt;(internal__static_google_protobuf_UninterpretedOption_NamePart__Descriptor,
-            new string[] { &quot;NamePart_&quot;, &quot;IsExtension&quot;, });
-    #endregion
   }
   #region Messages
   public sealed partial class FileDescriptorSet : pb::GeneratedMessage&lt;FileDescriptorSet, FileDescriptorSet.Builder&gt; {
@@ -426,6 +457,9 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
         return this;
       }
     }
+    static FileDescriptorSet() {
+      pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.Descriptor;
+    }
   }
   
   public sealed partial class FileDescriptorProto : pb::GeneratedMessage&lt;FileDescriptorProto, FileDescriptorProto.Builder&gt; {
@@ -1084,6 +1118,9 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
         return this;
       }
     }
+    static FileDescriptorProto() {
+      pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.Descriptor;
+    }
   }
   
   public sealed partial class DescriptorProto : pb::GeneratedMessage&lt;DescriptorProto, DescriptorProto.Builder&gt; {
@@ -1360,6 +1397,9 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
             return this;
           }
         }
+        static ExtensionRange() {
+          pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.Descriptor;
+        }
       }
       
     }
@@ -1962,6 +2002,9 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
         return this;
       }
     }
+    static DescriptorProto() {
+      pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.Descriptor;
+    }
   }
   
   public sealed partial class FieldDescriptorProto : pb::GeneratedMessage&lt;FieldDescriptorProto, FieldDescriptorProto.Builder&gt; {
@@ -2538,6 +2581,9 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
         return this;
       }
     }
+    static FieldDescriptorProto() {
+      pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.Descriptor;
+    }
   }
   
   public sealed partial class EnumDescriptorProto : pb::GeneratedMessage&lt;EnumDescriptorProto, EnumDescriptorProto.Builder&gt; {
@@ -2886,6 +2932,9 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
         return this;
       }
     }
+    static EnumDescriptorProto() {
+      pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.Descriptor;
+    }
   }
   
   public sealed partial class EnumValueDescriptorProto : pb::GeneratedMessage&lt;EnumValueDescriptorProto, EnumValueDescriptorProto.Builder&gt; {
@@ -3206,6 +3255,9 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
         return this;
       }
     }
+    static EnumValueDescriptorProto() {
+      pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.Descriptor;
+    }
   }
   
   public sealed partial class ServiceDescriptorProto : pb::GeneratedMessage&lt;ServiceDescriptorProto, ServiceDescriptorProto.Builder&gt; {
@@ -3554,6 +3606,9 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
         return this;
       }
     }
+    static ServiceDescriptorProto() {
+      pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.Descriptor;
+    }
   }
   
   public sealed partial class MethodDescriptorProto : pb::GeneratedMessage&lt;MethodDescriptorProto, MethodDescriptorProto.Builder&gt; {
@@ -3917,6 +3972,9 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
         return this;
       }
     }
+    static MethodDescriptorProto() {
+      pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.Descriptor;
+    }
   }
   
   public sealed partial class FileOptions : pb::ExtendableMessage&lt;FileOptions, FileOptions.Builder&gt; {
@@ -3983,7 +4041,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
     
     public const int OptimizeForFieldNumber = 9;
     private bool hasOptimizeFor;
-    private global::Google.ProtocolBuffers.DescriptorProtos.FileOptions.Types.OptimizeMode optimizeFor_ = global::Google.ProtocolBuffers.DescriptorProtos.FileOptions.Types.OptimizeMode.CODE_SIZE;
+    private global::Google.ProtocolBuffers.DescriptorProtos.FileOptions.Types.OptimizeMode optimizeFor_ = global::Google.ProtocolBuffers.DescriptorProtos.FileOptions.Types.OptimizeMode.SPEED;
     public bool HasOptimizeFor {
       get { return hasOptimizeFor; }
     }
@@ -4303,7 +4361,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
       }
       public Builder ClearOptimizeFor() {
         result.hasOptimizeFor = false;
-        result.optimizeFor_ = global::Google.ProtocolBuffers.DescriptorProtos.FileOptions.Types.OptimizeMode.CODE_SIZE;
+        result.optimizeFor_ = global::Google.ProtocolBuffers.DescriptorProtos.FileOptions.Types.OptimizeMode.SPEED;
         return this;
       }
       
@@ -4345,6 +4403,9 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
         return this;
       }
     }
+    static FileOptions() {
+      pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.Descriptor;
+    }
   }
   
   public sealed partial class MessageOptions : pb::ExtendableMessage&lt;MessageOptions, MessageOptions.Builder&gt; {
@@ -4630,6 +4691,9 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
         return this;
       }
     }
+    static MessageOptions() {
+      pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.Descriptor;
+    }
   }
   
   public sealed partial class FieldOptions : pb::ExtendableMessage&lt;FieldOptions, FieldOptions.Builder&gt; {
@@ -4684,6 +4748,16 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
       get { return packed_; }
     }
     
+    public const int DeprecatedFieldNumber = 3;
+    private bool hasDeprecated;
+    private bool deprecated_ = false;
+    public bool HasDeprecated {
+      get { return hasDeprecated; }
+    }
+    public bool Deprecated {
+      get { return deprecated_; }
+    }
+    
     public const int ExperimentalMapKeyFieldNumber = 9;
     private bool hasExperimentalMapKey;
     private string experimentalMapKey_ = &quot;&quot;;
@@ -4724,6 +4798,9 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
       if (HasPacked) {
         output.WriteBool(2, Packed);
       }
+      if (HasDeprecated) {
+        output.WriteBool(3, Deprecated);
+      }
       if (HasExperimentalMapKey) {
         output.WriteString(9, ExperimentalMapKey);
       }
@@ -4747,6 +4824,9 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
         if (HasPacked) {
           size += pb::CodedOutputStream.ComputeBoolSize(2, Packed);
         }
+        if (HasDeprecated) {
+          size += pb::CodedOutputStream.ComputeBoolSize(3, Deprecated);
+        }
         if (HasExperimentalMapKey) {
           size += pb::CodedOutputStream.ComputeStringSize(9, ExperimentalMapKey);
         }
@@ -4853,6 +4933,9 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
         if (other.HasPacked) {
           Packed = other.Packed;
         }
+        if (other.HasDeprecated) {
+          Deprecated = other.Deprecated;
+        }
         if (other.HasExperimentalMapKey) {
           ExperimentalMapKey = other.ExperimentalMapKey;
         }
@@ -4908,6 +4991,10 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
               Packed = input.ReadBool();
               break;
             }
+            case 24: {
+              Deprecated = input.ReadBool();
+              break;
+            }
             case 74: {
               ExperimentalMapKey = input.ReadString();
               break;
@@ -4959,6 +5046,24 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
         return this;
       }
       
+      public bool HasDeprecated {
+        get { return result.HasDeprecated; }
+      }
+      public bool Deprecated {
+        get { return result.Deprecated; }
+        set { SetDeprecated(value); }
+      }
+      public Builder SetDeprecated(bool value) {
+        result.hasDeprecated = true;
+        result.deprecated_ = value;
+        return this;
+      }
+      public Builder ClearDeprecated() {
+        result.hasDeprecated = false;
+        result.deprecated_ = false;
+        return this;
+      }
+      
       public bool HasExperimentalMapKey {
         get { return result.HasExperimentalMapKey; }
       }
@@ -5016,6 +5121,9 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
         return this;
       }
     }
+    static FieldOptions() {
+      pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.Descriptor;
+    }
   }
   
   public sealed partial class EnumOptions : pb::ExtendableMessage&lt;EnumOptions, EnumOptions.Builder&gt; {
@@ -5260,6 +5368,9 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
         return this;
       }
     }
+    static EnumOptions() {
+      pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.Descriptor;
+    }
   }
   
   public sealed partial class EnumValueOptions : pb::ExtendableMessage&lt;EnumValueOptions, EnumValueOptions.Builder&gt; {
@@ -5504,6 +5615,9 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
         return this;
       }
     }
+    static EnumValueOptions() {
+      pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.Descriptor;
+    }
   }
   
   public sealed partial class ServiceOptions : pb::ExtendableMessage&lt;ServiceOptions, ServiceOptions.Builder&gt; {
@@ -5748,6 +5862,9 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
         return this;
       }
     }
+    static ServiceOptions() {
+      pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.Descriptor;
+    }
   }
   
   public sealed partial class MethodOptions : pb::ExtendableMessage&lt;MethodOptions, MethodOptions.Builder&gt; {
@@ -5992,6 +6109,9 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
         return this;
       }
     }
+    static MethodOptions() {
+      pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.Descriptor;
+    }
   }
   
   public sealed partial class UninterpretedOption : pb::GeneratedMessage&lt;UninterpretedOption, UninterpretedOption.Builder&gt; {
@@ -6040,7 +6160,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
           get { return global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_UninterpretedOption_NamePart__FieldAccessorTable; }
         }
         
-        public const int NamePartFieldNumber = 1;
+        public const int NamePart_FieldNumber = 1;
         private bool hasNamePart_;
         private string namePart_ = &quot;&quot;;
         public bool HasNamePart_ {
@@ -6271,6 +6391,9 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
             return this;
           }
         }
+        static NamePart() {
+          pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.Descriptor;
+        }
       }
       
     }
@@ -6698,6 +6821,9 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
         return this;
       }
     }
+    static UninterpretedOption() {
+      pbd::FileDescriptor descriptor = global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.Descriptor;
+    }
   }
   
   #endregion</diff>
      <filename>src/ProtocolBuffers/DescriptorProtos/DescriptorProtoFile.cs</filename>
    </modified>
    <modified>
      <diff>@@ -40,7 +40,7 @@ namespace Google.ProtocolBuffers.Descriptors {
   public abstract class DescriptorBase&lt;TProto, TOptions&gt; : IDescriptor&lt;TProto&gt;
       where TProto : IMessage, IDescriptorProto&lt;TOptions&gt; {
 
-    private readonly TProto proto;
+    private TProto proto;
     private readonly FileDescriptor file;
     private readonly string fullName;
 
@@ -50,6 +50,10 @@ namespace Google.ProtocolBuffers.Descriptors {
       this.fullName = fullName;
     }
 
+    internal virtual void ReplaceProto(TProto newProto) {
+      this.proto = newProto;
+    }
+
     protected static string ComputeFullName(FileDescriptor file, MessageDescriptor parent, string name) {
       if (parent != null) {
         return parent.FullName + &quot;.&quot; + name;
@@ -65,7 +69,7 @@ namespace Google.ProtocolBuffers.Descriptors {
     }
 
     /// &lt;summary&gt;
-    /// Returns the protocol buffer form of this descriptor
+    /// Returns the protocol buffer form of this descriptor.
     /// &lt;/summary&gt;
     public TProto Proto {
       get { return proto; }</diff>
      <filename>src/ProtocolBuffers/Descriptors/DescriptorBase.cs</filename>
    </modified>
    <modified>
      <diff>@@ -29,6 +29,7 @@
 // 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.Collections.Generic;
 using Google.ProtocolBuffers.DescriptorProtos;
 
@@ -88,5 +89,12 @@ namespace Google.ProtocolBuffers.Descriptors {
     internal EnumValueDescriptor FindValueByName(string name) {
       return File.DescriptorPool.FindSymbol&lt;EnumValueDescriptor&gt;(FullName + &quot;.&quot; + name);
     }
+
+    internal override void ReplaceProto(EnumDescriptorProto newProto) {
+      base.ReplaceProto(newProto);
+      for (int i = 0; i &lt; values.Count; i++) {
+        values[i].ReplaceProto(newProto.GetValue(i));
+      }
+    }
   }
 }</diff>
      <filename>src/ProtocolBuffers/Descriptors/EnumDescriptor.cs</filename>
    </modified>
    <modified>
      <diff>@@ -225,7 +225,7 @@ namespace Google.ProtocolBuffers.Descriptors {
     }
 
     /// &lt;summary&gt;
-    /// Returns the C#-specific options for this file descriptor. This will always be
+    /// Returns the C#-specific options for this field descriptor. This will always be
     /// completely filled in.
     /// &lt;/summary&gt;
     public CSharpFieldOptions CSharpOptions {</diff>
      <filename>src/ProtocolBuffers/Descriptors/FieldDescriptor.cs</filename>
    </modified>
    <modified>
      <diff>@@ -43,7 +43,7 @@ namespace Google.ProtocolBuffers.Descriptors {
   /// &lt;/summary&gt;
   public sealed class FileDescriptor : IDescriptor&lt;FileDescriptorProto&gt; {
 
-    private readonly FileDescriptorProto proto;
+    private FileDescriptorProto proto;
     private readonly IList&lt;MessageDescriptor&gt; messageTypes;
     private readonly IList&lt;EnumDescriptor&gt; enumTypes;
     private readonly IList&lt;ServiceDescriptor&gt; services;
@@ -275,9 +275,9 @@ namespace Google.ProtocolBuffers.Descriptors {
       }
       for (int i = 0; i &lt; proto.DependencyCount; i++) {
         if (dependencies[i].Name != proto.DependencyList[i]) {
-          /*throw new DescriptorValidationException(result,
+          throw new DescriptorValidationException(result,
             &quot;Dependencies passed to FileDescriptor.BuildFrom() don't match &quot; +
-            &quot;those listed in the FileDescriptorProto.&quot;);*/
+            &quot;those listed in the FileDescriptorProto.&quot;);
         }
       }
 
@@ -306,12 +306,89 @@ namespace Google.ProtocolBuffers.Descriptors {
     /// &lt;summary&gt;
     /// This method is to be called by generated code only.  It is equivalent
     /// to BuildFrom except that the FileDescriptorProto is encoded in
-    /// protocol buffer wire format.
+    /// protocol buffer wire format. This overload is maintained for backward
+    /// compatibility with source code generated before the custom options were available
+    /// (and working).
     /// &lt;/summary&gt;
+    public static FileDescriptor InternalBuildGeneratedFileFrom(byte[] descriptorData, FileDescriptor[] dependencies) {
+      return InternalBuildGeneratedFileFrom(descriptorData, dependencies, x =&gt; null);
+    }
+
+    /// &lt;summary&gt;
+    /// This delegate should be used by generated code only. When calling
+    /// FileDescriptor.InternalBuildGeneratedFileFrom, the caller can provide
+    /// a callback which assigns the global variables defined in the generated code
+    /// which point at parts of the FileDescriptor. The callback returns an
+    /// Extension Registry which contains any extensions which might be used in
+    /// the descriptor - that is, extensions of the various &quot;Options&quot; messages defined
+    /// in descriptor.proto. The callback may also return null to indicate that
+    /// no extensions are used in the descriptor.
+    /// &lt;/summary&gt;
+    /// &lt;param name=&quot;descriptor&quot;&gt;&lt;/param&gt;
+    /// &lt;returns&gt;&lt;/returns&gt;
+    public delegate ExtensionRegistry InternalDescriptorAssigner(FileDescriptor descriptor);
+
     public static FileDescriptor InternalBuildGeneratedFileFrom(byte[] descriptorData,
-        FileDescriptor[] dependencies) {
-      FileDescriptorProto proto = FileDescriptorProto.ParseFrom(descriptorData);
-      return BuildFrom(proto, dependencies);      
+      FileDescriptor[] dependencies,InternalDescriptorAssigner descriptorAssigner) {
+      
+      FileDescriptorProto proto;
+      try {
+        proto = FileDescriptorProto.ParseFrom(descriptorData);
+      } catch (InvalidProtocolBufferException e) {
+        throw new ArgumentException(&quot;Failed to parse protocol buffer descriptor for generated code.&quot;, e);
+      }
+
+      FileDescriptor result;
+      try {
+        result = BuildFrom(proto, dependencies);
+      } catch (DescriptorValidationException e) {
+        throw new ArgumentException(&quot;Invalid embedded descriptor for \&quot;&quot; + proto.Name + &quot;\&quot;.&quot;, e);
+      }
+
+      ExtensionRegistry registry = descriptorAssigner(result);
+
+      if (registry != null) {
+        // We must re-parse the proto using the registry.
+        try {
+          proto = FileDescriptorProto.ParseFrom(descriptorData, registry);
+        } catch (InvalidProtocolBufferException e) {
+          throw new ArgumentException(&quot;Failed to parse protocol buffer descriptor for generated code.&quot;, e);
+        }
+
+        result.ReplaceProto(proto);
+      }
+      return result;
+    }
+
+
+    /// &lt;summary&gt;
+    /// Replace our FileDescriptorProto with the given one, which is
+    /// identical except that it might contain extensions that weren't present
+    /// in the original. This method is needed for bootstrapping when a file
+    /// defines custom options. The options may be defined in the file itself,
+    /// so we can't actually parse them until we've constructed the descriptors,
+    /// but to construct the decsriptors we have to have parsed the descriptor
+    /// protos. So, we have to parse the descriptor protos a second time after
+    /// constructing the descriptors.
+    /// &lt;/summary&gt;
+    private void ReplaceProto(FileDescriptorProto newProto) {
+      proto = newProto;
+
+      for (int i = 0; i &lt; messageTypes.Count; i++) {
+        messageTypes[i].ReplaceProto(proto.GetMessageType(i));
+      }
+
+      for (int i = 0; i &lt; enumTypes.Count; i++) {
+        enumTypes[i].ReplaceProto(proto.GetEnumType(i));
+      }
+
+      for (int i = 0; i &lt; services.Count; i++) {
+        services[i].ReplaceProto(proto.GetService(i));
+      }
+
+      for (int i = 0; i &lt; extensions.Count; i++) {
+        extensions[i].ReplaceProto(proto.GetExtension(i));
+      }
     }
   }
 }</diff>
      <filename>src/ProtocolBuffers/Descriptors/FileDescriptor.cs</filename>
    </modified>
    <modified>
      <diff>@@ -29,6 +29,7 @@
 // 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.Collections.Generic;
 using Google.ProtocolBuffers.DescriptorProtos;
 
@@ -123,6 +124,15 @@ namespace Google.ProtocolBuffers.Descriptors {
     }
 
     /// &lt;summary&gt;
+    /// Finds a field by field name.
+    /// &lt;/summary&gt;
+    /// &lt;param name=&quot;name&quot;&gt;The unqualified name of the field (e.g. &quot;foo&quot;).&lt;/param&gt;
+    /// &lt;returns&gt;The field's descriptor, or null if not found.&lt;/returns&gt;
+    public FieldDescriptor FindFieldByName(String name) {
+      return File.DescriptorPool.FindSymbol&lt;FieldDescriptor&gt;(FullName  + &quot;.&quot; + name);
+    }
+
+    /// &lt;summary&gt;
     /// Finds a field by field number.
     /// &lt;/summary&gt;
     /// &lt;param name=&quot;number&quot;&gt;The field number within this message type.&lt;/param&gt;
@@ -132,6 +142,22 @@ namespace Google.ProtocolBuffers.Descriptors {
     }
 
     /// &lt;summary&gt;
+    /// Finds a field by its property name, as it would be generated by protogen.
+    /// &lt;/summary&gt;
+    /// &lt;param name=&quot;propertyName&quot;&gt;The property name within this message type.&lt;/param&gt;
+    /// &lt;returns&gt;The field's descriptor, or null if not found.&lt;/returns&gt;
+    public FieldDescriptor FindFieldByPropertyName(string propertyName) {
+      // For reasonably short messages, this will be more efficient than a dictionary
+      // lookup. It also means we don't need to do things lazily with locks etc.
+      foreach (FieldDescriptor field in Fields) {
+        if (field.CSharpOptions.PropertyName == propertyName) {
+          return field;
+        }
+      }
+      return null;
+    }
+
+    /// &lt;summary&gt;
     /// Finds a nested descriptor by name. The is valid for fields, nested
     /// message types and enums.
     /// &lt;/summary&gt;
@@ -198,5 +224,28 @@ namespace Google.ProtocolBuffers.Descriptors {
       }
       return false;
     }
+
+    /// &lt;summary&gt;
+    /// See FileDescriptor.ReplaceProto
+    /// &lt;/summary&gt;
+    internal override void ReplaceProto(DescriptorProto newProto) {
+      base.ReplaceProto(newProto);
+
+      for (int i = 0; i &lt; nestedTypes.Count; i++) {
+        nestedTypes[i].ReplaceProto(newProto.GetNestedType(i));
+      }
+
+      for (int i = 0; i &lt; enumTypes.Count; i++) {
+        enumTypes[i].ReplaceProto(newProto.GetEnumType(i));
+      }
+
+      for (int i = 0; i &lt; fields.Count; i++) {
+        fields[i].ReplaceProto(newProto.GetField(i));
+      }
+
+      for (int i = 0; i &lt; extensions.Count; i++) {
+        extensions[i].ReplaceProto(newProto.GetExtension(i));
+      }
+    }
   }
 }</diff>
      <filename>src/ProtocolBuffers/Descriptors/MessageDescriptor.cs</filename>
    </modified>
    <modified>
      <diff>@@ -72,5 +72,12 @@ namespace Google.ProtocolBuffers.Descriptors {
         method.CrossLink();
       }
     }
+
+    internal override void ReplaceProto(ServiceDescriptorProto newProto) {
+      base.ReplaceProto(newProto);
+      for (int i = 0; i &lt; methods.Count; i++) {
+        methods[i].ReplaceProto(newProto.GetMethod(i));
+      }
+    }
   }
 }</diff>
      <filename>src/ProtocolBuffers/Descriptors/ServiceDescriptor.cs</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>1455ba285ffc47ac49ebc3dd4dc6f61ae5b6fbef</id>
    </parent>
  </parents>
  <author>
    <name>Jon Skeet</name>
    <email>skeet@pobox.com</email>
  </author>
  <url>http://github.com/jskeet/dotnet-protobufs/commit/33bd659e8e87f08e158f99b90d783c0cb2d06331</url>
  <id>33bd659e8e87f08e158f99b90d783c0cb2d06331</id>
  <committed-date>2009-06-05T11:29:36-07:00</committed-date>
  <authored-date>2009-06-05T11:29:36-07:00</authored-date>
  <message>Fix custom options behaviour</message>
  <tree>86cc32075c445264bd28a582f1a873913664b968</tree>
  <committer>
    <name>Jon Skeet</name>
    <email>skeet@pobox.com</email>
  </committer>
</commit>
