<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff></diff>
      <filename>lib/protoc.exe</filename>
    </modified>
    <modified>
      <diff>@@ -6,10 +6,11 @@ package google.protobuf;
 
 message CSharpFileOptions {
   optional string namespace = 1;
-  optional string umbrella_classname= 2;
-  optional bool public_classes = 3;
+  optional string umbrella_classname = 2;
+  optional bool public_classes = 3 [default = true];
   optional bool multiple_files = 4;
   optional bool nest_classes = 5;
+  optional bool code_contracts = 6;
 }
 
 extend FileOptions {</diff>
      <filename>protos/google/protobuf/csharp_options.proto</filename>
    </modified>
    <modified>
      <diff>@@ -115,8 +115,10 @@ namespace Google.ProtocolBuffers.ProtoGen {
         writer.WriteLine(&quot;namespace {0} {{&quot;, Descriptor.CSharpOptions.Namespace);
         writer.Indent();
         writer.WriteLine();
+      }    
+      if (Descriptor.CSharpOptions.CodeContracts) {
+          writer.WriteLine(&quot;[global::System.Diagnostics.Contracts.ContractVerificationAttribute(false)]&quot;);
       }
-
       writer.WriteLine(&quot;{0} static partial class {1} {{&quot;, ClassAccessLevel, Descriptor.CSharpOptions.UmbrellaClassname);
       writer.WriteLine();
       writer.Indent();</diff>
      <filename>src/ProtoGen/UmbrellaClassGenerator.cs</filename>
    </modified>
    <modified>
      <diff>@@ -37,21 +37,22 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
       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;);
+          &quot;pgEKEUNTaGFycEZpbGVPcHRpb25zEhEKCW5hbWVzcGFjZRgBIAEoCRIaChJ1&quot; + 
+          &quot;bWJyZWxsYV9jbGFzc25hbWUYAiABKAkSHAoOcHVibGljX2NsYXNzZXMYAyAB&quot; + 
+          &quot;KAg6BHRydWUSFgoObXVsdGlwbGVfZmlsZXMYBCABKAgSFAoMbmVzdF9jbGFz&quot; + 
+          &quot;c2VzGAUgASgIEhYKDmNvZGVfY29udHJhY3RzGAYgASgIIisKEkNTaGFycEZp&quot; + 
+          &quot;ZWxkT3B0aW9ucxIVCg1wcm9wZXJ0eV9uYW1lGAEgASgJOl4KE2NzaGFycF9m&quot; + 
+          &quot;aWxlX29wdGlvbnMSHC5nb29nbGUucHJvdG9idWYuRmlsZU9wdGlvbnMY6Acg&quot; + 
+          &quot;ASgLMiIuZ29vZ2xlLnByb3RvYnVmLkNTaGFycEZpbGVPcHRpb25zOmEKFGNz&quot; + 
+          &quot;aGFycF9maWVsZF9vcHRpb25zEh0uZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0&quot; + 
+          &quot;aW9ucxjoByABKAsyIy5nb29nbGUucHJvdG9idWYuQ1NoYXJwRmllbGRPcHRp&quot; + 
+          &quot;b25z&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;, });
+                new string[] { &quot;Namespace&quot;, &quot;UmbrellaClassname&quot;, &quot;PublicClasses&quot;, &quot;MultipleFiles&quot;, &quot;NestClasses&quot;, &quot;CodeContracts&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,
@@ -113,7 +114,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
     
     public const int PublicClassesFieldNumber = 3;
     private bool hasPublicClasses;
-    private bool publicClasses_ = false;
+    private bool publicClasses_ = true;
     public bool HasPublicClasses {
       get { return hasPublicClasses; }
     }
@@ -141,6 +142,16 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
       get { return nestClasses_; }
     }
     
+    public const int CodeContractsFieldNumber = 6;
+    private bool hasCodeContracts;
+    private bool codeContracts_ = false;
+    public bool HasCodeContracts {
+      get { return hasCodeContracts; }
+    }
+    public bool CodeContracts {
+      get { return codeContracts_; }
+    }
+    
     public override bool IsInitialized {
       get {
         return true;
@@ -163,6 +174,9 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
       if (HasNestClasses) {
         output.WriteBool(5, NestClasses);
       }
+      if (HasCodeContracts) {
+        output.WriteBool(6, CodeContracts);
+      }
       UnknownFields.WriteTo(output);
     }
     
@@ -188,6 +202,9 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
         if (HasNestClasses) {
           size += pb::CodedOutputStream.ComputeBoolSize(5, NestClasses);
         }
+        if (HasCodeContracts) {
+          size += pb::CodedOutputStream.ComputeBoolSize(6, CodeContracts);
+        }
         size += UnknownFields.SerializedSize;
         memoizedSerializedSize = size;
         return size;
@@ -295,6 +312,9 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
         if (other.HasNestClasses) {
           NestClasses = other.NestClasses;
         }
+        if (other.HasCodeContracts) {
+          CodeContracts = other.CodeContracts;
+        }
         this.MergeUnknownFields(other.UnknownFields);
         return this;
       }
@@ -347,6 +367,10 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
               NestClasses = input.ReadBool();
               break;
             }
+            case 48: {
+              CodeContracts = input.ReadBool();
+              break;
+            }
           }
         }
       }
