Completed addition and testing of new add_serializable option.
diff --git a/src/ProtocolBuffers/DescriptorProtos/CSharpOptions.cs b/src/ProtocolBuffers/DescriptorProtos/CSharpOptions.cs
index 853b0e7..056eb98 100644
--- a/src/ProtocolBuffers/DescriptorProtos/CSharpOptions.cs
+++ b/src/ProtocolBuffers/DescriptorProtos/CSharpOptions.cs
@@ -52,36 +52,37 @@
       byte[] descriptorData = global::System.Convert.FromBase64String(

           "CiRnb29nbGUvcHJvdG9idWYvY3NoYXJwX29wdGlvbnMucHJvdG8SD2dvb2ds" + 

           "ZS5wcm90b2J1ZhogZ29vZ2xlL3Byb3RvYnVmL2Rlc2NyaXB0b3IucHJvdG8i" + 

-          "tgMKEUNTaGFycEZpbGVPcHRpb25zEhEKCW5hbWVzcGFjZRgBIAEoCRIaChJ1" + 

+          "1wMKEUNTaGFycEZpbGVPcHRpb25zEhEKCW5hbWVzcGFjZRgBIAEoCRIaChJ1" + 

           "bWJyZWxsYV9jbGFzc25hbWUYAiABKAkSHAoOcHVibGljX2NsYXNzZXMYAyAB" + 

           "KAg6BHRydWUSFgoObXVsdGlwbGVfZmlsZXMYBCABKAgSFAoMbmVzdF9jbGFz" + 

           "c2VzGAUgASgIEhYKDmNvZGVfY29udHJhY3RzGAYgASgIEiQKHGV4cGFuZF9u" + 

           "YW1lc3BhY2VfZGlyZWN0b3JpZXMYByABKAgSHAoOY2xzX2NvbXBsaWFuY2UY" + 

-          "CCABKAg6BHRydWUSHAoOZmlsZV9leHRlbnNpb24Y3QEgASgJOgMuY3MSGwoS" + 

-          "dW1icmVsbGFfbmFtZXNwYWNlGN4BIAEoCRIcChBvdXRwdXRfZGlyZWN0b3J5" + 

-          "GN8BIAEoCToBLhImChZpZ25vcmVfZ29vZ2xlX3Byb3RvYnVmGOABIAEoCDoF" + 

-          "ZmFsc2USSQoWc2VydmljZV9nZW5lcmF0b3JfdHlwZRjhASABKA4yIi5nb29n" + 

-          "bGUucHJvdG9idWYuQ1NoYXJwU2VydmljZVR5cGU6BE5PTkUiKwoSQ1NoYXJw" + 

-          "RmllbGRPcHRpb25zEhUKDXByb3BlcnR5X25hbWUYASABKAkiLAoUQ1NoYXJw" + 

-          "U2VydmljZU9wdGlvbnMSFAoMaW50ZXJmYWNlX2lkGAEgASgJIioKE0NTaGFy" + 

-          "cE1ldGhvZE9wdGlvbnMSEwoLZGlzcGF0Y2hfaWQYASABKAUqSwoRQ1NoYXJw" + 

-          "U2VydmljZVR5cGUSCAoETk9ORRAAEgsKB0dFTkVSSUMQARINCglJTlRFUkZB" + 

-          "Q0UQAhIQCgxJUlBDRElTUEFUQ0gQAzpeChNjc2hhcnBfZmlsZV9vcHRpb25z" + 

-          "EhwuZ29vZ2xlLnByb3RvYnVmLkZpbGVPcHRpb25zGOgHIAEoCzIiLmdvb2ds" + 

-          "ZS5wcm90b2J1Zi5DU2hhcnBGaWxlT3B0aW9uczphChRjc2hhcnBfZmllbGRf" + 

-          "b3B0aW9ucxIdLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE9wdGlvbnMY6AcgASgL" + 

-          "MiMuZ29vZ2xlLnByb3RvYnVmLkNTaGFycEZpZWxkT3B0aW9uczpnChZjc2hh" + 

-          "cnBfc2VydmljZV9vcHRpb25zEh8uZ29vZ2xlLnByb3RvYnVmLlNlcnZpY2VP" + 

-          "cHRpb25zGOgHIAEoCzIlLmdvb2dsZS5wcm90b2J1Zi5DU2hhcnBTZXJ2aWNl" + 

-          "T3B0aW9uczpkChVjc2hhcnBfbWV0aG9kX29wdGlvbnMSHi5nb29nbGUucHJv" + 

-          "dG9idWYuTWV0aG9kT3B0aW9ucxjoByABKAsyJC5nb29nbGUucHJvdG9idWYu" + 

-          "Q1NoYXJwTWV0aG9kT3B0aW9ucw==");

