Regenerated code with changes
diff --git a/src/ProtocolBuffers.Test/TestProtos/UnitTestEmbedOptimizeForProtoFile.cs b/src/ProtocolBuffers.Test/TestProtos/UnitTestEmbedOptimizeForProtoFile.cs
index 466cce7..47df973 100644
--- a/src/ProtocolBuffers.Test/TestProtos/UnitTestEmbedOptimizeForProtoFile.cs
+++ b/src/ProtocolBuffers.Test/TestProtos/UnitTestEmbedOptimizeForProtoFile.cs
@@ -64,7 +64,7 @@
   [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]

   [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")]

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

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

+    private static readonly TestEmbedOptimizedForSize defaultInstance = new TestEmbedOptimizedForSize().MakeReadOnly();

     private static readonly string[] _testEmbedOptimizedForSizeFieldNames = new string[] { "optional_message", "repeated_message" };

     private static readonly uint[] _testEmbedOptimizedForSizeFieldTags = new uint[] { 10, 18 };

     public static TestEmbedOptimizedForSize DefaultInstance {

@@ -72,7 +72,7 @@
     }

     

     public override TestEmbedOptimizedForSize DefaultInstanceForType {

-      get { return defaultInstance; }

+      get { return DefaultInstance; }

     }

     

     protected override TestEmbedOptimizedForSize ThisMessage {

@@ -89,12 +89,12 @@
     

     public const int OptionalMessageFieldNumber = 1;

     private bool hasOptionalMessage;

-    private global::Google.ProtocolBuffers.TestProtos.TestOptimizedForSize optionalMessage_ = global::Google.ProtocolBuffers.TestProtos.TestOptimizedForSize.DefaultInstance;

+    private global::Google.ProtocolBuffers.TestProtos.TestOptimizedForSize optionalMessage_;

     public bool HasOptionalMessage {

       get { return hasOptionalMessage; }

     }

     public global::Google.ProtocolBuffers.TestProtos.TestOptimizedForSize OptionalMessage {

-      get { return optionalMessage_; }

+      get { return optionalMessage_ ?? global::Google.ProtocolBuffers.TestProtos.TestOptimizedForSize.DefaultInstance; }

     }

     

     public const int RepeatedMessageFieldNumber = 2;

@@ -182,6 +182,11 @@
     public static TestEmbedOptimizedForSize ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) {

       return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();

     }

+    private TestEmbedOptimizedForSize MakeReadOnly() {

+      repeatedMessage_.MakeReadOnly();

+      return this;

+    }

+    

     public static Builder CreateBuilder() { return new Builder(); }

     public override Builder ToBuilder() { return CreateBuilder(this); }

     public override Builder CreateBuilderForType() { return new Builder(); }

@@ -197,22 +202,22 @@
         get { return this; }

       }

       public Builder() {

-        result = DefaultInstance ?? new TestEmbedOptimizedForSize();

-        builderIsReadOnly = result == DefaultInstance;

+        result = DefaultInstance;

+        resultIsReadOnly = true;

       }

       internal Builder(TestEmbedOptimizedForSize cloneFrom) {

         result = cloneFrom;

-        builderIsReadOnly = true;

+        resultIsReadOnly = true;

       }

       

-      bool builderIsReadOnly;

-      TestEmbedOptimizedForSize result;

+      private bool resultIsReadOnly;

+      private TestEmbedOptimizedForSize result;

       

       private TestEmbedOptimizedForSize PrepareBuilder() {

-        if (builderIsReadOnly) {

+        if (resultIsReadOnly) {

           TestEmbedOptimizedForSize original = result;

           result = new TestEmbedOptimizedForSize();

-          builderIsReadOnly = false;

+          resultIsReadOnly = false;

           MergeFrom(original);

         }

         return result;

@@ -227,13 +232,13 @@
       }

       

       public override Builder Clear() {

-        result = DefaultInstance ?? new TestEmbedOptimizedForSize();

-        builderIsReadOnly = true;

+        result = DefaultInstance;

+        resultIsReadOnly = true;

         return this;

       }

       

       public override Builder Clone() {

-        if (builderIsReadOnly) {

+        if (resultIsReadOnly) {

           return new Builder(result);

         } else {

           return new Builder().MergeFrom(result);

@@ -249,12 +254,11 @@
       }

       

       public override TestEmbedOptimizedForSize BuildPartial() {

-        if (builderIsReadOnly) {

+        if (resultIsReadOnly) {

           return result;

         }

-        result.repeatedMessage_.MakeReadOnly();

-        builderIsReadOnly = true;

-        return result;

+        resultIsReadOnly = true;

+        return result.MakeReadOnly();

       }

       

       public override Builder MergeFrom(pb::IMessage other) {

@@ -377,7 +381,7 @@
       public Builder ClearOptionalMessage() {

         PrepareBuilder();

         result.hasOptionalMessage = false;

-        result.optionalMessage_ = global::Google.ProtocolBuffers.TestProtos.TestOptimizedForSize.DefaultInstance;

+        result.optionalMessage_ = null;

         return this;

       }