@@ -404,7 +428,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
       }
       public Builder ClearPublicClasses() {
         result.hasPublicClasses = false;
-        result.publicClasses_ = false;
+        result.publicClasses_ = true;
         return this;
       }
       
@@ -443,6 +467,24 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
         result.nestClasses_ = false;
         return this;
       }
+      
+      public bool HasCodeContracts {
+        get { return result.HasCodeContracts; }
+      }
+      public bool CodeContracts {
+        get { return result.CodeContracts; }
+        set { SetCodeContracts(value); }
+      }
+      public Builder SetCodeContracts(bool value) {
+        result.hasCodeContracts = true;
+        result.codeContracts_ = value;
+        return this;
+      }
+      public Builder ClearCodeContracts() {
+        result.hasCodeContracts = false;
+        result.codeContracts_ = false;
+        return this;
+      }
     }
     static CSharpFileOptions() {
       object.ReferenceEquals(global::Google.ProtocolBuffers.DescriptorProtos.CSharpOptions.Descriptor, null);</diff>
      <filename>src/ProtocolBuffers/DescriptorProtos/CSharpOptions.cs</filename>
    </modified>
    <modified>
      <diff>@@ -94,15 +94,6 @@ namespace Google.ProtocolBuffers.Descriptors {
       if (!builder.HasNamespace) {
         builder.Namespace = Package;
       }
-      if (!builder.HasMultipleFiles) {
-        builder.MultipleFiles = false;
-      }
-      if (!builder.HasNestClasses) {
-        builder.NestClasses = false;
-      }
-      if (!builder.HasPublicClasses) {
-        builder.PublicClasses = true;
-      }
       if (!builder.HasUmbrellaClassname) {
         int lastSlash = Name.LastIndexOf('/');
         string baseName = Name.Substring(lastSlash + 1);</diff>
      <filename>src/ProtocolBuffers/Descriptors/FileDescriptor.cs</filename>
    </modified>
    <modified>
      <diff>@@ -57,6 +57,7 @@ namespace Google.ProtocolBuffers.Descriptors {
       enumTypes = DescriptorUtil.ConvertAndMakeReadOnly(proto.EnumTypeList,
           (type, index) =&gt; new EnumDescriptor(type, file, this, index));
 
+      // TODO(jonskeet): Sort fields first?
       fields = DescriptorUtil.ConvertAndMakeReadOnly(proto.FieldList,
           (field, index) =&gt; new FieldDescriptor(field, file, this, index, false));
 </diff>
      <filename>src/ProtocolBuffers/Descriptors/MessageDescriptor.cs</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>cc534e08db5a79be1bca9493a50939dec9d35bc2</id>
    </parent>
  </parents>
  <author>
    <name>Jon Skeet</name>
    <email>skeet@pobox.com</email>
  </author>
  <url>http://github.com/jskeet/dotnet-protobufs/commit/e53a4f8ed1fadd0c2ec80a70e8b1b545a66e3309</url>
  <id>e53a4f8ed1fadd0c2ec80a70e8b1b545a66e3309</id>
  <committed-date>2009-11-03T09:36:32-08:00</committed-date>
  <authored-date>2009-11-03T09:36:32-08:00</authored-date>
  <message>Added a flag to allow code contracts to be emitted</message>
  <tree>9186debb649fbbc1f0ffe2cd56f305749039048b</tree>
  <committer>
    <name>Jon Skeet</name>
    <email>skeet@pobox.com</email>
  </committer>
</commit>