+          "CCABKAg6BHRydWUSHwoQYWRkX3NlcmlhbGl6YWJsZRgJIAEoCDoFZmFsc2US" + 

+          "HAoOZmlsZV9leHRlbnNpb24Y3QEgASgJOgMuY3MSGwoSdW1icmVsbGFfbmFt" + 

+          "ZXNwYWNlGN4BIAEoCRIcChBvdXRwdXRfZGlyZWN0b3J5GN8BIAEoCToBLhIm" + 

+          "ChZpZ25vcmVfZ29vZ2xlX3Byb3RvYnVmGOABIAEoCDoFZmFsc2USSQoWc2Vy" + 

+          "dmljZV9nZW5lcmF0b3JfdHlwZRjhASABKA4yIi5nb29nbGUucHJvdG9idWYu" + 

+          "Q1NoYXJwU2VydmljZVR5cGU6BE5PTkUiKwoSQ1NoYXJwRmllbGRPcHRpb25z" + 

+          "EhUKDXByb3BlcnR5X25hbWUYASABKAkiLAoUQ1NoYXJwU2VydmljZU9wdGlv" + 

+          "bnMSFAoMaW50ZXJmYWNlX2lkGAEgASgJIioKE0NTaGFycE1ldGhvZE9wdGlv" + 

+          "bnMSEwoLZGlzcGF0Y2hfaWQYASABKAUqSwoRQ1NoYXJwU2VydmljZVR5cGUS" + 

+          "CAoETk9ORRAAEgsKB0dFTkVSSUMQARINCglJTlRFUkZBQ0UQAhIQCgxJUlBD" + 

+          "RElTUEFUQ0gQAzpeChNjc2hhcnBfZmlsZV9vcHRpb25zEhwuZ29vZ2xlLnBy" + 

+          "b3RvYnVmLkZpbGVPcHRpb25zGOgHIAEoCzIiLmdvb2dsZS5wcm90b2J1Zi5D" + 

+          "U2hhcnBGaWxlT3B0aW9uczphChRjc2hhcnBfZmllbGRfb3B0aW9ucxIdLmdv" + 

+          "b2dsZS5wcm90b2J1Zi5GaWVsZE9wdGlvbnMY6AcgASgLMiMuZ29vZ2xlLnBy" + 

+          "b3RvYnVmLkNTaGFycEZpZWxkT3B0aW9uczpnChZjc2hhcnBfc2VydmljZV9v" + 

+          "cHRpb25zEh8uZ29vZ2xlLnByb3RvYnVmLlNlcnZpY2VPcHRpb25zGOgHIAEo" + 

+          "CzIlLmdvb2dsZS5wcm90b2J1Zi5DU2hhcnBTZXJ2aWNlT3B0aW9uczpkChVj" + 

+          "c2hhcnBfbWV0aG9kX29wdGlvbnMSHi5nb29nbGUucHJvdG9idWYuTWV0aG9k" + 

+          "T3B0aW9ucxjoByABKAsyJC5nb29nbGUucHJvdG9idWYuQ1NoYXJwTWV0aG9k" + 

+          "T3B0aW9ucw==");

       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<global::Google.ProtocolBuffers.DescriptorProtos.CSharpFileOptions, global::Google.ProtocolBuffers.DescriptorProtos.CSharpFileOptions.Builder>(internal__static_google_protobuf_CSharpFileOptions__Descriptor,

-                new string[] { "Namespace", "UmbrellaClassname", "PublicClasses", "MultipleFiles", "NestClasses", "CodeContracts", "ExpandNamespaceDirectories", "ClsCompliance", "FileExtension", "UmbrellaNamespace", "OutputDirectory", "IgnoreGoogleProtobuf", "ServiceGeneratorType", });

+                new string[] { "Namespace", "UmbrellaClassname", "PublicClasses", "MultipleFiles", "NestClasses", "CodeContracts", "ExpandNamespaceDirectories", "ClsCompliance", "AddSerializable", "FileExtension", "UmbrellaNamespace", "OutputDirectory", "IgnoreGoogleProtobuf", "ServiceGeneratorType", });

         internal__static_google_protobuf_CSharpFieldOptions__Descriptor = Descriptor.MessageTypes[1];

         internal__static_google_protobuf_CSharpFieldOptions__FieldAccessorTable = 

             new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.DescriptorProtos.CSharpFieldOptions, global::Google.ProtocolBuffers.DescriptorProtos.CSharpFieldOptions.Builder>(internal__static_google_protobuf_CSharpFieldOptions__Descriptor,

@@ -126,8 +127,8 @@
   [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")]

   public sealed partial class CSharpFileOptions : pb::GeneratedMessage<CSharpFileOptions, CSharpFileOptions.Builder> {

     private static readonly CSharpFileOptions defaultInstance = new Builder().BuildPartial();

-    private static readonly string[] _cSharpFileOptionsFieldNames = new string[] { "cls_compliance", "code_contracts", "expand_namespace_directories", "file_extension", "ignore_google_protobuf", "multiple_files", "namespace", "nest_classes", "output_directory", "public_classes", "service_generator_type", "umbrella_classname", "umbrella_namespace" };

-    private static readonly uint[] _cSharpFileOptionsFieldTags = new uint[] { 64, 48, 56, 1770, 1792, 32, 10, 40, 1786, 24, 1800, 18, 1778 };

+    private static readonly string[] _cSharpFileOptionsFieldNames = new string[] { "add_serializable", "cls_compliance", "code_contracts", "expand_namespace_directories", "file_extension", "ignore_google_protobuf", "multiple_files", "namespace", "nest_classes", "output_directory", "public_classes", "service_generator_type", "umbrella_classname", "umbrella_namespace" };

+    private static readonly uint[] _cSharpFileOptionsFieldTags = new uint[] { 72, 64, 48, 56, 1770, 1792, 32, 10, 40, 1786, 24, 1800, 18, 1778 };

     public static CSharpFileOptions DefaultInstance {

       get { return defaultInstance; }

     }

@@ -228,6 +229,16 @@
       get { return clsCompliance_; }

     }

     

+    public const int AddSerializableFieldNumber = 9;

+    private bool hasAddSerializable;

+    private bool addSerializable_;

+    public bool HasAddSerializable {

+      get { return hasAddSerializable; }

+    }

+    public bool AddSerializable {

+      get { return addSerializable_; }

+    }

+    

     public const int FileExtensionFieldNumber = 221;

     private bool hasFileExtension;

     private string fileExtension_ = ".cs";

@@ -288,43 +299,46 @@
       int size = SerializedSize;

       string[] field_names = _cSharpFileOptionsFieldNames;

       if (hasNamespace) {

-        output.WriteString(1, field_names[6], Namespace);

+        output.WriteString(1, field_names[7], Namespace);

       }

       if (hasUmbrellaClassname) {

-        output.WriteString(2, field_names[11], UmbrellaClassname);

+        output.WriteString(2, field_names[12], UmbrellaClassname);

       }

       if (hasPublicClasses) {

-        output.WriteBool(3, field_names[9], PublicClasses);

+        output.WriteBool(3, field_names[10], PublicClasses);

       }

       if (hasMultipleFiles) {

-        output.WriteBool(4, field_names[5], MultipleFiles);

+        output.WriteBool(4, field_names[6], MultipleFiles);

       }

       if (hasNestClasses) {

-        output.WriteBool(5, field_names[7], NestClasses);

+        output.WriteBool(5, field_names[8], NestClasses);

       }

       if (hasCodeContracts) {

-        output.WriteBool(6, field_names[1], CodeContracts);

+        output.WriteBool(6, field_names[2], CodeContracts);

       }

       if (hasExpandNamespaceDirectories) {

-        output.WriteBool(7, field_names[2], ExpandNamespaceDirectories);

+        output.WriteBool(7, field_names[3], ExpandNamespaceDirectories);

       }

       if (hasClsCompliance) {

-        output.WriteBool(8, field_names[0], ClsCompliance);

+        output.WriteBool(8, field_names[1], ClsCompliance);

+      }

+      if (hasAddSerializable) {

+        output.WriteBool(9, field_names[0], AddSerializable);

       }

       if (hasFileExtension) {

-        output.WriteString(221, field_names[3], FileExtension);

+        output.WriteString(221, field_names[4], FileExtension);

       }

       if (hasUmbrellaNamespace) {

-        output.WriteString(222, field_names[12], UmbrellaNamespace);

+        output.WriteString(222, field_names[13], UmbrellaNamespace);

       }

       if (hasOutputDirectory) {

-        output.WriteString(223, field_names[8], OutputDirectory);

+        output.WriteString(223, field_names[9], OutputDirectory);

       }

       if (hasIgnoreGoogleProtobuf) {

-        output.WriteBool(224, field_names[4], IgnoreGoogleProtobuf);

+        output.WriteBool(224, field_names[5], IgnoreGoogleProtobuf);

       }

       if (hasServiceGeneratorType) {

-        output.WriteEnum(225, field_names[10], (int) ServiceGeneratorType, ServiceGeneratorType);

+        output.WriteEnum(225, field_names[11], (int) ServiceGeneratorType, ServiceGeneratorType);

       }

       UnknownFields.WriteTo(output);

     }

@@ -360,6 +374,9 @@
         if (hasClsCompliance) {

           size += pb::CodedOutputStream.ComputeBoolSize(8, ClsCompliance);

         }

+        if (hasAddSerializable) {

+          size += pb::CodedOutputStream.ComputeBoolSize(9, AddSerializable);

+        }

         if (hasFileExtension) {

           size += pb::CodedOutputStream.ComputeStringSize(221, FileExtension);

         }

@@ -494,6 +511,9 @@
         if (other.HasClsCompliance) {

           ClsCompliance = other.ClsCompliance;

         }

+        if (other.HasAddSerializable) {

+          AddSerializable = other.AddSerializable;

+        }

         if (other.HasFileExtension) {

           FileExtension = other.FileExtension;

         }

@@ -583,6 +603,10 @@
               result.hasClsCompliance = input.ReadBool(ref result.clsCompliance_);

               break;

             }

+            case 72: {

+              result.hasAddSerializable = input.ReadBool(ref result.addSerializable_);

+              break;

+            }

             case 1770: {

               result.hasFileExtension = input.ReadString(ref result.fileExtension_);

               break;

@@ -767,6 +791,24 @@
         return this;

       }

       

+      public bool HasAddSerializable {

+        get { return result.hasAddSerializable; }

+      }

+      public bool AddSerializable {

+        get { return result.AddSerializable; }

+        set { SetAddSerializable(value); }

+      }

+      public Builder SetAddSerializable(bool value) {

+        result.hasAddSerializable = true;

+        result.addSerializable_ = value;

+        return this;

+      }

+      public Builder ClearAddSerializable() {

+        result.hasAddSerializable = false;

+        result.addSerializable_ = false;

+        return this;

+      }

+      

       public bool HasFileExtension {

         get { return result.hasFileExtension; }

       }