diff --git a/protos/extest/unittest_issues.proto b/protos/extest/unittest_issues.proto index b725b3f160..5e0da0aefc 100644 --- a/protos/extest/unittest_issues.proto +++ b/protos/extest/unittest_issues.proto @@ -86,6 +86,15 @@ message NumberField { optional int32 _01 = 1; } +// Issue 28: Circular message dependencies result in null defaults for DefaultInstance + +message MyMessageAReferenceB { + required MyMessageBReferenceA value = 1; +} + +message MyMessageBReferenceA { + required MyMessageAReferenceB value = 1; +} // issue 19 - negative enum values diff --git a/src/AddressBook/AddressBookProtos.cs b/src/AddressBook/AddressBookProtos.cs index 1bad08882d..7fc1c64dbb 100644 --- a/src/AddressBook/AddressBookProtos.cs +++ b/src/AddressBook/AddressBookProtos.cs @@ -69,7 +69,7 @@ namespace Google.ProtocolBuffers.Examples.AddressBook { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class Person : pb::GeneratedMessage { private Person() { } - private static readonly Person defaultInstance = new Builder().BuildPartial(); + private static readonly Person defaultInstance = new Person().MakeReadOnly(); private static readonly string[] _personFieldNames = new string[] { "email", "id", "name", "phone" }; private static readonly uint[] _personFieldTags = new uint[] { 26, 16, 10, 34 }; public static Person DefaultInstance { @@ -77,7 +77,7 @@ namespace Google.ProtocolBuffers.Examples.AddressBook { } public override Person DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override Person ThisMessage { @@ -110,7 +110,7 @@ namespace Google.ProtocolBuffers.Examples.AddressBook { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class PhoneNumber : pb::GeneratedMessage { private PhoneNumber() { } - private static readonly PhoneNumber defaultInstance = new Builder().BuildPartial(); + private static readonly PhoneNumber defaultInstance = new PhoneNumber().MakeReadOnly(); private static readonly string[] _phoneNumberFieldNames = new string[] { "number", "type" }; private static readonly uint[] _phoneNumberFieldTags = new uint[] { 10, 16 }; public static PhoneNumber DefaultInstance { @@ -118,7 +118,7 @@ namespace Google.ProtocolBuffers.Examples.AddressBook { } public override PhoneNumber DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override PhoneNumber ThisMessage { @@ -221,6 +221,10 @@ namespace Google.ProtocolBuffers.Examples.AddressBook { public static PhoneNumber ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private PhoneNumber MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -236,22 +240,22 @@ namespace Google.ProtocolBuffers.Examples.AddressBook { get { return this; } } public Builder() { - result = DefaultInstance ?? new PhoneNumber(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(PhoneNumber cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - PhoneNumber result; + private bool resultIsReadOnly; + private PhoneNumber result; private PhoneNumber PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { PhoneNumber original = result; result = new PhoneNumber(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -266,13 +270,13 @@ namespace Google.ProtocolBuffers.Examples.AddressBook { } public override Builder Clear() { - result = DefaultInstance ?? new PhoneNumber(); - 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); @@ -288,11 +292,11 @@ namespace Google.ProtocolBuffers.Examples.AddressBook { } public override PhoneNumber BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -557,6 +561,11 @@ namespace Google.ProtocolBuffers.Examples.AddressBook { public static Person ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private Person MakeReadOnly() { + phone_.MakeReadOnly(); + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -572,22 +581,22 @@ namespace Google.ProtocolBuffers.Examples.AddressBook { get { return this; } } public Builder() { - result = DefaultInstance ?? new Person(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(Person cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - Person result; + private bool resultIsReadOnly; + private Person result; private Person PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { Person original = result; result = new Person(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -602,13 +611,13 @@ namespace Google.ProtocolBuffers.Examples.AddressBook { } public override Builder Clear() { - result = DefaultInstance ?? new Person(); - 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); @@ -624,12 +633,11 @@ namespace Google.ProtocolBuffers.Examples.AddressBook { } public override Person BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - result.phone_.MakeReadOnly(); - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -841,7 +849,7 @@ namespace Google.ProtocolBuffers.Examples.AddressBook { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class AddressBook : pb::GeneratedMessage { private AddressBook() { } - private static readonly AddressBook defaultInstance = new Builder().BuildPartial(); + private static readonly AddressBook defaultInstance = new AddressBook().MakeReadOnly(); private static readonly string[] _addressBookFieldNames = new string[] { "person" }; private static readonly uint[] _addressBookFieldTags = new uint[] { 10 }; public static AddressBook DefaultInstance { @@ -849,7 +857,7 @@ namespace Google.ProtocolBuffers.Examples.AddressBook { } public override AddressBook DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override AddressBook ThisMessage { @@ -940,6 +948,11 @@ namespace Google.ProtocolBuffers.Examples.AddressBook { public static AddressBook ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private AddressBook MakeReadOnly() { + person_.MakeReadOnly(); + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -955,22 +968,22 @@ namespace Google.ProtocolBuffers.Examples.AddressBook { get { return this; } } public Builder() { - result = DefaultInstance ?? new AddressBook(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(AddressBook cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - AddressBook result; + private bool resultIsReadOnly; + private AddressBook result; private AddressBook PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { AddressBook original = result; result = new AddressBook(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -985,13 +998,13 @@ namespace Google.ProtocolBuffers.Examples.AddressBook { } public override Builder Clear() { - result = DefaultInstance ?? new AddressBook(); - 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); @@ -1007,12 +1020,11 @@ namespace Google.ProtocolBuffers.Examples.AddressBook { } public override AddressBook BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - result.person_.MakeReadOnly(); - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { diff --git a/src/ProtoGen/MessageFieldGenerator.cs b/src/ProtoGen/MessageFieldGenerator.cs index 8e2691eef6..25b58a6057 100644 --- a/src/ProtoGen/MessageFieldGenerator.cs +++ b/src/ProtoGen/MessageFieldGenerator.cs @@ -48,14 +48,14 @@ namespace Google.ProtocolBuffers.ProtoGen public void GenerateMembers(TextGenerator writer) { writer.WriteLine("private bool has{0};", PropertyName); - writer.WriteLine("private {0} {1}_ = {2};", TypeName, Name, DefaultValue); + writer.WriteLine("private {0} {1}_;", TypeName, Name); AddDeprecatedFlag(writer); writer.WriteLine("public bool Has{0} {{", PropertyName); writer.WriteLine(" get {{ return has{0}; }}", PropertyName); writer.WriteLine("}"); AddDeprecatedFlag(writer); writer.WriteLine("public {0} {1} {{", TypeName, PropertyName); - writer.WriteLine(" get {{ return {0}_; }}", Name); + writer.WriteLine(" get {{ return {0}_ ?? {1}; }}", Name, DefaultValue); writer.WriteLine("}"); } @@ -104,7 +104,7 @@ namespace Google.ProtocolBuffers.ProtoGen writer.WriteLine("public Builder Clear{0}() {{", PropertyName); writer.WriteLine(" PrepareBuilder();"); writer.WriteLine(" result.has{0} = false;", PropertyName); - writer.WriteLine(" result.{0}_ = {1};", Name, DefaultValue); + writer.WriteLine(" result.{0}_ = null;", Name); writer.WriteLine(" return this;"); writer.WriteLine("}"); } diff --git a/src/ProtoGen/MessageGenerator.cs b/src/ProtoGen/MessageGenerator.cs index 89c4aaecc9..e9a037bf6d 100644 --- a/src/ProtoGen/MessageGenerator.cs +++ b/src/ProtoGen/MessageGenerator.cs @@ -183,7 +183,7 @@ namespace Google.ProtocolBuffers.ProtoGen writer.Indent(); writer.WriteLine("private {0}() {{ }}", ClassName); // Must call BuildPartial() to make sure all lists are made read-only - writer.WriteLine("private static readonly {0} defaultInstance = new Builder().BuildPartial();", ClassName); + writer.WriteLine("private static readonly {0} defaultInstance = new {0}().MakeReadOnly();", ClassName); if (OptimizeSpeed) { @@ -204,7 +204,7 @@ namespace Google.ProtocolBuffers.ProtoGen writer.WriteLine("}"); writer.WriteLine(); writer.WriteLine("public override {0} DefaultInstanceForType {{", ClassName); - writer.WriteLine(" get { return defaultInstance; }"); + writer.WriteLine(" get { return DefaultInstance; }"); writer.WriteLine("}"); writer.WriteLine(); writer.WriteLine("protected override {0} ThisMessage {{", ClassName); @@ -552,6 +552,17 @@ namespace Google.ProtocolBuffers.ProtoGen private void GenerateBuilder(TextGenerator writer) { + writer.WriteLine("private {0} MakeReadOnly() {{", ClassName); + writer.Indent(); + foreach (FieldDescriptor field in Descriptor.Fields) + { + CreateFieldGenerator(field).GenerateBuildingCode(writer); + } + writer.WriteLine("return this;"); + writer.Outdent(); + writer.WriteLine("}"); + writer.WriteLine(); + writer.WriteLine("public static Builder CreateBuilder() { return new Builder(); }"); writer.WriteLine("public override Builder ToBuilder() { return CreateBuilder(this); }"); writer.WriteLine("public override Builder CreateBuilderForType() { return new Builder(); }"); @@ -594,23 +605,23 @@ namespace Google.ProtocolBuffers.ProtoGen //default constructor writer.WriteLine("public Builder() {"); //Durring static initialization of message, DefaultInstance is expected to return null. - writer.WriteLine(" result = DefaultInstance ?? new {0}();", ClassName); - writer.WriteLine(" builderIsReadOnly = result == DefaultInstance;"); + writer.WriteLine(" result = DefaultInstance;"); + writer.WriteLine(" resultIsReadOnly = true;"); writer.WriteLine("}"); //clone constructor writer.WriteLine("internal Builder({0} cloneFrom) {{", ClassName); writer.WriteLine(" result = cloneFrom;"); - writer.WriteLine(" builderIsReadOnly = true;"); + writer.WriteLine(" resultIsReadOnly = true;"); writer.WriteLine("}"); writer.WriteLine(); - writer.WriteLine("bool builderIsReadOnly;"); - writer.WriteLine("{0} result;", ClassName); + writer.WriteLine("private bool resultIsReadOnly;"); + writer.WriteLine("private {0} result;", ClassName); writer.WriteLine(); writer.WriteLine("private {0} PrepareBuilder() {{", ClassName); - writer.WriteLine(" if (builderIsReadOnly) {"); + writer.WriteLine(" if (resultIsReadOnly) {"); writer.WriteLine(" {0} original = result;", ClassName); writer.WriteLine(" result = new {0}();", ClassName); - writer.WriteLine(" builderIsReadOnly = false;"); + writer.WriteLine(" resultIsReadOnly = false;"); writer.WriteLine(" MergeFrom(original);"); writer.WriteLine(" }"); writer.WriteLine(" return result;"); @@ -626,13 +637,13 @@ namespace Google.ProtocolBuffers.ProtoGen writer.WriteLine(); //Not actually expecting that DefaultInstance would ever be null here; however, we will ensure it does not break writer.WriteLine("public override Builder Clear() {"); - writer.WriteLine(" result = DefaultInstance ?? new {0}();", ClassName); - writer.WriteLine(" builderIsReadOnly = true;"); + writer.WriteLine(" result = DefaultInstance;", ClassName); + writer.WriteLine(" resultIsReadOnly = true;"); writer.WriteLine(" return this;"); writer.WriteLine("}"); writer.WriteLine(); writer.WriteLine("public override Builder Clone() {"); - writer.WriteLine(" if (builderIsReadOnly) {"); + writer.WriteLine(" if (resultIsReadOnly) {"); writer.WriteLine(" return new Builder(result);"); writer.WriteLine(" } else {"); writer.WriteLine(" return new Builder().MergeFrom(result);"); @@ -653,15 +664,11 @@ namespace Google.ProtocolBuffers.ProtoGen writer.WriteLine("public override {0} BuildPartial() {{", ClassName); writer.Indent(); - writer.WriteLine("if (builderIsReadOnly) {"); + writer.WriteLine("if (resultIsReadOnly) {"); writer.WriteLine(" return result;"); writer.WriteLine("}"); - foreach (FieldDescriptor field in Descriptor.Fields) - { - CreateFieldGenerator(field).GenerateBuildingCode(writer); - } - writer.WriteLine("builderIsReadOnly = true;"); - writer.WriteLine("return result;"); + writer.WriteLine("resultIsReadOnly = true;"); + writer.WriteLine("return result.MakeReadOnly();"); writer.Outdent(); writer.WriteLine("}"); writer.WriteLine(); diff --git a/src/ProtoGen/RepeatedEnumFieldGenerator.cs b/src/ProtoGen/RepeatedEnumFieldGenerator.cs index aacee9371c..8c9f17b8dc 100644 --- a/src/ProtoGen/RepeatedEnumFieldGenerator.cs +++ b/src/ProtoGen/RepeatedEnumFieldGenerator.cs @@ -120,7 +120,7 @@ namespace Google.ProtocolBuffers.ProtoGen public void GenerateBuildingCode(TextGenerator writer) { - writer.WriteLine("result.{0}_.MakeReadOnly();", Name); + writer.WriteLine("{0}_.MakeReadOnly();", Name); } public void GenerateParsingCode(TextGenerator writer) diff --git a/src/ProtoGen/RepeatedMessageFieldGenerator.cs b/src/ProtoGen/RepeatedMessageFieldGenerator.cs index 6cc1e63149..a9a0143ca8 100644 --- a/src/ProtoGen/RepeatedMessageFieldGenerator.cs +++ b/src/ProtoGen/RepeatedMessageFieldGenerator.cs @@ -134,7 +134,7 @@ namespace Google.ProtocolBuffers.ProtoGen public void GenerateBuildingCode(TextGenerator writer) { - writer.WriteLine("result.{0}_.MakeReadOnly();", Name); + writer.WriteLine("{0}_.MakeReadOnly();", Name); } public void GenerateParsingCode(TextGenerator writer) diff --git a/src/ProtoGen/RepeatedPrimitiveFieldGenerator.cs b/src/ProtoGen/RepeatedPrimitiveFieldGenerator.cs index 645dce5cec..b795f3b64f 100644 --- a/src/ProtoGen/RepeatedPrimitiveFieldGenerator.cs +++ b/src/ProtoGen/RepeatedPrimitiveFieldGenerator.cs @@ -122,7 +122,7 @@ namespace Google.ProtocolBuffers.ProtoGen public void GenerateBuildingCode(TextGenerator writer) { - writer.WriteLine("result.{0}_.MakeReadOnly();", Name); + writer.WriteLine("{0}_.MakeReadOnly();", Name); } public void GenerateParsingCode(TextGenerator writer) diff --git a/src/ProtocolBuffers.Test/ReusableBuilderTest.cs b/src/ProtocolBuffers.Test/ReusableBuilderTest.cs index 194313cba3..58d643ede7 100644 --- a/src/ProtocolBuffers.Test/ReusableBuilderTest.cs +++ b/src/ProtocolBuffers.Test/ReusableBuilderTest.cs @@ -1,16 +1,29 @@ using System; using System.Collections.Generic; +using System.ComponentModel; using System.Text; using Google.ProtocolBuffers.Collections; using NUnit.Framework; using Google.ProtocolBuffers.TestProtos; using Google.ProtocolBuffers.Serialization; +using UnitTest.Issues.TestProtos; namespace Google.ProtocolBuffers { [TestFixture] public class ReusableBuilderTest { + [Test, Description("Issue 28: Circular message dependencies result in null defaults for DefaultInstance")] + public void EnsureStaticCicularReference() + { + MyMessageAReferenceB ab = MyMessageAReferenceB.DefaultInstance; + Assert.IsNotNull(ab); + Assert.IsNotNull(ab.Value); + MyMessageBReferenceA ba = MyMessageBReferenceA.DefaultInstance; + Assert.IsNotNull(ba); + Assert.IsNotNull(ba.Value); + } + [Test] public void TestModifyDefaultInstance() { diff --git a/src/ProtocolBuffers.Test/TestProtos/UnitTestCSharpOptionsProtoFile.cs b/src/ProtocolBuffers.Test/TestProtos/UnitTestCSharpOptionsProtoFile.cs index 94ced3d544..13696c2d8a 100644 --- a/src/ProtocolBuffers.Test/TestProtos/UnitTestCSharpOptionsProtoFile.cs +++ b/src/ProtocolBuffers.Test/TestProtos/UnitTestCSharpOptionsProtoFile.cs @@ -61,7 +61,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class OptionsMessage : pb::GeneratedMessage { private OptionsMessage() { } - private static readonly OptionsMessage defaultInstance = new Builder().BuildPartial(); + private static readonly OptionsMessage defaultInstance = new OptionsMessage().MakeReadOnly(); private static readonly string[] _optionsMessageFieldNames = new string[] { "customized", "normal", "options_message" }; private static readonly uint[] _optionsMessageFieldTags = new uint[] { 26, 10, 18 }; public static OptionsMessage DefaultInstance { @@ -69,7 +69,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override OptionsMessage DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override OptionsMessage ThisMessage { @@ -187,6 +187,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static OptionsMessage ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private OptionsMessage MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -202,22 +206,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new OptionsMessage(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(OptionsMessage cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - OptionsMessage result; + private bool resultIsReadOnly; + private OptionsMessage result; private OptionsMessage PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { OptionsMessage original = result; result = new OptionsMessage(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -232,13 +236,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new OptionsMessage(); - 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); @@ -254,11 +258,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override OptionsMessage BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { diff --git a/src/ProtocolBuffers.Test/TestProtos/UnitTestCustomOptionsProtoFile.cs b/src/ProtocolBuffers.Test/TestProtos/UnitTestCustomOptionsProtoFile.cs index a3265da756..93d7fb9cf5 100644 --- a/src/ProtocolBuffers.Test/TestProtos/UnitTestCustomOptionsProtoFile.cs +++ b/src/ProtocolBuffers.Test/TestProtos/UnitTestCustomOptionsProtoFile.cs @@ -401,7 +401,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class TestMessageWithCustomOptions : pb::GeneratedMessage { private TestMessageWithCustomOptions() { } - private static readonly TestMessageWithCustomOptions defaultInstance = new Builder().BuildPartial(); + private static readonly TestMessageWithCustomOptions defaultInstance = new TestMessageWithCustomOptions().MakeReadOnly(); private static readonly string[] _testMessageWithCustomOptionsFieldNames = new string[] { "field1" }; private static readonly uint[] _testMessageWithCustomOptionsFieldTags = new uint[] { 10 }; public static TestMessageWithCustomOptions DefaultInstance { @@ -409,7 +409,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestMessageWithCustomOptions DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override TestMessageWithCustomOptions ThisMessage { @@ -510,6 +510,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static TestMessageWithCustomOptions ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private TestMessageWithCustomOptions MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -525,22 +529,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new TestMessageWithCustomOptions(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(TestMessageWithCustomOptions cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - TestMessageWithCustomOptions result; + private bool resultIsReadOnly; + private TestMessageWithCustomOptions result; private TestMessageWithCustomOptions PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { TestMessageWithCustomOptions original = result; result = new TestMessageWithCustomOptions(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -555,13 +559,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new TestMessageWithCustomOptions(); - 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); @@ -577,11 +581,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestMessageWithCustomOptions BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -687,7 +691,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class CustomOptionFooRequest : pb::GeneratedMessage { private CustomOptionFooRequest() { } - private static readonly CustomOptionFooRequest defaultInstance = new Builder().BuildPartial(); + private static readonly CustomOptionFooRequest defaultInstance = new CustomOptionFooRequest().MakeReadOnly(); private static readonly string[] _customOptionFooRequestFieldNames = new string[] { }; private static readonly uint[] _customOptionFooRequestFieldTags = new uint[] { }; public static CustomOptionFooRequest DefaultInstance { @@ -695,7 +699,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override CustomOptionFooRequest DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override CustomOptionFooRequest ThisMessage { @@ -765,6 +769,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static CustomOptionFooRequest ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private CustomOptionFooRequest MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -780,22 +788,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new CustomOptionFooRequest(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(CustomOptionFooRequest cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - CustomOptionFooRequest result; + private bool resultIsReadOnly; + private CustomOptionFooRequest result; private CustomOptionFooRequest PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { CustomOptionFooRequest original = result; result = new CustomOptionFooRequest(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -810,13 +818,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new CustomOptionFooRequest(); - 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); @@ -832,11 +840,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override CustomOptionFooRequest BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -914,7 +922,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class CustomOptionFooResponse : pb::GeneratedMessage { private CustomOptionFooResponse() { } - private static readonly CustomOptionFooResponse defaultInstance = new Builder().BuildPartial(); + private static readonly CustomOptionFooResponse defaultInstance = new CustomOptionFooResponse().MakeReadOnly(); private static readonly string[] _customOptionFooResponseFieldNames = new string[] { }; private static readonly uint[] _customOptionFooResponseFieldTags = new uint[] { }; public static CustomOptionFooResponse DefaultInstance { @@ -922,7 +930,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override CustomOptionFooResponse DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override CustomOptionFooResponse ThisMessage { @@ -992,6 +1000,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static CustomOptionFooResponse ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private CustomOptionFooResponse MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -1007,22 +1019,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new CustomOptionFooResponse(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(CustomOptionFooResponse cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - CustomOptionFooResponse result; + private bool resultIsReadOnly; + private CustomOptionFooResponse result; private CustomOptionFooResponse PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { CustomOptionFooResponse original = result; result = new CustomOptionFooResponse(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -1037,13 +1049,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new CustomOptionFooResponse(); - 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); @@ -1059,11 +1071,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override CustomOptionFooResponse BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -1141,7 +1153,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class DummyMessageContainingEnum : pb::GeneratedMessage { private DummyMessageContainingEnum() { } - private static readonly DummyMessageContainingEnum defaultInstance = new Builder().BuildPartial(); + private static readonly DummyMessageContainingEnum defaultInstance = new DummyMessageContainingEnum().MakeReadOnly(); private static readonly string[] _dummyMessageContainingEnumFieldNames = new string[] { }; private static readonly uint[] _dummyMessageContainingEnumFieldTags = new uint[] { }; public static DummyMessageContainingEnum DefaultInstance { @@ -1149,7 +1161,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override DummyMessageContainingEnum DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override DummyMessageContainingEnum ThisMessage { @@ -1234,6 +1246,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static DummyMessageContainingEnum ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private DummyMessageContainingEnum MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -1249,22 +1265,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new DummyMessageContainingEnum(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(DummyMessageContainingEnum cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - DummyMessageContainingEnum result; + private bool resultIsReadOnly; + private DummyMessageContainingEnum result; private DummyMessageContainingEnum PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { DummyMessageContainingEnum original = result; result = new DummyMessageContainingEnum(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -1279,13 +1295,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new DummyMessageContainingEnum(); - 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); @@ -1301,11 +1317,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override DummyMessageContainingEnum BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -1383,7 +1399,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class DummyMessageInvalidAsOptionType : pb::GeneratedMessage { private DummyMessageInvalidAsOptionType() { } - private static readonly DummyMessageInvalidAsOptionType defaultInstance = new Builder().BuildPartial(); + private static readonly DummyMessageInvalidAsOptionType defaultInstance = new DummyMessageInvalidAsOptionType().MakeReadOnly(); private static readonly string[] _dummyMessageInvalidAsOptionTypeFieldNames = new string[] { }; private static readonly uint[] _dummyMessageInvalidAsOptionTypeFieldTags = new uint[] { }; public static DummyMessageInvalidAsOptionType DefaultInstance { @@ -1391,7 +1407,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override DummyMessageInvalidAsOptionType DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override DummyMessageInvalidAsOptionType ThisMessage { @@ -1461,6 +1477,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static DummyMessageInvalidAsOptionType ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private DummyMessageInvalidAsOptionType MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -1476,22 +1496,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new DummyMessageInvalidAsOptionType(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(DummyMessageInvalidAsOptionType cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - DummyMessageInvalidAsOptionType result; + private bool resultIsReadOnly; + private DummyMessageInvalidAsOptionType result; private DummyMessageInvalidAsOptionType PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { DummyMessageInvalidAsOptionType original = result; result = new DummyMessageInvalidAsOptionType(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -1506,13 +1526,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new DummyMessageInvalidAsOptionType(); - 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); @@ -1528,11 +1548,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override DummyMessageInvalidAsOptionType BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -1610,7 +1630,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class CustomOptionMinIntegerValues : pb::GeneratedMessage { private CustomOptionMinIntegerValues() { } - private static readonly CustomOptionMinIntegerValues defaultInstance = new Builder().BuildPartial(); + private static readonly CustomOptionMinIntegerValues defaultInstance = new CustomOptionMinIntegerValues().MakeReadOnly(); private static readonly string[] _customOptionMinIntegerValuesFieldNames = new string[] { }; private static readonly uint[] _customOptionMinIntegerValuesFieldTags = new uint[] { }; public static CustomOptionMinIntegerValues DefaultInstance { @@ -1618,7 +1638,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override CustomOptionMinIntegerValues DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override CustomOptionMinIntegerValues ThisMessage { @@ -1688,6 +1708,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static CustomOptionMinIntegerValues ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private CustomOptionMinIntegerValues MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -1703,22 +1727,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new CustomOptionMinIntegerValues(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(CustomOptionMinIntegerValues cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - CustomOptionMinIntegerValues result; + private bool resultIsReadOnly; + private CustomOptionMinIntegerValues result; private CustomOptionMinIntegerValues PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { CustomOptionMinIntegerValues original = result; result = new CustomOptionMinIntegerValues(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -1733,13 +1757,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new CustomOptionMinIntegerValues(); - 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); @@ -1755,11 +1779,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override CustomOptionMinIntegerValues BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -1837,7 +1861,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class CustomOptionMaxIntegerValues : pb::GeneratedMessage { private CustomOptionMaxIntegerValues() { } - private static readonly CustomOptionMaxIntegerValues defaultInstance = new Builder().BuildPartial(); + private static readonly CustomOptionMaxIntegerValues defaultInstance = new CustomOptionMaxIntegerValues().MakeReadOnly(); private static readonly string[] _customOptionMaxIntegerValuesFieldNames = new string[] { }; private static readonly uint[] _customOptionMaxIntegerValuesFieldTags = new uint[] { }; public static CustomOptionMaxIntegerValues DefaultInstance { @@ -1845,7 +1869,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override CustomOptionMaxIntegerValues DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override CustomOptionMaxIntegerValues ThisMessage { @@ -1915,6 +1939,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static CustomOptionMaxIntegerValues ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private CustomOptionMaxIntegerValues MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -1930,22 +1958,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new CustomOptionMaxIntegerValues(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(CustomOptionMaxIntegerValues cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - CustomOptionMaxIntegerValues result; + private bool resultIsReadOnly; + private CustomOptionMaxIntegerValues result; private CustomOptionMaxIntegerValues PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { CustomOptionMaxIntegerValues original = result; result = new CustomOptionMaxIntegerValues(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -1960,13 +1988,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new CustomOptionMaxIntegerValues(); - 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); @@ -1982,11 +2010,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override CustomOptionMaxIntegerValues BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -2064,7 +2092,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class CustomOptionOtherValues : pb::GeneratedMessage { private CustomOptionOtherValues() { } - private static readonly CustomOptionOtherValues defaultInstance = new Builder().BuildPartial(); + private static readonly CustomOptionOtherValues defaultInstance = new CustomOptionOtherValues().MakeReadOnly(); private static readonly string[] _customOptionOtherValuesFieldNames = new string[] { }; private static readonly uint[] _customOptionOtherValuesFieldTags = new uint[] { }; public static CustomOptionOtherValues DefaultInstance { @@ -2072,7 +2100,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override CustomOptionOtherValues DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override CustomOptionOtherValues ThisMessage { @@ -2142,6 +2170,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static CustomOptionOtherValues ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private CustomOptionOtherValues MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -2157,22 +2189,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new CustomOptionOtherValues(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(CustomOptionOtherValues cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - CustomOptionOtherValues result; + private bool resultIsReadOnly; + private CustomOptionOtherValues result; private CustomOptionOtherValues PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { CustomOptionOtherValues original = result; result = new CustomOptionOtherValues(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -2187,13 +2219,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new CustomOptionOtherValues(); - 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); @@ -2209,11 +2241,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override CustomOptionOtherValues BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -2291,7 +2323,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class SettingRealsFromPositiveInts : pb::GeneratedMessage { private SettingRealsFromPositiveInts() { } - private static readonly SettingRealsFromPositiveInts defaultInstance = new Builder().BuildPartial(); + private static readonly SettingRealsFromPositiveInts defaultInstance = new SettingRealsFromPositiveInts().MakeReadOnly(); private static readonly string[] _settingRealsFromPositiveIntsFieldNames = new string[] { }; private static readonly uint[] _settingRealsFromPositiveIntsFieldTags = new uint[] { }; public static SettingRealsFromPositiveInts DefaultInstance { @@ -2299,7 +2331,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override SettingRealsFromPositiveInts DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override SettingRealsFromPositiveInts ThisMessage { @@ -2369,6 +2401,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static SettingRealsFromPositiveInts ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private SettingRealsFromPositiveInts MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -2384,22 +2420,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new SettingRealsFromPositiveInts(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(SettingRealsFromPositiveInts cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - SettingRealsFromPositiveInts result; + private bool resultIsReadOnly; + private SettingRealsFromPositiveInts result; private SettingRealsFromPositiveInts PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { SettingRealsFromPositiveInts original = result; result = new SettingRealsFromPositiveInts(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -2414,13 +2450,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new SettingRealsFromPositiveInts(); - 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); @@ -2436,11 +2472,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override SettingRealsFromPositiveInts BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -2518,7 +2554,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class SettingRealsFromNegativeInts : pb::GeneratedMessage { private SettingRealsFromNegativeInts() { } - private static readonly SettingRealsFromNegativeInts defaultInstance = new Builder().BuildPartial(); + private static readonly SettingRealsFromNegativeInts defaultInstance = new SettingRealsFromNegativeInts().MakeReadOnly(); private static readonly string[] _settingRealsFromNegativeIntsFieldNames = new string[] { }; private static readonly uint[] _settingRealsFromNegativeIntsFieldTags = new uint[] { }; public static SettingRealsFromNegativeInts DefaultInstance { @@ -2526,7 +2562,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override SettingRealsFromNegativeInts DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override SettingRealsFromNegativeInts ThisMessage { @@ -2596,6 +2632,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static SettingRealsFromNegativeInts ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private SettingRealsFromNegativeInts MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -2611,22 +2651,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new SettingRealsFromNegativeInts(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(SettingRealsFromNegativeInts cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - SettingRealsFromNegativeInts result; + private bool resultIsReadOnly; + private SettingRealsFromNegativeInts result; private SettingRealsFromNegativeInts PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { SettingRealsFromNegativeInts original = result; result = new SettingRealsFromNegativeInts(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -2641,13 +2681,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new SettingRealsFromNegativeInts(); - 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); @@ -2663,11 +2703,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override SettingRealsFromNegativeInts BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -2745,7 +2785,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class ComplexOptionType1 : pb::ExtendableMessage { private ComplexOptionType1() { } - private static readonly ComplexOptionType1 defaultInstance = new Builder().BuildPartial(); + private static readonly ComplexOptionType1 defaultInstance = new ComplexOptionType1().MakeReadOnly(); private static readonly string[] _complexOptionType1FieldNames = new string[] { "foo", "foo2", "foo3" }; private static readonly uint[] _complexOptionType1FieldTags = new uint[] { 8, 16, 24 }; public static ComplexOptionType1 DefaultInstance { @@ -2753,7 +2793,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override ComplexOptionType1 DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override ComplexOptionType1 ThisMessage { @@ -2875,6 +2915,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static ComplexOptionType1 ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private ComplexOptionType1 MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -2890,22 +2934,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new ComplexOptionType1(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(ComplexOptionType1 cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - ComplexOptionType1 result; + private bool resultIsReadOnly; + private ComplexOptionType1 result; private ComplexOptionType1 PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { ComplexOptionType1 original = result; result = new ComplexOptionType1(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -2920,13 +2964,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new ComplexOptionType1(); - 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); @@ -2942,11 +2986,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override ComplexOptionType1 BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -3106,7 +3150,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class ComplexOptionType2 : pb::ExtendableMessage { private ComplexOptionType2() { } - private static readonly ComplexOptionType2 defaultInstance = new Builder().BuildPartial(); + private static readonly ComplexOptionType2 defaultInstance = new ComplexOptionType2().MakeReadOnly(); private static readonly string[] _complexOptionType2FieldNames = new string[] { "bar", "baz", "fred" }; private static readonly uint[] _complexOptionType2FieldTags = new uint[] { 10, 16, 26 }; public static ComplexOptionType2 DefaultInstance { @@ -3114,7 +3158,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override ComplexOptionType2 DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override ComplexOptionType2 ThisMessage { @@ -3139,7 +3183,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class ComplexOptionType4 : pb::GeneratedMessage { private ComplexOptionType4() { } - private static readonly ComplexOptionType4 defaultInstance = new Builder().BuildPartial(); + private static readonly ComplexOptionType4 defaultInstance = new ComplexOptionType4().MakeReadOnly(); private static readonly string[] _complexOptionType4FieldNames = new string[] { "waldo" }; private static readonly uint[] _complexOptionType4FieldTags = new uint[] { 8 }; public static ComplexOptionType4 DefaultInstance { @@ -3147,7 +3191,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override ComplexOptionType4 DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override ComplexOptionType4 ThisMessage { @@ -3235,6 +3279,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static ComplexOptionType4 ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private ComplexOptionType4 MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -3250,22 +3298,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new ComplexOptionType4(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(ComplexOptionType4 cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - ComplexOptionType4 result; + private bool resultIsReadOnly; + private ComplexOptionType4 result; private ComplexOptionType4 PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { ComplexOptionType4 original = result; result = new ComplexOptionType4(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -3280,13 +3328,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new ComplexOptionType4(); - 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); @@ -3302,11 +3350,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override ComplexOptionType4 BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -3411,12 +3459,12 @@ namespace Google.ProtocolBuffers.TestProtos { public const int BarFieldNumber = 1; private bool hasBar; - private global::Google.ProtocolBuffers.TestProtos.ComplexOptionType1 bar_ = global::Google.ProtocolBuffers.TestProtos.ComplexOptionType1.DefaultInstance; + private global::Google.ProtocolBuffers.TestProtos.ComplexOptionType1 bar_; public bool HasBar { get { return hasBar; } } public global::Google.ProtocolBuffers.TestProtos.ComplexOptionType1 Bar { - get { return bar_; } + get { return bar_ ?? global::Google.ProtocolBuffers.TestProtos.ComplexOptionType1.DefaultInstance; } } public const int BazFieldNumber = 2; @@ -3431,12 +3479,12 @@ namespace Google.ProtocolBuffers.TestProtos { public const int FredFieldNumber = 3; private bool hasFred; - private global::Google.ProtocolBuffers.TestProtos.ComplexOptionType2.Types.ComplexOptionType4 fred_ = global::Google.ProtocolBuffers.TestProtos.ComplexOptionType2.Types.ComplexOptionType4.DefaultInstance; + private global::Google.ProtocolBuffers.TestProtos.ComplexOptionType2.Types.ComplexOptionType4 fred_; public bool HasFred { get { return hasFred; } } public global::Google.ProtocolBuffers.TestProtos.ComplexOptionType2.Types.ComplexOptionType4 Fred { - get { return fred_; } + get { return fred_ ?? global::Google.ProtocolBuffers.TestProtos.ComplexOptionType2.Types.ComplexOptionType4.DefaultInstance; } } public override bool IsInitialized { @@ -3519,6 +3567,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static ComplexOptionType2 ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private ComplexOptionType2 MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -3534,22 +3586,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new ComplexOptionType2(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(ComplexOptionType2 cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - ComplexOptionType2 result; + private bool resultIsReadOnly; + private ComplexOptionType2 result; private ComplexOptionType2 PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { ComplexOptionType2 original = result; result = new ComplexOptionType2(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -3564,13 +3616,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new ComplexOptionType2(); - 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); @@ -3586,11 +3638,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override ComplexOptionType2 BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -3726,7 +3778,7 @@ namespace Google.ProtocolBuffers.TestProtos { public Builder ClearBar() { PrepareBuilder(); result.hasBar = false; - result.bar_ = global::Google.ProtocolBuffers.TestProtos.ComplexOptionType1.DefaultInstance; + result.bar_ = null; return this; } @@ -3786,7 +3838,7 @@ namespace Google.ProtocolBuffers.TestProtos { public Builder ClearFred() { PrepareBuilder(); result.hasFred = false; - result.fred_ = global::Google.ProtocolBuffers.TestProtos.ComplexOptionType2.Types.ComplexOptionType4.DefaultInstance; + result.fred_ = null; return this; } } @@ -3800,7 +3852,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class ComplexOptionType3 : pb::GeneratedMessage { private ComplexOptionType3() { } - private static readonly ComplexOptionType3 defaultInstance = new Builder().BuildPartial(); + private static readonly ComplexOptionType3 defaultInstance = new ComplexOptionType3().MakeReadOnly(); private static readonly string[] _complexOptionType3FieldNames = new string[] { "complexoptiontype5", "qux" }; private static readonly uint[] _complexOptionType3FieldTags = new uint[] { 19, 8 }; public static ComplexOptionType3 DefaultInstance { @@ -3808,7 +3860,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override ComplexOptionType3 DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override ComplexOptionType3 ThisMessage { @@ -3833,7 +3885,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class ComplexOptionType5 : pb::GeneratedMessage { private ComplexOptionType5() { } - private static readonly ComplexOptionType5 defaultInstance = new Builder().BuildPartial(); + private static readonly ComplexOptionType5 defaultInstance = new ComplexOptionType5().MakeReadOnly(); private static readonly string[] _complexOptionType5FieldNames = new string[] { "plugh" }; private static readonly uint[] _complexOptionType5FieldTags = new uint[] { 24 }; public static ComplexOptionType5 DefaultInstance { @@ -3841,7 +3893,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override ComplexOptionType5 DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override ComplexOptionType5 ThisMessage { @@ -3927,6 +3979,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static ComplexOptionType5 ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private ComplexOptionType5 MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -3942,22 +3998,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new ComplexOptionType5(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(ComplexOptionType5 cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - ComplexOptionType5 result; + private bool resultIsReadOnly; + private ComplexOptionType5 result; private ComplexOptionType5 PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { ComplexOptionType5 original = result; result = new ComplexOptionType5(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -3972,13 +4028,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new ComplexOptionType5(); - 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); @@ -3994,11 +4050,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override ComplexOptionType5 BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -4113,12 +4169,12 @@ namespace Google.ProtocolBuffers.TestProtos { public const int ComplexOptionType5FieldNumber = 2; private bool hasComplexOptionType5; - private global::Google.ProtocolBuffers.TestProtos.ComplexOptionType3.Types.ComplexOptionType5 complexOptionType5_ = global::Google.ProtocolBuffers.TestProtos.ComplexOptionType3.Types.ComplexOptionType5.DefaultInstance; + private global::Google.ProtocolBuffers.TestProtos.ComplexOptionType3.Types.ComplexOptionType5 complexOptionType5_; public bool HasComplexOptionType5 { get { return hasComplexOptionType5; } } public global::Google.ProtocolBuffers.TestProtos.ComplexOptionType3.Types.ComplexOptionType5 ComplexOptionType5 { - get { return complexOptionType5_; } + get { return complexOptionType5_ ?? global::Google.ProtocolBuffers.TestProtos.ComplexOptionType3.Types.ComplexOptionType5.DefaultInstance; } } public override bool IsInitialized { @@ -4188,6 +4244,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static ComplexOptionType3 ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private ComplexOptionType3 MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -4203,22 +4263,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new ComplexOptionType3(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(ComplexOptionType3 cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - ComplexOptionType3 result; + private bool resultIsReadOnly; + private ComplexOptionType3 result; private ComplexOptionType3 PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { ComplexOptionType3 original = result; result = new ComplexOptionType3(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -4233,13 +4293,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new ComplexOptionType3(); - 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); @@ -4255,11 +4315,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override ComplexOptionType3 BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -4402,7 +4462,7 @@ namespace Google.ProtocolBuffers.TestProtos { public Builder ClearComplexOptionType5() { PrepareBuilder(); result.hasComplexOptionType5 = false; - result.complexOptionType5_ = global::Google.ProtocolBuffers.TestProtos.ComplexOptionType3.Types.ComplexOptionType5.DefaultInstance; + result.complexOptionType5_ = null; return this; } } @@ -4416,7 +4476,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class ComplexOpt6 : pb::GeneratedMessage { private ComplexOpt6() { } - private static readonly ComplexOpt6 defaultInstance = new Builder().BuildPartial(); + private static readonly ComplexOpt6 defaultInstance = new ComplexOpt6().MakeReadOnly(); private static readonly string[] _complexOpt6FieldNames = new string[] { "xyzzy" }; private static readonly uint[] _complexOpt6FieldTags = new uint[] { 60751608 }; public static ComplexOpt6 DefaultInstance { @@ -4424,7 +4484,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override ComplexOpt6 DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override ComplexOpt6 ThisMessage { @@ -4510,6 +4570,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static ComplexOpt6 ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private ComplexOpt6 MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -4525,22 +4589,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new ComplexOpt6(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(ComplexOpt6 cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - ComplexOpt6 result; + private bool resultIsReadOnly; + private ComplexOpt6 result; private ComplexOpt6 PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { ComplexOpt6 original = result; result = new ComplexOpt6(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -4555,13 +4619,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new ComplexOpt6(); - 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); @@ -4577,11 +4641,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override ComplexOpt6 BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -4686,7 +4750,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class VariousComplexOptions : pb::GeneratedMessage { private VariousComplexOptions() { } - private static readonly VariousComplexOptions defaultInstance = new Builder().BuildPartial(); + private static readonly VariousComplexOptions defaultInstance = new VariousComplexOptions().MakeReadOnly(); private static readonly string[] _variousComplexOptionsFieldNames = new string[] { }; private static readonly uint[] _variousComplexOptionsFieldTags = new uint[] { }; public static VariousComplexOptions DefaultInstance { @@ -4694,7 +4758,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override VariousComplexOptions DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override VariousComplexOptions ThisMessage { @@ -4764,6 +4828,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static VariousComplexOptions ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private VariousComplexOptions MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -4779,22 +4847,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new VariousComplexOptions(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(VariousComplexOptions cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - VariousComplexOptions result; + private bool resultIsReadOnly; + private VariousComplexOptions result; private VariousComplexOptions PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { VariousComplexOptions original = result; result = new VariousComplexOptions(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -4809,13 +4877,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new VariousComplexOptions(); - 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); @@ -4831,11 +4899,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override VariousComplexOptions BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { diff --git a/src/ProtocolBuffers.Test/TestProtos/UnitTestEmbedOptimizeForProtoFile.cs b/src/ProtocolBuffers.Test/TestProtos/UnitTestEmbedOptimizeForProtoFile.cs index 9af43135bd..aba049d8f0 100644 --- a/src/ProtocolBuffers.Test/TestProtos/UnitTestEmbedOptimizeForProtoFile.cs +++ b/src/ProtocolBuffers.Test/TestProtos/UnitTestEmbedOptimizeForProtoFile.cs @@ -65,7 +65,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class TestEmbedOptimizedForSize : pb::GeneratedMessage { private TestEmbedOptimizedForSize() { } - 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 { @@ -73,7 +73,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestEmbedOptimizedForSize DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override TestEmbedOptimizedForSize ThisMessage { @@ -90,12 +90,12 @@ namespace Google.ProtocolBuffers.TestProtos { 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; @@ -183,6 +183,11 @@ namespace Google.ProtocolBuffers.TestProtos { 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(); } @@ -198,22 +203,22 @@ namespace Google.ProtocolBuffers.TestProtos { 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; @@ -228,13 +233,13 @@ namespace Google.ProtocolBuffers.TestProtos { } 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); @@ -250,12 +255,11 @@ namespace Google.ProtocolBuffers.TestProtos { } 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) { @@ -378,7 +382,7 @@ namespace Google.ProtocolBuffers.TestProtos { public Builder ClearOptionalMessage() { PrepareBuilder(); result.hasOptionalMessage = false; - result.optionalMessage_ = global::Google.ProtocolBuffers.TestProtos.TestOptimizedForSize.DefaultInstance; + result.optionalMessage_ = null; return this; } diff --git a/src/ProtocolBuffers.Test/TestProtos/UnitTestExtrasIssuesProtoFile.cs b/src/ProtocolBuffers.Test/TestProtos/UnitTestExtrasIssuesProtoFile.cs index 47841404e1..be2d202f54 100644 --- a/src/ProtocolBuffers.Test/TestProtos/UnitTestExtrasIssuesProtoFile.cs +++ b/src/ProtocolBuffers.Test/TestProtos/UnitTestExtrasIssuesProtoFile.cs @@ -26,6 +26,10 @@ namespace UnitTest.Issues.TestProtos { internal static pb::FieldAccess.FieldAccessorTable internal__static_unittest_issues_AB__FieldAccessorTable; internal static pbd::MessageDescriptor internal__static_unittest_issues_NumberField__Descriptor; internal static pb::FieldAccess.FieldAccessorTable internal__static_unittest_issues_NumberField__FieldAccessorTable; + internal static pbd::MessageDescriptor internal__static_unittest_issues_MyMessageAReferenceB__Descriptor; + internal static pb::FieldAccess.FieldAccessorTable internal__static_unittest_issues_MyMessageAReferenceB__FieldAccessorTable; + internal static pbd::MessageDescriptor internal__static_unittest_issues_MyMessageBReferenceA__Descriptor; + internal static pb::FieldAccess.FieldAccessorTable internal__static_unittest_issues_MyMessageBReferenceA__FieldAccessorTable; internal static pbd::MessageDescriptor internal__static_unittest_issues_NegativeEnumMessage__Descriptor; internal static pb::FieldAccess.FieldAccessorTable internal__static_unittest_issues_NegativeEnumMessage__FieldAccessorTable; internal static pbd::MessageDescriptor internal__static_unittest_issues_DeprecatedChild__Descriptor; @@ -44,22 +48,26 @@ namespace UnitTest.Issues.TestProtos { "ChxleHRlc3QvdW5pdHRlc3RfaXNzdWVzLnByb3RvEg91bml0dGVzdF9pc3N1" + "ZXMaJGdvb2dsZS9wcm90b2J1Zi9jc2hhcnBfb3B0aW9ucy5wcm90byIPCgFB" + "EgoKAl9BGAEgASgFIg8KAUISCgoCQl8YASABKAUiEQoCQUISCwoDYV9iGAEg" + - "ASgFIhoKC051bWJlckZpZWxkEgsKA18wMRgBIAEoBSKsAQoTTmVnYXRpdmVF" + - "bnVtTWVzc2FnZRIsCgV2YWx1ZRgBIAEoDjIdLnVuaXR0ZXN0X2lzc3Vlcy5O" + - "ZWdhdGl2ZUVudW0SLQoGdmFsdWVzGAIgAygOMh0udW5pdHRlc3RfaXNzdWVz" + - "Lk5lZ2F0aXZlRW51bRI4Cg1wYWNrZWRfdmFsdWVzGAMgAygOMh0udW5pdHRl" + - "c3RfaXNzdWVzLk5lZ2F0aXZlRW51bUICEAEiEQoPRGVwcmVjYXRlZENoaWxk" + - "IrkCChdEZXByZWNhdGVkRmllbGRzTWVzc2FnZRIaCg5QcmltaXRpdmVWYWx1" + - "ZRgBIAEoBUICGAESGgoOUHJpbWl0aXZlQXJyYXkYAiADKAVCAhgBEjoKDE1l" + - "c3NhZ2VWYWx1ZRgDIAEoCzIgLnVuaXR0ZXN0X2lzc3Vlcy5EZXByZWNhdGVk" + - "Q2hpbGRCAhgBEjoKDE1lc3NhZ2VBcnJheRgEIAMoCzIgLnVuaXR0ZXN0X2lz" + - "c3Vlcy5EZXByZWNhdGVkQ2hpbGRCAhgBEjYKCUVudW1WYWx1ZRgFIAEoDjIf" + - "LnVuaXR0ZXN0X2lzc3Vlcy5EZXByZWNhdGVkRW51bUICGAESNgoJRW51bUFy" + - "cmF5GAYgAygOMh8udW5pdHRlc3RfaXNzdWVzLkRlcHJlY2F0ZWRFbnVtQgIY" + - "ASpHCgxOZWdhdGl2ZUVudW0SFgoJRml2ZUJlbG93EPv//////////wESFQoI" + - "TWludXNPbmUQ////////////ARIICgRaZXJvEAAqGQoORGVwcmVjYXRlZEVu" + - "dW0SBwoDb25lEAFCQEgBwj47ChpVbml0VGVzdC5Jc3N1ZXMuVGVzdFByb3Rv" + - "cxIdVW5pdFRlc3RFeHRyYXNJc3N1ZXNQcm90b0ZpbGU="); + "ASgFIhoKC051bWJlckZpZWxkEgsKA18wMRgBIAEoBSJMChRNeU1lc3NhZ2VB" + + "UmVmZXJlbmNlQhI0CgV2YWx1ZRgBIAIoCzIlLnVuaXR0ZXN0X2lzc3Vlcy5N" + + "eU1lc3NhZ2VCUmVmZXJlbmNlQSJMChRNeU1lc3NhZ2VCUmVmZXJlbmNlQRI0" + + "CgV2YWx1ZRgBIAIoCzIlLnVuaXR0ZXN0X2lzc3Vlcy5NeU1lc3NhZ2VBUmVm" + + "ZXJlbmNlQiKsAQoTTmVnYXRpdmVFbnVtTWVzc2FnZRIsCgV2YWx1ZRgBIAEo" + + "DjIdLnVuaXR0ZXN0X2lzc3Vlcy5OZWdhdGl2ZUVudW0SLQoGdmFsdWVzGAIg" + + "AygOMh0udW5pdHRlc3RfaXNzdWVzLk5lZ2F0aXZlRW51bRI4Cg1wYWNrZWRf" + + "dmFsdWVzGAMgAygOMh0udW5pdHRlc3RfaXNzdWVzLk5lZ2F0aXZlRW51bUIC" + + "EAEiEQoPRGVwcmVjYXRlZENoaWxkIrkCChdEZXByZWNhdGVkRmllbGRzTWVz" + + "c2FnZRIaCg5QcmltaXRpdmVWYWx1ZRgBIAEoBUICGAESGgoOUHJpbWl0aXZl" + + "QXJyYXkYAiADKAVCAhgBEjoKDE1lc3NhZ2VWYWx1ZRgDIAEoCzIgLnVuaXR0" + + "ZXN0X2lzc3Vlcy5EZXByZWNhdGVkQ2hpbGRCAhgBEjoKDE1lc3NhZ2VBcnJh" + + "eRgEIAMoCzIgLnVuaXR0ZXN0X2lzc3Vlcy5EZXByZWNhdGVkQ2hpbGRCAhgB" + + "EjYKCUVudW1WYWx1ZRgFIAEoDjIfLnVuaXR0ZXN0X2lzc3Vlcy5EZXByZWNh" + + "dGVkRW51bUICGAESNgoJRW51bUFycmF5GAYgAygOMh8udW5pdHRlc3RfaXNz" + + "dWVzLkRlcHJlY2F0ZWRFbnVtQgIYASpHCgxOZWdhdGl2ZUVudW0SFgoJRml2" + + "ZUJlbG93EPv//////////wESFQoITWludXNPbmUQ////////////ARIICgRa" + + "ZXJvEAAqGQoORGVwcmVjYXRlZEVudW0SBwoDb25lEAFCQEgBwj47ChpVbml0" + + "VGVzdC5Jc3N1ZXMuVGVzdFByb3RvcxIdVW5pdFRlc3RFeHRyYXNJc3N1ZXNQ" + + "cm90b0ZpbGU="); pbd::FileDescriptor.InternalDescriptorAssigner assigner = delegate(pbd::FileDescriptor root) { descriptor = root; internal__static_unittest_issues_A__Descriptor = Descriptor.MessageTypes[0]; @@ -78,15 +86,23 @@ namespace UnitTest.Issues.TestProtos { internal__static_unittest_issues_NumberField__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable(internal__static_unittest_issues_NumberField__Descriptor, new string[] { "_01", }); - internal__static_unittest_issues_NegativeEnumMessage__Descriptor = Descriptor.MessageTypes[4]; + internal__static_unittest_issues_MyMessageAReferenceB__Descriptor = Descriptor.MessageTypes[4]; + internal__static_unittest_issues_MyMessageAReferenceB__FieldAccessorTable = + new pb::FieldAccess.FieldAccessorTable(internal__static_unittest_issues_MyMessageAReferenceB__Descriptor, + new string[] { "Value", }); + internal__static_unittest_issues_MyMessageBReferenceA__Descriptor = Descriptor.MessageTypes[5]; + internal__static_unittest_issues_MyMessageBReferenceA__FieldAccessorTable = + new pb::FieldAccess.FieldAccessorTable(internal__static_unittest_issues_MyMessageBReferenceA__Descriptor, + new string[] { "Value", }); + internal__static_unittest_issues_NegativeEnumMessage__Descriptor = Descriptor.MessageTypes[6]; internal__static_unittest_issues_NegativeEnumMessage__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable(internal__static_unittest_issues_NegativeEnumMessage__Descriptor, new string[] { "Value", "Values", "PackedValues", }); - internal__static_unittest_issues_DeprecatedChild__Descriptor = Descriptor.MessageTypes[5]; + internal__static_unittest_issues_DeprecatedChild__Descriptor = Descriptor.MessageTypes[7]; internal__static_unittest_issues_DeprecatedChild__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable(internal__static_unittest_issues_DeprecatedChild__Descriptor, new string[] { }); - internal__static_unittest_issues_DeprecatedFieldsMessage__Descriptor = Descriptor.MessageTypes[6]; + internal__static_unittest_issues_DeprecatedFieldsMessage__Descriptor = Descriptor.MessageTypes[8]; internal__static_unittest_issues_DeprecatedFieldsMessage__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable(internal__static_unittest_issues_DeprecatedFieldsMessage__Descriptor, new string[] { "PrimitiveValue", "PrimitiveArray", "MessageValue", "MessageArray", "EnumValue", "EnumArray", }); @@ -126,7 +142,7 @@ namespace UnitTest.Issues.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class A : pb::GeneratedMessage { private A() { } - private static readonly A defaultInstance = new Builder().BuildPartial(); + private static readonly A defaultInstance = new A().MakeReadOnly(); private static readonly string[] _aFieldNames = new string[] { "_A" }; private static readonly uint[] _aFieldTags = new uint[] { 8 }; public static A DefaultInstance { @@ -134,7 +150,7 @@ namespace UnitTest.Issues.TestProtos { } public override A DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override A ThisMessage { @@ -220,6 +236,10 @@ namespace UnitTest.Issues.TestProtos { public static A ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private A MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -235,22 +255,22 @@ namespace UnitTest.Issues.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new A(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(A cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - A result; + private bool resultIsReadOnly; + private A result; private A PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { A original = result; result = new A(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -265,13 +285,13 @@ namespace UnitTest.Issues.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new A(); - 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); @@ -287,11 +307,11 @@ namespace UnitTest.Issues.TestProtos { } public override A BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -396,7 +416,7 @@ namespace UnitTest.Issues.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class B : pb::GeneratedMessage { private B() { } - private static readonly B defaultInstance = new Builder().BuildPartial(); + private static readonly B defaultInstance = new B().MakeReadOnly(); private static readonly string[] _bFieldNames = new string[] { "B_" }; private static readonly uint[] _bFieldTags = new uint[] { 8 }; public static B DefaultInstance { @@ -404,7 +424,7 @@ namespace UnitTest.Issues.TestProtos { } public override B DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override B ThisMessage { @@ -490,6 +510,10 @@ namespace UnitTest.Issues.TestProtos { public static B ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private B MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -505,22 +529,22 @@ namespace UnitTest.Issues.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new B(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(B cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - B result; + private bool resultIsReadOnly; + private B result; private B PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { B original = result; result = new B(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -535,13 +559,13 @@ namespace UnitTest.Issues.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new B(); - 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); @@ -557,11 +581,11 @@ namespace UnitTest.Issues.TestProtos { } public override B BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -666,7 +690,7 @@ namespace UnitTest.Issues.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class AB : pb::GeneratedMessage { private AB() { } - private static readonly AB defaultInstance = new Builder().BuildPartial(); + private static readonly AB defaultInstance = new AB().MakeReadOnly(); private static readonly string[] _aBFieldNames = new string[] { "a_b" }; private static readonly uint[] _aBFieldTags = new uint[] { 8 }; public static AB DefaultInstance { @@ -674,7 +698,7 @@ namespace UnitTest.Issues.TestProtos { } public override AB DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override AB ThisMessage { @@ -760,6 +784,10 @@ namespace UnitTest.Issues.TestProtos { public static AB ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private AB MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -775,22 +803,22 @@ namespace UnitTest.Issues.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new AB(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(AB cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - AB result; + private bool resultIsReadOnly; + private AB result; private AB PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { AB original = result; result = new AB(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -805,13 +833,13 @@ namespace UnitTest.Issues.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new AB(); - 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); @@ -827,11 +855,11 @@ namespace UnitTest.Issues.TestProtos { } public override AB BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -936,7 +964,7 @@ namespace UnitTest.Issues.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class NumberField : pb::GeneratedMessage { private NumberField() { } - private static readonly NumberField defaultInstance = new Builder().BuildPartial(); + private static readonly NumberField defaultInstance = new NumberField().MakeReadOnly(); private static readonly string[] _numberFieldFieldNames = new string[] { "_01" }; private static readonly uint[] _numberFieldFieldTags = new uint[] { 8 }; public static NumberField DefaultInstance { @@ -944,7 +972,7 @@ namespace UnitTest.Issues.TestProtos { } public override NumberField DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override NumberField ThisMessage { @@ -1032,6 +1060,10 @@ namespace UnitTest.Issues.TestProtos { public static NumberField ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private NumberField MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -1047,22 +1079,22 @@ namespace UnitTest.Issues.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new NumberField(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(NumberField cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - NumberField result; + private bool resultIsReadOnly; + private NumberField result; private NumberField PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { NumberField original = result; result = new NumberField(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -1077,13 +1109,13 @@ namespace UnitTest.Issues.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new NumberField(); - 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); @@ -1099,11 +1131,11 @@ namespace UnitTest.Issues.TestProtos { } public override NumberField BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -1205,12 +1237,614 @@ namespace UnitTest.Issues.TestProtos { } } + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] + public sealed partial class MyMessageAReferenceB : pb::GeneratedMessage { + private MyMessageAReferenceB() { } + private static readonly MyMessageAReferenceB defaultInstance = new MyMessageAReferenceB().MakeReadOnly(); + private static readonly string[] _myMessageAReferenceBFieldNames = new string[] { "value" }; + private static readonly uint[] _myMessageAReferenceBFieldTags = new uint[] { 10 }; + public static MyMessageAReferenceB DefaultInstance { + get { return defaultInstance; } + } + + public override MyMessageAReferenceB DefaultInstanceForType { + get { return DefaultInstance; } + } + + protected override MyMessageAReferenceB ThisMessage { + get { return this; } + } + + public static pbd::MessageDescriptor Descriptor { + get { return global::UnitTest.Issues.TestProtos.UnitTestExtrasIssuesProtoFile.internal__static_unittest_issues_MyMessageAReferenceB__Descriptor; } + } + + protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { + get { return global::UnitTest.Issues.TestProtos.UnitTestExtrasIssuesProtoFile.internal__static_unittest_issues_MyMessageAReferenceB__FieldAccessorTable; } + } + + public const int ValueFieldNumber = 1; + private bool hasValue; + private global::UnitTest.Issues.TestProtos.MyMessageBReferenceA value_; + public bool HasValue { + get { return hasValue; } + } + public global::UnitTest.Issues.TestProtos.MyMessageBReferenceA Value { + get { return value_ ?? global::UnitTest.Issues.TestProtos.MyMessageBReferenceA.DefaultInstance; } + } + + public override bool IsInitialized { + get { + if (!hasValue) return false; + if (!Value.IsInitialized) return false; + return true; + } + } + + public override void WriteTo(pb::ICodedOutputStream output) { + int size = SerializedSize; + string[] field_names = _myMessageAReferenceBFieldNames; + if (hasValue) { + output.WriteMessage(1, field_names[0], Value); + } + UnknownFields.WriteTo(output); + } + + private int memoizedSerializedSize = -1; + public override int SerializedSize { + get { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + if (hasValue) { + size += pb::CodedOutputStream.ComputeMessageSize(1, Value); + } + size += UnknownFields.SerializedSize; + memoizedSerializedSize = size; + return size; + } + } + + public static MyMessageAReferenceB ParseFrom(pb::ByteString data) { + return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed(); + } + public static MyMessageAReferenceB ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed(); + } + public static MyMessageAReferenceB ParseFrom(byte[] data) { + return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed(); + } + public static MyMessageAReferenceB ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed(); + } + public static MyMessageAReferenceB ParseFrom(global::System.IO.Stream input) { + return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed(); + } + public static MyMessageAReferenceB ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); + } + public static MyMessageAReferenceB ParseDelimitedFrom(global::System.IO.Stream input) { + return CreateBuilder().MergeDelimitedFrom(input).BuildParsed(); + } + public static MyMessageAReferenceB ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) { + return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed(); + } + public static MyMessageAReferenceB ParseFrom(pb::ICodedInputStream input) { + return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed(); + } + public static MyMessageAReferenceB ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); + } + private MyMessageAReferenceB MakeReadOnly() { + return this; + } + + public static Builder CreateBuilder() { return new Builder(); } + public override Builder ToBuilder() { return CreateBuilder(this); } + public override Builder CreateBuilderForType() { return new Builder(); } + public static Builder CreateBuilder(MyMessageAReferenceB prototype) { + return new Builder(prototype); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] + public sealed partial class Builder : pb::GeneratedBuilder { + protected override Builder ThisBuilder { + get { return this; } + } + public Builder() { + result = DefaultInstance; + resultIsReadOnly = true; + } + internal Builder(MyMessageAReferenceB cloneFrom) { + result = cloneFrom; + resultIsReadOnly = true; + } + + private bool resultIsReadOnly; + private MyMessageAReferenceB result; + + private MyMessageAReferenceB PrepareBuilder() { + if (resultIsReadOnly) { + MyMessageAReferenceB original = result; + result = new MyMessageAReferenceB(); + resultIsReadOnly = false; + MergeFrom(original); + } + return result; + } + + public override bool IsInitialized { + get { return result.IsInitialized; } + } + + protected override MyMessageAReferenceB MessageBeingBuilt { + get { return PrepareBuilder(); } + } + + public override Builder Clear() { + result = DefaultInstance; + resultIsReadOnly = true; + return this; + } + + public override Builder Clone() { + if (resultIsReadOnly) { + return new Builder(result); + } else { + return new Builder().MergeFrom(result); + } + } + + public override pbd::MessageDescriptor DescriptorForType { + get { return global::UnitTest.Issues.TestProtos.MyMessageAReferenceB.Descriptor; } + } + + public override MyMessageAReferenceB DefaultInstanceForType { + get { return global::UnitTest.Issues.TestProtos.MyMessageAReferenceB.DefaultInstance; } + } + + public override MyMessageAReferenceB BuildPartial() { + if (resultIsReadOnly) { + return result; + } + resultIsReadOnly = true; + return result.MakeReadOnly(); + } + + public override Builder MergeFrom(pb::IMessage other) { + if (other is MyMessageAReferenceB) { + return MergeFrom((MyMessageAReferenceB) other); + } else { + base.MergeFrom(other); + return this; + } + } + + public override Builder MergeFrom(MyMessageAReferenceB other) { + if (other == global::UnitTest.Issues.TestProtos.MyMessageAReferenceB.DefaultInstance) return this; + PrepareBuilder(); + if (other.HasValue) { + MergeValue(other.Value); + } + this.MergeUnknownFields(other.UnknownFields); + return this; + } + + public override Builder MergeFrom(pb::ICodedInputStream input) { + return MergeFrom(input, pb::ExtensionRegistry.Empty); + } + + public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + PrepareBuilder(); + pb::UnknownFieldSet.Builder unknownFields = null; + uint tag; + string field_name; + while (input.ReadTag(out tag, out field_name)) { + if(tag == 0 && field_name != null) { + int field_ordinal = global::System.Array.BinarySearch(_myMessageAReferenceBFieldNames, field_name, global::System.StringComparer.Ordinal); + if(field_ordinal >= 0) + tag = _myMessageAReferenceBFieldTags[field_ordinal]; + else { + if (unknownFields == null) { + unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); + } + ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name); + continue; + } + } + switch (tag) { + case 0: { + throw pb::InvalidProtocolBufferException.InvalidTag(); + } + default: { + if (pb::WireFormat.IsEndGroupTag(tag)) { + if (unknownFields != null) { + this.UnknownFields = unknownFields.Build(); + } + return this; + } + if (unknownFields == null) { + unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); + } + ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name); + break; + } + case 10: { + global::UnitTest.Issues.TestProtos.MyMessageBReferenceA.Builder subBuilder = global::UnitTest.Issues.TestProtos.MyMessageBReferenceA.CreateBuilder(); + if (result.hasValue) { + subBuilder.MergeFrom(Value); + } + input.ReadMessage(subBuilder, extensionRegistry); + Value = subBuilder.BuildPartial(); + break; + } + } + } + + if (unknownFields != null) { + this.UnknownFields = unknownFields.Build(); + } + return this; + } + + + public bool HasValue { + get { return result.hasValue; } + } + public global::UnitTest.Issues.TestProtos.MyMessageBReferenceA Value { + get { return result.Value; } + set { SetValue(value); } + } + public Builder SetValue(global::UnitTest.Issues.TestProtos.MyMessageBReferenceA value) { + pb::ThrowHelper.ThrowIfNull(value, "value"); + PrepareBuilder(); + result.hasValue = true; + result.value_ = value; + return this; + } + public Builder SetValue(global::UnitTest.Issues.TestProtos.MyMessageBReferenceA.Builder builderForValue) { + pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue"); + PrepareBuilder(); + result.hasValue = true; + result.value_ = builderForValue.Build(); + return this; + } + public Builder MergeValue(global::UnitTest.Issues.TestProtos.MyMessageBReferenceA value) { + pb::ThrowHelper.ThrowIfNull(value, "value"); + PrepareBuilder(); + if (result.hasValue && + result.value_ != global::UnitTest.Issues.TestProtos.MyMessageBReferenceA.DefaultInstance) { + result.value_ = global::UnitTest.Issues.TestProtos.MyMessageBReferenceA.CreateBuilder(result.value_).MergeFrom(value).BuildPartial(); + } else { + result.value_ = value; + } + result.hasValue = true; + return this; + } + public Builder ClearValue() { + PrepareBuilder(); + result.hasValue = false; + result.value_ = null; + return this; + } + } + static MyMessageAReferenceB() { + object.ReferenceEquals(global::UnitTest.Issues.TestProtos.UnitTestExtrasIssuesProtoFile.Descriptor, null); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] + public sealed partial class MyMessageBReferenceA : pb::GeneratedMessage { + private MyMessageBReferenceA() { } + private static readonly MyMessageBReferenceA defaultInstance = new MyMessageBReferenceA().MakeReadOnly(); + private static readonly string[] _myMessageBReferenceAFieldNames = new string[] { "value" }; + private static readonly uint[] _myMessageBReferenceAFieldTags = new uint[] { 10 }; + public static MyMessageBReferenceA DefaultInstance { + get { return defaultInstance; } + } + + public override MyMessageBReferenceA DefaultInstanceForType { + get { return DefaultInstance; } + } + + protected override MyMessageBReferenceA ThisMessage { + get { return this; } + } + + public static pbd::MessageDescriptor Descriptor { + get { return global::UnitTest.Issues.TestProtos.UnitTestExtrasIssuesProtoFile.internal__static_unittest_issues_MyMessageBReferenceA__Descriptor; } + } + + protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { + get { return global::UnitTest.Issues.TestProtos.UnitTestExtrasIssuesProtoFile.internal__static_unittest_issues_MyMessageBReferenceA__FieldAccessorTable; } + } + + public const int ValueFieldNumber = 1; + private bool hasValue; + private global::UnitTest.Issues.TestProtos.MyMessageAReferenceB value_; + public bool HasValue { + get { return hasValue; } + } + public global::UnitTest.Issues.TestProtos.MyMessageAReferenceB Value { + get { return value_ ?? global::UnitTest.Issues.TestProtos.MyMessageAReferenceB.DefaultInstance; } + } + + public override bool IsInitialized { + get { + if (!hasValue) return false; + if (!Value.IsInitialized) return false; + return true; + } + } + + public override void WriteTo(pb::ICodedOutputStream output) { + int size = SerializedSize; + string[] field_names = _myMessageBReferenceAFieldNames; + if (hasValue) { + output.WriteMessage(1, field_names[0], Value); + } + UnknownFields.WriteTo(output); + } + + private int memoizedSerializedSize = -1; + public override int SerializedSize { + get { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + if (hasValue) { + size += pb::CodedOutputStream.ComputeMessageSize(1, Value); + } + size += UnknownFields.SerializedSize; + memoizedSerializedSize = size; + return size; + } + } + + public static MyMessageBReferenceA ParseFrom(pb::ByteString data) { + return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed(); + } + public static MyMessageBReferenceA ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed(); + } + public static MyMessageBReferenceA ParseFrom(byte[] data) { + return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed(); + } + public static MyMessageBReferenceA ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed(); + } + public static MyMessageBReferenceA ParseFrom(global::System.IO.Stream input) { + return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed(); + } + public static MyMessageBReferenceA ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); + } + public static MyMessageBReferenceA ParseDelimitedFrom(global::System.IO.Stream input) { + return CreateBuilder().MergeDelimitedFrom(input).BuildParsed(); + } + public static MyMessageBReferenceA ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) { + return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed(); + } + public static MyMessageBReferenceA ParseFrom(pb::ICodedInputStream input) { + return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed(); + } + public static MyMessageBReferenceA ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); + } + private MyMessageBReferenceA MakeReadOnly() { + return this; + } + + public static Builder CreateBuilder() { return new Builder(); } + public override Builder ToBuilder() { return CreateBuilder(this); } + public override Builder CreateBuilderForType() { return new Builder(); } + public static Builder CreateBuilder(MyMessageBReferenceA prototype) { + return new Builder(prototype); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] + public sealed partial class Builder : pb::GeneratedBuilder { + protected override Builder ThisBuilder { + get { return this; } + } + public Builder() { + result = DefaultInstance; + resultIsReadOnly = true; + } + internal Builder(MyMessageBReferenceA cloneFrom) { + result = cloneFrom; + resultIsReadOnly = true; + } + + private bool resultIsReadOnly; + private MyMessageBReferenceA result; + + private MyMessageBReferenceA PrepareBuilder() { + if (resultIsReadOnly) { + MyMessageBReferenceA original = result; + result = new MyMessageBReferenceA(); + resultIsReadOnly = false; + MergeFrom(original); + } + return result; + } + + public override bool IsInitialized { + get { return result.IsInitialized; } + } + + protected override MyMessageBReferenceA MessageBeingBuilt { + get { return PrepareBuilder(); } + } + + public override Builder Clear() { + result = DefaultInstance; + resultIsReadOnly = true; + return this; + } + + public override Builder Clone() { + if (resultIsReadOnly) { + return new Builder(result); + } else { + return new Builder().MergeFrom(result); + } + } + + public override pbd::MessageDescriptor DescriptorForType { + get { return global::UnitTest.Issues.TestProtos.MyMessageBReferenceA.Descriptor; } + } + + public override MyMessageBReferenceA DefaultInstanceForType { + get { return global::UnitTest.Issues.TestProtos.MyMessageBReferenceA.DefaultInstance; } + } + + public override MyMessageBReferenceA BuildPartial() { + if (resultIsReadOnly) { + return result; + } + resultIsReadOnly = true; + return result.MakeReadOnly(); + } + + public override Builder MergeFrom(pb::IMessage other) { + if (other is MyMessageBReferenceA) { + return MergeFrom((MyMessageBReferenceA) other); + } else { + base.MergeFrom(other); + return this; + } + } + + public override Builder MergeFrom(MyMessageBReferenceA other) { + if (other == global::UnitTest.Issues.TestProtos.MyMessageBReferenceA.DefaultInstance) return this; + PrepareBuilder(); + if (other.HasValue) { + MergeValue(other.Value); + } + this.MergeUnknownFields(other.UnknownFields); + return this; + } + + public override Builder MergeFrom(pb::ICodedInputStream input) { + return MergeFrom(input, pb::ExtensionRegistry.Empty); + } + + public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + PrepareBuilder(); + pb::UnknownFieldSet.Builder unknownFields = null; + uint tag; + string field_name; + while (input.ReadTag(out tag, out field_name)) { + if(tag == 0 && field_name != null) { + int field_ordinal = global::System.Array.BinarySearch(_myMessageBReferenceAFieldNames, field_name, global::System.StringComparer.Ordinal); + if(field_ordinal >= 0) + tag = _myMessageBReferenceAFieldTags[field_ordinal]; + else { + if (unknownFields == null) { + unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); + } + ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name); + continue; + } + } + switch (tag) { + case 0: { + throw pb::InvalidProtocolBufferException.InvalidTag(); + } + default: { + if (pb::WireFormat.IsEndGroupTag(tag)) { + if (unknownFields != null) { + this.UnknownFields = unknownFields.Build(); + } + return this; + } + if (unknownFields == null) { + unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); + } + ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name); + break; + } + case 10: { + global::UnitTest.Issues.TestProtos.MyMessageAReferenceB.Builder subBuilder = global::UnitTest.Issues.TestProtos.MyMessageAReferenceB.CreateBuilder(); + if (result.hasValue) { + subBuilder.MergeFrom(Value); + } + input.ReadMessage(subBuilder, extensionRegistry); + Value = subBuilder.BuildPartial(); + break; + } + } + } + + if (unknownFields != null) { + this.UnknownFields = unknownFields.Build(); + } + return this; + } + + + public bool HasValue { + get { return result.hasValue; } + } + public global::UnitTest.Issues.TestProtos.MyMessageAReferenceB Value { + get { return result.Value; } + set { SetValue(value); } + } + public Builder SetValue(global::UnitTest.Issues.TestProtos.MyMessageAReferenceB value) { + pb::ThrowHelper.ThrowIfNull(value, "value"); + PrepareBuilder(); + result.hasValue = true; + result.value_ = value; + return this; + } + public Builder SetValue(global::UnitTest.Issues.TestProtos.MyMessageAReferenceB.Builder builderForValue) { + pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue"); + PrepareBuilder(); + result.hasValue = true; + result.value_ = builderForValue.Build(); + return this; + } + public Builder MergeValue(global::UnitTest.Issues.TestProtos.MyMessageAReferenceB value) { + pb::ThrowHelper.ThrowIfNull(value, "value"); + PrepareBuilder(); + if (result.hasValue && + result.value_ != global::UnitTest.Issues.TestProtos.MyMessageAReferenceB.DefaultInstance) { + result.value_ = global::UnitTest.Issues.TestProtos.MyMessageAReferenceB.CreateBuilder(result.value_).MergeFrom(value).BuildPartial(); + } else { + result.value_ = value; + } + result.hasValue = true; + return this; + } + public Builder ClearValue() { + PrepareBuilder(); + result.hasValue = false; + result.value_ = null; + return this; + } + } + static MyMessageBReferenceA() { + object.ReferenceEquals(global::UnitTest.Issues.TestProtos.UnitTestExtrasIssuesProtoFile.Descriptor, null); + } + } + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class NegativeEnumMessage : pb::GeneratedMessage { private NegativeEnumMessage() { } - private static readonly NegativeEnumMessage defaultInstance = new Builder().BuildPartial(); + private static readonly NegativeEnumMessage defaultInstance = new NegativeEnumMessage().MakeReadOnly(); private static readonly string[] _negativeEnumMessageFieldNames = new string[] { "packed_values", "value", "values" }; private static readonly uint[] _negativeEnumMessageFieldTags = new uint[] { 26, 8, 16 }; public static NegativeEnumMessage DefaultInstance { @@ -1218,7 +1852,7 @@ namespace UnitTest.Issues.TestProtos { } public override NegativeEnumMessage DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override NegativeEnumMessage ThisMessage { @@ -1357,6 +1991,12 @@ namespace UnitTest.Issues.TestProtos { public static NegativeEnumMessage ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private NegativeEnumMessage MakeReadOnly() { + values_.MakeReadOnly(); + packedValues_.MakeReadOnly(); + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -1372,22 +2012,22 @@ namespace UnitTest.Issues.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new NegativeEnumMessage(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(NegativeEnumMessage cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - NegativeEnumMessage result; + private bool resultIsReadOnly; + private NegativeEnumMessage result; private NegativeEnumMessage PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { NegativeEnumMessage original = result; result = new NegativeEnumMessage(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -1402,13 +2042,13 @@ namespace UnitTest.Issues.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new NegativeEnumMessage(); - 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); @@ -1424,13 +2064,11 @@ namespace UnitTest.Issues.TestProtos { } public override NegativeEnumMessage BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - result.values_.MakeReadOnly(); - result.packedValues_.MakeReadOnly(); - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -1637,7 +2275,7 @@ namespace UnitTest.Issues.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class DeprecatedChild : pb::GeneratedMessage { private DeprecatedChild() { } - private static readonly DeprecatedChild defaultInstance = new Builder().BuildPartial(); + private static readonly DeprecatedChild defaultInstance = new DeprecatedChild().MakeReadOnly(); private static readonly string[] _deprecatedChildFieldNames = new string[] { }; private static readonly uint[] _deprecatedChildFieldTags = new uint[] { }; public static DeprecatedChild DefaultInstance { @@ -1645,7 +2283,7 @@ namespace UnitTest.Issues.TestProtos { } public override DeprecatedChild DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override DeprecatedChild ThisMessage { @@ -1715,6 +2353,10 @@ namespace UnitTest.Issues.TestProtos { public static DeprecatedChild ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private DeprecatedChild MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -1730,22 +2372,22 @@ namespace UnitTest.Issues.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new DeprecatedChild(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(DeprecatedChild cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - DeprecatedChild result; + private bool resultIsReadOnly; + private DeprecatedChild result; private DeprecatedChild PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { DeprecatedChild original = result; result = new DeprecatedChild(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -1760,13 +2402,13 @@ namespace UnitTest.Issues.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new DeprecatedChild(); - 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); @@ -1782,11 +2424,11 @@ namespace UnitTest.Issues.TestProtos { } public override DeprecatedChild BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -1864,7 +2506,7 @@ namespace UnitTest.Issues.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class DeprecatedFieldsMessage : pb::GeneratedMessage { private DeprecatedFieldsMessage() { } - private static readonly DeprecatedFieldsMessage defaultInstance = new Builder().BuildPartial(); + private static readonly DeprecatedFieldsMessage defaultInstance = new DeprecatedFieldsMessage().MakeReadOnly(); private static readonly string[] _deprecatedFieldsMessageFieldNames = new string[] { "EnumArray", "EnumValue", "MessageArray", "MessageValue", "PrimitiveArray", "PrimitiveValue" }; private static readonly uint[] _deprecatedFieldsMessageFieldTags = new uint[] { 48, 40, 34, 26, 16, 8 }; public static DeprecatedFieldsMessage DefaultInstance { @@ -1872,7 +2514,7 @@ namespace UnitTest.Issues.TestProtos { } public override DeprecatedFieldsMessage DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override DeprecatedFieldsMessage ThisMessage { @@ -1916,14 +2558,14 @@ namespace UnitTest.Issues.TestProtos { public const int MessageValueFieldNumber = 3; private bool hasMessageValue; - private global::UnitTest.Issues.TestProtos.DeprecatedChild messageValue_ = global::UnitTest.Issues.TestProtos.DeprecatedChild.DefaultInstance; + private global::UnitTest.Issues.TestProtos.DeprecatedChild messageValue_; [global::System.ObsoleteAttribute()] public bool HasMessageValue { get { return hasMessageValue; } } [global::System.ObsoleteAttribute()] public global::UnitTest.Issues.TestProtos.DeprecatedChild MessageValue { - get { return messageValue_; } + get { return messageValue_ ?? global::UnitTest.Issues.TestProtos.DeprecatedChild.DefaultInstance; } } public const int MessageArrayFieldNumber = 4; @@ -2071,6 +2713,13 @@ namespace UnitTest.Issues.TestProtos { public static DeprecatedFieldsMessage ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private DeprecatedFieldsMessage MakeReadOnly() { + primitiveArray_.MakeReadOnly(); + messageArray_.MakeReadOnly(); + enumArray_.MakeReadOnly(); + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -2086,22 +2735,22 @@ namespace UnitTest.Issues.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new DeprecatedFieldsMessage(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(DeprecatedFieldsMessage cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - DeprecatedFieldsMessage result; + private bool resultIsReadOnly; + private DeprecatedFieldsMessage result; private DeprecatedFieldsMessage PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { DeprecatedFieldsMessage original = result; result = new DeprecatedFieldsMessage(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -2116,13 +2765,13 @@ namespace UnitTest.Issues.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new DeprecatedFieldsMessage(); - 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); @@ -2138,14 +2787,11 @@ namespace UnitTest.Issues.TestProtos { } public override DeprecatedFieldsMessage BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - result.primitiveArray_.MakeReadOnly(); - result.messageArray_.MakeReadOnly(); - result.enumArray_.MakeReadOnly(); - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -2382,7 +3028,7 @@ namespace UnitTest.Issues.TestProtos { public Builder ClearMessageValue() { PrepareBuilder(); result.hasMessageValue = false; - result.messageValue_ = global::UnitTest.Issues.TestProtos.DeprecatedChild.DefaultInstance; + result.messageValue_ = null; return this; } diff --git a/src/ProtocolBuffers.Test/TestProtos/UnitTestGoogleSizeProtoFile.cs b/src/ProtocolBuffers.Test/TestProtos/UnitTestGoogleSizeProtoFile.cs index 9ba1919ed8..a758ba8154 100644 --- a/src/ProtocolBuffers.Test/TestProtos/UnitTestGoogleSizeProtoFile.cs +++ b/src/ProtocolBuffers.Test/TestProtos/UnitTestGoogleSizeProtoFile.cs @@ -138,13 +138,13 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class SizeMessage1 : pb::GeneratedMessage { private SizeMessage1() { } - private static readonly SizeMessage1 defaultInstance = new Builder().BuildPartial(); + private static readonly SizeMessage1 defaultInstance = new SizeMessage1().MakeReadOnly(); public static SizeMessage1 DefaultInstance { get { return defaultInstance; } } public override SizeMessage1 DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override SizeMessage1 ThisMessage { @@ -505,12 +505,12 @@ namespace Google.ProtocolBuffers.TestProtos { public const int Field15FieldNumber = 15; private bool hasField15; - private global::Google.ProtocolBuffers.TestProtos.SizeMessage1SubMessage field15_ = global::Google.ProtocolBuffers.TestProtos.SizeMessage1SubMessage.DefaultInstance; + private global::Google.ProtocolBuffers.TestProtos.SizeMessage1SubMessage field15_; public bool HasField15 { get { return hasField15; } } public global::Google.ProtocolBuffers.TestProtos.SizeMessage1SubMessage Field15 { - get { return field15_; } + get { return field15_ ?? global::Google.ProtocolBuffers.TestProtos.SizeMessage1SubMessage.DefaultInstance; } } public const int Field78FieldNumber = 78; @@ -603,6 +603,11 @@ namespace Google.ProtocolBuffers.TestProtos { public static SizeMessage1 ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private SizeMessage1 MakeReadOnly() { + field5_.MakeReadOnly(); + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -618,22 +623,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new SizeMessage1(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(SizeMessage1 cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - SizeMessage1 result; + private bool resultIsReadOnly; + private SizeMessage1 result; private SizeMessage1 PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { SizeMessage1 original = result; result = new SizeMessage1(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -648,13 +653,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new SizeMessage1(); - 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); @@ -670,12 +675,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override SizeMessage1 BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - result.field5_.MakeReadOnly(); - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } @@ -1417,7 +1421,7 @@ namespace Google.ProtocolBuffers.TestProtos { public Builder ClearField15() { PrepareBuilder(); result.hasField15 = false; - result.field15_ = global::Google.ProtocolBuffers.TestProtos.SizeMessage1SubMessage.DefaultInstance; + result.field15_ = null; return this; } @@ -1552,13 +1556,13 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class SizeMessage1SubMessage : pb::GeneratedMessage { private SizeMessage1SubMessage() { } - private static readonly SizeMessage1SubMessage defaultInstance = new Builder().BuildPartial(); + private static readonly SizeMessage1SubMessage defaultInstance = new SizeMessage1SubMessage().MakeReadOnly(); public static SizeMessage1SubMessage DefaultInstance { get { return defaultInstance; } } public override SizeMessage1SubMessage DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override SizeMessage1SubMessage ThisMessage { @@ -1807,6 +1811,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static SizeMessage1SubMessage ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private SizeMessage1SubMessage MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -1822,22 +1830,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new SizeMessage1SubMessage(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(SizeMessage1SubMessage cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - SizeMessage1SubMessage result; + private bool resultIsReadOnly; + private SizeMessage1SubMessage result; private SizeMessage1SubMessage PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { SizeMessage1SubMessage original = result; result = new SizeMessage1SubMessage(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -1852,13 +1860,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new SizeMessage1SubMessage(); - 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); @@ -1874,11 +1882,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override SizeMessage1SubMessage BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } @@ -2302,13 +2310,13 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class SizeMessage2 : pb::GeneratedMessage { private SizeMessage2() { } - private static readonly SizeMessage2 defaultInstance = new Builder().BuildPartial(); + private static readonly SizeMessage2 defaultInstance = new SizeMessage2().MakeReadOnly(); public static SizeMessage2 DefaultInstance { get { return defaultInstance; } } public override SizeMessage2 DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override SizeMessage2 ThisMessage { @@ -2333,13 +2341,13 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class Group1 : pb::GeneratedMessage { private Group1() { } - private static readonly Group1 defaultInstance = new Builder().BuildPartial(); + private static readonly Group1 defaultInstance = new Group1().MakeReadOnly(); public static Group1 DefaultInstance { get { return defaultInstance; } } public override Group1 DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override Group1 ThisMessage { @@ -2513,12 +2521,12 @@ namespace Google.ProtocolBuffers.TestProtos { public const int Field31FieldNumber = 31; private bool hasField31; - private global::Google.ProtocolBuffers.TestProtos.SizeMessage2GroupedMessage field31_ = global::Google.ProtocolBuffers.TestProtos.SizeMessage2GroupedMessage.DefaultInstance; + private global::Google.ProtocolBuffers.TestProtos.SizeMessage2GroupedMessage field31_; public bool HasField31 { get { return hasField31; } } public global::Google.ProtocolBuffers.TestProtos.SizeMessage2GroupedMessage Field31 { - get { return field31_; } + get { return field31_ ?? global::Google.ProtocolBuffers.TestProtos.SizeMessage2GroupedMessage.DefaultInstance; } } public static Group1 ParseFrom(pb::ByteString data) { @@ -2551,6 +2559,13 @@ namespace Google.ProtocolBuffers.TestProtos { public static Group1 ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private Group1 MakeReadOnly() { + field14_.MakeReadOnly(); + field22_.MakeReadOnly(); + field73_.MakeReadOnly(); + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -2566,22 +2581,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new Group1(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(Group1 cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - Group1 result; + private bool resultIsReadOnly; + private Group1 result; private Group1 PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { Group1 original = result; result = new Group1(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -2596,13 +2611,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new Group1(); - 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); @@ -2618,14 +2633,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Group1 BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - result.field14_.MakeReadOnly(); - result.field22_.MakeReadOnly(); - result.field73_.MakeReadOnly(); - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } @@ -3007,7 +3019,7 @@ namespace Google.ProtocolBuffers.TestProtos { public Builder ClearField31() { PrepareBuilder(); result.hasField31 = false; - result.field31_ = global::Google.ProtocolBuffers.TestProtos.SizeMessage2GroupedMessage.DefaultInstance; + result.field31_ = null; return this; } } @@ -3357,6 +3369,14 @@ namespace Google.ProtocolBuffers.TestProtos { public static SizeMessage2 ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private SizeMessage2 MakeReadOnly() { + group1_.MakeReadOnly(); + field128_.MakeReadOnly(); + field127_.MakeReadOnly(); + field130_.MakeReadOnly(); + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -3372,22 +3392,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new SizeMessage2(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(SizeMessage2 cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - SizeMessage2 result; + private bool resultIsReadOnly; + private SizeMessage2 result; private SizeMessage2 PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { SizeMessage2 original = result; result = new SizeMessage2(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -3402,13 +3422,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new SizeMessage2(); - 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); @@ -3424,15 +3444,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override SizeMessage2 BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - result.group1_.MakeReadOnly(); - result.field128_.MakeReadOnly(); - result.field127_.MakeReadOnly(); - result.field130_.MakeReadOnly(); - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } @@ -4107,13 +4123,13 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class SizeMessage2GroupedMessage : pb::GeneratedMessage { private SizeMessage2GroupedMessage() { } - private static readonly SizeMessage2GroupedMessage defaultInstance = new Builder().BuildPartial(); + private static readonly SizeMessage2GroupedMessage defaultInstance = new SizeMessage2GroupedMessage().MakeReadOnly(); public static SizeMessage2GroupedMessage DefaultInstance { get { return defaultInstance; } } public override SizeMessage2GroupedMessage DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override SizeMessage2GroupedMessage ThisMessage { @@ -4268,6 +4284,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static SizeMessage2GroupedMessage ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private SizeMessage2GroupedMessage MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -4283,22 +4303,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new SizeMessage2GroupedMessage(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(SizeMessage2GroupedMessage cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - SizeMessage2GroupedMessage result; + private bool resultIsReadOnly; + private SizeMessage2GroupedMessage result; private SizeMessage2GroupedMessage PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { SizeMessage2GroupedMessage original = result; result = new SizeMessage2GroupedMessage(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -4313,13 +4333,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new SizeMessage2GroupedMessage(); - 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); @@ -4335,11 +4355,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override SizeMessage2GroupedMessage BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } diff --git a/src/ProtocolBuffers.Test/TestProtos/UnitTestGoogleSpeedProtoFile.cs b/src/ProtocolBuffers.Test/TestProtos/UnitTestGoogleSpeedProtoFile.cs index 496fb43699..c7e1a93b55 100644 --- a/src/ProtocolBuffers.Test/TestProtos/UnitTestGoogleSpeedProtoFile.cs +++ b/src/ProtocolBuffers.Test/TestProtos/UnitTestGoogleSpeedProtoFile.cs @@ -138,7 +138,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class SpeedMessage1 : pb::GeneratedMessage { private SpeedMessage1() { } - private static readonly SpeedMessage1 defaultInstance = new Builder().BuildPartial(); + private static readonly SpeedMessage1 defaultInstance = new SpeedMessage1().MakeReadOnly(); private static readonly string[] _speedMessage1FieldNames = new string[] { "field1", "field100", "field101", "field102", "field103", "field104", "field12", "field128", "field129", "field13", "field130", "field131", "field14", "field15", "field150", "field16", "field17", "field18", "field2", "field22", "field23", "field24", "field25", "field271", "field272", "field280", "field29", "field3", "field30", "field4", "field5", "field59", "field6", "field60", "field67", "field68", "field7", "field78", "field80", "field81", "field9" }; private static readonly uint[] _speedMessage1FieldTags = new uint[] { 10, 800, 808, 818, 826, 832, 96, 1024, 1034, 104, 1040, 1048, 112, 122, 1200, 128, 136, 146, 16, 176, 184, 192, 200, 2168, 2176, 2240, 232, 24, 240, 34, 41, 472, 48, 480, 536, 544, 58, 624, 640, 648, 74 }; public static SpeedMessage1 DefaultInstance { @@ -146,7 +146,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override SpeedMessage1 DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override SpeedMessage1 ThisMessage { @@ -507,12 +507,12 @@ namespace Google.ProtocolBuffers.TestProtos { public const int Field15FieldNumber = 15; private bool hasField15; - private global::Google.ProtocolBuffers.TestProtos.SpeedMessage1SubMessage field15_ = global::Google.ProtocolBuffers.TestProtos.SpeedMessage1SubMessage.DefaultInstance; + private global::Google.ProtocolBuffers.TestProtos.SpeedMessage1SubMessage field15_; public bool HasField15 { get { return hasField15; } } public global::Google.ProtocolBuffers.TestProtos.SpeedMessage1SubMessage Field15 { - get { return field15_; } + get { return field15_ ?? global::Google.ProtocolBuffers.TestProtos.SpeedMessage1SubMessage.DefaultInstance; } } public const int Field78FieldNumber = 78; @@ -882,6 +882,11 @@ namespace Google.ProtocolBuffers.TestProtos { public static SpeedMessage1 ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private SpeedMessage1 MakeReadOnly() { + field5_.MakeReadOnly(); + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -897,22 +902,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new SpeedMessage1(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(SpeedMessage1 cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - SpeedMessage1 result; + private bool resultIsReadOnly; + private SpeedMessage1 result; private SpeedMessage1 PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { SpeedMessage1 original = result; result = new SpeedMessage1(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -927,13 +932,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new SpeedMessage1(); - 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); @@ -949,12 +954,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override SpeedMessage1 BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - result.field5_.MakeReadOnly(); - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -2053,7 +2057,7 @@ namespace Google.ProtocolBuffers.TestProtos { public Builder ClearField15() { PrepareBuilder(); result.hasField15 = false; - result.field15_ = global::Google.ProtocolBuffers.TestProtos.SpeedMessage1SubMessage.DefaultInstance; + result.field15_ = null; return this; } @@ -2188,7 +2192,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class SpeedMessage1SubMessage : pb::GeneratedMessage { private SpeedMessage1SubMessage() { } - private static readonly SpeedMessage1SubMessage defaultInstance = new Builder().BuildPartial(); + private static readonly SpeedMessage1SubMessage defaultInstance = new SpeedMessage1SubMessage().MakeReadOnly(); private static readonly string[] _speedMessage1SubMessageFieldNames = new string[] { "field1", "field12", "field13", "field14", "field15", "field16", "field19", "field2", "field20", "field203", "field204", "field205", "field206", "field207", "field21", "field22", "field23", "field28", "field3", "field300" }; private static readonly uint[] _speedMessage1SubMessageFieldTags = new uint[] { 8, 96, 104, 112, 122, 128, 152, 16, 160, 1629, 1632, 1642, 1648, 1656, 169, 176, 184, 224, 24, 2400 }; public static SpeedMessage1SubMessage DefaultInstance { @@ -2196,7 +2200,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override SpeedMessage1SubMessage DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override SpeedMessage1SubMessage ThisMessage { @@ -2590,6 +2594,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static SpeedMessage1SubMessage ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private SpeedMessage1SubMessage MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -2605,22 +2613,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new SpeedMessage1SubMessage(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(SpeedMessage1SubMessage cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - SpeedMessage1SubMessage result; + private bool resultIsReadOnly; + private SpeedMessage1SubMessage result; private SpeedMessage1SubMessage PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { SpeedMessage1SubMessage original = result; result = new SpeedMessage1SubMessage(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -2635,13 +2643,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new SpeedMessage1SubMessage(); - 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); @@ -2657,11 +2665,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override SpeedMessage1SubMessage BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -3289,7 +3297,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class SpeedMessage2 : pb::GeneratedMessage { private SpeedMessage2() { } - private static readonly SpeedMessage2 defaultInstance = new Builder().BuildPartial(); + private static readonly SpeedMessage2 defaultInstance = new SpeedMessage2().MakeReadOnly(); private static readonly string[] _speedMessage2FieldNames = new string[] { "field1", "field109", "field127", "field128", "field129", "field130", "field131", "field2", "field205", "field206", "field21", "field210", "field211", "field212", "field213", "field216", "field217", "field218", "field220", "field221", "field222", "field25", "field3", "field30", "field4", "field6", "field63", "field71", "field75", "group1" }; private static readonly uint[] _speedMessage2FieldTags = new uint[] { 10, 872, 1018, 1026, 1032, 1040, 1048, 18, 1640, 1648, 168, 1680, 1688, 1696, 1704, 1728, 1736, 1744, 1760, 1768, 1781, 205, 24, 240, 32, 50, 504, 568, 600, 83 }; public static SpeedMessage2 DefaultInstance { @@ -3297,7 +3305,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override SpeedMessage2 DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override SpeedMessage2 ThisMessage { @@ -3322,7 +3330,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class Group1 : pb::GeneratedMessage { private Group1() { } - private static readonly Group1 defaultInstance = new Builder().BuildPartial(); + private static readonly Group1 defaultInstance = new Group1().MakeReadOnly(); private static readonly string[] _group1FieldNames = new string[] { "field11", "field12", "field13", "field14", "field15", "field16", "field20", "field22", "field24", "field26", "field27", "field28", "field29", "field31", "field5", "field73" }; private static readonly uint[] _group1FieldTags = new uint[] { 93, 98, 106, 114, 120, 130, 160, 178, 194, 213, 218, 224, 234, 250, 40, 584 }; public static Group1 DefaultInstance { @@ -3330,7 +3338,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Group1 DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override Group1 ThisMessage { @@ -3504,12 +3512,12 @@ namespace Google.ProtocolBuffers.TestProtos { public const int Field31FieldNumber = 31; private bool hasField31; - private global::Google.ProtocolBuffers.TestProtos.SpeedMessage2GroupedMessage field31_ = global::Google.ProtocolBuffers.TestProtos.SpeedMessage2GroupedMessage.DefaultInstance; + private global::Google.ProtocolBuffers.TestProtos.SpeedMessage2GroupedMessage field31_; public bool HasField31 { get { return hasField31; } } public global::Google.ProtocolBuffers.TestProtos.SpeedMessage2GroupedMessage Field31 { - get { return field31_; } + get { return field31_ ?? global::Google.ProtocolBuffers.TestProtos.SpeedMessage2GroupedMessage.DefaultInstance; } } public override bool IsInitialized { @@ -3680,6 +3688,13 @@ namespace Google.ProtocolBuffers.TestProtos { public static Group1 ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private Group1 MakeReadOnly() { + field14_.MakeReadOnly(); + field22_.MakeReadOnly(); + field73_.MakeReadOnly(); + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -3695,22 +3710,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new Group1(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(Group1 cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - Group1 result; + private bool resultIsReadOnly; + private Group1 result; private Group1 PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { Group1 original = result; result = new Group1(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -3725,13 +3740,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new Group1(); - 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); @@ -3747,14 +3762,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Group1 BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - result.field14_.MakeReadOnly(); - result.field22_.MakeReadOnly(); - result.field73_.MakeReadOnly(); - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -4318,7 +4330,7 @@ namespace Google.ProtocolBuffers.TestProtos { public Builder ClearField31() { PrepareBuilder(); result.hasField31 = false; - result.field31_ = global::Google.ProtocolBuffers.TestProtos.SpeedMessage2GroupedMessage.DefaultInstance; + result.field31_ = null; return this; } } @@ -4888,6 +4900,14 @@ namespace Google.ProtocolBuffers.TestProtos { public static SpeedMessage2 ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private SpeedMessage2 MakeReadOnly() { + group1_.MakeReadOnly(); + field128_.MakeReadOnly(); + field127_.MakeReadOnly(); + field130_.MakeReadOnly(); + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -4903,22 +4923,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new SpeedMessage2(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(SpeedMessage2 cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - SpeedMessage2 result; + private bool resultIsReadOnly; + private SpeedMessage2 result; private SpeedMessage2 PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { SpeedMessage2 original = result; result = new SpeedMessage2(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -4933,13 +4953,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new SpeedMessage2(); - 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); @@ -4955,15 +4975,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override SpeedMessage2 BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - result.group1_.MakeReadOnly(); - result.field128_.MakeReadOnly(); - result.field127_.MakeReadOnly(); - result.field130_.MakeReadOnly(); - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -5913,7 +5929,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class SpeedMessage2GroupedMessage : pb::GeneratedMessage { private SpeedMessage2GroupedMessage() { } - private static readonly SpeedMessage2GroupedMessage defaultInstance = new Builder().BuildPartial(); + private static readonly SpeedMessage2GroupedMessage defaultInstance = new SpeedMessage2GroupedMessage().MakeReadOnly(); private static readonly string[] _speedMessage2GroupedMessageFieldNames = new string[] { "field1", "field10", "field11", "field2", "field3", "field4", "field5", "field6", "field7", "field8", "field9" }; private static readonly uint[] _speedMessage2GroupedMessageFieldTags = new uint[] { 13, 85, 88, 21, 29, 32, 40, 48, 56, 69, 72 }; public static SpeedMessage2GroupedMessage DefaultInstance { @@ -5921,7 +5937,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override SpeedMessage2GroupedMessage DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override SpeedMessage2GroupedMessage ThisMessage { @@ -6167,6 +6183,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static SpeedMessage2GroupedMessage ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private SpeedMessage2GroupedMessage MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -6182,22 +6202,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new SpeedMessage2GroupedMessage(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(SpeedMessage2GroupedMessage cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - SpeedMessage2GroupedMessage result; + private bool resultIsReadOnly; + private SpeedMessage2GroupedMessage result; private SpeedMessage2GroupedMessage PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { SpeedMessage2GroupedMessage original = result; result = new SpeedMessage2GroupedMessage(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -6212,13 +6232,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new SpeedMessage2GroupedMessage(); - 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); @@ -6234,11 +6254,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override SpeedMessage2GroupedMessage BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { diff --git a/src/ProtocolBuffers.Test/TestProtos/UnitTestImportLiteProtoFile.cs b/src/ProtocolBuffers.Test/TestProtos/UnitTestImportLiteProtoFile.cs index 98672cf29a..f31fdd89de 100644 --- a/src/ProtocolBuffers.Test/TestProtos/UnitTestImportLiteProtoFile.cs +++ b/src/ProtocolBuffers.Test/TestProtos/UnitTestImportLiteProtoFile.cs @@ -44,7 +44,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class ImportMessageLite : pb::GeneratedMessageLite { private ImportMessageLite() { } - private static readonly ImportMessageLite defaultInstance = new Builder().BuildPartial(); + private static readonly ImportMessageLite defaultInstance = new ImportMessageLite().MakeReadOnly(); private static readonly string[] _importMessageLiteFieldNames = new string[] { "d" }; private static readonly uint[] _importMessageLiteFieldTags = new uint[] { 8 }; public static ImportMessageLite DefaultInstance { @@ -52,7 +52,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override ImportMessageLite DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override ImportMessageLite ThisMessage { @@ -147,6 +147,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static ImportMessageLite ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private ImportMessageLite MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -162,22 +166,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new ImportMessageLite(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(ImportMessageLite cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - ImportMessageLite result; + private bool resultIsReadOnly; + private ImportMessageLite result; private ImportMessageLite PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { ImportMessageLite original = result; result = new ImportMessageLite(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -192,13 +196,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new ImportMessageLite(); - 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); @@ -210,11 +214,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override ImportMessageLite BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessageLite other) { diff --git a/src/ProtocolBuffers.Test/TestProtos/UnitTestImportProtoFile.cs b/src/ProtocolBuffers.Test/TestProtos/UnitTestImportProtoFile.cs index 086dda1d45..c12aef8ece 100644 --- a/src/ProtocolBuffers.Test/TestProtos/UnitTestImportProtoFile.cs +++ b/src/ProtocolBuffers.Test/TestProtos/UnitTestImportProtoFile.cs @@ -72,7 +72,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class ImportMessage : pb::GeneratedMessage { private ImportMessage() { } - private static readonly ImportMessage defaultInstance = new Builder().BuildPartial(); + private static readonly ImportMessage defaultInstance = new ImportMessage().MakeReadOnly(); private static readonly string[] _importMessageFieldNames = new string[] { "d" }; private static readonly uint[] _importMessageFieldTags = new uint[] { 8 }; public static ImportMessage DefaultInstance { @@ -80,7 +80,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override ImportMessage DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override ImportMessage ThisMessage { @@ -166,6 +166,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static ImportMessage ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private ImportMessage MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -181,22 +185,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new ImportMessage(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(ImportMessage cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - ImportMessage result; + private bool resultIsReadOnly; + private ImportMessage result; private ImportMessage PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { ImportMessage original = result; result = new ImportMessage(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -211,13 +215,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new ImportMessage(); - 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); @@ -233,11 +237,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override ImportMessage BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { diff --git a/src/ProtocolBuffers.Test/TestProtos/UnitTestMessageSetProtoFile.cs b/src/ProtocolBuffers.Test/TestProtos/UnitTestMessageSetProtoFile.cs index 6a90612cfb..f9cec1af9a 100644 --- a/src/ProtocolBuffers.Test/TestProtos/UnitTestMessageSetProtoFile.cs +++ b/src/ProtocolBuffers.Test/TestProtos/UnitTestMessageSetProtoFile.cs @@ -104,7 +104,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class TestMessageSet : pb::ExtendableMessage { private TestMessageSet() { } - private static readonly TestMessageSet defaultInstance = new Builder().BuildPartial(); + private static readonly TestMessageSet defaultInstance = new TestMessageSet().MakeReadOnly(); private static readonly string[] _testMessageSetFieldNames = new string[] { }; private static readonly uint[] _testMessageSetFieldTags = new uint[] { }; public static TestMessageSet DefaultInstance { @@ -112,7 +112,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestMessageSet DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override TestMessageSet ThisMessage { @@ -186,6 +186,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static TestMessageSet ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private TestMessageSet MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -201,22 +205,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new TestMessageSet(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(TestMessageSet cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - TestMessageSet result; + private bool resultIsReadOnly; + private TestMessageSet result; private TestMessageSet PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { TestMessageSet original = result; result = new TestMessageSet(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -231,13 +235,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new TestMessageSet(); - 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); @@ -253,11 +257,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestMessageSet BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -336,7 +340,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class TestMessageSetContainer : pb::GeneratedMessage { private TestMessageSetContainer() { } - private static readonly TestMessageSetContainer defaultInstance = new Builder().BuildPartial(); + private static readonly TestMessageSetContainer defaultInstance = new TestMessageSetContainer().MakeReadOnly(); private static readonly string[] _testMessageSetContainerFieldNames = new string[] { "message_set" }; private static readonly uint[] _testMessageSetContainerFieldTags = new uint[] { 10 }; public static TestMessageSetContainer DefaultInstance { @@ -344,7 +348,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestMessageSetContainer DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override TestMessageSetContainer ThisMessage { @@ -361,12 +365,12 @@ namespace Google.ProtocolBuffers.TestProtos { public const int MessageSetFieldNumber = 1; private bool hasMessageSet; - private global::Google.ProtocolBuffers.TestProtos.TestMessageSet messageSet_ = global::Google.ProtocolBuffers.TestProtos.TestMessageSet.DefaultInstance; + private global::Google.ProtocolBuffers.TestProtos.TestMessageSet messageSet_; public bool HasMessageSet { get { return hasMessageSet; } } public global::Google.ProtocolBuffers.TestProtos.TestMessageSet MessageSet { - get { return messageSet_; } + get { return messageSet_ ?? global::Google.ProtocolBuffers.TestProtos.TestMessageSet.DefaultInstance; } } public override bool IsInitialized { @@ -430,6 +434,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static TestMessageSetContainer ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private TestMessageSetContainer MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -445,22 +453,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new TestMessageSetContainer(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(TestMessageSetContainer cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - TestMessageSetContainer result; + private bool resultIsReadOnly; + private TestMessageSetContainer result; private TestMessageSetContainer PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { TestMessageSetContainer original = result; result = new TestMessageSetContainer(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -475,13 +483,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new TestMessageSetContainer(); - 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); @@ -497,11 +505,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestMessageSetContainer BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -617,7 +625,7 @@ namespace Google.ProtocolBuffers.TestProtos { public Builder ClearMessageSet() { PrepareBuilder(); result.hasMessageSet = false; - result.messageSet_ = global::Google.ProtocolBuffers.TestProtos.TestMessageSet.DefaultInstance; + result.messageSet_ = null; return this; } } @@ -631,7 +639,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class TestMessageSetExtension1 : pb::GeneratedMessage { private TestMessageSetExtension1() { } - private static readonly TestMessageSetExtension1 defaultInstance = new Builder().BuildPartial(); + private static readonly TestMessageSetExtension1 defaultInstance = new TestMessageSetExtension1().MakeReadOnly(); private static readonly string[] _testMessageSetExtension1FieldNames = new string[] { "i" }; private static readonly uint[] _testMessageSetExtension1FieldTags = new uint[] { 120 }; public static TestMessageSetExtension1 DefaultInstance { @@ -639,7 +647,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestMessageSetExtension1 DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override TestMessageSetExtension1 ThisMessage { @@ -727,6 +735,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static TestMessageSetExtension1 ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private TestMessageSetExtension1 MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -742,22 +754,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new TestMessageSetExtension1(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(TestMessageSetExtension1 cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - TestMessageSetExtension1 result; + private bool resultIsReadOnly; + private TestMessageSetExtension1 result; private TestMessageSetExtension1 PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { TestMessageSetExtension1 original = result; result = new TestMessageSetExtension1(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -772,13 +784,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new TestMessageSetExtension1(); - 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); @@ -794,11 +806,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestMessageSetExtension1 BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -903,7 +915,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class TestMessageSetExtension2 : pb::GeneratedMessage { private TestMessageSetExtension2() { } - private static readonly TestMessageSetExtension2 defaultInstance = new Builder().BuildPartial(); + private static readonly TestMessageSetExtension2 defaultInstance = new TestMessageSetExtension2().MakeReadOnly(); private static readonly string[] _testMessageSetExtension2FieldNames = new string[] { "str" }; private static readonly uint[] _testMessageSetExtension2FieldTags = new uint[] { 202 }; public static TestMessageSetExtension2 DefaultInstance { @@ -911,7 +923,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestMessageSetExtension2 DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override TestMessageSetExtension2 ThisMessage { @@ -999,6 +1011,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static TestMessageSetExtension2 ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private TestMessageSetExtension2 MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -1014,22 +1030,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new TestMessageSetExtension2(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(TestMessageSetExtension2 cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - TestMessageSetExtension2 result; + private bool resultIsReadOnly; + private TestMessageSetExtension2 result; private TestMessageSetExtension2 PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { TestMessageSetExtension2 original = result; result = new TestMessageSetExtension2(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -1044,13 +1060,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new TestMessageSetExtension2(); - 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); @@ -1066,11 +1082,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestMessageSetExtension2 BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -1176,7 +1192,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class RawMessageSet : pb::GeneratedMessage { private RawMessageSet() { } - private static readonly RawMessageSet defaultInstance = new Builder().BuildPartial(); + private static readonly RawMessageSet defaultInstance = new RawMessageSet().MakeReadOnly(); private static readonly string[] _rawMessageSetFieldNames = new string[] { "item" }; private static readonly uint[] _rawMessageSetFieldTags = new uint[] { 11 }; public static RawMessageSet DefaultInstance { @@ -1184,7 +1200,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override RawMessageSet DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override RawMessageSet ThisMessage { @@ -1209,7 +1225,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class Item : pb::GeneratedMessage { private Item() { } - private static readonly Item defaultInstance = new Builder().BuildPartial(); + private static readonly Item defaultInstance = new Item().MakeReadOnly(); private static readonly string[] _itemFieldNames = new string[] { "message", "type_id" }; private static readonly uint[] _itemFieldTags = new uint[] { 26, 16 }; public static Item DefaultInstance { @@ -1217,7 +1233,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Item DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override Item ThisMessage { @@ -1321,6 +1337,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static Item ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private Item MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -1336,22 +1356,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new Item(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(Item cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - Item result; + private bool resultIsReadOnly; + private Item result; private Item PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { Item original = result; result = new Item(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -1366,13 +1386,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new Item(); - 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); @@ -1388,11 +1408,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Item BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -1596,6 +1616,11 @@ namespace Google.ProtocolBuffers.TestProtos { public static RawMessageSet ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private RawMessageSet MakeReadOnly() { + item_.MakeReadOnly(); + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -1611,22 +1636,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new RawMessageSet(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(RawMessageSet cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - RawMessageSet result; + private bool resultIsReadOnly; + private RawMessageSet result; private RawMessageSet PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { RawMessageSet original = result; result = new RawMessageSet(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -1641,13 +1666,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new RawMessageSet(); - 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); @@ -1663,12 +1688,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override RawMessageSet BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - result.item_.MakeReadOnly(); - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { diff --git a/src/ProtocolBuffers.Test/TestProtos/UnitTestNoGenericServicesProtoFile.cs b/src/ProtocolBuffers.Test/TestProtos/UnitTestNoGenericServicesProtoFile.cs index 2cd2696b5e..ba56b14597 100644 --- a/src/ProtocolBuffers.Test/TestProtos/UnitTestNoGenericServicesProtoFile.cs +++ b/src/ProtocolBuffers.Test/TestProtos/UnitTestNoGenericServicesProtoFile.cs @@ -82,7 +82,7 @@ namespace Google.ProtocolBuffers.TestProtos.NoGenericService { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class TestMessage : pb::ExtendableMessage { private TestMessage() { } - private static readonly TestMessage defaultInstance = new Builder().BuildPartial(); + private static readonly TestMessage defaultInstance = new TestMessage().MakeReadOnly(); private static readonly string[] _testMessageFieldNames = new string[] { "a" }; private static readonly uint[] _testMessageFieldTags = new uint[] { 8 }; public static TestMessage DefaultInstance { @@ -90,7 +90,7 @@ namespace Google.ProtocolBuffers.TestProtos.NoGenericService { } public override TestMessage DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override TestMessage ThisMessage { @@ -180,6 +180,10 @@ namespace Google.ProtocolBuffers.TestProtos.NoGenericService { public static TestMessage ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private TestMessage MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -195,22 +199,22 @@ namespace Google.ProtocolBuffers.TestProtos.NoGenericService { get { return this; } } public Builder() { - result = DefaultInstance ?? new TestMessage(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(TestMessage cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - TestMessage result; + private bool resultIsReadOnly; + private TestMessage result; private TestMessage PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { TestMessage original = result; result = new TestMessage(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -225,13 +229,13 @@ namespace Google.ProtocolBuffers.TestProtos.NoGenericService { } public override Builder Clear() { - result = DefaultInstance ?? new TestMessage(); - 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); @@ -247,11 +251,11 @@ namespace Google.ProtocolBuffers.TestProtos.NoGenericService { } public override TestMessage BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { diff --git a/src/ProtocolBuffers.Test/TestProtos/UnitTestOptimizeForProtoFile.cs b/src/ProtocolBuffers.Test/TestProtos/UnitTestOptimizeForProtoFile.cs index 10c464a4d2..92d965d4c4 100644 --- a/src/ProtocolBuffers.Test/TestProtos/UnitTestOptimizeForProtoFile.cs +++ b/src/ProtocolBuffers.Test/TestProtos/UnitTestOptimizeForProtoFile.cs @@ -86,13 +86,13 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class TestOptimizedForSize : pb::ExtendableMessage { private TestOptimizedForSize() { } - private static readonly TestOptimizedForSize defaultInstance = new Builder().BuildPartial(); + private static readonly TestOptimizedForSize defaultInstance = new TestOptimizedForSize().MakeReadOnly(); public static TestOptimizedForSize DefaultInstance { get { return defaultInstance; } } public override TestOptimizedForSize DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override TestOptimizedForSize ThisMessage { @@ -123,12 +123,12 @@ namespace Google.ProtocolBuffers.TestProtos { public const int MsgFieldNumber = 19; private bool hasMsg; - private global::Google.ProtocolBuffers.TestProtos.ForeignMessage msg_ = global::Google.ProtocolBuffers.TestProtos.ForeignMessage.DefaultInstance; + private global::Google.ProtocolBuffers.TestProtos.ForeignMessage msg_; public bool HasMsg { get { return hasMsg; } } public global::Google.ProtocolBuffers.TestProtos.ForeignMessage Msg { - get { return msg_; } + get { return msg_ ?? global::Google.ProtocolBuffers.TestProtos.ForeignMessage.DefaultInstance; } } public static TestOptimizedForSize ParseFrom(pb::ByteString data) { @@ -161,6 +161,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static TestOptimizedForSize ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private TestOptimizedForSize MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -176,22 +180,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new TestOptimizedForSize(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(TestOptimizedForSize cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - TestOptimizedForSize result; + private bool resultIsReadOnly; + private TestOptimizedForSize result; private TestOptimizedForSize PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { TestOptimizedForSize original = result; result = new TestOptimizedForSize(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -206,13 +210,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new TestOptimizedForSize(); - 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); @@ -228,11 +232,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestOptimizedForSize BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } @@ -292,7 +296,7 @@ namespace Google.ProtocolBuffers.TestProtos { public Builder ClearMsg() { PrepareBuilder(); result.hasMsg = false; - result.msg_ = global::Google.ProtocolBuffers.TestProtos.ForeignMessage.DefaultInstance; + result.msg_ = null; return this; } } @@ -306,13 +310,13 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class TestRequiredOptimizedForSize : pb::GeneratedMessage { private TestRequiredOptimizedForSize() { } - private static readonly TestRequiredOptimizedForSize defaultInstance = new Builder().BuildPartial(); + private static readonly TestRequiredOptimizedForSize defaultInstance = new TestRequiredOptimizedForSize().MakeReadOnly(); public static TestRequiredOptimizedForSize DefaultInstance { get { return defaultInstance; } } public override TestRequiredOptimizedForSize DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override TestRequiredOptimizedForSize ThisMessage { @@ -367,6 +371,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static TestRequiredOptimizedForSize ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private TestRequiredOptimizedForSize MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -382,22 +390,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new TestRequiredOptimizedForSize(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(TestRequiredOptimizedForSize cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - TestRequiredOptimizedForSize result; + private bool resultIsReadOnly; + private TestRequiredOptimizedForSize result; private TestRequiredOptimizedForSize PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { TestRequiredOptimizedForSize original = result; result = new TestRequiredOptimizedForSize(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -412,13 +420,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new TestRequiredOptimizedForSize(); - 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); @@ -434,11 +442,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestRequiredOptimizedForSize BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } @@ -472,13 +480,13 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class TestOptionalOptimizedForSize : pb::GeneratedMessage { private TestOptionalOptimizedForSize() { } - private static readonly TestOptionalOptimizedForSize defaultInstance = new Builder().BuildPartial(); + private static readonly TestOptionalOptimizedForSize defaultInstance = new TestOptionalOptimizedForSize().MakeReadOnly(); public static TestOptionalOptimizedForSize DefaultInstance { get { return defaultInstance; } } public override TestOptionalOptimizedForSize DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override TestOptionalOptimizedForSize ThisMessage { @@ -495,12 +503,12 @@ namespace Google.ProtocolBuffers.TestProtos { public const int OFieldNumber = 1; private bool hasO; - private global::Google.ProtocolBuffers.TestProtos.TestRequiredOptimizedForSize o_ = global::Google.ProtocolBuffers.TestProtos.TestRequiredOptimizedForSize.DefaultInstance; + private global::Google.ProtocolBuffers.TestProtos.TestRequiredOptimizedForSize o_; public bool HasO { get { return hasO; } } public global::Google.ProtocolBuffers.TestProtos.TestRequiredOptimizedForSize O { - get { return o_; } + get { return o_ ?? global::Google.ProtocolBuffers.TestProtos.TestRequiredOptimizedForSize.DefaultInstance; } } public static TestOptionalOptimizedForSize ParseFrom(pb::ByteString data) { @@ -533,6 +541,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static TestOptionalOptimizedForSize ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private TestOptionalOptimizedForSize MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -548,22 +560,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new TestOptionalOptimizedForSize(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(TestOptionalOptimizedForSize cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - TestOptionalOptimizedForSize result; + private bool resultIsReadOnly; + private TestOptionalOptimizedForSize result; private TestOptionalOptimizedForSize PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { TestOptionalOptimizedForSize original = result; result = new TestOptionalOptimizedForSize(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -578,13 +590,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new TestOptionalOptimizedForSize(); - 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); @@ -600,11 +612,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestOptionalOptimizedForSize BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } @@ -644,7 +656,7 @@ namespace Google.ProtocolBuffers.TestProtos { public Builder ClearO() { PrepareBuilder(); result.hasO = false; - result.o_ = global::Google.ProtocolBuffers.TestProtos.TestRequiredOptimizedForSize.DefaultInstance; + result.o_ = null; return this; } } diff --git a/src/ProtocolBuffers.Test/TestProtos/UnitTestProtoFile.cs b/src/ProtocolBuffers.Test/TestProtos/UnitTestProtoFile.cs index 547d712aa9..35064953cb 100644 --- a/src/ProtocolBuffers.Test/TestProtos/UnitTestProtoFile.cs +++ b/src/ProtocolBuffers.Test/TestProtos/UnitTestProtoFile.cs @@ -1123,7 +1123,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class TestAllTypes : pb::GeneratedMessage { private TestAllTypes() { } - private static readonly TestAllTypes defaultInstance = new Builder().BuildPartial(); + private static readonly TestAllTypes defaultInstance = new TestAllTypes().MakeReadOnly(); private static readonly string[] _testAllTypesFieldNames = new string[] { "default_bool", "default_bytes", "default_cord", "default_double", "default_fixed32", "default_fixed64", "default_float", "default_foreign_enum", "default_import_enum", "default_int32", "default_int64", "default_nested_enum", "default_sfixed32", "default_sfixed64", "default_sint32", "default_sint64", "default_string", "default_string_piece", "default_uint32", "default_uint64", "optional_bool", "optional_bytes", "optional_cord", "optional_double", "optional_fixed32", "optional_fixed64", "optional_float", "optional_foreign_enum", "optional_foreign_message", "optional_import_enum", "optional_import_message", "optional_int32", "optional_int64", "optional_nested_enum", "optional_nested_message", "optional_sfixed32", "optional_sfixed64", "optional_sint32", "optional_sint64", "optional_string", "optional_string_piece", "optional_uint32", "optional_uint64", "optionalgroup", "repeated_bool", "repeated_bytes", "repeated_cord", "repeated_double", "repeated_fixed32", "repeated_fixed64", "repeated_float", "repeated_foreign_enum", "repeated_foreign_message", "repeated_import_enum", "repeated_import_message", "repeated_int32", "repeated_int64", "repeated_nested_enum", "repeated_nested_message", "repeated_sfixed32", "repeated_sfixed64", "repeated_sint32", "repeated_sint64", "repeated_string", "repeated_string_piece", "repeated_uint32", "repeated_uint64", "repeatedgroup" }; private static readonly uint[] _testAllTypesFieldTags = new uint[] { 584, 602, 682, 577, 541, 545, 573, 656, 664, 488, 496, 648, 557, 561, 520, 528, 594, 674, 504, 512, 104, 122, 202, 97, 61, 65, 93, 176, 154, 184, 162, 8, 16, 168, 146, 77, 81, 40, 48, 114, 194, 24, 32, 131, 344, 362, 442, 337, 301, 305, 333, 416, 394, 424, 402, 248, 256, 408, 386, 317, 321, 280, 288, 354, 434, 264, 272, 371 }; public static TestAllTypes DefaultInstance { @@ -1131,7 +1131,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestAllTypes DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override TestAllTypes ThisMessage { @@ -1164,7 +1164,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class NestedMessage : pb::GeneratedMessage { private NestedMessage() { } - private static readonly NestedMessage defaultInstance = new Builder().BuildPartial(); + private static readonly NestedMessage defaultInstance = new NestedMessage().MakeReadOnly(); private static readonly string[] _nestedMessageFieldNames = new string[] { "bb" }; private static readonly uint[] _nestedMessageFieldTags = new uint[] { 8 }; public static NestedMessage DefaultInstance { @@ -1172,7 +1172,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override NestedMessage DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override NestedMessage ThisMessage { @@ -1258,6 +1258,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static NestedMessage ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private NestedMessage MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -1273,22 +1277,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new NestedMessage(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(NestedMessage cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - NestedMessage result; + private bool resultIsReadOnly; + private NestedMessage result; private NestedMessage PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { NestedMessage original = result; result = new NestedMessage(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -1303,13 +1307,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new NestedMessage(); - 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); @@ -1325,11 +1329,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override NestedMessage BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -1434,7 +1438,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class OptionalGroup : pb::GeneratedMessage { private OptionalGroup() { } - private static readonly OptionalGroup defaultInstance = new Builder().BuildPartial(); + private static readonly OptionalGroup defaultInstance = new OptionalGroup().MakeReadOnly(); private static readonly string[] _optionalGroupFieldNames = new string[] { "a" }; private static readonly uint[] _optionalGroupFieldTags = new uint[] { 136 }; public static OptionalGroup DefaultInstance { @@ -1442,7 +1446,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override OptionalGroup DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override OptionalGroup ThisMessage { @@ -1528,6 +1532,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static OptionalGroup ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private OptionalGroup MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -1543,22 +1551,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new OptionalGroup(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(OptionalGroup cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - OptionalGroup result; + private bool resultIsReadOnly; + private OptionalGroup result; private OptionalGroup PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { OptionalGroup original = result; result = new OptionalGroup(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -1573,13 +1581,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new OptionalGroup(); - 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); @@ -1595,11 +1603,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override OptionalGroup BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -1704,7 +1712,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class RepeatedGroup : pb::GeneratedMessage { private RepeatedGroup() { } - private static readonly RepeatedGroup defaultInstance = new Builder().BuildPartial(); + private static readonly RepeatedGroup defaultInstance = new RepeatedGroup().MakeReadOnly(); private static readonly string[] _repeatedGroupFieldNames = new string[] { "a" }; private static readonly uint[] _repeatedGroupFieldTags = new uint[] { 376 }; public static RepeatedGroup DefaultInstance { @@ -1712,7 +1720,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override RepeatedGroup DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override RepeatedGroup ThisMessage { @@ -1798,6 +1806,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static RepeatedGroup ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private RepeatedGroup MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -1813,22 +1825,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new RepeatedGroup(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(RepeatedGroup cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - RepeatedGroup result; + private bool resultIsReadOnly; + private RepeatedGroup result; private RepeatedGroup PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { RepeatedGroup original = result; result = new RepeatedGroup(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -1843,13 +1855,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new RepeatedGroup(); - 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); @@ -1865,11 +1877,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override RepeatedGroup BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -2128,42 +2140,42 @@ namespace Google.ProtocolBuffers.TestProtos { public const int OptionalGroupFieldNumber = 16; private bool hasOptionalGroup; - private global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.OptionalGroup optionalGroup_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.OptionalGroup.DefaultInstance; + private global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.OptionalGroup optionalGroup_; public bool HasOptionalGroup { get { return hasOptionalGroup; } } public global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.OptionalGroup OptionalGroup { - get { return optionalGroup_; } + get { return optionalGroup_ ?? global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.OptionalGroup.DefaultInstance; } } public const int OptionalNestedMessageFieldNumber = 18; private bool hasOptionalNestedMessage; - private global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage optionalNestedMessage_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage.DefaultInstance; + private global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage optionalNestedMessage_; public bool HasOptionalNestedMessage { get { return hasOptionalNestedMessage; } } public global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage OptionalNestedMessage { - get { return optionalNestedMessage_; } + get { return optionalNestedMessage_ ?? global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage.DefaultInstance; } } public const int OptionalForeignMessageFieldNumber = 19; private bool hasOptionalForeignMessage; - private global::Google.ProtocolBuffers.TestProtos.ForeignMessage optionalForeignMessage_ = global::Google.ProtocolBuffers.TestProtos.ForeignMessage.DefaultInstance; + private global::Google.ProtocolBuffers.TestProtos.ForeignMessage optionalForeignMessage_; public bool HasOptionalForeignMessage { get { return hasOptionalForeignMessage; } } public global::Google.ProtocolBuffers.TestProtos.ForeignMessage OptionalForeignMessage { - get { return optionalForeignMessage_; } + get { return optionalForeignMessage_ ?? global::Google.ProtocolBuffers.TestProtos.ForeignMessage.DefaultInstance; } } public const int OptionalImportMessageFieldNumber = 20; private bool hasOptionalImportMessage; - private global::Google.ProtocolBuffers.TestProtos.ImportMessage optionalImportMessage_ = global::Google.ProtocolBuffers.TestProtos.ImportMessage.DefaultInstance; + private global::Google.ProtocolBuffers.TestProtos.ImportMessage optionalImportMessage_; public bool HasOptionalImportMessage { get { return hasOptionalImportMessage; } } public global::Google.ProtocolBuffers.TestProtos.ImportMessage OptionalImportMessage { - get { return optionalImportMessage_; } + get { return optionalImportMessage_ ?? global::Google.ProtocolBuffers.TestProtos.ImportMessage.DefaultInstance; } } public const int OptionalNestedEnumFieldNumber = 21; @@ -3271,6 +3283,34 @@ namespace Google.ProtocolBuffers.TestProtos { public static TestAllTypes ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private TestAllTypes MakeReadOnly() { + repeatedInt32_.MakeReadOnly(); + repeatedInt64_.MakeReadOnly(); + repeatedUint32_.MakeReadOnly(); + repeatedUint64_.MakeReadOnly(); + repeatedSint32_.MakeReadOnly(); + repeatedSint64_.MakeReadOnly(); + repeatedFixed32_.MakeReadOnly(); + repeatedFixed64_.MakeReadOnly(); + repeatedSfixed32_.MakeReadOnly(); + repeatedSfixed64_.MakeReadOnly(); + repeatedFloat_.MakeReadOnly(); + repeatedDouble_.MakeReadOnly(); + repeatedBool_.MakeReadOnly(); + repeatedString_.MakeReadOnly(); + repeatedBytes_.MakeReadOnly(); + repeatedGroup_.MakeReadOnly(); + repeatedNestedMessage_.MakeReadOnly(); + repeatedForeignMessage_.MakeReadOnly(); + repeatedImportMessage_.MakeReadOnly(); + repeatedNestedEnum_.MakeReadOnly(); + repeatedForeignEnum_.MakeReadOnly(); + repeatedImportEnum_.MakeReadOnly(); + repeatedStringPiece_.MakeReadOnly(); + repeatedCord_.MakeReadOnly(); + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -3286,22 +3326,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new TestAllTypes(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(TestAllTypes cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - TestAllTypes result; + private bool resultIsReadOnly; + private TestAllTypes result; private TestAllTypes PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { TestAllTypes original = result; result = new TestAllTypes(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -3316,13 +3356,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new TestAllTypes(); - 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); @@ -3338,35 +3378,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestAllTypes BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - result.repeatedInt32_.MakeReadOnly(); - result.repeatedInt64_.MakeReadOnly(); - result.repeatedUint32_.MakeReadOnly(); - result.repeatedUint64_.MakeReadOnly(); - result.repeatedSint32_.MakeReadOnly(); - result.repeatedSint64_.MakeReadOnly(); - result.repeatedFixed32_.MakeReadOnly(); - result.repeatedFixed64_.MakeReadOnly(); - result.repeatedSfixed32_.MakeReadOnly(); - result.repeatedSfixed64_.MakeReadOnly(); - result.repeatedFloat_.MakeReadOnly(); - result.repeatedDouble_.MakeReadOnly(); - result.repeatedBool_.MakeReadOnly(); - result.repeatedString_.MakeReadOnly(); - result.repeatedBytes_.MakeReadOnly(); - result.repeatedGroup_.MakeReadOnly(); - result.repeatedNestedMessage_.MakeReadOnly(); - result.repeatedForeignMessage_.MakeReadOnly(); - result.repeatedImportMessage_.MakeReadOnly(); - result.repeatedNestedEnum_.MakeReadOnly(); - result.repeatedForeignEnum_.MakeReadOnly(); - result.repeatedImportEnum_.MakeReadOnly(); - result.repeatedStringPiece_.MakeReadOnly(); - result.repeatedCord_.MakeReadOnly(); - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -4367,7 +4383,7 @@ namespace Google.ProtocolBuffers.TestProtos { public Builder ClearOptionalGroup() { PrepareBuilder(); result.hasOptionalGroup = false; - result.optionalGroup_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.OptionalGroup.DefaultInstance; + result.optionalGroup_ = null; return this; } @@ -4407,7 +4423,7 @@ namespace Google.ProtocolBuffers.TestProtos { public Builder ClearOptionalNestedMessage() { PrepareBuilder(); result.hasOptionalNestedMessage = false; - result.optionalNestedMessage_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage.DefaultInstance; + result.optionalNestedMessage_ = null; return this; } @@ -4447,7 +4463,7 @@ namespace Google.ProtocolBuffers.TestProtos { public Builder ClearOptionalForeignMessage() { PrepareBuilder(); result.hasOptionalForeignMessage = false; - result.optionalForeignMessage_ = global::Google.ProtocolBuffers.TestProtos.ForeignMessage.DefaultInstance; + result.optionalForeignMessage_ = null; return this; } @@ -4487,7 +4503,7 @@ namespace Google.ProtocolBuffers.TestProtos { public Builder ClearOptionalImportMessage() { PrepareBuilder(); result.hasOptionalImportMessage = false; - result.optionalImportMessage_ = global::Google.ProtocolBuffers.TestProtos.ImportMessage.DefaultInstance; + result.optionalImportMessage_ = null; return this; } @@ -5819,7 +5835,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class TestDeprecatedFields : pb::GeneratedMessage { private TestDeprecatedFields() { } - private static readonly TestDeprecatedFields defaultInstance = new Builder().BuildPartial(); + private static readonly TestDeprecatedFields defaultInstance = new TestDeprecatedFields().MakeReadOnly(); private static readonly string[] _testDeprecatedFieldsFieldNames = new string[] { "deprecated_int32" }; private static readonly uint[] _testDeprecatedFieldsFieldTags = new uint[] { 8 }; public static TestDeprecatedFields DefaultInstance { @@ -5827,7 +5843,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestDeprecatedFields DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override TestDeprecatedFields ThisMessage { @@ -5915,6 +5931,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static TestDeprecatedFields ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private TestDeprecatedFields MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -5930,22 +5950,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new TestDeprecatedFields(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(TestDeprecatedFields cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - TestDeprecatedFields result; + private bool resultIsReadOnly; + private TestDeprecatedFields result; private TestDeprecatedFields PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { TestDeprecatedFields original = result; result = new TestDeprecatedFields(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -5960,13 +5980,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new TestDeprecatedFields(); - 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); @@ -5982,11 +6002,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestDeprecatedFields BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -6095,7 +6115,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class ForeignMessage : pb::GeneratedMessage { private ForeignMessage() { } - private static readonly ForeignMessage defaultInstance = new Builder().BuildPartial(); + private static readonly ForeignMessage defaultInstance = new ForeignMessage().MakeReadOnly(); private static readonly string[] _foreignMessageFieldNames = new string[] { "c" }; private static readonly uint[] _foreignMessageFieldTags = new uint[] { 8 }; public static ForeignMessage DefaultInstance { @@ -6103,7 +6123,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override ForeignMessage DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override ForeignMessage ThisMessage { @@ -6189,6 +6209,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static ForeignMessage ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private ForeignMessage MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -6204,22 +6228,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new ForeignMessage(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(ForeignMessage cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - ForeignMessage result; + private bool resultIsReadOnly; + private ForeignMessage result; private ForeignMessage PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { ForeignMessage original = result; result = new ForeignMessage(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -6234,13 +6258,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new ForeignMessage(); - 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); @@ -6256,11 +6280,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override ForeignMessage BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -6365,7 +6389,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class TestAllExtensions : pb::ExtendableMessage { private TestAllExtensions() { } - private static readonly TestAllExtensions defaultInstance = new Builder().BuildPartial(); + private static readonly TestAllExtensions defaultInstance = new TestAllExtensions().MakeReadOnly(); private static readonly string[] _testAllExtensionsFieldNames = new string[] { }; private static readonly uint[] _testAllExtensionsFieldTags = new uint[] { }; public static TestAllExtensions DefaultInstance { @@ -6373,7 +6397,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestAllExtensions DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override TestAllExtensions ThisMessage { @@ -6447,6 +6471,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static TestAllExtensions ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private TestAllExtensions MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -6462,22 +6490,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new TestAllExtensions(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(TestAllExtensions cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - TestAllExtensions result; + private bool resultIsReadOnly; + private TestAllExtensions result; private TestAllExtensions PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { TestAllExtensions original = result; result = new TestAllExtensions(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -6492,13 +6520,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new TestAllExtensions(); - 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); @@ -6514,11 +6542,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestAllExtensions BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -6597,7 +6625,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class OptionalGroup_extension : pb::GeneratedMessage { private OptionalGroup_extension() { } - private static readonly OptionalGroup_extension defaultInstance = new Builder().BuildPartial(); + private static readonly OptionalGroup_extension defaultInstance = new OptionalGroup_extension().MakeReadOnly(); private static readonly string[] _optionalGroupExtensionFieldNames = new string[] { "a" }; private static readonly uint[] _optionalGroupExtensionFieldTags = new uint[] { 136 }; public static OptionalGroup_extension DefaultInstance { @@ -6605,7 +6633,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override OptionalGroup_extension DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override OptionalGroup_extension ThisMessage { @@ -6691,6 +6719,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static OptionalGroup_extension ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private OptionalGroup_extension MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -6706,22 +6738,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new OptionalGroup_extension(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(OptionalGroup_extension cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - OptionalGroup_extension result; + private bool resultIsReadOnly; + private OptionalGroup_extension result; private OptionalGroup_extension PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { OptionalGroup_extension original = result; result = new OptionalGroup_extension(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -6736,13 +6768,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new OptionalGroup_extension(); - 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); @@ -6758,11 +6790,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override OptionalGroup_extension BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -6867,7 +6899,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class RepeatedGroup_extension : pb::GeneratedMessage { private RepeatedGroup_extension() { } - private static readonly RepeatedGroup_extension defaultInstance = new Builder().BuildPartial(); + private static readonly RepeatedGroup_extension defaultInstance = new RepeatedGroup_extension().MakeReadOnly(); private static readonly string[] _repeatedGroupExtensionFieldNames = new string[] { "a" }; private static readonly uint[] _repeatedGroupExtensionFieldTags = new uint[] { 376 }; public static RepeatedGroup_extension DefaultInstance { @@ -6875,7 +6907,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override RepeatedGroup_extension DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override RepeatedGroup_extension ThisMessage { @@ -6961,6 +6993,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static RepeatedGroup_extension ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private RepeatedGroup_extension MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -6976,22 +7012,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new RepeatedGroup_extension(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(RepeatedGroup_extension cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - RepeatedGroup_extension result; + private bool resultIsReadOnly; + private RepeatedGroup_extension result; private RepeatedGroup_extension PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { RepeatedGroup_extension original = result; result = new RepeatedGroup_extension(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -7006,13 +7042,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new RepeatedGroup_extension(); - 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); @@ -7028,11 +7064,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override RepeatedGroup_extension BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -7137,7 +7173,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class TestNestedExtension : pb::GeneratedMessage { private TestNestedExtension() { } - private static readonly TestNestedExtension defaultInstance = new Builder().BuildPartial(); + private static readonly TestNestedExtension defaultInstance = new TestNestedExtension().MakeReadOnly(); private static readonly string[] _testNestedExtensionFieldNames = new string[] { }; private static readonly uint[] _testNestedExtensionFieldTags = new uint[] { }; public static TestNestedExtension DefaultInstance { @@ -7145,7 +7181,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestNestedExtension DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override TestNestedExtension ThisMessage { @@ -7217,6 +7253,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static TestNestedExtension ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private TestNestedExtension MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -7232,22 +7272,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new TestNestedExtension(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(TestNestedExtension cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - TestNestedExtension result; + private bool resultIsReadOnly; + private TestNestedExtension result; private TestNestedExtension PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { TestNestedExtension original = result; result = new TestNestedExtension(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -7262,13 +7302,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new TestNestedExtension(); - 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); @@ -7284,11 +7324,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestNestedExtension BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -7366,7 +7406,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class TestRequired : pb::GeneratedMessage { private TestRequired() { } - private static readonly TestRequired defaultInstance = new Builder().BuildPartial(); + private static readonly TestRequired defaultInstance = new TestRequired().MakeReadOnly(); private static readonly string[] _testRequiredFieldNames = new string[] { "a", "b", "c", "dummy10", "dummy11", "dummy12", "dummy13", "dummy14", "dummy15", "dummy16", "dummy17", "dummy18", "dummy19", "dummy2", "dummy20", "dummy21", "dummy22", "dummy23", "dummy24", "dummy25", "dummy26", "dummy27", "dummy28", "dummy29", "dummy30", "dummy31", "dummy32", "dummy4", "dummy5", "dummy6", "dummy7", "dummy8", "dummy9" }; private static readonly uint[] _testRequiredFieldTags = new uint[] { 8, 24, 264, 80, 88, 96, 104, 112, 120, 128, 136, 144, 152, 16, 160, 168, 176, 184, 192, 200, 208, 216, 224, 232, 240, 248, 256, 32, 40, 48, 56, 64, 72 }; public static TestRequired DefaultInstance { @@ -7374,7 +7414,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestRequired DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override TestRequired ThisMessage { @@ -7979,6 +8019,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static TestRequired ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private TestRequired MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -7994,22 +8038,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new TestRequired(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(TestRequired cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - TestRequired result; + private bool resultIsReadOnly; + private TestRequired result; private TestRequired PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { TestRequired original = result; result = new TestRequired(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -8024,13 +8068,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new TestRequired(); - 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); @@ -8046,11 +8090,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestRequired BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -9019,7 +9063,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class TestRequiredForeign : pb::GeneratedMessage { private TestRequiredForeign() { } - private static readonly TestRequiredForeign defaultInstance = new Builder().BuildPartial(); + private static readonly TestRequiredForeign defaultInstance = new TestRequiredForeign().MakeReadOnly(); private static readonly string[] _testRequiredForeignFieldNames = new string[] { "dummy", "optional_message", "repeated_message" }; private static readonly uint[] _testRequiredForeignFieldTags = new uint[] { 24, 10, 18 }; public static TestRequiredForeign DefaultInstance { @@ -9027,7 +9071,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestRequiredForeign DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override TestRequiredForeign ThisMessage { @@ -9044,12 +9088,12 @@ namespace Google.ProtocolBuffers.TestProtos { public const int OptionalMessageFieldNumber = 1; private bool hasOptionalMessage; - private global::Google.ProtocolBuffers.TestProtos.TestRequired optionalMessage_ = global::Google.ProtocolBuffers.TestProtos.TestRequired.DefaultInstance; + private global::Google.ProtocolBuffers.TestProtos.TestRequired optionalMessage_; public bool HasOptionalMessage { get { return hasOptionalMessage; } } public global::Google.ProtocolBuffers.TestProtos.TestRequired OptionalMessage { - get { return optionalMessage_; } + get { return optionalMessage_ ?? global::Google.ProtocolBuffers.TestProtos.TestRequired.DefaultInstance; } } public const int RepeatedMessageFieldNumber = 2; @@ -9153,6 +9197,11 @@ namespace Google.ProtocolBuffers.TestProtos { public static TestRequiredForeign ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private TestRequiredForeign MakeReadOnly() { + repeatedMessage_.MakeReadOnly(); + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -9168,22 +9217,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new TestRequiredForeign(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(TestRequiredForeign cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - TestRequiredForeign result; + private bool resultIsReadOnly; + private TestRequiredForeign result; private TestRequiredForeign PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { TestRequiredForeign original = result; result = new TestRequiredForeign(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -9198,13 +9247,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new TestRequiredForeign(); - 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); @@ -9220,12 +9269,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestRequiredForeign 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) { @@ -9355,7 +9403,7 @@ namespace Google.ProtocolBuffers.TestProtos { public Builder ClearOptionalMessage() { PrepareBuilder(); result.hasOptionalMessage = false; - result.optionalMessage_ = global::Google.ProtocolBuffers.TestProtos.TestRequired.DefaultInstance; + result.optionalMessage_ = null; return this; } @@ -9433,7 +9481,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class TestForeignNested : pb::GeneratedMessage { private TestForeignNested() { } - private static readonly TestForeignNested defaultInstance = new Builder().BuildPartial(); + private static readonly TestForeignNested defaultInstance = new TestForeignNested().MakeReadOnly(); private static readonly string[] _testForeignNestedFieldNames = new string[] { "foreign_nested" }; private static readonly uint[] _testForeignNestedFieldTags = new uint[] { 10 }; public static TestForeignNested DefaultInstance { @@ -9441,7 +9489,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestForeignNested DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override TestForeignNested ThisMessage { @@ -9458,12 +9506,12 @@ namespace Google.ProtocolBuffers.TestProtos { public const int ForeignNestedFieldNumber = 1; private bool hasForeignNested; - private global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage foreignNested_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage.DefaultInstance; + private global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage foreignNested_; public bool HasForeignNested { get { return hasForeignNested; } } public global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage ForeignNested { - get { return foreignNested_; } + get { return foreignNested_ ?? global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage.DefaultInstance; } } public override bool IsInitialized { @@ -9527,6 +9575,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static TestForeignNested ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private TestForeignNested MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -9542,22 +9594,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new TestForeignNested(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(TestForeignNested cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - TestForeignNested result; + private bool resultIsReadOnly; + private TestForeignNested result; private TestForeignNested PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { TestForeignNested original = result; result = new TestForeignNested(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -9572,13 +9624,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new TestForeignNested(); - 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); @@ -9594,11 +9646,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestForeignNested BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -9714,7 +9766,7 @@ namespace Google.ProtocolBuffers.TestProtos { public Builder ClearForeignNested() { PrepareBuilder(); result.hasForeignNested = false; - result.foreignNested_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage.DefaultInstance; + result.foreignNested_ = null; return this; } } @@ -9728,7 +9780,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class TestEmptyMessage : pb::GeneratedMessage { private TestEmptyMessage() { } - private static readonly TestEmptyMessage defaultInstance = new Builder().BuildPartial(); + private static readonly TestEmptyMessage defaultInstance = new TestEmptyMessage().MakeReadOnly(); private static readonly string[] _testEmptyMessageFieldNames = new string[] { }; private static readonly uint[] _testEmptyMessageFieldTags = new uint[] { }; public static TestEmptyMessage DefaultInstance { @@ -9736,7 +9788,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestEmptyMessage DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override TestEmptyMessage ThisMessage { @@ -9806,6 +9858,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static TestEmptyMessage ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private TestEmptyMessage MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -9821,22 +9877,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new TestEmptyMessage(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(TestEmptyMessage cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - TestEmptyMessage result; + private bool resultIsReadOnly; + private TestEmptyMessage result; private TestEmptyMessage PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { TestEmptyMessage original = result; result = new TestEmptyMessage(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -9851,13 +9907,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new TestEmptyMessage(); - 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); @@ -9873,11 +9929,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestEmptyMessage BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -9955,7 +10011,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class TestEmptyMessageWithExtensions : pb::ExtendableMessage { private TestEmptyMessageWithExtensions() { } - private static readonly TestEmptyMessageWithExtensions defaultInstance = new Builder().BuildPartial(); + private static readonly TestEmptyMessageWithExtensions defaultInstance = new TestEmptyMessageWithExtensions().MakeReadOnly(); private static readonly string[] _testEmptyMessageWithExtensionsFieldNames = new string[] { }; private static readonly uint[] _testEmptyMessageWithExtensionsFieldTags = new uint[] { }; public static TestEmptyMessageWithExtensions DefaultInstance { @@ -9963,7 +10019,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestEmptyMessageWithExtensions DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override TestEmptyMessageWithExtensions ThisMessage { @@ -10037,6 +10093,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static TestEmptyMessageWithExtensions ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private TestEmptyMessageWithExtensions MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -10052,22 +10112,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new TestEmptyMessageWithExtensions(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(TestEmptyMessageWithExtensions cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - TestEmptyMessageWithExtensions result; + private bool resultIsReadOnly; + private TestEmptyMessageWithExtensions result; private TestEmptyMessageWithExtensions PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { TestEmptyMessageWithExtensions original = result; result = new TestEmptyMessageWithExtensions(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -10082,13 +10142,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new TestEmptyMessageWithExtensions(); - 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); @@ -10104,11 +10164,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestEmptyMessageWithExtensions BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -10187,7 +10247,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class TestMultipleExtensionRanges : pb::ExtendableMessage { private TestMultipleExtensionRanges() { } - private static readonly TestMultipleExtensionRanges defaultInstance = new Builder().BuildPartial(); + private static readonly TestMultipleExtensionRanges defaultInstance = new TestMultipleExtensionRanges().MakeReadOnly(); private static readonly string[] _testMultipleExtensionRangesFieldNames = new string[] { }; private static readonly uint[] _testMultipleExtensionRangesFieldTags = new uint[] { }; public static TestMultipleExtensionRanges DefaultInstance { @@ -10195,7 +10255,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestMultipleExtensionRanges DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override TestMultipleExtensionRanges ThisMessage { @@ -10271,6 +10331,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static TestMultipleExtensionRanges ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private TestMultipleExtensionRanges MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -10286,22 +10350,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new TestMultipleExtensionRanges(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(TestMultipleExtensionRanges cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - TestMultipleExtensionRanges result; + private bool resultIsReadOnly; + private TestMultipleExtensionRanges result; private TestMultipleExtensionRanges PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { TestMultipleExtensionRanges original = result; result = new TestMultipleExtensionRanges(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -10316,13 +10380,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new TestMultipleExtensionRanges(); - 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); @@ -10338,11 +10402,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestMultipleExtensionRanges BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -10421,7 +10485,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class TestReallyLargeTagNumber : pb::GeneratedMessage { private TestReallyLargeTagNumber() { } - private static readonly TestReallyLargeTagNumber defaultInstance = new Builder().BuildPartial(); + private static readonly TestReallyLargeTagNumber defaultInstance = new TestReallyLargeTagNumber().MakeReadOnly(); private static readonly string[] _testReallyLargeTagNumberFieldNames = new string[] { "a", "bb" }; private static readonly uint[] _testReallyLargeTagNumberFieldTags = new uint[] { 8, 2147483640 }; public static TestReallyLargeTagNumber DefaultInstance { @@ -10429,7 +10493,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestReallyLargeTagNumber DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override TestReallyLargeTagNumber ThisMessage { @@ -10531,6 +10595,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static TestReallyLargeTagNumber ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private TestReallyLargeTagNumber MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -10546,22 +10614,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new TestReallyLargeTagNumber(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(TestReallyLargeTagNumber cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - TestReallyLargeTagNumber result; + private bool resultIsReadOnly; + private TestReallyLargeTagNumber result; private TestReallyLargeTagNumber PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { TestReallyLargeTagNumber original = result; result = new TestReallyLargeTagNumber(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -10576,13 +10644,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new TestReallyLargeTagNumber(); - 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); @@ -10598,11 +10666,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestReallyLargeTagNumber BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -10734,7 +10802,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class TestRecursiveMessage : pb::GeneratedMessage { private TestRecursiveMessage() { } - private static readonly TestRecursiveMessage defaultInstance = new Builder().BuildPartial(); + private static readonly TestRecursiveMessage defaultInstance = new TestRecursiveMessage().MakeReadOnly(); private static readonly string[] _testRecursiveMessageFieldNames = new string[] { "a", "i" }; private static readonly uint[] _testRecursiveMessageFieldTags = new uint[] { 10, 16 }; public static TestRecursiveMessage DefaultInstance { @@ -10742,7 +10810,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestRecursiveMessage DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override TestRecursiveMessage ThisMessage { @@ -10759,12 +10827,12 @@ namespace Google.ProtocolBuffers.TestProtos { public const int AFieldNumber = 1; private bool hasA; - private global::Google.ProtocolBuffers.TestProtos.TestRecursiveMessage a_ = global::Google.ProtocolBuffers.TestProtos.TestRecursiveMessage.DefaultInstance; + private global::Google.ProtocolBuffers.TestProtos.TestRecursiveMessage a_; public bool HasA { get { return hasA; } } public global::Google.ProtocolBuffers.TestProtos.TestRecursiveMessage A { - get { return a_; } + get { return a_ ?? global::Google.ProtocolBuffers.TestProtos.TestRecursiveMessage.DefaultInstance; } } public const int IFieldNumber = 2; @@ -10844,6 +10912,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static TestRecursiveMessage ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private TestRecursiveMessage MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -10859,22 +10931,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new TestRecursiveMessage(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(TestRecursiveMessage cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - TestRecursiveMessage result; + private bool resultIsReadOnly; + private TestRecursiveMessage result; private TestRecursiveMessage PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { TestRecursiveMessage original = result; result = new TestRecursiveMessage(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -10889,13 +10961,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new TestRecursiveMessage(); - 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); @@ -10911,11 +10983,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestRecursiveMessage BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -11038,7 +11110,7 @@ namespace Google.ProtocolBuffers.TestProtos { public Builder ClearA() { PrepareBuilder(); result.hasA = false; - result.a_ = global::Google.ProtocolBuffers.TestProtos.TestRecursiveMessage.DefaultInstance; + result.a_ = null; return this; } @@ -11072,7 +11144,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class TestMutualRecursionA : pb::GeneratedMessage { private TestMutualRecursionA() { } - private static readonly TestMutualRecursionA defaultInstance = new Builder().BuildPartial(); + private static readonly TestMutualRecursionA defaultInstance = new TestMutualRecursionA().MakeReadOnly(); private static readonly string[] _testMutualRecursionAFieldNames = new string[] { "bb" }; private static readonly uint[] _testMutualRecursionAFieldTags = new uint[] { 10 }; public static TestMutualRecursionA DefaultInstance { @@ -11080,7 +11152,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestMutualRecursionA DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override TestMutualRecursionA ThisMessage { @@ -11097,12 +11169,12 @@ namespace Google.ProtocolBuffers.TestProtos { public const int BbFieldNumber = 1; private bool hasBb; - private global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionB bb_ = global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionB.DefaultInstance; + private global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionB bb_; public bool HasBb { get { return hasBb; } } public global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionB Bb { - get { return bb_; } + get { return bb_ ?? global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionB.DefaultInstance; } } public override bool IsInitialized { @@ -11166,6 +11238,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static TestMutualRecursionA ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private TestMutualRecursionA MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -11181,22 +11257,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new TestMutualRecursionA(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(TestMutualRecursionA cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - TestMutualRecursionA result; + private bool resultIsReadOnly; + private TestMutualRecursionA result; private TestMutualRecursionA PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { TestMutualRecursionA original = result; result = new TestMutualRecursionA(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -11211,13 +11287,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new TestMutualRecursionA(); - 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); @@ -11233,11 +11309,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestMutualRecursionA BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -11353,7 +11429,7 @@ namespace Google.ProtocolBuffers.TestProtos { public Builder ClearBb() { PrepareBuilder(); result.hasBb = false; - result.bb_ = global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionB.DefaultInstance; + result.bb_ = null; return this; } } @@ -11367,7 +11443,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class TestMutualRecursionB : pb::GeneratedMessage { private TestMutualRecursionB() { } - private static readonly TestMutualRecursionB defaultInstance = new Builder().BuildPartial(); + private static readonly TestMutualRecursionB defaultInstance = new TestMutualRecursionB().MakeReadOnly(); private static readonly string[] _testMutualRecursionBFieldNames = new string[] { "a", "optional_int32" }; private static readonly uint[] _testMutualRecursionBFieldTags = new uint[] { 10, 16 }; public static TestMutualRecursionB DefaultInstance { @@ -11375,7 +11451,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestMutualRecursionB DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override TestMutualRecursionB ThisMessage { @@ -11392,12 +11468,12 @@ namespace Google.ProtocolBuffers.TestProtos { public const int AFieldNumber = 1; private bool hasA; - private global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionA a_ = global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionA.DefaultInstance; + private global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionA a_; public bool HasA { get { return hasA; } } public global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionA A { - get { return a_; } + get { return a_ ?? global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionA.DefaultInstance; } } public const int OptionalInt32FieldNumber = 2; @@ -11477,6 +11553,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static TestMutualRecursionB ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private TestMutualRecursionB MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -11492,22 +11572,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new TestMutualRecursionB(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(TestMutualRecursionB cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - TestMutualRecursionB result; + private bool resultIsReadOnly; + private TestMutualRecursionB result; private TestMutualRecursionB PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { TestMutualRecursionB original = result; result = new TestMutualRecursionB(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -11522,13 +11602,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new TestMutualRecursionB(); - 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); @@ -11544,11 +11624,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestMutualRecursionB BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -11671,7 +11751,7 @@ namespace Google.ProtocolBuffers.TestProtos { public Builder ClearA() { PrepareBuilder(); result.hasA = false; - result.a_ = global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionA.DefaultInstance; + result.a_ = null; return this; } @@ -11705,7 +11785,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class TestDupFieldNumber : pb::GeneratedMessage { private TestDupFieldNumber() { } - private static readonly TestDupFieldNumber defaultInstance = new Builder().BuildPartial(); + private static readonly TestDupFieldNumber defaultInstance = new TestDupFieldNumber().MakeReadOnly(); private static readonly string[] _testDupFieldNumberFieldNames = new string[] { "a", "bar", "foo" }; private static readonly uint[] _testDupFieldNumberFieldTags = new uint[] { 8, 27, 19 }; public static TestDupFieldNumber DefaultInstance { @@ -11713,7 +11793,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestDupFieldNumber DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override TestDupFieldNumber ThisMessage { @@ -11738,7 +11818,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class Foo : pb::GeneratedMessage { private Foo() { } - private static readonly Foo defaultInstance = new Builder().BuildPartial(); + private static readonly Foo defaultInstance = new Foo().MakeReadOnly(); private static readonly string[] _fooFieldNames = new string[] { "a" }; private static readonly uint[] _fooFieldTags = new uint[] { 8 }; public static Foo DefaultInstance { @@ -11746,7 +11826,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Foo DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override Foo ThisMessage { @@ -11832,6 +11912,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static Foo ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private Foo MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -11847,22 +11931,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new Foo(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(Foo cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - Foo result; + private bool resultIsReadOnly; + private Foo result; private Foo PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { Foo original = result; result = new Foo(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -11877,13 +11961,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new Foo(); - 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); @@ -11899,11 +11983,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Foo BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -12008,7 +12092,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class Bar : pb::GeneratedMessage { private Bar() { } - private static readonly Bar defaultInstance = new Builder().BuildPartial(); + private static readonly Bar defaultInstance = new Bar().MakeReadOnly(); private static readonly string[] _barFieldNames = new string[] { "a" }; private static readonly uint[] _barFieldTags = new uint[] { 8 }; public static Bar DefaultInstance { @@ -12016,7 +12100,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Bar DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override Bar ThisMessage { @@ -12102,6 +12186,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static Bar ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private Bar MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -12117,22 +12205,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new Bar(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(Bar cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - Bar result; + private bool resultIsReadOnly; + private Bar result; private Bar PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { Bar original = result; result = new Bar(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -12147,13 +12235,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new Bar(); - 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); @@ -12169,11 +12257,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Bar BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -12288,22 +12376,22 @@ namespace Google.ProtocolBuffers.TestProtos { public const int FooFieldNumber = 2; private bool hasFoo; - private global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Foo foo_ = global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Foo.DefaultInstance; + private global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Foo foo_; public bool HasFoo { get { return hasFoo; } } public global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Foo Foo { - get { return foo_; } + get { return foo_ ?? global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Foo.DefaultInstance; } } public const int BarFieldNumber = 3; private bool hasBar; - private global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Bar bar_ = global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Bar.DefaultInstance; + private global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Bar bar_; public bool HasBar { get { return hasBar; } } public global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Bar Bar { - get { return bar_; } + get { return bar_ ?? global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Bar.DefaultInstance; } } public override bool IsInitialized { @@ -12379,6 +12467,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static TestDupFieldNumber ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private TestDupFieldNumber MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -12394,22 +12486,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new TestDupFieldNumber(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(TestDupFieldNumber cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - TestDupFieldNumber result; + private bool resultIsReadOnly; + private TestDupFieldNumber result; private TestDupFieldNumber PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { TestDupFieldNumber original = result; result = new TestDupFieldNumber(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -12424,13 +12516,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new TestDupFieldNumber(); - 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); @@ -12446,11 +12538,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestDupFieldNumber BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -12605,7 +12697,7 @@ namespace Google.ProtocolBuffers.TestProtos { public Builder ClearFoo() { PrepareBuilder(); result.hasFoo = false; - result.foo_ = global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Foo.DefaultInstance; + result.foo_ = null; return this; } @@ -12645,7 +12737,7 @@ namespace Google.ProtocolBuffers.TestProtos { public Builder ClearBar() { PrepareBuilder(); result.hasBar = false; - result.bar_ = global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Bar.DefaultInstance; + result.bar_ = null; return this; } } @@ -12659,7 +12751,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class TestNestedMessageHasBits : pb::GeneratedMessage { private TestNestedMessageHasBits() { } - private static readonly TestNestedMessageHasBits defaultInstance = new Builder().BuildPartial(); + private static readonly TestNestedMessageHasBits defaultInstance = new TestNestedMessageHasBits().MakeReadOnly(); private static readonly string[] _testNestedMessageHasBitsFieldNames = new string[] { "optional_nested_message" }; private static readonly uint[] _testNestedMessageHasBitsFieldTags = new uint[] { 10 }; public static TestNestedMessageHasBits DefaultInstance { @@ -12667,7 +12759,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestNestedMessageHasBits DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override TestNestedMessageHasBits ThisMessage { @@ -12692,7 +12784,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class NestedMessage : pb::GeneratedMessage { private NestedMessage() { } - private static readonly NestedMessage defaultInstance = new Builder().BuildPartial(); + private static readonly NestedMessage defaultInstance = new NestedMessage().MakeReadOnly(); private static readonly string[] _nestedMessageFieldNames = new string[] { "nestedmessage_repeated_foreignmessage", "nestedmessage_repeated_int32" }; private static readonly uint[] _nestedMessageFieldTags = new uint[] { 18, 8 }; public static NestedMessage DefaultInstance { @@ -12700,7 +12792,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override NestedMessage DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override NestedMessage ThisMessage { @@ -12811,6 +12903,12 @@ namespace Google.ProtocolBuffers.TestProtos { public static NestedMessage ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private NestedMessage MakeReadOnly() { + nestedmessageRepeatedInt32_.MakeReadOnly(); + nestedmessageRepeatedForeignmessage_.MakeReadOnly(); + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -12826,22 +12924,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new NestedMessage(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(NestedMessage cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - NestedMessage result; + private bool resultIsReadOnly; + private NestedMessage result; private NestedMessage PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { NestedMessage original = result; result = new NestedMessage(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -12856,13 +12954,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new NestedMessage(); - 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); @@ -12878,13 +12976,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override NestedMessage BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - result.nestedmessageRepeatedInt32_.MakeReadOnly(); - result.nestedmessageRepeatedForeignmessage_.MakeReadOnly(); - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -13051,12 +13147,12 @@ namespace Google.ProtocolBuffers.TestProtos { public const int OptionalNestedMessageFieldNumber = 1; private bool hasOptionalNestedMessage; - private global::Google.ProtocolBuffers.TestProtos.TestNestedMessageHasBits.Types.NestedMessage optionalNestedMessage_ = global::Google.ProtocolBuffers.TestProtos.TestNestedMessageHasBits.Types.NestedMessage.DefaultInstance; + private global::Google.ProtocolBuffers.TestProtos.TestNestedMessageHasBits.Types.NestedMessage optionalNestedMessage_; public bool HasOptionalNestedMessage { get { return hasOptionalNestedMessage; } } public global::Google.ProtocolBuffers.TestProtos.TestNestedMessageHasBits.Types.NestedMessage OptionalNestedMessage { - get { return optionalNestedMessage_; } + get { return optionalNestedMessage_ ?? global::Google.ProtocolBuffers.TestProtos.TestNestedMessageHasBits.Types.NestedMessage.DefaultInstance; } } public override bool IsInitialized { @@ -13120,6 +13216,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static TestNestedMessageHasBits ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private TestNestedMessageHasBits MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -13135,22 +13235,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new TestNestedMessageHasBits(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(TestNestedMessageHasBits cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - TestNestedMessageHasBits result; + private bool resultIsReadOnly; + private TestNestedMessageHasBits result; private TestNestedMessageHasBits PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { TestNestedMessageHasBits original = result; result = new TestNestedMessageHasBits(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -13165,13 +13265,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new TestNestedMessageHasBits(); - 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); @@ -13187,11 +13287,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestNestedMessageHasBits BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -13307,7 +13407,7 @@ namespace Google.ProtocolBuffers.TestProtos { public Builder ClearOptionalNestedMessage() { PrepareBuilder(); result.hasOptionalNestedMessage = false; - result.optionalNestedMessage_ = global::Google.ProtocolBuffers.TestProtos.TestNestedMessageHasBits.Types.NestedMessage.DefaultInstance; + result.optionalNestedMessage_ = null; return this; } } @@ -13321,7 +13421,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class TestCamelCaseFieldNames : pb::GeneratedMessage { private TestCamelCaseFieldNames() { } - private static readonly TestCamelCaseFieldNames defaultInstance = new Builder().BuildPartial(); + private static readonly TestCamelCaseFieldNames defaultInstance = new TestCamelCaseFieldNames().MakeReadOnly(); private static readonly string[] _testCamelCaseFieldNamesFieldNames = new string[] { "CordField", "EnumField", "MessageField", "PrimitiveField", "RepeatedCordField", "RepeatedEnumField", "RepeatedMessageField", "RepeatedPrimitiveField", "RepeatedStringField", "RepeatedStringPieceField", "StringField", "StringPieceField" }; private static readonly uint[] _testCamelCaseFieldNamesFieldTags = new uint[] { 50, 24, 34, 8, 98, 72, 82, 56, 66, 90, 18, 42 }; public static TestCamelCaseFieldNames DefaultInstance { @@ -13329,7 +13429,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestCamelCaseFieldNames DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override TestCamelCaseFieldNames ThisMessage { @@ -13376,12 +13476,12 @@ namespace Google.ProtocolBuffers.TestProtos { public const int MessageFieldFieldNumber = 4; private bool hasMessageField; - private global::Google.ProtocolBuffers.TestProtos.ForeignMessage messageField_ = global::Google.ProtocolBuffers.TestProtos.ForeignMessage.DefaultInstance; + private global::Google.ProtocolBuffers.TestProtos.ForeignMessage messageField_; public bool HasMessageField { get { return hasMessageField; } } public global::Google.ProtocolBuffers.TestProtos.ForeignMessage MessageField { - get { return messageField_; } + get { return messageField_ ?? global::Google.ProtocolBuffers.TestProtos.ForeignMessage.DefaultInstance; } } public const int StringPieceFieldFieldNumber = 5; @@ -13630,6 +13730,16 @@ namespace Google.ProtocolBuffers.TestProtos { public static TestCamelCaseFieldNames ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private TestCamelCaseFieldNames MakeReadOnly() { + repeatedPrimitiveField_.MakeReadOnly(); + repeatedStringField_.MakeReadOnly(); + repeatedEnumField_.MakeReadOnly(); + repeatedMessageField_.MakeReadOnly(); + repeatedStringPieceField_.MakeReadOnly(); + repeatedCordField_.MakeReadOnly(); + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -13645,22 +13755,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new TestCamelCaseFieldNames(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(TestCamelCaseFieldNames cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - TestCamelCaseFieldNames result; + private bool resultIsReadOnly; + private TestCamelCaseFieldNames result; private TestCamelCaseFieldNames PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { TestCamelCaseFieldNames original = result; result = new TestCamelCaseFieldNames(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -13675,13 +13785,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new TestCamelCaseFieldNames(); - 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); @@ -13697,17 +13807,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestCamelCaseFieldNames BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - result.repeatedPrimitiveField_.MakeReadOnly(); - result.repeatedStringField_.MakeReadOnly(); - result.repeatedEnumField_.MakeReadOnly(); - result.repeatedMessageField_.MakeReadOnly(); - result.repeatedStringPieceField_.MakeReadOnly(); - result.repeatedCordField_.MakeReadOnly(); - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -13980,7 +14084,7 @@ namespace Google.ProtocolBuffers.TestProtos { public Builder ClearMessageField() { PrepareBuilder(); result.hasMessageField = false; - result.messageField_ = global::Google.ProtocolBuffers.TestProtos.ForeignMessage.DefaultInstance; + result.messageField_ = null; return this; } @@ -14236,7 +14340,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class TestFieldOrderings : pb::ExtendableMessage { private TestFieldOrderings() { } - private static readonly TestFieldOrderings defaultInstance = new Builder().BuildPartial(); + private static readonly TestFieldOrderings defaultInstance = new TestFieldOrderings().MakeReadOnly(); private static readonly string[] _testFieldOrderingsFieldNames = new string[] { "my_float", "my_int", "my_string" }; private static readonly uint[] _testFieldOrderingsFieldTags = new uint[] { 813, 8, 90 }; public static TestFieldOrderings DefaultInstance { @@ -14244,7 +14348,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestFieldOrderings DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override TestFieldOrderings ThisMessage { @@ -14367,6 +14471,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static TestFieldOrderings ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private TestFieldOrderings MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -14382,22 +14490,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new TestFieldOrderings(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(TestFieldOrderings cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - TestFieldOrderings result; + private bool resultIsReadOnly; + private TestFieldOrderings result; private TestFieldOrderings PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { TestFieldOrderings original = result; result = new TestFieldOrderings(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -14412,13 +14520,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new TestFieldOrderings(); - 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); @@ -14434,11 +14542,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestFieldOrderings BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -14599,7 +14707,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class TestExtremeDefaultValues : pb::GeneratedMessage { private TestExtremeDefaultValues() { } - private static readonly TestExtremeDefaultValues defaultInstance = new Builder().BuildPartial(); + private static readonly TestExtremeDefaultValues defaultInstance = new TestExtremeDefaultValues().MakeReadOnly(); private static readonly string[] _testExtremeDefaultValuesFieldNames = new string[] { "escaped_bytes", "inf_double", "inf_float", "large_float", "large_uint32", "large_uint64", "nan_double", "nan_float", "neg_inf_double", "neg_inf_float", "negative_float", "negative_one_float", "one_float", "small_float", "small_int32", "small_int64", "small_negative_float", "utf8_string", "zero_float" }; private static readonly uint[] _testExtremeDefaultValuesFieldTags = new uint[] { 10, 113, 141, 101, 16, 24, 129, 157, 121, 149, 93, 85, 69, 77, 32, 40, 109, 50, 61 }; public static TestExtremeDefaultValues DefaultInstance { @@ -14607,7 +14715,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestExtremeDefaultValues DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override TestExtremeDefaultValues ThisMessage { @@ -14983,6 +15091,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static TestExtremeDefaultValues ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private TestExtremeDefaultValues MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -14998,22 +15110,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new TestExtremeDefaultValues(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(TestExtremeDefaultValues cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - TestExtremeDefaultValues result; + private bool resultIsReadOnly; + private TestExtremeDefaultValues result; private TestExtremeDefaultValues PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { TestExtremeDefaultValues original = result; result = new TestExtremeDefaultValues(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -15028,13 +15140,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new TestExtremeDefaultValues(); - 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); @@ -15050,11 +15162,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestExtremeDefaultValues BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -15651,7 +15763,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class OneString : pb::GeneratedMessage { private OneString() { } - private static readonly OneString defaultInstance = new Builder().BuildPartial(); + private static readonly OneString defaultInstance = new OneString().MakeReadOnly(); private static readonly string[] _oneStringFieldNames = new string[] { "data" }; private static readonly uint[] _oneStringFieldTags = new uint[] { 10 }; public static OneString DefaultInstance { @@ -15659,7 +15771,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override OneString DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override OneString ThisMessage { @@ -15745,6 +15857,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static OneString ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private OneString MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -15760,22 +15876,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new OneString(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(OneString cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - OneString result; + private bool resultIsReadOnly; + private OneString result; private OneString PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { OneString original = result; result = new OneString(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -15790,13 +15906,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new OneString(); - 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); @@ -15812,11 +15928,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override OneString BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -15922,7 +16038,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class OneBytes : pb::GeneratedMessage { private OneBytes() { } - private static readonly OneBytes defaultInstance = new Builder().BuildPartial(); + private static readonly OneBytes defaultInstance = new OneBytes().MakeReadOnly(); private static readonly string[] _oneBytesFieldNames = new string[] { "data" }; private static readonly uint[] _oneBytesFieldTags = new uint[] { 10 }; public static OneBytes DefaultInstance { @@ -15930,7 +16046,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override OneBytes DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override OneBytes ThisMessage { @@ -16016,6 +16132,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static OneBytes ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private OneBytes MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -16031,22 +16151,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new OneBytes(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(OneBytes cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - OneBytes result; + private bool resultIsReadOnly; + private OneBytes result; private OneBytes PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { OneBytes original = result; result = new OneBytes(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -16061,13 +16181,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new OneBytes(); - 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); @@ -16083,11 +16203,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override OneBytes BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -16193,7 +16313,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class TestPackedTypes : pb::GeneratedMessage { private TestPackedTypes() { } - private static readonly TestPackedTypes defaultInstance = new Builder().BuildPartial(); + private static readonly TestPackedTypes defaultInstance = new TestPackedTypes().MakeReadOnly(); private static readonly string[] _testPackedTypesFieldNames = new string[] { "packed_bool", "packed_double", "packed_enum", "packed_fixed32", "packed_fixed64", "packed_float", "packed_int32", "packed_int64", "packed_sfixed32", "packed_sfixed64", "packed_sint32", "packed_sint64", "packed_uint32", "packed_uint64" }; private static readonly uint[] _testPackedTypesFieldTags = new uint[] { 818, 810, 826, 770, 778, 802, 722, 730, 786, 794, 754, 762, 738, 746 }; public static TestPackedTypes DefaultInstance { @@ -16201,7 +16321,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestPackedTypes DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override TestPackedTypes ThisMessage { @@ -16644,6 +16764,24 @@ namespace Google.ProtocolBuffers.TestProtos { public static TestPackedTypes ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private TestPackedTypes MakeReadOnly() { + packedInt32_.MakeReadOnly(); + packedInt64_.MakeReadOnly(); + packedUint32_.MakeReadOnly(); + packedUint64_.MakeReadOnly(); + packedSint32_.MakeReadOnly(); + packedSint64_.MakeReadOnly(); + packedFixed32_.MakeReadOnly(); + packedFixed64_.MakeReadOnly(); + packedSfixed32_.MakeReadOnly(); + packedSfixed64_.MakeReadOnly(); + packedFloat_.MakeReadOnly(); + packedDouble_.MakeReadOnly(); + packedBool_.MakeReadOnly(); + packedEnum_.MakeReadOnly(); + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -16659,22 +16797,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new TestPackedTypes(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(TestPackedTypes cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - TestPackedTypes result; + private bool resultIsReadOnly; + private TestPackedTypes result; private TestPackedTypes PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { TestPackedTypes original = result; result = new TestPackedTypes(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -16689,13 +16827,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new TestPackedTypes(); - 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); @@ -16711,25 +16849,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestPackedTypes BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - result.packedInt32_.MakeReadOnly(); - result.packedInt64_.MakeReadOnly(); - result.packedUint32_.MakeReadOnly(); - result.packedUint64_.MakeReadOnly(); - result.packedSint32_.MakeReadOnly(); - result.packedSint64_.MakeReadOnly(); - result.packedFixed32_.MakeReadOnly(); - result.packedFixed64_.MakeReadOnly(); - result.packedSfixed32_.MakeReadOnly(); - result.packedSfixed64_.MakeReadOnly(); - result.packedFloat_.MakeReadOnly(); - result.packedDouble_.MakeReadOnly(); - result.packedBool_.MakeReadOnly(); - result.packedEnum_.MakeReadOnly(); - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -17368,7 +17492,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class TestUnpackedTypes : pb::GeneratedMessage { private TestUnpackedTypes() { } - private static readonly TestUnpackedTypes defaultInstance = new Builder().BuildPartial(); + private static readonly TestUnpackedTypes defaultInstance = new TestUnpackedTypes().MakeReadOnly(); private static readonly string[] _testUnpackedTypesFieldNames = new string[] { "unpacked_bool", "unpacked_double", "unpacked_enum", "unpacked_fixed32", "unpacked_fixed64", "unpacked_float", "unpacked_int32", "unpacked_int64", "unpacked_sfixed32", "unpacked_sfixed64", "unpacked_sint32", "unpacked_sint64", "unpacked_uint32", "unpacked_uint64" }; private static readonly uint[] _testUnpackedTypesFieldTags = new uint[] { 816, 809, 824, 773, 777, 805, 720, 728, 789, 793, 752, 760, 736, 744 }; public static TestUnpackedTypes DefaultInstance { @@ -17376,7 +17500,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestUnpackedTypes DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override TestUnpackedTypes ThisMessage { @@ -17764,6 +17888,24 @@ namespace Google.ProtocolBuffers.TestProtos { public static TestUnpackedTypes ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private TestUnpackedTypes MakeReadOnly() { + unpackedInt32_.MakeReadOnly(); + unpackedInt64_.MakeReadOnly(); + unpackedUint32_.MakeReadOnly(); + unpackedUint64_.MakeReadOnly(); + unpackedSint32_.MakeReadOnly(); + unpackedSint64_.MakeReadOnly(); + unpackedFixed32_.MakeReadOnly(); + unpackedFixed64_.MakeReadOnly(); + unpackedSfixed32_.MakeReadOnly(); + unpackedSfixed64_.MakeReadOnly(); + unpackedFloat_.MakeReadOnly(); + unpackedDouble_.MakeReadOnly(); + unpackedBool_.MakeReadOnly(); + unpackedEnum_.MakeReadOnly(); + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -17779,22 +17921,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new TestUnpackedTypes(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(TestUnpackedTypes cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - TestUnpackedTypes result; + private bool resultIsReadOnly; + private TestUnpackedTypes result; private TestUnpackedTypes PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { TestUnpackedTypes original = result; result = new TestUnpackedTypes(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -17809,13 +17951,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new TestUnpackedTypes(); - 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); @@ -17831,25 +17973,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestUnpackedTypes BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - result.unpackedInt32_.MakeReadOnly(); - result.unpackedInt64_.MakeReadOnly(); - result.unpackedUint32_.MakeReadOnly(); - result.unpackedUint64_.MakeReadOnly(); - result.unpackedSint32_.MakeReadOnly(); - result.unpackedSint64_.MakeReadOnly(); - result.unpackedFixed32_.MakeReadOnly(); - result.unpackedFixed64_.MakeReadOnly(); - result.unpackedSfixed32_.MakeReadOnly(); - result.unpackedSfixed64_.MakeReadOnly(); - result.unpackedFloat_.MakeReadOnly(); - result.unpackedDouble_.MakeReadOnly(); - result.unpackedBool_.MakeReadOnly(); - result.unpackedEnum_.MakeReadOnly(); - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -18488,7 +18616,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class TestPackedExtensions : pb::ExtendableMessage { private TestPackedExtensions() { } - private static readonly TestPackedExtensions defaultInstance = new Builder().BuildPartial(); + private static readonly TestPackedExtensions defaultInstance = new TestPackedExtensions().MakeReadOnly(); private static readonly string[] _testPackedExtensionsFieldNames = new string[] { }; private static readonly uint[] _testPackedExtensionsFieldTags = new uint[] { }; public static TestPackedExtensions DefaultInstance { @@ -18496,7 +18624,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestPackedExtensions DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override TestPackedExtensions ThisMessage { @@ -18570,6 +18698,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static TestPackedExtensions ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private TestPackedExtensions MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -18585,22 +18717,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new TestPackedExtensions(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(TestPackedExtensions cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - TestPackedExtensions result; + private bool resultIsReadOnly; + private TestPackedExtensions result; private TestPackedExtensions PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { TestPackedExtensions original = result; result = new TestPackedExtensions(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -18615,13 +18747,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new TestPackedExtensions(); - 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); @@ -18637,11 +18769,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestPackedExtensions BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -18720,7 +18852,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class TestUnpackedExtensions : pb::ExtendableMessage { private TestUnpackedExtensions() { } - private static readonly TestUnpackedExtensions defaultInstance = new Builder().BuildPartial(); + private static readonly TestUnpackedExtensions defaultInstance = new TestUnpackedExtensions().MakeReadOnly(); private static readonly string[] _testUnpackedExtensionsFieldNames = new string[] { }; private static readonly uint[] _testUnpackedExtensionsFieldTags = new uint[] { }; public static TestUnpackedExtensions DefaultInstance { @@ -18728,7 +18860,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestUnpackedExtensions DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override TestUnpackedExtensions ThisMessage { @@ -18802,6 +18934,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static TestUnpackedExtensions ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private TestUnpackedExtensions MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -18817,22 +18953,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new TestUnpackedExtensions(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(TestUnpackedExtensions cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - TestUnpackedExtensions result; + private bool resultIsReadOnly; + private TestUnpackedExtensions result; private TestUnpackedExtensions PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { TestUnpackedExtensions original = result; result = new TestUnpackedExtensions(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -18847,13 +18983,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new TestUnpackedExtensions(); - 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); @@ -18869,11 +19005,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestUnpackedExtensions BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -18952,7 +19088,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class TestDynamicExtensions : pb::GeneratedMessage { private TestDynamicExtensions() { } - private static readonly TestDynamicExtensions defaultInstance = new Builder().BuildPartial(); + private static readonly TestDynamicExtensions defaultInstance = new TestDynamicExtensions().MakeReadOnly(); private static readonly string[] _testDynamicExtensionsFieldNames = new string[] { "dynamic_enum_extension", "dynamic_message_extension", "enum_extension", "message_extension", "packed_extension", "repeated_extension", "scalar_extension" }; private static readonly uint[] _testDynamicExtensionsFieldTags = new uint[] { 16016, 16034, 16008, 16026, 16050, 16042, 16005 }; public static TestDynamicExtensions DefaultInstance { @@ -18960,7 +19096,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestDynamicExtensions DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override TestDynamicExtensions ThisMessage { @@ -18993,7 +19129,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class DynamicMessageType : pb::GeneratedMessage { private DynamicMessageType() { } - private static readonly DynamicMessageType defaultInstance = new Builder().BuildPartial(); + private static readonly DynamicMessageType defaultInstance = new DynamicMessageType().MakeReadOnly(); private static readonly string[] _dynamicMessageTypeFieldNames = new string[] { "dynamic_field" }; private static readonly uint[] _dynamicMessageTypeFieldTags = new uint[] { 16800 }; public static DynamicMessageType DefaultInstance { @@ -19001,7 +19137,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override DynamicMessageType DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override DynamicMessageType ThisMessage { @@ -19087,6 +19223,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static DynamicMessageType ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private DynamicMessageType MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -19102,22 +19242,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new DynamicMessageType(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(DynamicMessageType cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - DynamicMessageType result; + private bool resultIsReadOnly; + private DynamicMessageType result; private DynamicMessageType PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { DynamicMessageType original = result; result = new DynamicMessageType(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -19132,13 +19272,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new DynamicMessageType(); - 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); @@ -19154,11 +19294,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override DynamicMessageType BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -19294,22 +19434,22 @@ namespace Google.ProtocolBuffers.TestProtos { public const int MessageExtensionFieldNumber = 2003; private bool hasMessageExtension; - private global::Google.ProtocolBuffers.TestProtos.ForeignMessage messageExtension_ = global::Google.ProtocolBuffers.TestProtos.ForeignMessage.DefaultInstance; + private global::Google.ProtocolBuffers.TestProtos.ForeignMessage messageExtension_; public bool HasMessageExtension { get { return hasMessageExtension; } } public global::Google.ProtocolBuffers.TestProtos.ForeignMessage MessageExtension { - get { return messageExtension_; } + get { return messageExtension_ ?? global::Google.ProtocolBuffers.TestProtos.ForeignMessage.DefaultInstance; } } public const int DynamicMessageExtensionFieldNumber = 2004; private bool hasDynamicMessageExtension; - private global::Google.ProtocolBuffers.TestProtos.TestDynamicExtensions.Types.DynamicMessageType dynamicMessageExtension_ = global::Google.ProtocolBuffers.TestProtos.TestDynamicExtensions.Types.DynamicMessageType.DefaultInstance; + private global::Google.ProtocolBuffers.TestProtos.TestDynamicExtensions.Types.DynamicMessageType dynamicMessageExtension_; public bool HasDynamicMessageExtension { get { return hasDynamicMessageExtension; } } public global::Google.ProtocolBuffers.TestProtos.TestDynamicExtensions.Types.DynamicMessageType DynamicMessageExtension { - get { return dynamicMessageExtension_; } + get { return dynamicMessageExtension_ ?? global::Google.ProtocolBuffers.TestProtos.TestDynamicExtensions.Types.DynamicMessageType.DefaultInstance; } } public const int RepeatedExtensionFieldNumber = 2005; @@ -19447,6 +19587,12 @@ namespace Google.ProtocolBuffers.TestProtos { public static TestDynamicExtensions ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private TestDynamicExtensions MakeReadOnly() { + repeatedExtension_.MakeReadOnly(); + packedExtension_.MakeReadOnly(); + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -19462,22 +19608,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new TestDynamicExtensions(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(TestDynamicExtensions cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - TestDynamicExtensions result; + private bool resultIsReadOnly; + private TestDynamicExtensions result; private TestDynamicExtensions PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { TestDynamicExtensions original = result; result = new TestDynamicExtensions(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -19492,13 +19638,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new TestDynamicExtensions(); - 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); @@ -19514,13 +19660,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestDynamicExtensions BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - result.repeatedExtension_.MakeReadOnly(); - result.packedExtension_.MakeReadOnly(); - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -19762,7 +19906,7 @@ namespace Google.ProtocolBuffers.TestProtos { public Builder ClearMessageExtension() { PrepareBuilder(); result.hasMessageExtension = false; - result.messageExtension_ = global::Google.ProtocolBuffers.TestProtos.ForeignMessage.DefaultInstance; + result.messageExtension_ = null; return this; } @@ -19802,7 +19946,7 @@ namespace Google.ProtocolBuffers.TestProtos { public Builder ClearDynamicMessageExtension() { PrepareBuilder(); result.hasDynamicMessageExtension = false; - result.dynamicMessageExtension_ = global::Google.ProtocolBuffers.TestProtos.TestDynamicExtensions.Types.DynamicMessageType.DefaultInstance; + result.dynamicMessageExtension_ = null; return this; } @@ -19878,7 +20022,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class TestRepeatedScalarDifferentTagSizes : pb::GeneratedMessage { private TestRepeatedScalarDifferentTagSizes() { } - private static readonly TestRepeatedScalarDifferentTagSizes defaultInstance = new Builder().BuildPartial(); + private static readonly TestRepeatedScalarDifferentTagSizes defaultInstance = new TestRepeatedScalarDifferentTagSizes().MakeReadOnly(); private static readonly string[] _testRepeatedScalarDifferentTagSizesFieldNames = new string[] { "repeated_fixed32", "repeated_fixed64", "repeated_float", "repeated_int32", "repeated_int64", "repeated_uint64" }; private static readonly uint[] _testRepeatedScalarDifferentTagSizesFieldTags = new uint[] { 101, 16369, 2097141, 104, 16376, 2097144 }; public static TestRepeatedScalarDifferentTagSizes DefaultInstance { @@ -19886,7 +20030,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestRepeatedScalarDifferentTagSizes DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override TestRepeatedScalarDifferentTagSizes ThisMessage { @@ -20094,6 +20238,16 @@ namespace Google.ProtocolBuffers.TestProtos { public static TestRepeatedScalarDifferentTagSizes ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private TestRepeatedScalarDifferentTagSizes MakeReadOnly() { + repeatedFixed32_.MakeReadOnly(); + repeatedInt32_.MakeReadOnly(); + repeatedFixed64_.MakeReadOnly(); + repeatedInt64_.MakeReadOnly(); + repeatedFloat_.MakeReadOnly(); + repeatedUint64_.MakeReadOnly(); + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -20109,22 +20263,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new TestRepeatedScalarDifferentTagSizes(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(TestRepeatedScalarDifferentTagSizes cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - TestRepeatedScalarDifferentTagSizes result; + private bool resultIsReadOnly; + private TestRepeatedScalarDifferentTagSizes result; private TestRepeatedScalarDifferentTagSizes PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { TestRepeatedScalarDifferentTagSizes original = result; result = new TestRepeatedScalarDifferentTagSizes(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -20139,13 +20293,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new TestRepeatedScalarDifferentTagSizes(); - 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); @@ -20161,17 +20315,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestRepeatedScalarDifferentTagSizes BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - result.repeatedFixed32_.MakeReadOnly(); - result.repeatedInt32_.MakeReadOnly(); - result.repeatedFixed64_.MakeReadOnly(); - result.repeatedInt64_.MakeReadOnly(); - result.repeatedFloat_.MakeReadOnly(); - result.repeatedUint64_.MakeReadOnly(); - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -20492,7 +20640,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class FooRequest : pb::GeneratedMessage { private FooRequest() { } - private static readonly FooRequest defaultInstance = new Builder().BuildPartial(); + private static readonly FooRequest defaultInstance = new FooRequest().MakeReadOnly(); private static readonly string[] _fooRequestFieldNames = new string[] { }; private static readonly uint[] _fooRequestFieldTags = new uint[] { }; public static FooRequest DefaultInstance { @@ -20500,7 +20648,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override FooRequest DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override FooRequest ThisMessage { @@ -20570,6 +20718,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static FooRequest ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private FooRequest MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -20585,22 +20737,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new FooRequest(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(FooRequest cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - FooRequest result; + private bool resultIsReadOnly; + private FooRequest result; private FooRequest PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { FooRequest original = result; result = new FooRequest(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -20615,13 +20767,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new FooRequest(); - 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); @@ -20637,11 +20789,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override FooRequest BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -20719,7 +20871,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class FooResponse : pb::GeneratedMessage { private FooResponse() { } - private static readonly FooResponse defaultInstance = new Builder().BuildPartial(); + private static readonly FooResponse defaultInstance = new FooResponse().MakeReadOnly(); private static readonly string[] _fooResponseFieldNames = new string[] { }; private static readonly uint[] _fooResponseFieldTags = new uint[] { }; public static FooResponse DefaultInstance { @@ -20727,7 +20879,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override FooResponse DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override FooResponse ThisMessage { @@ -20797,6 +20949,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static FooResponse ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private FooResponse MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -20812,22 +20968,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new FooResponse(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(FooResponse cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - FooResponse result; + private bool resultIsReadOnly; + private FooResponse result; private FooResponse PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { FooResponse original = result; result = new FooResponse(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -20842,13 +20998,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new FooResponse(); - 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); @@ -20864,11 +21020,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override FooResponse BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -20946,7 +21102,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class BarRequest : pb::GeneratedMessage { private BarRequest() { } - private static readonly BarRequest defaultInstance = new Builder().BuildPartial(); + private static readonly BarRequest defaultInstance = new BarRequest().MakeReadOnly(); private static readonly string[] _barRequestFieldNames = new string[] { }; private static readonly uint[] _barRequestFieldTags = new uint[] { }; public static BarRequest DefaultInstance { @@ -20954,7 +21110,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override BarRequest DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override BarRequest ThisMessage { @@ -21024,6 +21180,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static BarRequest ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private BarRequest MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -21039,22 +21199,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new BarRequest(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(BarRequest cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - BarRequest result; + private bool resultIsReadOnly; + private BarRequest result; private BarRequest PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { BarRequest original = result; result = new BarRequest(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -21069,13 +21229,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new BarRequest(); - 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); @@ -21091,11 +21251,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override BarRequest BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -21173,7 +21333,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class BarResponse : pb::GeneratedMessage { private BarResponse() { } - private static readonly BarResponse defaultInstance = new Builder().BuildPartial(); + private static readonly BarResponse defaultInstance = new BarResponse().MakeReadOnly(); private static readonly string[] _barResponseFieldNames = new string[] { }; private static readonly uint[] _barResponseFieldTags = new uint[] { }; public static BarResponse DefaultInstance { @@ -21181,7 +21341,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override BarResponse DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override BarResponse ThisMessage { @@ -21251,6 +21411,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static BarResponse ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private BarResponse MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -21266,22 +21430,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new BarResponse(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(BarResponse cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - BarResponse result; + private bool resultIsReadOnly; + private BarResponse result; private BarResponse PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { BarResponse original = result; result = new BarResponse(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -21296,13 +21460,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new BarResponse(); - 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); @@ -21318,11 +21482,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override BarResponse BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { diff --git a/src/ProtocolBuffers.Test/TestProtos/UnitTestRpcInterop.cs b/src/ProtocolBuffers.Test/TestProtos/UnitTestRpcInterop.cs index cb80586182..ce8f66d945 100644 --- a/src/ProtocolBuffers.Test/TestProtos/UnitTestRpcInterop.cs +++ b/src/ProtocolBuffers.Test/TestProtos/UnitTestRpcInterop.cs @@ -84,7 +84,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class SearchRequest : pb::GeneratedMessage { private SearchRequest() { } - private static readonly SearchRequest defaultInstance = new Builder().BuildPartial(); + private static readonly SearchRequest defaultInstance = new SearchRequest().MakeReadOnly(); private static readonly string[] _searchRequestFieldNames = new string[] { "Criteria" }; private static readonly uint[] _searchRequestFieldTags = new uint[] { 10 }; public static SearchRequest DefaultInstance { @@ -92,7 +92,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override SearchRequest DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override SearchRequest ThisMessage { @@ -185,6 +185,11 @@ namespace Google.ProtocolBuffers.TestProtos { public static SearchRequest ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private SearchRequest MakeReadOnly() { + criteria_.MakeReadOnly(); + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -200,22 +205,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new SearchRequest(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(SearchRequest cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - SearchRequest result; + private bool resultIsReadOnly; + private SearchRequest result; private SearchRequest PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { SearchRequest original = result; result = new SearchRequest(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -230,13 +235,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new SearchRequest(); - 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); @@ -252,12 +257,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override SearchRequest BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - result.criteria_.MakeReadOnly(); - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -374,7 +378,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class SearchResponse : pb::GeneratedMessage { private SearchResponse() { } - private static readonly SearchResponse defaultInstance = new Builder().BuildPartial(); + private static readonly SearchResponse defaultInstance = new SearchResponse().MakeReadOnly(); private static readonly string[] _searchResponseFieldNames = new string[] { "results" }; private static readonly uint[] _searchResponseFieldTags = new uint[] { 10 }; public static SearchResponse DefaultInstance { @@ -382,7 +386,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override SearchResponse DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override SearchResponse ThisMessage { @@ -407,7 +411,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class ResultItem : pb::GeneratedMessage { private ResultItem() { } - private static readonly ResultItem defaultInstance = new Builder().BuildPartial(); + private static readonly ResultItem defaultInstance = new ResultItem().MakeReadOnly(); private static readonly string[] _resultItemFieldNames = new string[] { "name", "url" }; private static readonly uint[] _resultItemFieldTags = new uint[] { 18, 10 }; public static ResultItem DefaultInstance { @@ -415,7 +419,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override ResultItem DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override ResultItem ThisMessage { @@ -518,6 +522,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static ResultItem ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private ResultItem MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -533,22 +541,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new ResultItem(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(ResultItem cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - ResultItem result; + private bool resultIsReadOnly; + private ResultItem result; private ResultItem PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { ResultItem original = result; result = new ResultItem(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -563,13 +571,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new ResultItem(); - 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); @@ -585,11 +593,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override ResultItem BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -797,6 +805,11 @@ namespace Google.ProtocolBuffers.TestProtos { public static SearchResponse ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private SearchResponse MakeReadOnly() { + results_.MakeReadOnly(); + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -812,22 +825,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new SearchResponse(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(SearchResponse cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - SearchResponse result; + private bool resultIsReadOnly; + private SearchResponse result; private SearchResponse PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { SearchResponse original = result; result = new SearchResponse(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -842,13 +855,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new SearchResponse(); - 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); @@ -864,12 +877,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override SearchResponse BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - result.results_.MakeReadOnly(); - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -998,7 +1010,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class RefineSearchRequest : pb::GeneratedMessage { private RefineSearchRequest() { } - private static readonly RefineSearchRequest defaultInstance = new Builder().BuildPartial(); + private static readonly RefineSearchRequest defaultInstance = new RefineSearchRequest().MakeReadOnly(); private static readonly string[] _refineSearchRequestFieldNames = new string[] { "Criteria", "previous_results" }; private static readonly uint[] _refineSearchRequestFieldTags = new uint[] { 10, 18 }; public static RefineSearchRequest DefaultInstance { @@ -1006,7 +1018,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override RefineSearchRequest DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override RefineSearchRequest ThisMessage { @@ -1035,12 +1047,12 @@ namespace Google.ProtocolBuffers.TestProtos { public const int PreviousResultsFieldNumber = 2; private bool hasPreviousResults; - private global::Google.ProtocolBuffers.TestProtos.SearchResponse previousResults_ = global::Google.ProtocolBuffers.TestProtos.SearchResponse.DefaultInstance; + private global::Google.ProtocolBuffers.TestProtos.SearchResponse previousResults_; public bool HasPreviousResults { get { return hasPreviousResults; } } public global::Google.ProtocolBuffers.TestProtos.SearchResponse PreviousResults { - get { return previousResults_; } + get { return previousResults_ ?? global::Google.ProtocolBuffers.TestProtos.SearchResponse.DefaultInstance; } } public override bool IsInitialized { @@ -1117,6 +1129,11 @@ namespace Google.ProtocolBuffers.TestProtos { public static RefineSearchRequest ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private RefineSearchRequest MakeReadOnly() { + criteria_.MakeReadOnly(); + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -1132,22 +1149,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new RefineSearchRequest(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(RefineSearchRequest cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - RefineSearchRequest result; + private bool resultIsReadOnly; + private RefineSearchRequest result; private RefineSearchRequest PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { RefineSearchRequest original = result; result = new RefineSearchRequest(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -1162,13 +1179,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new RefineSearchRequest(); - 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); @@ -1184,12 +1201,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override RefineSearchRequest BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - result.criteria_.MakeReadOnly(); - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -1344,7 +1360,7 @@ namespace Google.ProtocolBuffers.TestProtos { public Builder ClearPreviousResults() { PrepareBuilder(); result.hasPreviousResults = false; - result.previousResults_ = global::Google.ProtocolBuffers.TestProtos.SearchResponse.DefaultInstance; + result.previousResults_ = null; return this; } } diff --git a/src/ProtocolBuffers.Test/TestProtos/UnitTestXmlSerializerTestProtoFile.cs b/src/ProtocolBuffers.Test/TestProtos/UnitTestXmlSerializerTestProtoFile.cs index 798f09ad46..e63d8c3bac 100644 --- a/src/ProtocolBuffers.Test/TestProtos/UnitTestXmlSerializerTestProtoFile.cs +++ b/src/ProtocolBuffers.Test/TestProtos/UnitTestXmlSerializerTestProtoFile.cs @@ -140,7 +140,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class TestXmlChild : pb::GeneratedMessage { private TestXmlChild() { } - private static readonly TestXmlChild defaultInstance = new Builder().BuildPartial(); + private static readonly TestXmlChild defaultInstance = new TestXmlChild().MakeReadOnly(); private static readonly string[] _testXmlChildFieldNames = new string[] { "binary", "options" }; private static readonly uint[] _testXmlChildFieldTags = new uint[] { 34, 24 }; public static TestXmlChild DefaultInstance { @@ -148,7 +148,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestXmlChild DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override TestXmlChild ThisMessage { @@ -259,6 +259,11 @@ namespace Google.ProtocolBuffers.TestProtos { public static TestXmlChild ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private TestXmlChild MakeReadOnly() { + options_.MakeReadOnly(); + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -275,22 +280,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new TestXmlChild(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(TestXmlChild cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - TestXmlChild result; + private bool resultIsReadOnly; + private TestXmlChild result; private TestXmlChild PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { TestXmlChild original = result; result = new TestXmlChild(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -305,13 +310,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new TestXmlChild(); - 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); @@ -327,12 +332,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestXmlChild BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - result.options_.MakeReadOnly(); - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -486,7 +490,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class TestXmlNoFields : pb::GeneratedMessage { private TestXmlNoFields() { } - private static readonly TestXmlNoFields defaultInstance = new Builder().BuildPartial(); + private static readonly TestXmlNoFields defaultInstance = new TestXmlNoFields().MakeReadOnly(); private static readonly string[] _testXmlNoFieldsFieldNames = new string[] { }; private static readonly uint[] _testXmlNoFieldsFieldTags = new uint[] { }; public static TestXmlNoFields DefaultInstance { @@ -494,7 +498,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestXmlNoFields DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override TestXmlNoFields ThisMessage { @@ -564,6 +568,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static TestXmlNoFields ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private TestXmlNoFields MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -580,22 +588,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new TestXmlNoFields(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(TestXmlNoFields cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - TestXmlNoFields result; + private bool resultIsReadOnly; + private TestXmlNoFields result; private TestXmlNoFields PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { TestXmlNoFields original = result; result = new TestXmlNoFields(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -610,13 +618,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new TestXmlNoFields(); - 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); @@ -632,11 +640,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestXmlNoFields BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -715,7 +723,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class TestXmlRescursive : pb::GeneratedMessage { private TestXmlRescursive() { } - private static readonly TestXmlRescursive defaultInstance = new Builder().BuildPartial(); + private static readonly TestXmlRescursive defaultInstance = new TestXmlRescursive().MakeReadOnly(); private static readonly string[] _testXmlRescursiveFieldNames = new string[] { "child" }; private static readonly uint[] _testXmlRescursiveFieldTags = new uint[] { 10 }; public static TestXmlRescursive DefaultInstance { @@ -723,7 +731,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestXmlRescursive DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override TestXmlRescursive ThisMessage { @@ -740,12 +748,12 @@ namespace Google.ProtocolBuffers.TestProtos { public const int ChildFieldNumber = 1; private bool hasChild; - private global::Google.ProtocolBuffers.TestProtos.TestXmlRescursive child_ = global::Google.ProtocolBuffers.TestProtos.TestXmlRescursive.DefaultInstance; + private global::Google.ProtocolBuffers.TestProtos.TestXmlRescursive child_; public bool HasChild { get { return hasChild; } } public global::Google.ProtocolBuffers.TestProtos.TestXmlRescursive Child { - get { return child_; } + get { return child_ ?? global::Google.ProtocolBuffers.TestProtos.TestXmlRescursive.DefaultInstance; } } public override bool IsInitialized { @@ -809,6 +817,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static TestXmlRescursive ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private TestXmlRescursive MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -825,22 +837,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new TestXmlRescursive(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(TestXmlRescursive cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - TestXmlRescursive result; + private bool resultIsReadOnly; + private TestXmlRescursive result; private TestXmlRescursive PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { TestXmlRescursive original = result; result = new TestXmlRescursive(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -855,13 +867,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new TestXmlRescursive(); - 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); @@ -877,11 +889,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestXmlRescursive BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -997,7 +1009,7 @@ namespace Google.ProtocolBuffers.TestProtos { public Builder ClearChild() { PrepareBuilder(); result.hasChild = false; - result.child_ = global::Google.ProtocolBuffers.TestProtos.TestXmlRescursive.DefaultInstance; + result.child_ = null; return this; } } @@ -1012,7 +1024,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class TestXmlMessage : pb::ExtendableMessage { private TestXmlMessage() { } - private static readonly TestXmlMessage defaultInstance = new Builder().BuildPartial(); + private static readonly TestXmlMessage defaultInstance = new TestXmlMessage().MakeReadOnly(); private static readonly string[] _testXmlMessageFieldNames = new string[] { "child", "children", "number", "numbers", "text", "textlines", "valid" }; private static readonly uint[] _testXmlMessageFieldTags = new uint[] { 10, 3211, 48, 16, 26, 5602, 40 }; public static TestXmlMessage DefaultInstance { @@ -1020,7 +1032,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestXmlMessage DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override TestXmlMessage ThisMessage { @@ -1046,7 +1058,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class Children : pb::GeneratedMessage { private Children() { } - private static readonly Children defaultInstance = new Builder().BuildPartial(); + private static readonly Children defaultInstance = new Children().MakeReadOnly(); private static readonly string[] _childrenFieldNames = new string[] { "binary", "options" }; private static readonly uint[] _childrenFieldTags = new uint[] { 34, 24 }; public static Children DefaultInstance { @@ -1054,7 +1066,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Children DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override Children ThisMessage { @@ -1165,6 +1177,11 @@ namespace Google.ProtocolBuffers.TestProtos { public static Children ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private Children MakeReadOnly() { + options_.MakeReadOnly(); + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -1181,22 +1198,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new Children(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(Children cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - Children result; + private bool resultIsReadOnly; + private Children result; private Children PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { Children original = result; result = new Children(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -1211,13 +1228,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new Children(); - 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); @@ -1233,12 +1250,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Children BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - result.options_.MakeReadOnly(); - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -1445,12 +1461,12 @@ namespace Google.ProtocolBuffers.TestProtos { public const int ChildFieldNumber = 1; private bool hasChild; - private global::Google.ProtocolBuffers.TestProtos.TestXmlChild child_ = global::Google.ProtocolBuffers.TestProtos.TestXmlChild.DefaultInstance; + private global::Google.ProtocolBuffers.TestProtos.TestXmlChild child_; public bool HasChild { get { return hasChild; } } public global::Google.ProtocolBuffers.TestProtos.TestXmlChild Child { - get { return child_; } + get { return child_ ?? global::Google.ProtocolBuffers.TestProtos.TestXmlChild.DefaultInstance; } } public const int ChildrenFieldNumber = 401; @@ -1576,6 +1592,13 @@ namespace Google.ProtocolBuffers.TestProtos { public static TestXmlMessage ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private TestXmlMessage MakeReadOnly() { + numbers_.MakeReadOnly(); + textlines_.MakeReadOnly(); + children_.MakeReadOnly(); + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -1592,22 +1615,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new TestXmlMessage(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(TestXmlMessage cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - TestXmlMessage result; + private bool resultIsReadOnly; + private TestXmlMessage result; private TestXmlMessage PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { TestXmlMessage original = result; result = new TestXmlMessage(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -1622,13 +1645,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new TestXmlMessage(); - 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); @@ -1644,14 +1667,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestXmlMessage BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - result.numbers_.MakeReadOnly(); - result.textlines_.MakeReadOnly(); - result.children_.MakeReadOnly(); - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -1934,7 +1954,7 @@ namespace Google.ProtocolBuffers.TestProtos { public Builder ClearChild() { PrepareBuilder(); result.hasChild = false; - result.child_ = global::Google.ProtocolBuffers.TestProtos.TestXmlChild.DefaultInstance; + result.child_ = null; return this; } @@ -1993,7 +2013,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class TestXmlExtension : pb::GeneratedMessage { private TestXmlExtension() { } - private static readonly TestXmlExtension defaultInstance = new Builder().BuildPartial(); + private static readonly TestXmlExtension defaultInstance = new TestXmlExtension().MakeReadOnly(); private static readonly string[] _testXmlExtensionFieldNames = new string[] { "number" }; private static readonly uint[] _testXmlExtensionFieldTags = new uint[] { 8 }; public static TestXmlExtension DefaultInstance { @@ -2001,7 +2021,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestXmlExtension DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override TestXmlExtension ThisMessage { @@ -2088,6 +2108,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static TestXmlExtension ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private TestXmlExtension MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -2104,22 +2128,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new TestXmlExtension(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(TestXmlExtension cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - TestXmlExtension result; + private bool resultIsReadOnly; + private TestXmlExtension result; private TestXmlExtension PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { TestXmlExtension original = result; result = new TestXmlExtension(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -2134,13 +2158,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new TestXmlExtension(); - 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); @@ -2156,11 +2180,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestXmlExtension BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { diff --git a/src/ProtocolBuffers/DescriptorProtos/CSharpOptions.cs b/src/ProtocolBuffers/DescriptorProtos/CSharpOptions.cs index 2bebb011c1..4eb9c05d18 100644 --- a/src/ProtocolBuffers/DescriptorProtos/CSharpOptions.cs +++ b/src/ProtocolBuffers/DescriptorProtos/CSharpOptions.cs @@ -127,7 +127,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class CSharpFileOptions : pb::GeneratedMessage { private CSharpFileOptions() { } - private static readonly CSharpFileOptions defaultInstance = new Builder().BuildPartial(); + private static readonly CSharpFileOptions defaultInstance = new CSharpFileOptions().MakeReadOnly(); 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 { @@ -135,7 +135,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } public override CSharpFileOptions DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override CSharpFileOptions ThisMessage { @@ -429,6 +429,10 @@ namespace Google.ProtocolBuffers.DescriptorProtos { public static CSharpFileOptions ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private CSharpFileOptions MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -444,22 +448,22 @@ namespace Google.ProtocolBuffers.DescriptorProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new CSharpFileOptions(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(CSharpFileOptions cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - CSharpFileOptions result; + private bool resultIsReadOnly; + private CSharpFileOptions result; private CSharpFileOptions PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { CSharpFileOptions original = result; result = new CSharpFileOptions(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -474,13 +478,13 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } public override Builder Clear() { - result = DefaultInstance ?? new CSharpFileOptions(); - 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); @@ -496,11 +500,11 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } public override CSharpFileOptions BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -969,7 +973,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class CSharpFieldOptions : pb::GeneratedMessage { private CSharpFieldOptions() { } - private static readonly CSharpFieldOptions defaultInstance = new Builder().BuildPartial(); + private static readonly CSharpFieldOptions defaultInstance = new CSharpFieldOptions().MakeReadOnly(); private static readonly string[] _cSharpFieldOptionsFieldNames = new string[] { "property_name" }; private static readonly uint[] _cSharpFieldOptionsFieldTags = new uint[] { 10 }; public static CSharpFieldOptions DefaultInstance { @@ -977,7 +981,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } public override CSharpFieldOptions DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override CSharpFieldOptions ThisMessage { @@ -1063,6 +1067,10 @@ namespace Google.ProtocolBuffers.DescriptorProtos { public static CSharpFieldOptions ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private CSharpFieldOptions MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -1078,22 +1086,22 @@ namespace Google.ProtocolBuffers.DescriptorProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new CSharpFieldOptions(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(CSharpFieldOptions cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - CSharpFieldOptions result; + private bool resultIsReadOnly; + private CSharpFieldOptions result; private CSharpFieldOptions PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { CSharpFieldOptions original = result; result = new CSharpFieldOptions(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -1108,13 +1116,13 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } public override Builder Clear() { - result = DefaultInstance ?? new CSharpFieldOptions(); - 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); @@ -1130,11 +1138,11 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } public override CSharpFieldOptions BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -1240,7 +1248,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class CSharpServiceOptions : pb::GeneratedMessage { private CSharpServiceOptions() { } - private static readonly CSharpServiceOptions defaultInstance = new Builder().BuildPartial(); + private static readonly CSharpServiceOptions defaultInstance = new CSharpServiceOptions().MakeReadOnly(); private static readonly string[] _cSharpServiceOptionsFieldNames = new string[] { "interface_id" }; private static readonly uint[] _cSharpServiceOptionsFieldTags = new uint[] { 10 }; public static CSharpServiceOptions DefaultInstance { @@ -1248,7 +1256,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } public override CSharpServiceOptions DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override CSharpServiceOptions ThisMessage { @@ -1334,6 +1342,10 @@ namespace Google.ProtocolBuffers.DescriptorProtos { public static CSharpServiceOptions ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private CSharpServiceOptions MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -1349,22 +1361,22 @@ namespace Google.ProtocolBuffers.DescriptorProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new CSharpServiceOptions(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(CSharpServiceOptions cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - CSharpServiceOptions result; + private bool resultIsReadOnly; + private CSharpServiceOptions result; private CSharpServiceOptions PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { CSharpServiceOptions original = result; result = new CSharpServiceOptions(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -1379,13 +1391,13 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } public override Builder Clear() { - result = DefaultInstance ?? new CSharpServiceOptions(); - 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); @@ -1401,11 +1413,11 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } public override CSharpServiceOptions BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -1511,7 +1523,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class CSharpMethodOptions : pb::GeneratedMessage { private CSharpMethodOptions() { } - private static readonly CSharpMethodOptions defaultInstance = new Builder().BuildPartial(); + private static readonly CSharpMethodOptions defaultInstance = new CSharpMethodOptions().MakeReadOnly(); private static readonly string[] _cSharpMethodOptionsFieldNames = new string[] { "dispatch_id" }; private static readonly uint[] _cSharpMethodOptionsFieldTags = new uint[] { 8 }; public static CSharpMethodOptions DefaultInstance { @@ -1519,7 +1531,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } public override CSharpMethodOptions DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override CSharpMethodOptions ThisMessage { @@ -1605,6 +1617,10 @@ namespace Google.ProtocolBuffers.DescriptorProtos { public static CSharpMethodOptions ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private CSharpMethodOptions MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -1620,22 +1636,22 @@ namespace Google.ProtocolBuffers.DescriptorProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new CSharpMethodOptions(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(CSharpMethodOptions cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - CSharpMethodOptions result; + private bool resultIsReadOnly; + private CSharpMethodOptions result; private CSharpMethodOptions PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { CSharpMethodOptions original = result; result = new CSharpMethodOptions(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -1650,13 +1666,13 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } public override Builder Clear() { - result = DefaultInstance ?? new CSharpMethodOptions(); - 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); @@ -1672,11 +1688,11 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } public override CSharpMethodOptions BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { diff --git a/src/ProtocolBuffers/DescriptorProtos/DescriptorProtoFile.cs b/src/ProtocolBuffers/DescriptorProtos/DescriptorProtoFile.cs index de6e2ed840..01048ed3e6 100644 --- a/src/ProtocolBuffers/DescriptorProtos/DescriptorProtoFile.cs +++ b/src/ProtocolBuffers/DescriptorProtos/DescriptorProtoFile.cs @@ -234,7 +234,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class FileDescriptorSet : pb::GeneratedMessage { private FileDescriptorSet() { } - private static readonly FileDescriptorSet defaultInstance = new Builder().BuildPartial(); + private static readonly FileDescriptorSet defaultInstance = new FileDescriptorSet().MakeReadOnly(); private static readonly string[] _fileDescriptorSetFieldNames = new string[] { "file" }; private static readonly uint[] _fileDescriptorSetFieldTags = new uint[] { 10 }; public static FileDescriptorSet DefaultInstance { @@ -242,7 +242,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } public override FileDescriptorSet DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override FileDescriptorSet ThisMessage { @@ -333,6 +333,11 @@ namespace Google.ProtocolBuffers.DescriptorProtos { public static FileDescriptorSet ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private FileDescriptorSet MakeReadOnly() { + file_.MakeReadOnly(); + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -348,22 +353,22 @@ namespace Google.ProtocolBuffers.DescriptorProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new FileDescriptorSet(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(FileDescriptorSet cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - FileDescriptorSet result; + private bool resultIsReadOnly; + private FileDescriptorSet result; private FileDescriptorSet PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { FileDescriptorSet original = result; result = new FileDescriptorSet(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -378,13 +383,13 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } public override Builder Clear() { - result = DefaultInstance ?? new FileDescriptorSet(); - 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); @@ -400,12 +405,11 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } public override FileDescriptorSet BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - result.file_.MakeReadOnly(); - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -534,7 +538,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class FileDescriptorProto : pb::GeneratedMessage { private FileDescriptorProto() { } - private static readonly FileDescriptorProto defaultInstance = new Builder().BuildPartial(); + private static readonly FileDescriptorProto defaultInstance = new FileDescriptorProto().MakeReadOnly(); private static readonly string[] _fileDescriptorProtoFieldNames = new string[] { "dependency", "enum_type", "extension", "message_type", "name", "options", "package", "service" }; private static readonly uint[] _fileDescriptorProtoFieldTags = new uint[] { 26, 42, 58, 34, 10, 66, 18, 50 }; public static FileDescriptorProto DefaultInstance { @@ -542,7 +546,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } public override FileDescriptorProto DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override FileDescriptorProto ThisMessage { @@ -639,12 +643,12 @@ namespace Google.ProtocolBuffers.DescriptorProtos { public const int OptionsFieldNumber = 8; private bool hasOptions; - private global::Google.ProtocolBuffers.DescriptorProtos.FileOptions options_ = global::Google.ProtocolBuffers.DescriptorProtos.FileOptions.DefaultInstance; + private global::Google.ProtocolBuffers.DescriptorProtos.FileOptions options_; public bool HasOptions { get { return hasOptions; } } public global::Google.ProtocolBuffers.DescriptorProtos.FileOptions Options { - get { return options_; } + get { return options_ ?? global::Google.ProtocolBuffers.DescriptorProtos.FileOptions.DefaultInstance; } } public override bool IsInitialized { @@ -770,6 +774,15 @@ namespace Google.ProtocolBuffers.DescriptorProtos { public static FileDescriptorProto ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private FileDescriptorProto MakeReadOnly() { + dependency_.MakeReadOnly(); + messageType_.MakeReadOnly(); + enumType_.MakeReadOnly(); + service_.MakeReadOnly(); + extension_.MakeReadOnly(); + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -785,22 +798,22 @@ namespace Google.ProtocolBuffers.DescriptorProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new FileDescriptorProto(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(FileDescriptorProto cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - FileDescriptorProto result; + private bool resultIsReadOnly; + private FileDescriptorProto result; private FileDescriptorProto PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { FileDescriptorProto original = result; result = new FileDescriptorProto(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -815,13 +828,13 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } public override Builder Clear() { - result = DefaultInstance ?? new FileDescriptorProto(); - 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); @@ -837,16 +850,11 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } public override FileDescriptorProto BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - result.dependency_.MakeReadOnly(); - result.messageType_.MakeReadOnly(); - result.enumType_.MakeReadOnly(); - result.service_.MakeReadOnly(); - result.extension_.MakeReadOnly(); - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -1261,7 +1269,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { public Builder ClearOptions() { PrepareBuilder(); result.hasOptions = false; - result.options_ = global::Google.ProtocolBuffers.DescriptorProtos.FileOptions.DefaultInstance; + result.options_ = null; return this; } } @@ -1275,7 +1283,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class DescriptorProto : pb::GeneratedMessage { private DescriptorProto() { } - private static readonly DescriptorProto defaultInstance = new Builder().BuildPartial(); + private static readonly DescriptorProto defaultInstance = new DescriptorProto().MakeReadOnly(); private static readonly string[] _descriptorProtoFieldNames = new string[] { "enum_type", "extension", "extension_range", "field", "name", "nested_type", "options" }; private static readonly uint[] _descriptorProtoFieldTags = new uint[] { 34, 50, 42, 18, 10, 26, 58 }; public static DescriptorProto DefaultInstance { @@ -1283,7 +1291,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } public override DescriptorProto DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override DescriptorProto ThisMessage { @@ -1308,7 +1316,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class ExtensionRange : pb::GeneratedMessage { private ExtensionRange() { } - private static readonly ExtensionRange defaultInstance = new Builder().BuildPartial(); + private static readonly ExtensionRange defaultInstance = new ExtensionRange().MakeReadOnly(); private static readonly string[] _extensionRangeFieldNames = new string[] { "end", "start" }; private static readonly uint[] _extensionRangeFieldTags = new uint[] { 16, 8 }; public static ExtensionRange DefaultInstance { @@ -1316,7 +1324,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } public override ExtensionRange DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override ExtensionRange ThisMessage { @@ -1418,6 +1426,10 @@ namespace Google.ProtocolBuffers.DescriptorProtos { public static ExtensionRange ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private ExtensionRange MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -1433,22 +1445,22 @@ namespace Google.ProtocolBuffers.DescriptorProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new ExtensionRange(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(ExtensionRange cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - ExtensionRange result; + private bool resultIsReadOnly; + private ExtensionRange result; private ExtensionRange PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { ExtensionRange original = result; result = new ExtensionRange(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -1463,13 +1475,13 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } public override Builder Clear() { - result = DefaultInstance ?? new ExtensionRange(); - 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); @@ -1485,11 +1497,11 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } public override ExtensionRange BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -1691,12 +1703,12 @@ namespace Google.ProtocolBuffers.DescriptorProtos { public const int OptionsFieldNumber = 7; private bool hasOptions; - private global::Google.ProtocolBuffers.DescriptorProtos.MessageOptions options_ = global::Google.ProtocolBuffers.DescriptorProtos.MessageOptions.DefaultInstance; + private global::Google.ProtocolBuffers.DescriptorProtos.MessageOptions options_; public bool HasOptions { get { return hasOptions; } } public global::Google.ProtocolBuffers.DescriptorProtos.MessageOptions Options { - get { return options_; } + get { return options_ ?? global::Google.ProtocolBuffers.DescriptorProtos.MessageOptions.DefaultInstance; } } public override bool IsInitialized { @@ -1811,6 +1823,15 @@ namespace Google.ProtocolBuffers.DescriptorProtos { public static DescriptorProto ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private DescriptorProto MakeReadOnly() { + field_.MakeReadOnly(); + extension_.MakeReadOnly(); + nestedType_.MakeReadOnly(); + enumType_.MakeReadOnly(); + extensionRange_.MakeReadOnly(); + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -1826,22 +1847,22 @@ namespace Google.ProtocolBuffers.DescriptorProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new DescriptorProto(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(DescriptorProto cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - DescriptorProto result; + private bool resultIsReadOnly; + private DescriptorProto result; private DescriptorProto PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { DescriptorProto original = result; result = new DescriptorProto(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -1856,13 +1877,13 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } public override Builder Clear() { - result = DefaultInstance ?? new DescriptorProto(); - 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); @@ -1878,16 +1899,11 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } public override DescriptorProto BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - result.field_.MakeReadOnly(); - result.extension_.MakeReadOnly(); - result.nestedType_.MakeReadOnly(); - result.enumType_.MakeReadOnly(); - result.extensionRange_.MakeReadOnly(); - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -2286,7 +2302,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { public Builder ClearOptions() { PrepareBuilder(); result.hasOptions = false; - result.options_ = global::Google.ProtocolBuffers.DescriptorProtos.MessageOptions.DefaultInstance; + result.options_ = null; return this; } } @@ -2300,7 +2316,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class FieldDescriptorProto : pb::GeneratedMessage { private FieldDescriptorProto() { } - private static readonly FieldDescriptorProto defaultInstance = new Builder().BuildPartial(); + private static readonly FieldDescriptorProto defaultInstance = new FieldDescriptorProto().MakeReadOnly(); private static readonly string[] _fieldDescriptorProtoFieldNames = new string[] { "default_value", "extendee", "label", "name", "number", "options", "type", "type_name" }; private static readonly uint[] _fieldDescriptorProtoFieldTags = new uint[] { 58, 18, 32, 10, 24, 66, 40, 50 }; public static FieldDescriptorProto DefaultInstance { @@ -2308,7 +2324,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } public override FieldDescriptorProto DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override FieldDescriptorProto ThisMessage { @@ -2434,12 +2450,12 @@ namespace Google.ProtocolBuffers.DescriptorProtos { public const int OptionsFieldNumber = 8; private bool hasOptions; - private global::Google.ProtocolBuffers.DescriptorProtos.FieldOptions options_ = global::Google.ProtocolBuffers.DescriptorProtos.FieldOptions.DefaultInstance; + private global::Google.ProtocolBuffers.DescriptorProtos.FieldOptions options_; public bool HasOptions { get { return hasOptions; } } public global::Google.ProtocolBuffers.DescriptorProtos.FieldOptions Options { - get { return options_; } + get { return options_ ?? global::Google.ProtocolBuffers.DescriptorProtos.FieldOptions.DefaultInstance; } } public override bool IsInitialized { @@ -2548,6 +2564,10 @@ namespace Google.ProtocolBuffers.DescriptorProtos { public static FieldDescriptorProto ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private FieldDescriptorProto MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -2563,22 +2583,22 @@ namespace Google.ProtocolBuffers.DescriptorProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new FieldDescriptorProto(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(FieldDescriptorProto cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - FieldDescriptorProto result; + private bool resultIsReadOnly; + private FieldDescriptorProto result; private FieldDescriptorProto PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { FieldDescriptorProto original = result; result = new FieldDescriptorProto(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -2593,13 +2613,13 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } public override Builder Clear() { - result = DefaultInstance ?? new FieldDescriptorProto(); - 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); @@ -2615,11 +2635,11 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } public override FieldDescriptorProto BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -2944,7 +2964,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { public Builder ClearOptions() { PrepareBuilder(); result.hasOptions = false; - result.options_ = global::Google.ProtocolBuffers.DescriptorProtos.FieldOptions.DefaultInstance; + result.options_ = null; return this; } } @@ -2958,7 +2978,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class EnumDescriptorProto : pb::GeneratedMessage { private EnumDescriptorProto() { } - private static readonly EnumDescriptorProto defaultInstance = new Builder().BuildPartial(); + private static readonly EnumDescriptorProto defaultInstance = new EnumDescriptorProto().MakeReadOnly(); private static readonly string[] _enumDescriptorProtoFieldNames = new string[] { "name", "options", "value" }; private static readonly uint[] _enumDescriptorProtoFieldTags = new uint[] { 10, 26, 18 }; public static EnumDescriptorProto DefaultInstance { @@ -2966,7 +2986,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } public override EnumDescriptorProto DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override EnumDescriptorProto ThisMessage { @@ -3005,12 +3025,12 @@ namespace Google.ProtocolBuffers.DescriptorProtos { public const int OptionsFieldNumber = 3; private bool hasOptions; - private global::Google.ProtocolBuffers.DescriptorProtos.EnumOptions options_ = global::Google.ProtocolBuffers.DescriptorProtos.EnumOptions.DefaultInstance; + private global::Google.ProtocolBuffers.DescriptorProtos.EnumOptions options_; public bool HasOptions { get { return hasOptions; } } public global::Google.ProtocolBuffers.DescriptorProtos.EnumOptions Options { - get { return options_; } + get { return options_ ?? global::Google.ProtocolBuffers.DescriptorProtos.EnumOptions.DefaultInstance; } } public override bool IsInitialized { @@ -3092,6 +3112,11 @@ namespace Google.ProtocolBuffers.DescriptorProtos { public static EnumDescriptorProto ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private EnumDescriptorProto MakeReadOnly() { + value_.MakeReadOnly(); + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -3107,22 +3132,22 @@ namespace Google.ProtocolBuffers.DescriptorProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new EnumDescriptorProto(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(EnumDescriptorProto cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - EnumDescriptorProto result; + private bool resultIsReadOnly; + private EnumDescriptorProto result; private EnumDescriptorProto PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { EnumDescriptorProto original = result; result = new EnumDescriptorProto(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -3137,13 +3162,13 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } public override Builder Clear() { - result = DefaultInstance ?? new EnumDescriptorProto(); - 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); @@ -3159,12 +3184,11 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } public override EnumDescriptorProto BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - result.value_.MakeReadOnly(); - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -3359,7 +3383,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { public Builder ClearOptions() { PrepareBuilder(); result.hasOptions = false; - result.options_ = global::Google.ProtocolBuffers.DescriptorProtos.EnumOptions.DefaultInstance; + result.options_ = null; return this; } } @@ -3373,7 +3397,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class EnumValueDescriptorProto : pb::GeneratedMessage { private EnumValueDescriptorProto() { } - private static readonly EnumValueDescriptorProto defaultInstance = new Builder().BuildPartial(); + private static readonly EnumValueDescriptorProto defaultInstance = new EnumValueDescriptorProto().MakeReadOnly(); private static readonly string[] _enumValueDescriptorProtoFieldNames = new string[] { "name", "number", "options" }; private static readonly uint[] _enumValueDescriptorProtoFieldTags = new uint[] { 10, 16, 26 }; public static EnumValueDescriptorProto DefaultInstance { @@ -3381,7 +3405,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } public override EnumValueDescriptorProto DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override EnumValueDescriptorProto ThisMessage { @@ -3418,12 +3442,12 @@ namespace Google.ProtocolBuffers.DescriptorProtos { public const int OptionsFieldNumber = 3; private bool hasOptions; - private global::Google.ProtocolBuffers.DescriptorProtos.EnumValueOptions options_ = global::Google.ProtocolBuffers.DescriptorProtos.EnumValueOptions.DefaultInstance; + private global::Google.ProtocolBuffers.DescriptorProtos.EnumValueOptions options_; public bool HasOptions { get { return hasOptions; } } public global::Google.ProtocolBuffers.DescriptorProtos.EnumValueOptions Options { - get { return options_; } + get { return options_ ?? global::Google.ProtocolBuffers.DescriptorProtos.EnumValueOptions.DefaultInstance; } } public override bool IsInitialized { @@ -3502,6 +3526,10 @@ namespace Google.ProtocolBuffers.DescriptorProtos { public static EnumValueDescriptorProto ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private EnumValueDescriptorProto MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -3517,22 +3545,22 @@ namespace Google.ProtocolBuffers.DescriptorProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new EnumValueDescriptorProto(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(EnumValueDescriptorProto cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - EnumValueDescriptorProto result; + private bool resultIsReadOnly; + private EnumValueDescriptorProto result; private EnumValueDescriptorProto PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { EnumValueDescriptorProto original = result; result = new EnumValueDescriptorProto(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -3547,13 +3575,13 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } public override Builder Clear() { - result = DefaultInstance ?? new EnumValueDescriptorProto(); - 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); @@ -3569,11 +3597,11 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } public override EnumValueDescriptorProto BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -3744,7 +3772,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { public Builder ClearOptions() { PrepareBuilder(); result.hasOptions = false; - result.options_ = global::Google.ProtocolBuffers.DescriptorProtos.EnumValueOptions.DefaultInstance; + result.options_ = null; return this; } } @@ -3758,7 +3786,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class ServiceDescriptorProto : pb::GeneratedMessage { private ServiceDescriptorProto() { } - private static readonly ServiceDescriptorProto defaultInstance = new Builder().BuildPartial(); + private static readonly ServiceDescriptorProto defaultInstance = new ServiceDescriptorProto().MakeReadOnly(); private static readonly string[] _serviceDescriptorProtoFieldNames = new string[] { "method", "name", "options" }; private static readonly uint[] _serviceDescriptorProtoFieldTags = new uint[] { 18, 10, 26 }; public static ServiceDescriptorProto DefaultInstance { @@ -3766,7 +3794,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } public override ServiceDescriptorProto DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override ServiceDescriptorProto ThisMessage { @@ -3805,12 +3833,12 @@ namespace Google.ProtocolBuffers.DescriptorProtos { public const int OptionsFieldNumber = 3; private bool hasOptions; - private global::Google.ProtocolBuffers.DescriptorProtos.ServiceOptions options_ = global::Google.ProtocolBuffers.DescriptorProtos.ServiceOptions.DefaultInstance; + private global::Google.ProtocolBuffers.DescriptorProtos.ServiceOptions options_; public bool HasOptions { get { return hasOptions; } } public global::Google.ProtocolBuffers.DescriptorProtos.ServiceOptions Options { - get { return options_; } + get { return options_ ?? global::Google.ProtocolBuffers.DescriptorProtos.ServiceOptions.DefaultInstance; } } public override bool IsInitialized { @@ -3892,6 +3920,11 @@ namespace Google.ProtocolBuffers.DescriptorProtos { public static ServiceDescriptorProto ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private ServiceDescriptorProto MakeReadOnly() { + method_.MakeReadOnly(); + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -3907,22 +3940,22 @@ namespace Google.ProtocolBuffers.DescriptorProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new ServiceDescriptorProto(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(ServiceDescriptorProto cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - ServiceDescriptorProto result; + private bool resultIsReadOnly; + private ServiceDescriptorProto result; private ServiceDescriptorProto PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { ServiceDescriptorProto original = result; result = new ServiceDescriptorProto(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -3937,13 +3970,13 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } public override Builder Clear() { - result = DefaultInstance ?? new ServiceDescriptorProto(); - 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); @@ -3959,12 +3992,11 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } public override ServiceDescriptorProto BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - result.method_.MakeReadOnly(); - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -4159,7 +4191,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { public Builder ClearOptions() { PrepareBuilder(); result.hasOptions = false; - result.options_ = global::Google.ProtocolBuffers.DescriptorProtos.ServiceOptions.DefaultInstance; + result.options_ = null; return this; } } @@ -4173,7 +4205,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class MethodDescriptorProto : pb::GeneratedMessage { private MethodDescriptorProto() { } - private static readonly MethodDescriptorProto defaultInstance = new Builder().BuildPartial(); + private static readonly MethodDescriptorProto defaultInstance = new MethodDescriptorProto().MakeReadOnly(); private static readonly string[] _methodDescriptorProtoFieldNames = new string[] { "input_type", "name", "options", "output_type" }; private static readonly uint[] _methodDescriptorProtoFieldTags = new uint[] { 18, 10, 34, 26 }; public static MethodDescriptorProto DefaultInstance { @@ -4181,7 +4213,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } public override MethodDescriptorProto DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override MethodDescriptorProto ThisMessage { @@ -4228,12 +4260,12 @@ namespace Google.ProtocolBuffers.DescriptorProtos { public const int OptionsFieldNumber = 4; private bool hasOptions; - private global::Google.ProtocolBuffers.DescriptorProtos.MethodOptions options_ = global::Google.ProtocolBuffers.DescriptorProtos.MethodOptions.DefaultInstance; + private global::Google.ProtocolBuffers.DescriptorProtos.MethodOptions options_; public bool HasOptions { get { return hasOptions; } } public global::Google.ProtocolBuffers.DescriptorProtos.MethodOptions Options { - get { return options_; } + get { return options_ ?? global::Google.ProtocolBuffers.DescriptorProtos.MethodOptions.DefaultInstance; } } public override bool IsInitialized { @@ -4318,6 +4350,10 @@ namespace Google.ProtocolBuffers.DescriptorProtos { public static MethodDescriptorProto ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private MethodDescriptorProto MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -4333,22 +4369,22 @@ namespace Google.ProtocolBuffers.DescriptorProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new MethodDescriptorProto(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(MethodDescriptorProto cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - MethodDescriptorProto result; + private bool resultIsReadOnly; + private MethodDescriptorProto result; private MethodDescriptorProto PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { MethodDescriptorProto original = result; result = new MethodDescriptorProto(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -4363,13 +4399,13 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } public override Builder Clear() { - result = DefaultInstance ?? new MethodDescriptorProto(); - 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); @@ -4385,11 +4421,11 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } public override MethodDescriptorProto BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -4589,7 +4625,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { public Builder ClearOptions() { PrepareBuilder(); result.hasOptions = false; - result.options_ = global::Google.ProtocolBuffers.DescriptorProtos.MethodOptions.DefaultInstance; + result.options_ = null; return this; } } @@ -4603,7 +4639,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class FileOptions : pb::ExtendableMessage { private FileOptions() { } - private static readonly FileOptions defaultInstance = new Builder().BuildPartial(); + private static readonly FileOptions defaultInstance = new FileOptions().MakeReadOnly(); private static readonly string[] _fileOptionsFieldNames = new string[] { "cc_generic_services", "java_generic_services", "java_multiple_files", "java_outer_classname", "java_package", "optimize_for", "py_generic_services", "uninterpreted_option" }; private static readonly uint[] _fileOptionsFieldTags = new uint[] { 128, 136, 80, 66, 10, 72, 144, 7994 }; public static FileOptions DefaultInstance { @@ -4611,7 +4647,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } public override FileOptions DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override FileOptions ThisMessage { @@ -4834,6 +4870,11 @@ namespace Google.ProtocolBuffers.DescriptorProtos { public static FileOptions ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private FileOptions MakeReadOnly() { + uninterpretedOption_.MakeReadOnly(); + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -4849,22 +4890,22 @@ namespace Google.ProtocolBuffers.DescriptorProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new FileOptions(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(FileOptions cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - FileOptions result; + private bool resultIsReadOnly; + private FileOptions result; private FileOptions PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { FileOptions original = result; result = new FileOptions(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -4879,13 +4920,13 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } public override Builder Clear() { - result = DefaultInstance ?? new FileOptions(); - 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); @@ -4901,12 +4942,11 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } public override FileOptions BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - result.uninterpretedOption_.MakeReadOnly(); - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -5235,7 +5275,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class MessageOptions : pb::ExtendableMessage { private MessageOptions() { } - private static readonly MessageOptions defaultInstance = new Builder().BuildPartial(); + private static readonly MessageOptions defaultInstance = new MessageOptions().MakeReadOnly(); private static readonly string[] _messageOptionsFieldNames = new string[] { "message_set_wire_format", "no_standard_descriptor_accessor", "uninterpreted_option" }; private static readonly uint[] _messageOptionsFieldTags = new uint[] { 8, 16, 7994 }; public static MessageOptions DefaultInstance { @@ -5243,7 +5283,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } public override MessageOptions DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override MessageOptions ThisMessage { @@ -5370,6 +5410,11 @@ namespace Google.ProtocolBuffers.DescriptorProtos { public static MessageOptions ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private MessageOptions MakeReadOnly() { + uninterpretedOption_.MakeReadOnly(); + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -5385,22 +5430,22 @@ namespace Google.ProtocolBuffers.DescriptorProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new MessageOptions(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(MessageOptions cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - MessageOptions result; + private bool resultIsReadOnly; + private MessageOptions result; private MessageOptions PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { MessageOptions original = result; result = new MessageOptions(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -5415,13 +5460,13 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } public override Builder Clear() { - result = DefaultInstance ?? new MessageOptions(); - 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); @@ -5437,12 +5482,11 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } public override MessageOptions BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - result.uninterpretedOption_.MakeReadOnly(); - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -5626,7 +5670,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class FieldOptions : pb::ExtendableMessage { private FieldOptions() { } - private static readonly FieldOptions defaultInstance = new Builder().BuildPartial(); + private static readonly FieldOptions defaultInstance = new FieldOptions().MakeReadOnly(); private static readonly string[] _fieldOptionsFieldNames = new string[] { "ctype", "deprecated", "experimental_map_key", "packed", "uninterpreted_option" }; private static readonly uint[] _fieldOptionsFieldTags = new uint[] { 8, 24, 74, 16, 7994 }; public static FieldOptions DefaultInstance { @@ -5634,7 +5678,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } public override FieldOptions DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override FieldOptions ThisMessage { @@ -5809,6 +5853,11 @@ namespace Google.ProtocolBuffers.DescriptorProtos { public static FieldOptions ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private FieldOptions MakeReadOnly() { + uninterpretedOption_.MakeReadOnly(); + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -5824,22 +5873,22 @@ namespace Google.ProtocolBuffers.DescriptorProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new FieldOptions(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(FieldOptions cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - FieldOptions result; + private bool resultIsReadOnly; + private FieldOptions result; private FieldOptions PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { FieldOptions original = result; result = new FieldOptions(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -5854,13 +5903,13 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } public override Builder Clear() { - result = DefaultInstance ?? new FieldOptions(); - 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); @@ -5876,12 +5925,11 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } public override FieldOptions BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - result.uninterpretedOption_.MakeReadOnly(); - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -6128,7 +6176,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class EnumOptions : pb::ExtendableMessage { private EnumOptions() { } - private static readonly EnumOptions defaultInstance = new Builder().BuildPartial(); + private static readonly EnumOptions defaultInstance = new EnumOptions().MakeReadOnly(); private static readonly string[] _enumOptionsFieldNames = new string[] { "uninterpreted_option" }; private static readonly uint[] _enumOptionsFieldTags = new uint[] { 7994 }; public static EnumOptions DefaultInstance { @@ -6136,7 +6184,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } public override EnumOptions DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override EnumOptions ThisMessage { @@ -6231,6 +6279,11 @@ namespace Google.ProtocolBuffers.DescriptorProtos { public static EnumOptions ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private EnumOptions MakeReadOnly() { + uninterpretedOption_.MakeReadOnly(); + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -6246,22 +6299,22 @@ namespace Google.ProtocolBuffers.DescriptorProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new EnumOptions(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(EnumOptions cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - EnumOptions result; + private bool resultIsReadOnly; + private EnumOptions result; private EnumOptions PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { EnumOptions original = result; result = new EnumOptions(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -6276,13 +6329,13 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } public override Builder Clear() { - result = DefaultInstance ?? new EnumOptions(); - 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); @@ -6298,12 +6351,11 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } public override EnumOptions BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - result.uninterpretedOption_.MakeReadOnly(); - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -6433,7 +6485,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class EnumValueOptions : pb::ExtendableMessage { private EnumValueOptions() { } - private static readonly EnumValueOptions defaultInstance = new Builder().BuildPartial(); + private static readonly EnumValueOptions defaultInstance = new EnumValueOptions().MakeReadOnly(); private static readonly string[] _enumValueOptionsFieldNames = new string[] { "uninterpreted_option" }; private static readonly uint[] _enumValueOptionsFieldTags = new uint[] { 7994 }; public static EnumValueOptions DefaultInstance { @@ -6441,7 +6493,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } public override EnumValueOptions DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override EnumValueOptions ThisMessage { @@ -6536,6 +6588,11 @@ namespace Google.ProtocolBuffers.DescriptorProtos { public static EnumValueOptions ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private EnumValueOptions MakeReadOnly() { + uninterpretedOption_.MakeReadOnly(); + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -6551,22 +6608,22 @@ namespace Google.ProtocolBuffers.DescriptorProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new EnumValueOptions(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(EnumValueOptions cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - EnumValueOptions result; + private bool resultIsReadOnly; + private EnumValueOptions result; private EnumValueOptions PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { EnumValueOptions original = result; result = new EnumValueOptions(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -6581,13 +6638,13 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } public override Builder Clear() { - result = DefaultInstance ?? new EnumValueOptions(); - 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); @@ -6603,12 +6660,11 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } public override EnumValueOptions BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - result.uninterpretedOption_.MakeReadOnly(); - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -6738,7 +6794,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class ServiceOptions : pb::ExtendableMessage { private ServiceOptions() { } - private static readonly ServiceOptions defaultInstance = new Builder().BuildPartial(); + private static readonly ServiceOptions defaultInstance = new ServiceOptions().MakeReadOnly(); private static readonly string[] _serviceOptionsFieldNames = new string[] { "uninterpreted_option" }; private static readonly uint[] _serviceOptionsFieldTags = new uint[] { 7994 }; public static ServiceOptions DefaultInstance { @@ -6746,7 +6802,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } public override ServiceOptions DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override ServiceOptions ThisMessage { @@ -6841,6 +6897,11 @@ namespace Google.ProtocolBuffers.DescriptorProtos { public static ServiceOptions ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private ServiceOptions MakeReadOnly() { + uninterpretedOption_.MakeReadOnly(); + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -6856,22 +6917,22 @@ namespace Google.ProtocolBuffers.DescriptorProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new ServiceOptions(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(ServiceOptions cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - ServiceOptions result; + private bool resultIsReadOnly; + private ServiceOptions result; private ServiceOptions PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { ServiceOptions original = result; result = new ServiceOptions(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -6886,13 +6947,13 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } public override Builder Clear() { - result = DefaultInstance ?? new ServiceOptions(); - 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); @@ -6908,12 +6969,11 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } public override ServiceOptions BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - result.uninterpretedOption_.MakeReadOnly(); - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -7043,7 +7103,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class MethodOptions : pb::ExtendableMessage { private MethodOptions() { } - private static readonly MethodOptions defaultInstance = new Builder().BuildPartial(); + private static readonly MethodOptions defaultInstance = new MethodOptions().MakeReadOnly(); private static readonly string[] _methodOptionsFieldNames = new string[] { "uninterpreted_option" }; private static readonly uint[] _methodOptionsFieldTags = new uint[] { 7994 }; public static MethodOptions DefaultInstance { @@ -7051,7 +7111,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } public override MethodOptions DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override MethodOptions ThisMessage { @@ -7146,6 +7206,11 @@ namespace Google.ProtocolBuffers.DescriptorProtos { public static MethodOptions ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private MethodOptions MakeReadOnly() { + uninterpretedOption_.MakeReadOnly(); + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -7161,22 +7226,22 @@ namespace Google.ProtocolBuffers.DescriptorProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new MethodOptions(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(MethodOptions cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - MethodOptions result; + private bool resultIsReadOnly; + private MethodOptions result; private MethodOptions PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { MethodOptions original = result; result = new MethodOptions(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -7191,13 +7256,13 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } public override Builder Clear() { - result = DefaultInstance ?? new MethodOptions(); - 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); @@ -7213,12 +7278,11 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } public override MethodOptions BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - result.uninterpretedOption_.MakeReadOnly(); - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -7348,7 +7412,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class UninterpretedOption : pb::GeneratedMessage { private UninterpretedOption() { } - private static readonly UninterpretedOption defaultInstance = new Builder().BuildPartial(); + private static readonly UninterpretedOption defaultInstance = new UninterpretedOption().MakeReadOnly(); private static readonly string[] _uninterpretedOptionFieldNames = new string[] { "double_value", "identifier_value", "name", "negative_int_value", "positive_int_value", "string_value" }; private static readonly uint[] _uninterpretedOptionFieldTags = new uint[] { 49, 26, 18, 40, 32, 58 }; public static UninterpretedOption DefaultInstance { @@ -7356,7 +7420,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } public override UninterpretedOption DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override UninterpretedOption ThisMessage { @@ -7381,7 +7445,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class NamePart : pb::GeneratedMessage { private NamePart() { } - private static readonly NamePart defaultInstance = new Builder().BuildPartial(); + private static readonly NamePart defaultInstance = new NamePart().MakeReadOnly(); private static readonly string[] _namePartFieldNames = new string[] { "is_extension", "name_part" }; private static readonly uint[] _namePartFieldTags = new uint[] { 16, 10 }; public static NamePart DefaultInstance { @@ -7389,7 +7453,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } public override NamePart DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override NamePart ThisMessage { @@ -7493,6 +7557,10 @@ namespace Google.ProtocolBuffers.DescriptorProtos { public static NamePart ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private NamePart MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -7508,22 +7576,22 @@ namespace Google.ProtocolBuffers.DescriptorProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new NamePart(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(NamePart cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - NamePart result; + private bool resultIsReadOnly; + private NamePart result; private NamePart PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { NamePart original = result; result = new NamePart(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -7538,13 +7606,13 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } public override Builder Clear() { - result = DefaultInstance ?? new NamePart(); - 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); @@ -7560,11 +7628,11 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } public override NamePart BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -7852,6 +7920,11 @@ namespace Google.ProtocolBuffers.DescriptorProtos { public static UninterpretedOption ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private UninterpretedOption MakeReadOnly() { + name_.MakeReadOnly(); + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -7867,22 +7940,22 @@ namespace Google.ProtocolBuffers.DescriptorProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new UninterpretedOption(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(UninterpretedOption cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - UninterpretedOption result; + private bool resultIsReadOnly; + private UninterpretedOption result; private UninterpretedOption PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { UninterpretedOption original = result; result = new UninterpretedOption(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -7897,13 +7970,13 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } public override Builder Clear() { - result = DefaultInstance ?? new UninterpretedOption(); - 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); @@ -7919,12 +7992,11 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } public override UninterpretedOption BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - result.name_.MakeReadOnly(); - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { diff --git a/src/ProtocolBuffersLite.Test/TestProtos/UnitTestExtrasFullProtoFile.cs b/src/ProtocolBuffersLite.Test/TestProtos/UnitTestExtrasFullProtoFile.cs index 260e6397e0..ba46dc6a76 100644 --- a/src/ProtocolBuffersLite.Test/TestProtos/UnitTestExtrasFullProtoFile.cs +++ b/src/ProtocolBuffersLite.Test/TestProtos/UnitTestExtrasFullProtoFile.cs @@ -129,13 +129,13 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class TestInteropPerson : pb::ExtendableMessage { private TestInteropPerson() { } - private static readonly TestInteropPerson defaultInstance = new Builder().BuildPartial(); + private static readonly TestInteropPerson defaultInstance = new TestInteropPerson().MakeReadOnly(); public static TestInteropPerson DefaultInstance { get { return defaultInstance; } } public override TestInteropPerson DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override TestInteropPerson ThisMessage { @@ -168,13 +168,13 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class PhoneNumber : pb::GeneratedMessage { private PhoneNumber() { } - private static readonly PhoneNumber defaultInstance = new Builder().BuildPartial(); + private static readonly PhoneNumber defaultInstance = new PhoneNumber().MakeReadOnly(); public static PhoneNumber DefaultInstance { get { return defaultInstance; } } public override PhoneNumber DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override PhoneNumber ThisMessage { @@ -239,6 +239,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static PhoneNumber ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private PhoneNumber MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -254,22 +258,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new PhoneNumber(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(PhoneNumber cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - PhoneNumber result; + private bool resultIsReadOnly; + private PhoneNumber result; private PhoneNumber PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { PhoneNumber original = result; result = new PhoneNumber(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -284,13 +288,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new PhoneNumber(); - 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); @@ -306,11 +310,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override PhoneNumber BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } @@ -365,13 +369,13 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class Addresses : pb::GeneratedMessage { private Addresses() { } - private static readonly Addresses defaultInstance = new Builder().BuildPartial(); + private static readonly Addresses defaultInstance = new Addresses().MakeReadOnly(); public static Addresses DefaultInstance { get { return defaultInstance; } } public override Addresses DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override Addresses ThisMessage { @@ -467,6 +471,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static Addresses ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private Addresses MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -482,22 +490,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new Addresses(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(Addresses cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - Addresses result; + private bool resultIsReadOnly; + private Addresses result; private Addresses PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { Addresses original = result; result = new Addresses(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -512,13 +520,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new Addresses(); - 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); @@ -534,11 +542,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Addresses BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } @@ -752,6 +760,13 @@ namespace Google.ProtocolBuffers.TestProtos { public static TestInteropPerson ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private TestInteropPerson MakeReadOnly() { + codes_.MakeReadOnly(); + phone_.MakeReadOnly(); + addresses_.MakeReadOnly(); + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -767,22 +782,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new TestInteropPerson(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(TestInteropPerson cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - TestInteropPerson result; + private bool resultIsReadOnly; + private TestInteropPerson result; private TestInteropPerson PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { TestInteropPerson original = result; result = new TestInteropPerson(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -797,13 +812,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new TestInteropPerson(); - 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); @@ -819,14 +834,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestInteropPerson BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - result.codes_.MakeReadOnly(); - result.phone_.MakeReadOnly(); - result.addresses_.MakeReadOnly(); - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } @@ -1020,13 +1032,13 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class TestInteropEmployeeId : pb::GeneratedMessage { private TestInteropEmployeeId() { } - private static readonly TestInteropEmployeeId defaultInstance = new Builder().BuildPartial(); + private static readonly TestInteropEmployeeId defaultInstance = new TestInteropEmployeeId().MakeReadOnly(); public static TestInteropEmployeeId DefaultInstance { get { return defaultInstance; } } public override TestInteropEmployeeId DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override TestInteropEmployeeId ThisMessage { @@ -1081,6 +1093,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static TestInteropEmployeeId ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private TestInteropEmployeeId MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -1096,22 +1112,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new TestInteropEmployeeId(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(TestInteropEmployeeId cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - TestInteropEmployeeId result; + private bool resultIsReadOnly; + private TestInteropEmployeeId result; private TestInteropEmployeeId PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { TestInteropEmployeeId original = result; result = new TestInteropEmployeeId(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -1126,13 +1142,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new TestInteropEmployeeId(); - 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); @@ -1148,11 +1164,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestInteropEmployeeId BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } @@ -1187,13 +1203,13 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class TestMissingFieldsA : pb::GeneratedMessage { private TestMissingFieldsA() { } - private static readonly TestMissingFieldsA defaultInstance = new Builder().BuildPartial(); + private static readonly TestMissingFieldsA defaultInstance = new TestMissingFieldsA().MakeReadOnly(); public static TestMissingFieldsA DefaultInstance { get { return defaultInstance; } } public override TestMissingFieldsA DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override TestMissingFieldsA ThisMessage { @@ -1218,13 +1234,13 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class SubA : pb::GeneratedMessage { private SubA() { } - private static readonly SubA defaultInstance = new Builder().BuildPartial(); + private static readonly SubA defaultInstance = new SubA().MakeReadOnly(); public static SubA DefaultInstance { get { return defaultInstance; } } public override SubA DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override SubA ThisMessage { @@ -1291,6 +1307,11 @@ namespace Google.ProtocolBuffers.TestProtos { public static SubA ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private SubA MakeReadOnly() { + values_.MakeReadOnly(); + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -1306,22 +1327,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new SubA(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(SubA cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - SubA result; + private bool resultIsReadOnly; + private SubA result; private SubA PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { SubA original = result; result = new SubA(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -1336,13 +1357,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new SubA(); - 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); @@ -1358,12 +1379,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override SubA BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - result.values_.MakeReadOnly(); - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } @@ -1459,12 +1479,12 @@ namespace Google.ProtocolBuffers.TestProtos { public const int TestAFieldNumber = 11; private bool hasTestA; - private global::Google.ProtocolBuffers.TestProtos.TestMissingFieldsA.Types.SubA testA_ = global::Google.ProtocolBuffers.TestProtos.TestMissingFieldsA.Types.SubA.DefaultInstance; + private global::Google.ProtocolBuffers.TestProtos.TestMissingFieldsA.Types.SubA testA_; public bool HasTestA { get { return hasTestA; } } public global::Google.ProtocolBuffers.TestProtos.TestMissingFieldsA.Types.SubA TestA { - get { return testA_; } + get { return testA_ ?? global::Google.ProtocolBuffers.TestProtos.TestMissingFieldsA.Types.SubA.DefaultInstance; } } public static TestMissingFieldsA ParseFrom(pb::ByteString data) { @@ -1497,6 +1517,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static TestMissingFieldsA ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private TestMissingFieldsA MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -1512,22 +1536,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new TestMissingFieldsA(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(TestMissingFieldsA cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - TestMissingFieldsA result; + private bool resultIsReadOnly; + private TestMissingFieldsA result; private TestMissingFieldsA PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { TestMissingFieldsA original = result; result = new TestMissingFieldsA(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -1542,13 +1566,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new TestMissingFieldsA(); - 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); @@ -1564,11 +1588,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestMissingFieldsA BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } @@ -1670,7 +1694,7 @@ namespace Google.ProtocolBuffers.TestProtos { public Builder ClearTestA() { PrepareBuilder(); result.hasTestA = false; - result.testA_ = global::Google.ProtocolBuffers.TestProtos.TestMissingFieldsA.Types.SubA.DefaultInstance; + result.testA_ = null; return this; } } @@ -1684,13 +1708,13 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class TestMissingFieldsB : pb::GeneratedMessage { private TestMissingFieldsB() { } - private static readonly TestMissingFieldsB defaultInstance = new Builder().BuildPartial(); + private static readonly TestMissingFieldsB defaultInstance = new TestMissingFieldsB().MakeReadOnly(); public static TestMissingFieldsB DefaultInstance { get { return defaultInstance; } } public override TestMissingFieldsB DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override TestMissingFieldsB ThisMessage { @@ -1715,13 +1739,13 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class SubB : pb::GeneratedMessage { private SubB() { } - private static readonly SubB defaultInstance = new Builder().BuildPartial(); + private static readonly SubB defaultInstance = new SubB().MakeReadOnly(); public static SubB DefaultInstance { get { return defaultInstance; } } public override SubB DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override SubB ThisMessage { @@ -1778,6 +1802,11 @@ namespace Google.ProtocolBuffers.TestProtos { public static SubB ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private SubB MakeReadOnly() { + values_.MakeReadOnly(); + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -1793,22 +1822,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new SubB(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(SubB cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - SubB result; + private bool resultIsReadOnly; + private SubB result; private SubB PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { SubB original = result; result = new SubB(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -1823,13 +1852,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new SubB(); - 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); @@ -1845,12 +1874,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override SubB BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - result.values_.MakeReadOnly(); - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } @@ -1926,12 +1954,12 @@ namespace Google.ProtocolBuffers.TestProtos { public const int TestBFieldNumber = 12; private bool hasTestB; - private global::Google.ProtocolBuffers.TestProtos.TestMissingFieldsB.Types.SubB testB_ = global::Google.ProtocolBuffers.TestProtos.TestMissingFieldsB.Types.SubB.DefaultInstance; + private global::Google.ProtocolBuffers.TestProtos.TestMissingFieldsB.Types.SubB testB_; public bool HasTestB { get { return hasTestB; } } public global::Google.ProtocolBuffers.TestProtos.TestMissingFieldsB.Types.SubB TestB { - get { return testB_; } + get { return testB_ ?? global::Google.ProtocolBuffers.TestProtos.TestMissingFieldsB.Types.SubB.DefaultInstance; } } public static TestMissingFieldsB ParseFrom(pb::ByteString data) { @@ -1964,6 +1992,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static TestMissingFieldsB ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private TestMissingFieldsB MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -1979,22 +2011,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new TestMissingFieldsB(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(TestMissingFieldsB cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - TestMissingFieldsB result; + private bool resultIsReadOnly; + private TestMissingFieldsB result; private TestMissingFieldsB PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { TestMissingFieldsB original = result; result = new TestMissingFieldsB(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -2009,13 +2041,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new TestMissingFieldsB(); - 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); @@ -2031,11 +2063,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestMissingFieldsB BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } @@ -2137,7 +2169,7 @@ namespace Google.ProtocolBuffers.TestProtos { public Builder ClearTestB() { PrepareBuilder(); result.hasTestB = false; - result.testB_ = global::Google.ProtocolBuffers.TestProtos.TestMissingFieldsB.Types.SubB.DefaultInstance; + result.testB_ = null; return this; } } diff --git a/src/ProtocolBuffersLite.Test/TestProtos/UnitTestExtrasLiteProtoFile.cs b/src/ProtocolBuffersLite.Test/TestProtos/UnitTestExtrasLiteProtoFile.cs index 550bc012f5..e3df2328b8 100644 --- a/src/ProtocolBuffersLite.Test/TestProtos/UnitTestExtrasLiteProtoFile.cs +++ b/src/ProtocolBuffersLite.Test/TestProtos/UnitTestExtrasLiteProtoFile.cs @@ -61,7 +61,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class TestRequiredLite : pb::GeneratedMessageLite { private TestRequiredLite() { } - private static readonly TestRequiredLite defaultInstance = new Builder().BuildPartial(); + private static readonly TestRequiredLite defaultInstance = new TestRequiredLite().MakeReadOnly(); private static readonly string[] _testRequiredLiteFieldNames = new string[] { "d", "en" }; private static readonly uint[] _testRequiredLiteFieldTags = new uint[] { 8, 16 }; public static TestRequiredLite DefaultInstance { @@ -69,7 +69,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestRequiredLite DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override TestRequiredLite ThisMessage { @@ -185,6 +185,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static TestRequiredLite ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private TestRequiredLite MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -201,22 +205,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new TestRequiredLite(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(TestRequiredLite cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - TestRequiredLite result; + private bool resultIsReadOnly; + private TestRequiredLite result; private TestRequiredLite PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { TestRequiredLite original = result; result = new TestRequiredLite(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -231,13 +235,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new TestRequiredLite(); - 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,11 +253,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestRequiredLite BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessageLite other) { @@ -376,7 +380,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class TestInteropPersonLite : pb::ExtendableMessageLite { private TestInteropPersonLite() { } - private static readonly TestInteropPersonLite defaultInstance = new Builder().BuildPartial(); + private static readonly TestInteropPersonLite defaultInstance = new TestInteropPersonLite().MakeReadOnly(); private static readonly string[] _testInteropPersonLiteFieldNames = new string[] { "addresses", "codes", "email", "id", "name", "phone" }; private static readonly uint[] _testInteropPersonLiteFieldTags = new uint[] { 43, 82, 26, 16, 10, 34 }; public static TestInteropPersonLite DefaultInstance { @@ -384,7 +388,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestInteropPersonLite DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override TestInteropPersonLite ThisMessage { @@ -410,7 +414,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class PhoneNumber : pb::GeneratedMessageLite { private PhoneNumber() { } - private static readonly PhoneNumber defaultInstance = new Builder().BuildPartial(); + private static readonly PhoneNumber defaultInstance = new PhoneNumber().MakeReadOnly(); private static readonly string[] _phoneNumberFieldNames = new string[] { "number", "type" }; private static readonly uint[] _phoneNumberFieldTags = new uint[] { 10, 16 }; public static PhoneNumber DefaultInstance { @@ -418,7 +422,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override PhoneNumber DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override PhoneNumber ThisMessage { @@ -533,6 +537,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static PhoneNumber ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private PhoneNumber MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -549,22 +557,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new PhoneNumber(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(PhoneNumber cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - PhoneNumber result; + private bool resultIsReadOnly; + private PhoneNumber result; private PhoneNumber PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { PhoneNumber original = result; result = new PhoneNumber(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -579,13 +587,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new PhoneNumber(); - 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); @@ -597,11 +605,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override PhoneNumber BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessageLite other) { @@ -725,7 +733,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class Addresses : pb::GeneratedMessageLite { private Addresses() { } - private static readonly Addresses defaultInstance = new Builder().BuildPartial(); + private static readonly Addresses defaultInstance = new Addresses().MakeReadOnly(); private static readonly string[] _addressesFieldNames = new string[] { "address", "address2", "city", "state", "zip" }; private static readonly uint[] _addressesFieldTags = new uint[] { 10, 18, 26, 34, 45 }; public static Addresses DefaultInstance { @@ -733,7 +741,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Addresses DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override Addresses ThisMessage { @@ -909,6 +917,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static Addresses ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private Addresses MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -925,22 +937,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new Addresses(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(Addresses cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - Addresses result; + private bool resultIsReadOnly; + private Addresses result; private Addresses PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { Addresses original = result; result = new Addresses(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -955,13 +967,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new Addresses(); - 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); @@ -973,11 +985,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Addresses BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessageLite other) { @@ -1399,6 +1411,13 @@ namespace Google.ProtocolBuffers.TestProtos { public static TestInteropPersonLite ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private TestInteropPersonLite MakeReadOnly() { + codes_.MakeReadOnly(); + phone_.MakeReadOnly(); + addresses_.MakeReadOnly(); + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -1415,22 +1434,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new TestInteropPersonLite(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(TestInteropPersonLite cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - TestInteropPersonLite result; + private bool resultIsReadOnly; + private TestInteropPersonLite result; private TestInteropPersonLite PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { TestInteropPersonLite original = result; result = new TestInteropPersonLite(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -1445,13 +1464,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new TestInteropPersonLite(); - 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); @@ -1463,14 +1482,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestInteropPersonLite BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - result.codes_.MakeReadOnly(); - result.phone_.MakeReadOnly(); - result.addresses_.MakeReadOnly(); - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessageLite other) { @@ -1759,7 +1775,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class TestInteropEmployeeIdLite : pb::GeneratedMessageLite { private TestInteropEmployeeIdLite() { } - private static readonly TestInteropEmployeeIdLite defaultInstance = new Builder().BuildPartial(); + private static readonly TestInteropEmployeeIdLite defaultInstance = new TestInteropEmployeeIdLite().MakeReadOnly(); private static readonly string[] _testInteropEmployeeIdLiteFieldNames = new string[] { "number" }; private static readonly uint[] _testInteropEmployeeIdLiteFieldTags = new uint[] { 10 }; public static TestInteropEmployeeIdLite DefaultInstance { @@ -1767,7 +1783,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestInteropEmployeeIdLite DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override TestInteropEmployeeIdLite ThisMessage { @@ -1863,6 +1879,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static TestInteropEmployeeIdLite ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private TestInteropEmployeeIdLite MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -1879,22 +1899,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new TestInteropEmployeeIdLite(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(TestInteropEmployeeIdLite cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - TestInteropEmployeeIdLite result; + private bool resultIsReadOnly; + private TestInteropEmployeeIdLite result; private TestInteropEmployeeIdLite PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { TestInteropEmployeeIdLite original = result; result = new TestInteropEmployeeIdLite(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -1909,13 +1929,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new TestInteropEmployeeIdLite(); - 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); @@ -1927,11 +1947,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestInteropEmployeeIdLite BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessageLite other) { diff --git a/src/ProtocolBuffersLite.Test/TestProtos/UnitTestImportLiteProtoFile.cs b/src/ProtocolBuffersLite.Test/TestProtos/UnitTestImportLiteProtoFile.cs index 98672cf29a..f31fdd89de 100644 --- a/src/ProtocolBuffersLite.Test/TestProtos/UnitTestImportLiteProtoFile.cs +++ b/src/ProtocolBuffersLite.Test/TestProtos/UnitTestImportLiteProtoFile.cs @@ -44,7 +44,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class ImportMessageLite : pb::GeneratedMessageLite { private ImportMessageLite() { } - private static readonly ImportMessageLite defaultInstance = new Builder().BuildPartial(); + private static readonly ImportMessageLite defaultInstance = new ImportMessageLite().MakeReadOnly(); private static readonly string[] _importMessageLiteFieldNames = new string[] { "d" }; private static readonly uint[] _importMessageLiteFieldTags = new uint[] { 8 }; public static ImportMessageLite DefaultInstance { @@ -52,7 +52,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override ImportMessageLite DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override ImportMessageLite ThisMessage { @@ -147,6 +147,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static ImportMessageLite ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private ImportMessageLite MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -162,22 +166,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new ImportMessageLite(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(ImportMessageLite cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - ImportMessageLite result; + private bool resultIsReadOnly; + private ImportMessageLite result; private ImportMessageLite PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { ImportMessageLite original = result; result = new ImportMessageLite(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -192,13 +196,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new ImportMessageLite(); - 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); @@ -210,11 +214,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override ImportMessageLite BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessageLite other) { diff --git a/src/ProtocolBuffersLite.Test/TestProtos/UnitTestImportProtoFile.cs b/src/ProtocolBuffersLite.Test/TestProtos/UnitTestImportProtoFile.cs index 086dda1d45..c12aef8ece 100644 --- a/src/ProtocolBuffersLite.Test/TestProtos/UnitTestImportProtoFile.cs +++ b/src/ProtocolBuffersLite.Test/TestProtos/UnitTestImportProtoFile.cs @@ -72,7 +72,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class ImportMessage : pb::GeneratedMessage { private ImportMessage() { } - private static readonly ImportMessage defaultInstance = new Builder().BuildPartial(); + private static readonly ImportMessage defaultInstance = new ImportMessage().MakeReadOnly(); private static readonly string[] _importMessageFieldNames = new string[] { "d" }; private static readonly uint[] _importMessageFieldTags = new uint[] { 8 }; public static ImportMessage DefaultInstance { @@ -80,7 +80,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override ImportMessage DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override ImportMessage ThisMessage { @@ -166,6 +166,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static ImportMessage ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private ImportMessage MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -181,22 +185,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new ImportMessage(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(ImportMessage cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - ImportMessage result; + private bool resultIsReadOnly; + private ImportMessage result; private ImportMessage PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { ImportMessage original = result; result = new ImportMessage(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -211,13 +215,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new ImportMessage(); - 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); @@ -233,11 +237,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override ImportMessage BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { diff --git a/src/ProtocolBuffersLite.Test/TestProtos/UnitTestLiteImportNonLiteProtoFile.cs b/src/ProtocolBuffersLite.Test/TestProtos/UnitTestLiteImportNonLiteProtoFile.cs index 2b059eb295..0e7b50709e 100644 --- a/src/ProtocolBuffersLite.Test/TestProtos/UnitTestLiteImportNonLiteProtoFile.cs +++ b/src/ProtocolBuffersLite.Test/TestProtos/UnitTestLiteImportNonLiteProtoFile.cs @@ -33,7 +33,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class TestLiteImportsNonlite : pb::GeneratedMessageLite { private TestLiteImportsNonlite() { } - private static readonly TestLiteImportsNonlite defaultInstance = new Builder().BuildPartial(); + private static readonly TestLiteImportsNonlite defaultInstance = new TestLiteImportsNonlite().MakeReadOnly(); private static readonly string[] _testLiteImportsNonliteFieldNames = new string[] { "message" }; private static readonly uint[] _testLiteImportsNonliteFieldTags = new uint[] { 10 }; public static TestLiteImportsNonlite DefaultInstance { @@ -41,7 +41,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestLiteImportsNonlite DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override TestLiteImportsNonlite ThisMessage { @@ -50,12 +50,12 @@ namespace Google.ProtocolBuffers.TestProtos { public const int MessageFieldNumber = 1; private bool hasMessage; - private global::Google.ProtocolBuffers.TestProtos.TestAllTypes message_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypes.DefaultInstance; + private global::Google.ProtocolBuffers.TestProtos.TestAllTypes message_; public bool HasMessage { get { return hasMessage; } } public global::Google.ProtocolBuffers.TestProtos.TestAllTypes Message { - get { return message_; } + get { return message_ ?? global::Google.ProtocolBuffers.TestProtos.TestAllTypes.DefaultInstance; } } public override bool IsInitialized { @@ -136,6 +136,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static TestLiteImportsNonlite ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private TestLiteImportsNonlite MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -151,22 +155,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new TestLiteImportsNonlite(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(TestLiteImportsNonlite cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - TestLiteImportsNonlite result; + private bool resultIsReadOnly; + private TestLiteImportsNonlite result; private TestLiteImportsNonlite PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { TestLiteImportsNonlite original = result; result = new TestLiteImportsNonlite(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -181,13 +185,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new TestLiteImportsNonlite(); - 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); @@ -199,11 +203,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestLiteImportsNonlite BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessageLite other) { @@ -305,7 +309,7 @@ namespace Google.ProtocolBuffers.TestProtos { public Builder ClearMessage() { PrepareBuilder(); result.hasMessage = false; - result.message_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypes.DefaultInstance; + result.message_ = null; return this; } } diff --git a/src/ProtocolBuffersLite.Test/TestProtos/UnitTestLiteProtoFile.cs b/src/ProtocolBuffersLite.Test/TestProtos/UnitTestLiteProtoFile.cs index 90c792b388..c682ad1c59 100644 --- a/src/ProtocolBuffersLite.Test/TestProtos/UnitTestLiteProtoFile.cs +++ b/src/ProtocolBuffersLite.Test/TestProtos/UnitTestLiteProtoFile.cs @@ -1229,7 +1229,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class TestAllTypesLite : pb::GeneratedMessageLite { private TestAllTypesLite() { } - private static readonly TestAllTypesLite defaultInstance = new Builder().BuildPartial(); + private static readonly TestAllTypesLite defaultInstance = new TestAllTypesLite().MakeReadOnly(); private static readonly string[] _testAllTypesLiteFieldNames = new string[] { "default_bool", "default_bytes", "default_cord", "default_double", "default_fixed32", "default_fixed64", "default_float", "default_foreign_enum", "default_import_enum", "default_int32", "default_int64", "default_nested_enum", "default_sfixed32", "default_sfixed64", "default_sint32", "default_sint64", "default_string", "default_string_piece", "default_uint32", "default_uint64", "optional_bool", "optional_bytes", "optional_cord", "optional_double", "optional_fixed32", "optional_fixed64", "optional_float", "optional_foreign_enum", "optional_foreign_message", "optional_import_enum", "optional_import_message", "optional_int32", "optional_int64", "optional_nested_enum", "optional_nested_message", "optional_sfixed32", "optional_sfixed64", "optional_sint32", "optional_sint64", "optional_string", "optional_string_piece", "optional_uint32", "optional_uint64", "optionalgroup", "repeated_bool", "repeated_bytes", "repeated_cord", "repeated_double", "repeated_fixed32", "repeated_fixed64", "repeated_float", "repeated_foreign_enum", "repeated_foreign_message", "repeated_import_enum", "repeated_import_message", "repeated_int32", "repeated_int64", "repeated_nested_enum", "repeated_nested_message", "repeated_sfixed32", "repeated_sfixed64", "repeated_sint32", "repeated_sint64", "repeated_string", "repeated_string_piece", "repeated_uint32", "repeated_uint64", "repeatedgroup" }; private static readonly uint[] _testAllTypesLiteFieldTags = new uint[] { 584, 602, 682, 577, 541, 545, 573, 656, 664, 488, 496, 648, 557, 561, 520, 528, 594, 674, 504, 512, 104, 122, 202, 97, 61, 65, 93, 176, 154, 184, 162, 8, 16, 168, 146, 77, 81, 40, 48, 114, 194, 24, 32, 131, 344, 362, 442, 337, 301, 305, 333, 416, 394, 424, 402, 248, 256, 408, 386, 317, 321, 280, 288, 354, 434, 264, 272, 371 }; public static TestAllTypesLite DefaultInstance { @@ -1237,7 +1237,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestAllTypesLite DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override TestAllTypesLite ThisMessage { @@ -1262,7 +1262,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class NestedMessage : pb::GeneratedMessageLite { private NestedMessage() { } - private static readonly NestedMessage defaultInstance = new Builder().BuildPartial(); + private static readonly NestedMessage defaultInstance = new NestedMessage().MakeReadOnly(); private static readonly string[] _nestedMessageFieldNames = new string[] { "bb" }; private static readonly uint[] _nestedMessageFieldTags = new uint[] { 8 }; public static NestedMessage DefaultInstance { @@ -1270,7 +1270,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override NestedMessage DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override NestedMessage ThisMessage { @@ -1365,6 +1365,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static NestedMessage ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private NestedMessage MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -1380,22 +1384,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new NestedMessage(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(NestedMessage cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - NestedMessage result; + private bool resultIsReadOnly; + private NestedMessage result; private NestedMessage PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { NestedMessage original = result; result = new NestedMessage(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -1410,13 +1414,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new NestedMessage(); - 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); @@ -1428,11 +1432,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override NestedMessage BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessageLite other) { @@ -1523,7 +1527,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class OptionalGroup : pb::GeneratedMessageLite { private OptionalGroup() { } - private static readonly OptionalGroup defaultInstance = new Builder().BuildPartial(); + private static readonly OptionalGroup defaultInstance = new OptionalGroup().MakeReadOnly(); private static readonly string[] _optionalGroupFieldNames = new string[] { "a" }; private static readonly uint[] _optionalGroupFieldTags = new uint[] { 136 }; public static OptionalGroup DefaultInstance { @@ -1531,7 +1535,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override OptionalGroup DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override OptionalGroup ThisMessage { @@ -1626,6 +1630,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static OptionalGroup ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private OptionalGroup MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -1641,22 +1649,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new OptionalGroup(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(OptionalGroup cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - OptionalGroup result; + private bool resultIsReadOnly; + private OptionalGroup result; private OptionalGroup PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { OptionalGroup original = result; result = new OptionalGroup(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -1671,13 +1679,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new OptionalGroup(); - 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); @@ -1689,11 +1697,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override OptionalGroup BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessageLite other) { @@ -1784,7 +1792,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class RepeatedGroup : pb::GeneratedMessageLite { private RepeatedGroup() { } - private static readonly RepeatedGroup defaultInstance = new Builder().BuildPartial(); + private static readonly RepeatedGroup defaultInstance = new RepeatedGroup().MakeReadOnly(); private static readonly string[] _repeatedGroupFieldNames = new string[] { "a" }; private static readonly uint[] _repeatedGroupFieldTags = new uint[] { 376 }; public static RepeatedGroup DefaultInstance { @@ -1792,7 +1800,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override RepeatedGroup DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override RepeatedGroup ThisMessage { @@ -1887,6 +1895,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static RepeatedGroup ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private RepeatedGroup MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -1902,22 +1914,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new RepeatedGroup(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(RepeatedGroup cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - RepeatedGroup result; + private bool resultIsReadOnly; + private RepeatedGroup result; private RepeatedGroup PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { RepeatedGroup original = result; result = new RepeatedGroup(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -1932,13 +1944,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new RepeatedGroup(); - 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); @@ -1950,11 +1962,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override RepeatedGroup BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessageLite other) { @@ -2199,42 +2211,42 @@ namespace Google.ProtocolBuffers.TestProtos { public const int OptionalGroupFieldNumber = 16; private bool hasOptionalGroup; - private global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.OptionalGroup optionalGroup_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.OptionalGroup.DefaultInstance; + private global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.OptionalGroup optionalGroup_; public bool HasOptionalGroup { get { return hasOptionalGroup; } } public global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.OptionalGroup OptionalGroup { - get { return optionalGroup_; } + get { return optionalGroup_ ?? global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.OptionalGroup.DefaultInstance; } } public const int OptionalNestedMessageFieldNumber = 18; private bool hasOptionalNestedMessage; - private global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage optionalNestedMessage_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage.DefaultInstance; + private global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage optionalNestedMessage_; public bool HasOptionalNestedMessage { get { return hasOptionalNestedMessage; } } public global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage OptionalNestedMessage { - get { return optionalNestedMessage_; } + get { return optionalNestedMessage_ ?? global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage.DefaultInstance; } } public const int OptionalForeignMessageFieldNumber = 19; private bool hasOptionalForeignMessage; - private global::Google.ProtocolBuffers.TestProtos.ForeignMessageLite optionalForeignMessage_ = global::Google.ProtocolBuffers.TestProtos.ForeignMessageLite.DefaultInstance; + private global::Google.ProtocolBuffers.TestProtos.ForeignMessageLite optionalForeignMessage_; public bool HasOptionalForeignMessage { get { return hasOptionalForeignMessage; } } public global::Google.ProtocolBuffers.TestProtos.ForeignMessageLite OptionalForeignMessage { - get { return optionalForeignMessage_; } + get { return optionalForeignMessage_ ?? global::Google.ProtocolBuffers.TestProtos.ForeignMessageLite.DefaultInstance; } } public const int OptionalImportMessageFieldNumber = 20; private bool hasOptionalImportMessage; - private global::Google.ProtocolBuffers.TestProtos.ImportMessageLite optionalImportMessage_ = global::Google.ProtocolBuffers.TestProtos.ImportMessageLite.DefaultInstance; + private global::Google.ProtocolBuffers.TestProtos.ImportMessageLite optionalImportMessage_; public bool HasOptionalImportMessage { get { return hasOptionalImportMessage; } } public global::Google.ProtocolBuffers.TestProtos.ImportMessageLite OptionalImportMessage { - get { return optionalImportMessage_; } + get { return optionalImportMessage_ ?? global::Google.ProtocolBuffers.TestProtos.ImportMessageLite.DefaultInstance; } } public const int OptionalNestedEnumFieldNumber = 21; @@ -3632,6 +3644,34 @@ namespace Google.ProtocolBuffers.TestProtos { public static TestAllTypesLite ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private TestAllTypesLite MakeReadOnly() { + repeatedInt32_.MakeReadOnly(); + repeatedInt64_.MakeReadOnly(); + repeatedUint32_.MakeReadOnly(); + repeatedUint64_.MakeReadOnly(); + repeatedSint32_.MakeReadOnly(); + repeatedSint64_.MakeReadOnly(); + repeatedFixed32_.MakeReadOnly(); + repeatedFixed64_.MakeReadOnly(); + repeatedSfixed32_.MakeReadOnly(); + repeatedSfixed64_.MakeReadOnly(); + repeatedFloat_.MakeReadOnly(); + repeatedDouble_.MakeReadOnly(); + repeatedBool_.MakeReadOnly(); + repeatedString_.MakeReadOnly(); + repeatedBytes_.MakeReadOnly(); + repeatedGroup_.MakeReadOnly(); + repeatedNestedMessage_.MakeReadOnly(); + repeatedForeignMessage_.MakeReadOnly(); + repeatedImportMessage_.MakeReadOnly(); + repeatedNestedEnum_.MakeReadOnly(); + repeatedForeignEnum_.MakeReadOnly(); + repeatedImportEnum_.MakeReadOnly(); + repeatedStringPiece_.MakeReadOnly(); + repeatedCord_.MakeReadOnly(); + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -3647,22 +3687,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new TestAllTypesLite(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(TestAllTypesLite cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - TestAllTypesLite result; + private bool resultIsReadOnly; + private TestAllTypesLite result; private TestAllTypesLite PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { TestAllTypesLite original = result; result = new TestAllTypesLite(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -3677,13 +3717,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new TestAllTypesLite(); - 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); @@ -3695,35 +3735,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestAllTypesLite BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - result.repeatedInt32_.MakeReadOnly(); - result.repeatedInt64_.MakeReadOnly(); - result.repeatedUint32_.MakeReadOnly(); - result.repeatedUint64_.MakeReadOnly(); - result.repeatedSint32_.MakeReadOnly(); - result.repeatedSint64_.MakeReadOnly(); - result.repeatedFixed32_.MakeReadOnly(); - result.repeatedFixed64_.MakeReadOnly(); - result.repeatedSfixed32_.MakeReadOnly(); - result.repeatedSfixed64_.MakeReadOnly(); - result.repeatedFloat_.MakeReadOnly(); - result.repeatedDouble_.MakeReadOnly(); - result.repeatedBool_.MakeReadOnly(); - result.repeatedString_.MakeReadOnly(); - result.repeatedBytes_.MakeReadOnly(); - result.repeatedGroup_.MakeReadOnly(); - result.repeatedNestedMessage_.MakeReadOnly(); - result.repeatedForeignMessage_.MakeReadOnly(); - result.repeatedImportMessage_.MakeReadOnly(); - result.repeatedNestedEnum_.MakeReadOnly(); - result.repeatedForeignEnum_.MakeReadOnly(); - result.repeatedImportEnum_.MakeReadOnly(); - result.repeatedStringPiece_.MakeReadOnly(); - result.repeatedCord_.MakeReadOnly(); - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessageLite other) { @@ -4662,7 +4678,7 @@ namespace Google.ProtocolBuffers.TestProtos { public Builder ClearOptionalGroup() { PrepareBuilder(); result.hasOptionalGroup = false; - result.optionalGroup_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.OptionalGroup.DefaultInstance; + result.optionalGroup_ = null; return this; } @@ -4702,7 +4718,7 @@ namespace Google.ProtocolBuffers.TestProtos { public Builder ClearOptionalNestedMessage() { PrepareBuilder(); result.hasOptionalNestedMessage = false; - result.optionalNestedMessage_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage.DefaultInstance; + result.optionalNestedMessage_ = null; return this; } @@ -4742,7 +4758,7 @@ namespace Google.ProtocolBuffers.TestProtos { public Builder ClearOptionalForeignMessage() { PrepareBuilder(); result.hasOptionalForeignMessage = false; - result.optionalForeignMessage_ = global::Google.ProtocolBuffers.TestProtos.ForeignMessageLite.DefaultInstance; + result.optionalForeignMessage_ = null; return this; } @@ -4782,7 +4798,7 @@ namespace Google.ProtocolBuffers.TestProtos { public Builder ClearOptionalImportMessage() { PrepareBuilder(); result.hasOptionalImportMessage = false; - result.optionalImportMessage_ = global::Google.ProtocolBuffers.TestProtos.ImportMessageLite.DefaultInstance; + result.optionalImportMessage_ = null; return this; } @@ -6114,7 +6130,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class ForeignMessageLite : pb::GeneratedMessageLite { private ForeignMessageLite() { } - private static readonly ForeignMessageLite defaultInstance = new Builder().BuildPartial(); + private static readonly ForeignMessageLite defaultInstance = new ForeignMessageLite().MakeReadOnly(); private static readonly string[] _foreignMessageLiteFieldNames = new string[] { "c" }; private static readonly uint[] _foreignMessageLiteFieldTags = new uint[] { 8 }; public static ForeignMessageLite DefaultInstance { @@ -6122,7 +6138,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override ForeignMessageLite DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override ForeignMessageLite ThisMessage { @@ -6217,6 +6233,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static ForeignMessageLite ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private ForeignMessageLite MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -6232,22 +6252,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new ForeignMessageLite(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(ForeignMessageLite cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - ForeignMessageLite result; + private bool resultIsReadOnly; + private ForeignMessageLite result; private ForeignMessageLite PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { ForeignMessageLite original = result; result = new ForeignMessageLite(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -6262,13 +6282,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new ForeignMessageLite(); - 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); @@ -6280,11 +6300,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override ForeignMessageLite BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessageLite other) { @@ -6375,7 +6395,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class TestPackedTypesLite : pb::GeneratedMessageLite { private TestPackedTypesLite() { } - private static readonly TestPackedTypesLite defaultInstance = new Builder().BuildPartial(); + private static readonly TestPackedTypesLite defaultInstance = new TestPackedTypesLite().MakeReadOnly(); private static readonly string[] _testPackedTypesLiteFieldNames = new string[] { "packed_bool", "packed_double", "packed_enum", "packed_fixed32", "packed_fixed64", "packed_float", "packed_int32", "packed_int64", "packed_sfixed32", "packed_sfixed64", "packed_sint32", "packed_sint64", "packed_uint32", "packed_uint64" }; private static readonly uint[] _testPackedTypesLiteFieldTags = new uint[] { 818, 810, 826, 770, 778, 802, 722, 730, 786, 794, 754, 762, 738, 746 }; public static TestPackedTypesLite DefaultInstance { @@ -6383,7 +6403,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestPackedTypesLite DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override TestPackedTypesLite ThisMessage { @@ -6916,6 +6936,24 @@ namespace Google.ProtocolBuffers.TestProtos { public static TestPackedTypesLite ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private TestPackedTypesLite MakeReadOnly() { + packedInt32_.MakeReadOnly(); + packedInt64_.MakeReadOnly(); + packedUint32_.MakeReadOnly(); + packedUint64_.MakeReadOnly(); + packedSint32_.MakeReadOnly(); + packedSint64_.MakeReadOnly(); + packedFixed32_.MakeReadOnly(); + packedFixed64_.MakeReadOnly(); + packedSfixed32_.MakeReadOnly(); + packedSfixed64_.MakeReadOnly(); + packedFloat_.MakeReadOnly(); + packedDouble_.MakeReadOnly(); + packedBool_.MakeReadOnly(); + packedEnum_.MakeReadOnly(); + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -6931,22 +6969,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new TestPackedTypesLite(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(TestPackedTypesLite cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - TestPackedTypesLite result; + private bool resultIsReadOnly; + private TestPackedTypesLite result; private TestPackedTypesLite PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { TestPackedTypesLite original = result; result = new TestPackedTypesLite(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -6961,13 +6999,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new TestPackedTypesLite(); - 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); @@ -6979,25 +7017,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestPackedTypesLite BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - result.packedInt32_.MakeReadOnly(); - result.packedInt64_.MakeReadOnly(); - result.packedUint32_.MakeReadOnly(); - result.packedUint64_.MakeReadOnly(); - result.packedSint32_.MakeReadOnly(); - result.packedSint64_.MakeReadOnly(); - result.packedFixed32_.MakeReadOnly(); - result.packedFixed64_.MakeReadOnly(); - result.packedSfixed32_.MakeReadOnly(); - result.packedSfixed64_.MakeReadOnly(); - result.packedFloat_.MakeReadOnly(); - result.packedDouble_.MakeReadOnly(); - result.packedBool_.MakeReadOnly(); - result.packedEnum_.MakeReadOnly(); - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessageLite other) { @@ -7614,7 +7638,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class TestUnpackedTypesLite : pb::GeneratedMessageLite { private TestUnpackedTypesLite() { } - private static readonly TestUnpackedTypesLite defaultInstance = new Builder().BuildPartial(); + private static readonly TestUnpackedTypesLite defaultInstance = new TestUnpackedTypesLite().MakeReadOnly(); private static readonly string[] _testUnpackedTypesLiteFieldNames = new string[] { "unpacked_bool", "unpacked_double", "unpacked_enum", "unpacked_fixed32", "unpacked_fixed64", "unpacked_float", "unpacked_int32", "unpacked_int64", "unpacked_sfixed32", "unpacked_sfixed64", "unpacked_sint32", "unpacked_sint64", "unpacked_uint32", "unpacked_uint64" }; private static readonly uint[] _testUnpackedTypesLiteFieldTags = new uint[] { 816, 809, 824, 773, 777, 805, 720, 728, 789, 793, 752, 760, 736, 744 }; public static TestUnpackedTypesLite DefaultInstance { @@ -7622,7 +7646,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestUnpackedTypesLite DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override TestUnpackedTypesLite ThisMessage { @@ -8100,6 +8124,24 @@ namespace Google.ProtocolBuffers.TestProtos { public static TestUnpackedTypesLite ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private TestUnpackedTypesLite MakeReadOnly() { + unpackedInt32_.MakeReadOnly(); + unpackedInt64_.MakeReadOnly(); + unpackedUint32_.MakeReadOnly(); + unpackedUint64_.MakeReadOnly(); + unpackedSint32_.MakeReadOnly(); + unpackedSint64_.MakeReadOnly(); + unpackedFixed32_.MakeReadOnly(); + unpackedFixed64_.MakeReadOnly(); + unpackedSfixed32_.MakeReadOnly(); + unpackedSfixed64_.MakeReadOnly(); + unpackedFloat_.MakeReadOnly(); + unpackedDouble_.MakeReadOnly(); + unpackedBool_.MakeReadOnly(); + unpackedEnum_.MakeReadOnly(); + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -8115,22 +8157,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new TestUnpackedTypesLite(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(TestUnpackedTypesLite cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - TestUnpackedTypesLite result; + private bool resultIsReadOnly; + private TestUnpackedTypesLite result; private TestUnpackedTypesLite PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { TestUnpackedTypesLite original = result; result = new TestUnpackedTypesLite(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -8145,13 +8187,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new TestUnpackedTypesLite(); - 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); @@ -8163,25 +8205,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestUnpackedTypesLite BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - result.unpackedInt32_.MakeReadOnly(); - result.unpackedInt64_.MakeReadOnly(); - result.unpackedUint32_.MakeReadOnly(); - result.unpackedUint64_.MakeReadOnly(); - result.unpackedSint32_.MakeReadOnly(); - result.unpackedSint64_.MakeReadOnly(); - result.unpackedFixed32_.MakeReadOnly(); - result.unpackedFixed64_.MakeReadOnly(); - result.unpackedSfixed32_.MakeReadOnly(); - result.unpackedSfixed64_.MakeReadOnly(); - result.unpackedFloat_.MakeReadOnly(); - result.unpackedDouble_.MakeReadOnly(); - result.unpackedBool_.MakeReadOnly(); - result.unpackedEnum_.MakeReadOnly(); - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessageLite other) { @@ -8798,7 +8826,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class TestAllExtensionsLite : pb::ExtendableMessageLite { private TestAllExtensionsLite() { } - private static readonly TestAllExtensionsLite defaultInstance = new Builder().BuildPartial(); + private static readonly TestAllExtensionsLite defaultInstance = new TestAllExtensionsLite().MakeReadOnly(); private static readonly string[] _testAllExtensionsLiteFieldNames = new string[] { }; private static readonly uint[] _testAllExtensionsLiteFieldTags = new uint[] { }; public static TestAllExtensionsLite DefaultInstance { @@ -8806,7 +8834,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestAllExtensionsLite DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override TestAllExtensionsLite ThisMessage { @@ -8889,6 +8917,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static TestAllExtensionsLite ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private TestAllExtensionsLite MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -8904,22 +8936,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new TestAllExtensionsLite(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(TestAllExtensionsLite cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - TestAllExtensionsLite result; + private bool resultIsReadOnly; + private TestAllExtensionsLite result; private TestAllExtensionsLite PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { TestAllExtensionsLite original = result; result = new TestAllExtensionsLite(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -8934,13 +8966,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new TestAllExtensionsLite(); - 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); @@ -8952,11 +8984,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestAllExtensionsLite BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessageLite other) { @@ -9021,7 +9053,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class OptionalGroup_extension_lite : pb::GeneratedMessageLite { private OptionalGroup_extension_lite() { } - private static readonly OptionalGroup_extension_lite defaultInstance = new Builder().BuildPartial(); + private static readonly OptionalGroup_extension_lite defaultInstance = new OptionalGroup_extension_lite().MakeReadOnly(); private static readonly string[] _optionalGroupExtensionLiteFieldNames = new string[] { "a" }; private static readonly uint[] _optionalGroupExtensionLiteFieldTags = new uint[] { 136 }; public static OptionalGroup_extension_lite DefaultInstance { @@ -9029,7 +9061,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override OptionalGroup_extension_lite DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override OptionalGroup_extension_lite ThisMessage { @@ -9124,6 +9156,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static OptionalGroup_extension_lite ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private OptionalGroup_extension_lite MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -9139,22 +9175,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new OptionalGroup_extension_lite(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(OptionalGroup_extension_lite cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - OptionalGroup_extension_lite result; + private bool resultIsReadOnly; + private OptionalGroup_extension_lite result; private OptionalGroup_extension_lite PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { OptionalGroup_extension_lite original = result; result = new OptionalGroup_extension_lite(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -9169,13 +9205,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new OptionalGroup_extension_lite(); - 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); @@ -9187,11 +9223,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override OptionalGroup_extension_lite BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessageLite other) { @@ -9282,7 +9318,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class RepeatedGroup_extension_lite : pb::GeneratedMessageLite { private RepeatedGroup_extension_lite() { } - private static readonly RepeatedGroup_extension_lite defaultInstance = new Builder().BuildPartial(); + private static readonly RepeatedGroup_extension_lite defaultInstance = new RepeatedGroup_extension_lite().MakeReadOnly(); private static readonly string[] _repeatedGroupExtensionLiteFieldNames = new string[] { "a" }; private static readonly uint[] _repeatedGroupExtensionLiteFieldTags = new uint[] { 376 }; public static RepeatedGroup_extension_lite DefaultInstance { @@ -9290,7 +9326,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override RepeatedGroup_extension_lite DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override RepeatedGroup_extension_lite ThisMessage { @@ -9385,6 +9421,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static RepeatedGroup_extension_lite ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private RepeatedGroup_extension_lite MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -9400,22 +9440,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new RepeatedGroup_extension_lite(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(RepeatedGroup_extension_lite cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - RepeatedGroup_extension_lite result; + private bool resultIsReadOnly; + private RepeatedGroup_extension_lite result; private RepeatedGroup_extension_lite PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { RepeatedGroup_extension_lite original = result; result = new RepeatedGroup_extension_lite(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -9430,13 +9470,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new RepeatedGroup_extension_lite(); - 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); @@ -9448,11 +9488,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override RepeatedGroup_extension_lite BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessageLite other) { @@ -9543,7 +9583,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class TestPackedExtensionsLite : pb::ExtendableMessageLite { private TestPackedExtensionsLite() { } - private static readonly TestPackedExtensionsLite defaultInstance = new Builder().BuildPartial(); + private static readonly TestPackedExtensionsLite defaultInstance = new TestPackedExtensionsLite().MakeReadOnly(); private static readonly string[] _testPackedExtensionsLiteFieldNames = new string[] { }; private static readonly uint[] _testPackedExtensionsLiteFieldTags = new uint[] { }; public static TestPackedExtensionsLite DefaultInstance { @@ -9551,7 +9591,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestPackedExtensionsLite DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override TestPackedExtensionsLite ThisMessage { @@ -9634,6 +9674,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static TestPackedExtensionsLite ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private TestPackedExtensionsLite MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -9649,22 +9693,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new TestPackedExtensionsLite(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(TestPackedExtensionsLite cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - TestPackedExtensionsLite result; + private bool resultIsReadOnly; + private TestPackedExtensionsLite result; private TestPackedExtensionsLite PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { TestPackedExtensionsLite original = result; result = new TestPackedExtensionsLite(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -9679,13 +9723,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new TestPackedExtensionsLite(); - 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); @@ -9697,11 +9741,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestPackedExtensionsLite BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessageLite other) { @@ -9766,7 +9810,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class TestUnpackedExtensionsLite : pb::ExtendableMessageLite { private TestUnpackedExtensionsLite() { } - private static readonly TestUnpackedExtensionsLite defaultInstance = new Builder().BuildPartial(); + private static readonly TestUnpackedExtensionsLite defaultInstance = new TestUnpackedExtensionsLite().MakeReadOnly(); private static readonly string[] _testUnpackedExtensionsLiteFieldNames = new string[] { }; private static readonly uint[] _testUnpackedExtensionsLiteFieldTags = new uint[] { }; public static TestUnpackedExtensionsLite DefaultInstance { @@ -9774,7 +9818,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestUnpackedExtensionsLite DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override TestUnpackedExtensionsLite ThisMessage { @@ -9857,6 +9901,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static TestUnpackedExtensionsLite ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private TestUnpackedExtensionsLite MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -9872,22 +9920,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new TestUnpackedExtensionsLite(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(TestUnpackedExtensionsLite cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - TestUnpackedExtensionsLite result; + private bool resultIsReadOnly; + private TestUnpackedExtensionsLite result; private TestUnpackedExtensionsLite PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { TestUnpackedExtensionsLite original = result; result = new TestUnpackedExtensionsLite(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -9902,13 +9950,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new TestUnpackedExtensionsLite(); - 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); @@ -9920,11 +9968,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestUnpackedExtensionsLite BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessageLite other) { @@ -9989,7 +10037,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class TestNestedExtensionLite : pb::GeneratedMessageLite { private TestNestedExtensionLite() { } - private static readonly TestNestedExtensionLite defaultInstance = new Builder().BuildPartial(); + private static readonly TestNestedExtensionLite defaultInstance = new TestNestedExtensionLite().MakeReadOnly(); private static readonly string[] _testNestedExtensionLiteFieldNames = new string[] { }; private static readonly uint[] _testNestedExtensionLiteFieldTags = new uint[] { }; public static TestNestedExtensionLite DefaultInstance { @@ -9997,7 +10045,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestNestedExtensionLite DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override TestNestedExtensionLite ThisMessage { @@ -10075,6 +10123,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static TestNestedExtensionLite ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private TestNestedExtensionLite MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -10090,22 +10142,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new TestNestedExtensionLite(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(TestNestedExtensionLite cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - TestNestedExtensionLite result; + private bool resultIsReadOnly; + private TestNestedExtensionLite result; private TestNestedExtensionLite PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { TestNestedExtensionLite original = result; result = new TestNestedExtensionLite(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -10120,13 +10172,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new TestNestedExtensionLite(); - 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); @@ -10138,11 +10190,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestNestedExtensionLite BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessageLite other) { @@ -10206,7 +10258,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class TestDeprecatedLite : pb::GeneratedMessageLite { private TestDeprecatedLite() { } - private static readonly TestDeprecatedLite defaultInstance = new Builder().BuildPartial(); + private static readonly TestDeprecatedLite defaultInstance = new TestDeprecatedLite().MakeReadOnly(); private static readonly string[] _testDeprecatedLiteFieldNames = new string[] { "deprecated_field" }; private static readonly uint[] _testDeprecatedLiteFieldTags = new uint[] { 8 }; public static TestDeprecatedLite DefaultInstance { @@ -10214,7 +10266,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestDeprecatedLite DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override TestDeprecatedLite ThisMessage { @@ -10311,6 +10363,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static TestDeprecatedLite ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private TestDeprecatedLite MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -10326,22 +10382,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new TestDeprecatedLite(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(TestDeprecatedLite cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - TestDeprecatedLite result; + private bool resultIsReadOnly; + private TestDeprecatedLite result; private TestDeprecatedLite PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { TestDeprecatedLite original = result; result = new TestDeprecatedLite(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -10356,13 +10412,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new TestDeprecatedLite(); - 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); @@ -10374,11 +10430,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestDeprecatedLite BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessageLite other) { diff --git a/src/ProtocolBuffersLite.Test/TestProtos/UnitTestProtoFile.cs b/src/ProtocolBuffersLite.Test/TestProtos/UnitTestProtoFile.cs index 547d712aa9..35064953cb 100644 --- a/src/ProtocolBuffersLite.Test/TestProtos/UnitTestProtoFile.cs +++ b/src/ProtocolBuffersLite.Test/TestProtos/UnitTestProtoFile.cs @@ -1123,7 +1123,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class TestAllTypes : pb::GeneratedMessage { private TestAllTypes() { } - private static readonly TestAllTypes defaultInstance = new Builder().BuildPartial(); + private static readonly TestAllTypes defaultInstance = new TestAllTypes().MakeReadOnly(); private static readonly string[] _testAllTypesFieldNames = new string[] { "default_bool", "default_bytes", "default_cord", "default_double", "default_fixed32", "default_fixed64", "default_float", "default_foreign_enum", "default_import_enum", "default_int32", "default_int64", "default_nested_enum", "default_sfixed32", "default_sfixed64", "default_sint32", "default_sint64", "default_string", "default_string_piece", "default_uint32", "default_uint64", "optional_bool", "optional_bytes", "optional_cord", "optional_double", "optional_fixed32", "optional_fixed64", "optional_float", "optional_foreign_enum", "optional_foreign_message", "optional_import_enum", "optional_import_message", "optional_int32", "optional_int64", "optional_nested_enum", "optional_nested_message", "optional_sfixed32", "optional_sfixed64", "optional_sint32", "optional_sint64", "optional_string", "optional_string_piece", "optional_uint32", "optional_uint64", "optionalgroup", "repeated_bool", "repeated_bytes", "repeated_cord", "repeated_double", "repeated_fixed32", "repeated_fixed64", "repeated_float", "repeated_foreign_enum", "repeated_foreign_message", "repeated_import_enum", "repeated_import_message", "repeated_int32", "repeated_int64", "repeated_nested_enum", "repeated_nested_message", "repeated_sfixed32", "repeated_sfixed64", "repeated_sint32", "repeated_sint64", "repeated_string", "repeated_string_piece", "repeated_uint32", "repeated_uint64", "repeatedgroup" }; private static readonly uint[] _testAllTypesFieldTags = new uint[] { 584, 602, 682, 577, 541, 545, 573, 656, 664, 488, 496, 648, 557, 561, 520, 528, 594, 674, 504, 512, 104, 122, 202, 97, 61, 65, 93, 176, 154, 184, 162, 8, 16, 168, 146, 77, 81, 40, 48, 114, 194, 24, 32, 131, 344, 362, 442, 337, 301, 305, 333, 416, 394, 424, 402, 248, 256, 408, 386, 317, 321, 280, 288, 354, 434, 264, 272, 371 }; public static TestAllTypes DefaultInstance { @@ -1131,7 +1131,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestAllTypes DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override TestAllTypes ThisMessage { @@ -1164,7 +1164,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class NestedMessage : pb::GeneratedMessage { private NestedMessage() { } - private static readonly NestedMessage defaultInstance = new Builder().BuildPartial(); + private static readonly NestedMessage defaultInstance = new NestedMessage().MakeReadOnly(); private static readonly string[] _nestedMessageFieldNames = new string[] { "bb" }; private static readonly uint[] _nestedMessageFieldTags = new uint[] { 8 }; public static NestedMessage DefaultInstance { @@ -1172,7 +1172,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override NestedMessage DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override NestedMessage ThisMessage { @@ -1258,6 +1258,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static NestedMessage ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private NestedMessage MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -1273,22 +1277,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new NestedMessage(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(NestedMessage cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - NestedMessage result; + private bool resultIsReadOnly; + private NestedMessage result; private NestedMessage PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { NestedMessage original = result; result = new NestedMessage(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -1303,13 +1307,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new NestedMessage(); - 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); @@ -1325,11 +1329,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override NestedMessage BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -1434,7 +1438,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class OptionalGroup : pb::GeneratedMessage { private OptionalGroup() { } - private static readonly OptionalGroup defaultInstance = new Builder().BuildPartial(); + private static readonly OptionalGroup defaultInstance = new OptionalGroup().MakeReadOnly(); private static readonly string[] _optionalGroupFieldNames = new string[] { "a" }; private static readonly uint[] _optionalGroupFieldTags = new uint[] { 136 }; public static OptionalGroup DefaultInstance { @@ -1442,7 +1446,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override OptionalGroup DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override OptionalGroup ThisMessage { @@ -1528,6 +1532,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static OptionalGroup ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private OptionalGroup MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -1543,22 +1551,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new OptionalGroup(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(OptionalGroup cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - OptionalGroup result; + private bool resultIsReadOnly; + private OptionalGroup result; private OptionalGroup PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { OptionalGroup original = result; result = new OptionalGroup(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -1573,13 +1581,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new OptionalGroup(); - 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); @@ -1595,11 +1603,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override OptionalGroup BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -1704,7 +1712,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class RepeatedGroup : pb::GeneratedMessage { private RepeatedGroup() { } - private static readonly RepeatedGroup defaultInstance = new Builder().BuildPartial(); + private static readonly RepeatedGroup defaultInstance = new RepeatedGroup().MakeReadOnly(); private static readonly string[] _repeatedGroupFieldNames = new string[] { "a" }; private static readonly uint[] _repeatedGroupFieldTags = new uint[] { 376 }; public static RepeatedGroup DefaultInstance { @@ -1712,7 +1720,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override RepeatedGroup DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override RepeatedGroup ThisMessage { @@ -1798,6 +1806,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static RepeatedGroup ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private RepeatedGroup MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -1813,22 +1825,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new RepeatedGroup(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(RepeatedGroup cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - RepeatedGroup result; + private bool resultIsReadOnly; + private RepeatedGroup result; private RepeatedGroup PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { RepeatedGroup original = result; result = new RepeatedGroup(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -1843,13 +1855,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new RepeatedGroup(); - 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); @@ -1865,11 +1877,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override RepeatedGroup BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -2128,42 +2140,42 @@ namespace Google.ProtocolBuffers.TestProtos { public const int OptionalGroupFieldNumber = 16; private bool hasOptionalGroup; - private global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.OptionalGroup optionalGroup_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.OptionalGroup.DefaultInstance; + private global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.OptionalGroup optionalGroup_; public bool HasOptionalGroup { get { return hasOptionalGroup; } } public global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.OptionalGroup OptionalGroup { - get { return optionalGroup_; } + get { return optionalGroup_ ?? global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.OptionalGroup.DefaultInstance; } } public const int OptionalNestedMessageFieldNumber = 18; private bool hasOptionalNestedMessage; - private global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage optionalNestedMessage_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage.DefaultInstance; + private global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage optionalNestedMessage_; public bool HasOptionalNestedMessage { get { return hasOptionalNestedMessage; } } public global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage OptionalNestedMessage { - get { return optionalNestedMessage_; } + get { return optionalNestedMessage_ ?? global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage.DefaultInstance; } } public const int OptionalForeignMessageFieldNumber = 19; private bool hasOptionalForeignMessage; - private global::Google.ProtocolBuffers.TestProtos.ForeignMessage optionalForeignMessage_ = global::Google.ProtocolBuffers.TestProtos.ForeignMessage.DefaultInstance; + private global::Google.ProtocolBuffers.TestProtos.ForeignMessage optionalForeignMessage_; public bool HasOptionalForeignMessage { get { return hasOptionalForeignMessage; } } public global::Google.ProtocolBuffers.TestProtos.ForeignMessage OptionalForeignMessage { - get { return optionalForeignMessage_; } + get { return optionalForeignMessage_ ?? global::Google.ProtocolBuffers.TestProtos.ForeignMessage.DefaultInstance; } } public const int OptionalImportMessageFieldNumber = 20; private bool hasOptionalImportMessage; - private global::Google.ProtocolBuffers.TestProtos.ImportMessage optionalImportMessage_ = global::Google.ProtocolBuffers.TestProtos.ImportMessage.DefaultInstance; + private global::Google.ProtocolBuffers.TestProtos.ImportMessage optionalImportMessage_; public bool HasOptionalImportMessage { get { return hasOptionalImportMessage; } } public global::Google.ProtocolBuffers.TestProtos.ImportMessage OptionalImportMessage { - get { return optionalImportMessage_; } + get { return optionalImportMessage_ ?? global::Google.ProtocolBuffers.TestProtos.ImportMessage.DefaultInstance; } } public const int OptionalNestedEnumFieldNumber = 21; @@ -3271,6 +3283,34 @@ namespace Google.ProtocolBuffers.TestProtos { public static TestAllTypes ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private TestAllTypes MakeReadOnly() { + repeatedInt32_.MakeReadOnly(); + repeatedInt64_.MakeReadOnly(); + repeatedUint32_.MakeReadOnly(); + repeatedUint64_.MakeReadOnly(); + repeatedSint32_.MakeReadOnly(); + repeatedSint64_.MakeReadOnly(); + repeatedFixed32_.MakeReadOnly(); + repeatedFixed64_.MakeReadOnly(); + repeatedSfixed32_.MakeReadOnly(); + repeatedSfixed64_.MakeReadOnly(); + repeatedFloat_.MakeReadOnly(); + repeatedDouble_.MakeReadOnly(); + repeatedBool_.MakeReadOnly(); + repeatedString_.MakeReadOnly(); + repeatedBytes_.MakeReadOnly(); + repeatedGroup_.MakeReadOnly(); + repeatedNestedMessage_.MakeReadOnly(); + repeatedForeignMessage_.MakeReadOnly(); + repeatedImportMessage_.MakeReadOnly(); + repeatedNestedEnum_.MakeReadOnly(); + repeatedForeignEnum_.MakeReadOnly(); + repeatedImportEnum_.MakeReadOnly(); + repeatedStringPiece_.MakeReadOnly(); + repeatedCord_.MakeReadOnly(); + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -3286,22 +3326,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new TestAllTypes(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(TestAllTypes cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - TestAllTypes result; + private bool resultIsReadOnly; + private TestAllTypes result; private TestAllTypes PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { TestAllTypes original = result; result = new TestAllTypes(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -3316,13 +3356,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new TestAllTypes(); - 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); @@ -3338,35 +3378,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestAllTypes BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - result.repeatedInt32_.MakeReadOnly(); - result.repeatedInt64_.MakeReadOnly(); - result.repeatedUint32_.MakeReadOnly(); - result.repeatedUint64_.MakeReadOnly(); - result.repeatedSint32_.MakeReadOnly(); - result.repeatedSint64_.MakeReadOnly(); - result.repeatedFixed32_.MakeReadOnly(); - result.repeatedFixed64_.MakeReadOnly(); - result.repeatedSfixed32_.MakeReadOnly(); - result.repeatedSfixed64_.MakeReadOnly(); - result.repeatedFloat_.MakeReadOnly(); - result.repeatedDouble_.MakeReadOnly(); - result.repeatedBool_.MakeReadOnly(); - result.repeatedString_.MakeReadOnly(); - result.repeatedBytes_.MakeReadOnly(); - result.repeatedGroup_.MakeReadOnly(); - result.repeatedNestedMessage_.MakeReadOnly(); - result.repeatedForeignMessage_.MakeReadOnly(); - result.repeatedImportMessage_.MakeReadOnly(); - result.repeatedNestedEnum_.MakeReadOnly(); - result.repeatedForeignEnum_.MakeReadOnly(); - result.repeatedImportEnum_.MakeReadOnly(); - result.repeatedStringPiece_.MakeReadOnly(); - result.repeatedCord_.MakeReadOnly(); - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -4367,7 +4383,7 @@ namespace Google.ProtocolBuffers.TestProtos { public Builder ClearOptionalGroup() { PrepareBuilder(); result.hasOptionalGroup = false; - result.optionalGroup_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.OptionalGroup.DefaultInstance; + result.optionalGroup_ = null; return this; } @@ -4407,7 +4423,7 @@ namespace Google.ProtocolBuffers.TestProtos { public Builder ClearOptionalNestedMessage() { PrepareBuilder(); result.hasOptionalNestedMessage = false; - result.optionalNestedMessage_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage.DefaultInstance; + result.optionalNestedMessage_ = null; return this; } @@ -4447,7 +4463,7 @@ namespace Google.ProtocolBuffers.TestProtos { public Builder ClearOptionalForeignMessage() { PrepareBuilder(); result.hasOptionalForeignMessage = false; - result.optionalForeignMessage_ = global::Google.ProtocolBuffers.TestProtos.ForeignMessage.DefaultInstance; + result.optionalForeignMessage_ = null; return this; } @@ -4487,7 +4503,7 @@ namespace Google.ProtocolBuffers.TestProtos { public Builder ClearOptionalImportMessage() { PrepareBuilder(); result.hasOptionalImportMessage = false; - result.optionalImportMessage_ = global::Google.ProtocolBuffers.TestProtos.ImportMessage.DefaultInstance; + result.optionalImportMessage_ = null; return this; } @@ -5819,7 +5835,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class TestDeprecatedFields : pb::GeneratedMessage { private TestDeprecatedFields() { } - private static readonly TestDeprecatedFields defaultInstance = new Builder().BuildPartial(); + private static readonly TestDeprecatedFields defaultInstance = new TestDeprecatedFields().MakeReadOnly(); private static readonly string[] _testDeprecatedFieldsFieldNames = new string[] { "deprecated_int32" }; private static readonly uint[] _testDeprecatedFieldsFieldTags = new uint[] { 8 }; public static TestDeprecatedFields DefaultInstance { @@ -5827,7 +5843,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestDeprecatedFields DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override TestDeprecatedFields ThisMessage { @@ -5915,6 +5931,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static TestDeprecatedFields ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private TestDeprecatedFields MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -5930,22 +5950,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new TestDeprecatedFields(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(TestDeprecatedFields cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - TestDeprecatedFields result; + private bool resultIsReadOnly; + private TestDeprecatedFields result; private TestDeprecatedFields PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { TestDeprecatedFields original = result; result = new TestDeprecatedFields(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -5960,13 +5980,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new TestDeprecatedFields(); - 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); @@ -5982,11 +6002,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestDeprecatedFields BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -6095,7 +6115,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class ForeignMessage : pb::GeneratedMessage { private ForeignMessage() { } - private static readonly ForeignMessage defaultInstance = new Builder().BuildPartial(); + private static readonly ForeignMessage defaultInstance = new ForeignMessage().MakeReadOnly(); private static readonly string[] _foreignMessageFieldNames = new string[] { "c" }; private static readonly uint[] _foreignMessageFieldTags = new uint[] { 8 }; public static ForeignMessage DefaultInstance { @@ -6103,7 +6123,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override ForeignMessage DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override ForeignMessage ThisMessage { @@ -6189,6 +6209,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static ForeignMessage ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private ForeignMessage MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -6204,22 +6228,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new ForeignMessage(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(ForeignMessage cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - ForeignMessage result; + private bool resultIsReadOnly; + private ForeignMessage result; private ForeignMessage PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { ForeignMessage original = result; result = new ForeignMessage(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -6234,13 +6258,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new ForeignMessage(); - 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); @@ -6256,11 +6280,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override ForeignMessage BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -6365,7 +6389,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class TestAllExtensions : pb::ExtendableMessage { private TestAllExtensions() { } - private static readonly TestAllExtensions defaultInstance = new Builder().BuildPartial(); + private static readonly TestAllExtensions defaultInstance = new TestAllExtensions().MakeReadOnly(); private static readonly string[] _testAllExtensionsFieldNames = new string[] { }; private static readonly uint[] _testAllExtensionsFieldTags = new uint[] { }; public static TestAllExtensions DefaultInstance { @@ -6373,7 +6397,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestAllExtensions DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override TestAllExtensions ThisMessage { @@ -6447,6 +6471,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static TestAllExtensions ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private TestAllExtensions MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -6462,22 +6490,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new TestAllExtensions(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(TestAllExtensions cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - TestAllExtensions result; + private bool resultIsReadOnly; + private TestAllExtensions result; private TestAllExtensions PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { TestAllExtensions original = result; result = new TestAllExtensions(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -6492,13 +6520,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new TestAllExtensions(); - 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); @@ -6514,11 +6542,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestAllExtensions BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -6597,7 +6625,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class OptionalGroup_extension : pb::GeneratedMessage { private OptionalGroup_extension() { } - private static readonly OptionalGroup_extension defaultInstance = new Builder().BuildPartial(); + private static readonly OptionalGroup_extension defaultInstance = new OptionalGroup_extension().MakeReadOnly(); private static readonly string[] _optionalGroupExtensionFieldNames = new string[] { "a" }; private static readonly uint[] _optionalGroupExtensionFieldTags = new uint[] { 136 }; public static OptionalGroup_extension DefaultInstance { @@ -6605,7 +6633,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override OptionalGroup_extension DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override OptionalGroup_extension ThisMessage { @@ -6691,6 +6719,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static OptionalGroup_extension ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private OptionalGroup_extension MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -6706,22 +6738,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new OptionalGroup_extension(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(OptionalGroup_extension cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - OptionalGroup_extension result; + private bool resultIsReadOnly; + private OptionalGroup_extension result; private OptionalGroup_extension PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { OptionalGroup_extension original = result; result = new OptionalGroup_extension(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -6736,13 +6768,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new OptionalGroup_extension(); - 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); @@ -6758,11 +6790,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override OptionalGroup_extension BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -6867,7 +6899,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class RepeatedGroup_extension : pb::GeneratedMessage { private RepeatedGroup_extension() { } - private static readonly RepeatedGroup_extension defaultInstance = new Builder().BuildPartial(); + private static readonly RepeatedGroup_extension defaultInstance = new RepeatedGroup_extension().MakeReadOnly(); private static readonly string[] _repeatedGroupExtensionFieldNames = new string[] { "a" }; private static readonly uint[] _repeatedGroupExtensionFieldTags = new uint[] { 376 }; public static RepeatedGroup_extension DefaultInstance { @@ -6875,7 +6907,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override RepeatedGroup_extension DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override RepeatedGroup_extension ThisMessage { @@ -6961,6 +6993,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static RepeatedGroup_extension ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private RepeatedGroup_extension MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -6976,22 +7012,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new RepeatedGroup_extension(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(RepeatedGroup_extension cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - RepeatedGroup_extension result; + private bool resultIsReadOnly; + private RepeatedGroup_extension result; private RepeatedGroup_extension PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { RepeatedGroup_extension original = result; result = new RepeatedGroup_extension(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -7006,13 +7042,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new RepeatedGroup_extension(); - 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); @@ -7028,11 +7064,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override RepeatedGroup_extension BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -7137,7 +7173,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class TestNestedExtension : pb::GeneratedMessage { private TestNestedExtension() { } - private static readonly TestNestedExtension defaultInstance = new Builder().BuildPartial(); + private static readonly TestNestedExtension defaultInstance = new TestNestedExtension().MakeReadOnly(); private static readonly string[] _testNestedExtensionFieldNames = new string[] { }; private static readonly uint[] _testNestedExtensionFieldTags = new uint[] { }; public static TestNestedExtension DefaultInstance { @@ -7145,7 +7181,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestNestedExtension DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override TestNestedExtension ThisMessage { @@ -7217,6 +7253,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static TestNestedExtension ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private TestNestedExtension MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -7232,22 +7272,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new TestNestedExtension(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(TestNestedExtension cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - TestNestedExtension result; + private bool resultIsReadOnly; + private TestNestedExtension result; private TestNestedExtension PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { TestNestedExtension original = result; result = new TestNestedExtension(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -7262,13 +7302,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new TestNestedExtension(); - 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); @@ -7284,11 +7324,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestNestedExtension BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -7366,7 +7406,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class TestRequired : pb::GeneratedMessage { private TestRequired() { } - private static readonly TestRequired defaultInstance = new Builder().BuildPartial(); + private static readonly TestRequired defaultInstance = new TestRequired().MakeReadOnly(); private static readonly string[] _testRequiredFieldNames = new string[] { "a", "b", "c", "dummy10", "dummy11", "dummy12", "dummy13", "dummy14", "dummy15", "dummy16", "dummy17", "dummy18", "dummy19", "dummy2", "dummy20", "dummy21", "dummy22", "dummy23", "dummy24", "dummy25", "dummy26", "dummy27", "dummy28", "dummy29", "dummy30", "dummy31", "dummy32", "dummy4", "dummy5", "dummy6", "dummy7", "dummy8", "dummy9" }; private static readonly uint[] _testRequiredFieldTags = new uint[] { 8, 24, 264, 80, 88, 96, 104, 112, 120, 128, 136, 144, 152, 16, 160, 168, 176, 184, 192, 200, 208, 216, 224, 232, 240, 248, 256, 32, 40, 48, 56, 64, 72 }; public static TestRequired DefaultInstance { @@ -7374,7 +7414,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestRequired DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override TestRequired ThisMessage { @@ -7979,6 +8019,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static TestRequired ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private TestRequired MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -7994,22 +8038,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new TestRequired(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(TestRequired cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - TestRequired result; + private bool resultIsReadOnly; + private TestRequired result; private TestRequired PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { TestRequired original = result; result = new TestRequired(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -8024,13 +8068,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new TestRequired(); - 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); @@ -8046,11 +8090,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestRequired BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -9019,7 +9063,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class TestRequiredForeign : pb::GeneratedMessage { private TestRequiredForeign() { } - private static readonly TestRequiredForeign defaultInstance = new Builder().BuildPartial(); + private static readonly TestRequiredForeign defaultInstance = new TestRequiredForeign().MakeReadOnly(); private static readonly string[] _testRequiredForeignFieldNames = new string[] { "dummy", "optional_message", "repeated_message" }; private static readonly uint[] _testRequiredForeignFieldTags = new uint[] { 24, 10, 18 }; public static TestRequiredForeign DefaultInstance { @@ -9027,7 +9071,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestRequiredForeign DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override TestRequiredForeign ThisMessage { @@ -9044,12 +9088,12 @@ namespace Google.ProtocolBuffers.TestProtos { public const int OptionalMessageFieldNumber = 1; private bool hasOptionalMessage; - private global::Google.ProtocolBuffers.TestProtos.TestRequired optionalMessage_ = global::Google.ProtocolBuffers.TestProtos.TestRequired.DefaultInstance; + private global::Google.ProtocolBuffers.TestProtos.TestRequired optionalMessage_; public bool HasOptionalMessage { get { return hasOptionalMessage; } } public global::Google.ProtocolBuffers.TestProtos.TestRequired OptionalMessage { - get { return optionalMessage_; } + get { return optionalMessage_ ?? global::Google.ProtocolBuffers.TestProtos.TestRequired.DefaultInstance; } } public const int RepeatedMessageFieldNumber = 2; @@ -9153,6 +9197,11 @@ namespace Google.ProtocolBuffers.TestProtos { public static TestRequiredForeign ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private TestRequiredForeign MakeReadOnly() { + repeatedMessage_.MakeReadOnly(); + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -9168,22 +9217,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new TestRequiredForeign(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(TestRequiredForeign cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - TestRequiredForeign result; + private bool resultIsReadOnly; + private TestRequiredForeign result; private TestRequiredForeign PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { TestRequiredForeign original = result; result = new TestRequiredForeign(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -9198,13 +9247,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new TestRequiredForeign(); - 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); @@ -9220,12 +9269,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestRequiredForeign 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) { @@ -9355,7 +9403,7 @@ namespace Google.ProtocolBuffers.TestProtos { public Builder ClearOptionalMessage() { PrepareBuilder(); result.hasOptionalMessage = false; - result.optionalMessage_ = global::Google.ProtocolBuffers.TestProtos.TestRequired.DefaultInstance; + result.optionalMessage_ = null; return this; } @@ -9433,7 +9481,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class TestForeignNested : pb::GeneratedMessage { private TestForeignNested() { } - private static readonly TestForeignNested defaultInstance = new Builder().BuildPartial(); + private static readonly TestForeignNested defaultInstance = new TestForeignNested().MakeReadOnly(); private static readonly string[] _testForeignNestedFieldNames = new string[] { "foreign_nested" }; private static readonly uint[] _testForeignNestedFieldTags = new uint[] { 10 }; public static TestForeignNested DefaultInstance { @@ -9441,7 +9489,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestForeignNested DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override TestForeignNested ThisMessage { @@ -9458,12 +9506,12 @@ namespace Google.ProtocolBuffers.TestProtos { public const int ForeignNestedFieldNumber = 1; private bool hasForeignNested; - private global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage foreignNested_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage.DefaultInstance; + private global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage foreignNested_; public bool HasForeignNested { get { return hasForeignNested; } } public global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage ForeignNested { - get { return foreignNested_; } + get { return foreignNested_ ?? global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage.DefaultInstance; } } public override bool IsInitialized { @@ -9527,6 +9575,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static TestForeignNested ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private TestForeignNested MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -9542,22 +9594,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new TestForeignNested(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(TestForeignNested cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - TestForeignNested result; + private bool resultIsReadOnly; + private TestForeignNested result; private TestForeignNested PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { TestForeignNested original = result; result = new TestForeignNested(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -9572,13 +9624,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new TestForeignNested(); - 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); @@ -9594,11 +9646,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestForeignNested BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -9714,7 +9766,7 @@ namespace Google.ProtocolBuffers.TestProtos { public Builder ClearForeignNested() { PrepareBuilder(); result.hasForeignNested = false; - result.foreignNested_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage.DefaultInstance; + result.foreignNested_ = null; return this; } } @@ -9728,7 +9780,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class TestEmptyMessage : pb::GeneratedMessage { private TestEmptyMessage() { } - private static readonly TestEmptyMessage defaultInstance = new Builder().BuildPartial(); + private static readonly TestEmptyMessage defaultInstance = new TestEmptyMessage().MakeReadOnly(); private static readonly string[] _testEmptyMessageFieldNames = new string[] { }; private static readonly uint[] _testEmptyMessageFieldTags = new uint[] { }; public static TestEmptyMessage DefaultInstance { @@ -9736,7 +9788,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestEmptyMessage DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override TestEmptyMessage ThisMessage { @@ -9806,6 +9858,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static TestEmptyMessage ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private TestEmptyMessage MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -9821,22 +9877,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new TestEmptyMessage(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(TestEmptyMessage cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - TestEmptyMessage result; + private bool resultIsReadOnly; + private TestEmptyMessage result; private TestEmptyMessage PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { TestEmptyMessage original = result; result = new TestEmptyMessage(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -9851,13 +9907,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new TestEmptyMessage(); - 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); @@ -9873,11 +9929,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestEmptyMessage BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -9955,7 +10011,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class TestEmptyMessageWithExtensions : pb::ExtendableMessage { private TestEmptyMessageWithExtensions() { } - private static readonly TestEmptyMessageWithExtensions defaultInstance = new Builder().BuildPartial(); + private static readonly TestEmptyMessageWithExtensions defaultInstance = new TestEmptyMessageWithExtensions().MakeReadOnly(); private static readonly string[] _testEmptyMessageWithExtensionsFieldNames = new string[] { }; private static readonly uint[] _testEmptyMessageWithExtensionsFieldTags = new uint[] { }; public static TestEmptyMessageWithExtensions DefaultInstance { @@ -9963,7 +10019,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestEmptyMessageWithExtensions DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override TestEmptyMessageWithExtensions ThisMessage { @@ -10037,6 +10093,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static TestEmptyMessageWithExtensions ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private TestEmptyMessageWithExtensions MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -10052,22 +10112,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new TestEmptyMessageWithExtensions(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(TestEmptyMessageWithExtensions cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - TestEmptyMessageWithExtensions result; + private bool resultIsReadOnly; + private TestEmptyMessageWithExtensions result; private TestEmptyMessageWithExtensions PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { TestEmptyMessageWithExtensions original = result; result = new TestEmptyMessageWithExtensions(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -10082,13 +10142,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new TestEmptyMessageWithExtensions(); - 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); @@ -10104,11 +10164,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestEmptyMessageWithExtensions BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -10187,7 +10247,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class TestMultipleExtensionRanges : pb::ExtendableMessage { private TestMultipleExtensionRanges() { } - private static readonly TestMultipleExtensionRanges defaultInstance = new Builder().BuildPartial(); + private static readonly TestMultipleExtensionRanges defaultInstance = new TestMultipleExtensionRanges().MakeReadOnly(); private static readonly string[] _testMultipleExtensionRangesFieldNames = new string[] { }; private static readonly uint[] _testMultipleExtensionRangesFieldTags = new uint[] { }; public static TestMultipleExtensionRanges DefaultInstance { @@ -10195,7 +10255,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestMultipleExtensionRanges DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override TestMultipleExtensionRanges ThisMessage { @@ -10271,6 +10331,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static TestMultipleExtensionRanges ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private TestMultipleExtensionRanges MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -10286,22 +10350,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new TestMultipleExtensionRanges(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(TestMultipleExtensionRanges cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - TestMultipleExtensionRanges result; + private bool resultIsReadOnly; + private TestMultipleExtensionRanges result; private TestMultipleExtensionRanges PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { TestMultipleExtensionRanges original = result; result = new TestMultipleExtensionRanges(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -10316,13 +10380,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new TestMultipleExtensionRanges(); - 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); @@ -10338,11 +10402,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestMultipleExtensionRanges BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -10421,7 +10485,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class TestReallyLargeTagNumber : pb::GeneratedMessage { private TestReallyLargeTagNumber() { } - private static readonly TestReallyLargeTagNumber defaultInstance = new Builder().BuildPartial(); + private static readonly TestReallyLargeTagNumber defaultInstance = new TestReallyLargeTagNumber().MakeReadOnly(); private static readonly string[] _testReallyLargeTagNumberFieldNames = new string[] { "a", "bb" }; private static readonly uint[] _testReallyLargeTagNumberFieldTags = new uint[] { 8, 2147483640 }; public static TestReallyLargeTagNumber DefaultInstance { @@ -10429,7 +10493,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestReallyLargeTagNumber DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override TestReallyLargeTagNumber ThisMessage { @@ -10531,6 +10595,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static TestReallyLargeTagNumber ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private TestReallyLargeTagNumber MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -10546,22 +10614,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new TestReallyLargeTagNumber(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(TestReallyLargeTagNumber cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - TestReallyLargeTagNumber result; + private bool resultIsReadOnly; + private TestReallyLargeTagNumber result; private TestReallyLargeTagNumber PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { TestReallyLargeTagNumber original = result; result = new TestReallyLargeTagNumber(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -10576,13 +10644,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new TestReallyLargeTagNumber(); - 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); @@ -10598,11 +10666,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestReallyLargeTagNumber BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -10734,7 +10802,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class TestRecursiveMessage : pb::GeneratedMessage { private TestRecursiveMessage() { } - private static readonly TestRecursiveMessage defaultInstance = new Builder().BuildPartial(); + private static readonly TestRecursiveMessage defaultInstance = new TestRecursiveMessage().MakeReadOnly(); private static readonly string[] _testRecursiveMessageFieldNames = new string[] { "a", "i" }; private static readonly uint[] _testRecursiveMessageFieldTags = new uint[] { 10, 16 }; public static TestRecursiveMessage DefaultInstance { @@ -10742,7 +10810,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestRecursiveMessage DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override TestRecursiveMessage ThisMessage { @@ -10759,12 +10827,12 @@ namespace Google.ProtocolBuffers.TestProtos { public const int AFieldNumber = 1; private bool hasA; - private global::Google.ProtocolBuffers.TestProtos.TestRecursiveMessage a_ = global::Google.ProtocolBuffers.TestProtos.TestRecursiveMessage.DefaultInstance; + private global::Google.ProtocolBuffers.TestProtos.TestRecursiveMessage a_; public bool HasA { get { return hasA; } } public global::Google.ProtocolBuffers.TestProtos.TestRecursiveMessage A { - get { return a_; } + get { return a_ ?? global::Google.ProtocolBuffers.TestProtos.TestRecursiveMessage.DefaultInstance; } } public const int IFieldNumber = 2; @@ -10844,6 +10912,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static TestRecursiveMessage ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private TestRecursiveMessage MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -10859,22 +10931,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new TestRecursiveMessage(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(TestRecursiveMessage cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - TestRecursiveMessage result; + private bool resultIsReadOnly; + private TestRecursiveMessage result; private TestRecursiveMessage PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { TestRecursiveMessage original = result; result = new TestRecursiveMessage(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -10889,13 +10961,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new TestRecursiveMessage(); - 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); @@ -10911,11 +10983,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestRecursiveMessage BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -11038,7 +11110,7 @@ namespace Google.ProtocolBuffers.TestProtos { public Builder ClearA() { PrepareBuilder(); result.hasA = false; - result.a_ = global::Google.ProtocolBuffers.TestProtos.TestRecursiveMessage.DefaultInstance; + result.a_ = null; return this; } @@ -11072,7 +11144,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class TestMutualRecursionA : pb::GeneratedMessage { private TestMutualRecursionA() { } - private static readonly TestMutualRecursionA defaultInstance = new Builder().BuildPartial(); + private static readonly TestMutualRecursionA defaultInstance = new TestMutualRecursionA().MakeReadOnly(); private static readonly string[] _testMutualRecursionAFieldNames = new string[] { "bb" }; private static readonly uint[] _testMutualRecursionAFieldTags = new uint[] { 10 }; public static TestMutualRecursionA DefaultInstance { @@ -11080,7 +11152,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestMutualRecursionA DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override TestMutualRecursionA ThisMessage { @@ -11097,12 +11169,12 @@ namespace Google.ProtocolBuffers.TestProtos { public const int BbFieldNumber = 1; private bool hasBb; - private global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionB bb_ = global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionB.DefaultInstance; + private global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionB bb_; public bool HasBb { get { return hasBb; } } public global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionB Bb { - get { return bb_; } + get { return bb_ ?? global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionB.DefaultInstance; } } public override bool IsInitialized { @@ -11166,6 +11238,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static TestMutualRecursionA ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private TestMutualRecursionA MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -11181,22 +11257,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new TestMutualRecursionA(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(TestMutualRecursionA cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - TestMutualRecursionA result; + private bool resultIsReadOnly; + private TestMutualRecursionA result; private TestMutualRecursionA PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { TestMutualRecursionA original = result; result = new TestMutualRecursionA(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -11211,13 +11287,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new TestMutualRecursionA(); - 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); @@ -11233,11 +11309,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestMutualRecursionA BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -11353,7 +11429,7 @@ namespace Google.ProtocolBuffers.TestProtos { public Builder ClearBb() { PrepareBuilder(); result.hasBb = false; - result.bb_ = global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionB.DefaultInstance; + result.bb_ = null; return this; } } @@ -11367,7 +11443,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class TestMutualRecursionB : pb::GeneratedMessage { private TestMutualRecursionB() { } - private static readonly TestMutualRecursionB defaultInstance = new Builder().BuildPartial(); + private static readonly TestMutualRecursionB defaultInstance = new TestMutualRecursionB().MakeReadOnly(); private static readonly string[] _testMutualRecursionBFieldNames = new string[] { "a", "optional_int32" }; private static readonly uint[] _testMutualRecursionBFieldTags = new uint[] { 10, 16 }; public static TestMutualRecursionB DefaultInstance { @@ -11375,7 +11451,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestMutualRecursionB DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override TestMutualRecursionB ThisMessage { @@ -11392,12 +11468,12 @@ namespace Google.ProtocolBuffers.TestProtos { public const int AFieldNumber = 1; private bool hasA; - private global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionA a_ = global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionA.DefaultInstance; + private global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionA a_; public bool HasA { get { return hasA; } } public global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionA A { - get { return a_; } + get { return a_ ?? global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionA.DefaultInstance; } } public const int OptionalInt32FieldNumber = 2; @@ -11477,6 +11553,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static TestMutualRecursionB ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private TestMutualRecursionB MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -11492,22 +11572,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new TestMutualRecursionB(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(TestMutualRecursionB cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - TestMutualRecursionB result; + private bool resultIsReadOnly; + private TestMutualRecursionB result; private TestMutualRecursionB PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { TestMutualRecursionB original = result; result = new TestMutualRecursionB(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -11522,13 +11602,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new TestMutualRecursionB(); - 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); @@ -11544,11 +11624,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestMutualRecursionB BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -11671,7 +11751,7 @@ namespace Google.ProtocolBuffers.TestProtos { public Builder ClearA() { PrepareBuilder(); result.hasA = false; - result.a_ = global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionA.DefaultInstance; + result.a_ = null; return this; } @@ -11705,7 +11785,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class TestDupFieldNumber : pb::GeneratedMessage { private TestDupFieldNumber() { } - private static readonly TestDupFieldNumber defaultInstance = new Builder().BuildPartial(); + private static readonly TestDupFieldNumber defaultInstance = new TestDupFieldNumber().MakeReadOnly(); private static readonly string[] _testDupFieldNumberFieldNames = new string[] { "a", "bar", "foo" }; private static readonly uint[] _testDupFieldNumberFieldTags = new uint[] { 8, 27, 19 }; public static TestDupFieldNumber DefaultInstance { @@ -11713,7 +11793,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestDupFieldNumber DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override TestDupFieldNumber ThisMessage { @@ -11738,7 +11818,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class Foo : pb::GeneratedMessage { private Foo() { } - private static readonly Foo defaultInstance = new Builder().BuildPartial(); + private static readonly Foo defaultInstance = new Foo().MakeReadOnly(); private static readonly string[] _fooFieldNames = new string[] { "a" }; private static readonly uint[] _fooFieldTags = new uint[] { 8 }; public static Foo DefaultInstance { @@ -11746,7 +11826,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Foo DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override Foo ThisMessage { @@ -11832,6 +11912,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static Foo ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private Foo MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -11847,22 +11931,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new Foo(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(Foo cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - Foo result; + private bool resultIsReadOnly; + private Foo result; private Foo PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { Foo original = result; result = new Foo(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -11877,13 +11961,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new Foo(); - 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); @@ -11899,11 +11983,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Foo BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -12008,7 +12092,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class Bar : pb::GeneratedMessage { private Bar() { } - private static readonly Bar defaultInstance = new Builder().BuildPartial(); + private static readonly Bar defaultInstance = new Bar().MakeReadOnly(); private static readonly string[] _barFieldNames = new string[] { "a" }; private static readonly uint[] _barFieldTags = new uint[] { 8 }; public static Bar DefaultInstance { @@ -12016,7 +12100,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Bar DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override Bar ThisMessage { @@ -12102,6 +12186,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static Bar ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private Bar MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -12117,22 +12205,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new Bar(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(Bar cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - Bar result; + private bool resultIsReadOnly; + private Bar result; private Bar PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { Bar original = result; result = new Bar(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -12147,13 +12235,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new Bar(); - 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); @@ -12169,11 +12257,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Bar BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -12288,22 +12376,22 @@ namespace Google.ProtocolBuffers.TestProtos { public const int FooFieldNumber = 2; private bool hasFoo; - private global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Foo foo_ = global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Foo.DefaultInstance; + private global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Foo foo_; public bool HasFoo { get { return hasFoo; } } public global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Foo Foo { - get { return foo_; } + get { return foo_ ?? global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Foo.DefaultInstance; } } public const int BarFieldNumber = 3; private bool hasBar; - private global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Bar bar_ = global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Bar.DefaultInstance; + private global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Bar bar_; public bool HasBar { get { return hasBar; } } public global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Bar Bar { - get { return bar_; } + get { return bar_ ?? global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Bar.DefaultInstance; } } public override bool IsInitialized { @@ -12379,6 +12467,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static TestDupFieldNumber ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private TestDupFieldNumber MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -12394,22 +12486,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new TestDupFieldNumber(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(TestDupFieldNumber cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - TestDupFieldNumber result; + private bool resultIsReadOnly; + private TestDupFieldNumber result; private TestDupFieldNumber PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { TestDupFieldNumber original = result; result = new TestDupFieldNumber(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -12424,13 +12516,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new TestDupFieldNumber(); - 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); @@ -12446,11 +12538,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestDupFieldNumber BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -12605,7 +12697,7 @@ namespace Google.ProtocolBuffers.TestProtos { public Builder ClearFoo() { PrepareBuilder(); result.hasFoo = false; - result.foo_ = global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Foo.DefaultInstance; + result.foo_ = null; return this; } @@ -12645,7 +12737,7 @@ namespace Google.ProtocolBuffers.TestProtos { public Builder ClearBar() { PrepareBuilder(); result.hasBar = false; - result.bar_ = global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Bar.DefaultInstance; + result.bar_ = null; return this; } } @@ -12659,7 +12751,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class TestNestedMessageHasBits : pb::GeneratedMessage { private TestNestedMessageHasBits() { } - private static readonly TestNestedMessageHasBits defaultInstance = new Builder().BuildPartial(); + private static readonly TestNestedMessageHasBits defaultInstance = new TestNestedMessageHasBits().MakeReadOnly(); private static readonly string[] _testNestedMessageHasBitsFieldNames = new string[] { "optional_nested_message" }; private static readonly uint[] _testNestedMessageHasBitsFieldTags = new uint[] { 10 }; public static TestNestedMessageHasBits DefaultInstance { @@ -12667,7 +12759,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestNestedMessageHasBits DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override TestNestedMessageHasBits ThisMessage { @@ -12692,7 +12784,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class NestedMessage : pb::GeneratedMessage { private NestedMessage() { } - private static readonly NestedMessage defaultInstance = new Builder().BuildPartial(); + private static readonly NestedMessage defaultInstance = new NestedMessage().MakeReadOnly(); private static readonly string[] _nestedMessageFieldNames = new string[] { "nestedmessage_repeated_foreignmessage", "nestedmessage_repeated_int32" }; private static readonly uint[] _nestedMessageFieldTags = new uint[] { 18, 8 }; public static NestedMessage DefaultInstance { @@ -12700,7 +12792,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override NestedMessage DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override NestedMessage ThisMessage { @@ -12811,6 +12903,12 @@ namespace Google.ProtocolBuffers.TestProtos { public static NestedMessage ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private NestedMessage MakeReadOnly() { + nestedmessageRepeatedInt32_.MakeReadOnly(); + nestedmessageRepeatedForeignmessage_.MakeReadOnly(); + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -12826,22 +12924,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new NestedMessage(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(NestedMessage cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - NestedMessage result; + private bool resultIsReadOnly; + private NestedMessage result; private NestedMessage PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { NestedMessage original = result; result = new NestedMessage(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -12856,13 +12954,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new NestedMessage(); - 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); @@ -12878,13 +12976,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override NestedMessage BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - result.nestedmessageRepeatedInt32_.MakeReadOnly(); - result.nestedmessageRepeatedForeignmessage_.MakeReadOnly(); - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -13051,12 +13147,12 @@ namespace Google.ProtocolBuffers.TestProtos { public const int OptionalNestedMessageFieldNumber = 1; private bool hasOptionalNestedMessage; - private global::Google.ProtocolBuffers.TestProtos.TestNestedMessageHasBits.Types.NestedMessage optionalNestedMessage_ = global::Google.ProtocolBuffers.TestProtos.TestNestedMessageHasBits.Types.NestedMessage.DefaultInstance; + private global::Google.ProtocolBuffers.TestProtos.TestNestedMessageHasBits.Types.NestedMessage optionalNestedMessage_; public bool HasOptionalNestedMessage { get { return hasOptionalNestedMessage; } } public global::Google.ProtocolBuffers.TestProtos.TestNestedMessageHasBits.Types.NestedMessage OptionalNestedMessage { - get { return optionalNestedMessage_; } + get { return optionalNestedMessage_ ?? global::Google.ProtocolBuffers.TestProtos.TestNestedMessageHasBits.Types.NestedMessage.DefaultInstance; } } public override bool IsInitialized { @@ -13120,6 +13216,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static TestNestedMessageHasBits ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private TestNestedMessageHasBits MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -13135,22 +13235,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new TestNestedMessageHasBits(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(TestNestedMessageHasBits cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - TestNestedMessageHasBits result; + private bool resultIsReadOnly; + private TestNestedMessageHasBits result; private TestNestedMessageHasBits PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { TestNestedMessageHasBits original = result; result = new TestNestedMessageHasBits(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -13165,13 +13265,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new TestNestedMessageHasBits(); - 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); @@ -13187,11 +13287,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestNestedMessageHasBits BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -13307,7 +13407,7 @@ namespace Google.ProtocolBuffers.TestProtos { public Builder ClearOptionalNestedMessage() { PrepareBuilder(); result.hasOptionalNestedMessage = false; - result.optionalNestedMessage_ = global::Google.ProtocolBuffers.TestProtos.TestNestedMessageHasBits.Types.NestedMessage.DefaultInstance; + result.optionalNestedMessage_ = null; return this; } } @@ -13321,7 +13421,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class TestCamelCaseFieldNames : pb::GeneratedMessage { private TestCamelCaseFieldNames() { } - private static readonly TestCamelCaseFieldNames defaultInstance = new Builder().BuildPartial(); + private static readonly TestCamelCaseFieldNames defaultInstance = new TestCamelCaseFieldNames().MakeReadOnly(); private static readonly string[] _testCamelCaseFieldNamesFieldNames = new string[] { "CordField", "EnumField", "MessageField", "PrimitiveField", "RepeatedCordField", "RepeatedEnumField", "RepeatedMessageField", "RepeatedPrimitiveField", "RepeatedStringField", "RepeatedStringPieceField", "StringField", "StringPieceField" }; private static readonly uint[] _testCamelCaseFieldNamesFieldTags = new uint[] { 50, 24, 34, 8, 98, 72, 82, 56, 66, 90, 18, 42 }; public static TestCamelCaseFieldNames DefaultInstance { @@ -13329,7 +13429,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestCamelCaseFieldNames DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override TestCamelCaseFieldNames ThisMessage { @@ -13376,12 +13476,12 @@ namespace Google.ProtocolBuffers.TestProtos { public const int MessageFieldFieldNumber = 4; private bool hasMessageField; - private global::Google.ProtocolBuffers.TestProtos.ForeignMessage messageField_ = global::Google.ProtocolBuffers.TestProtos.ForeignMessage.DefaultInstance; + private global::Google.ProtocolBuffers.TestProtos.ForeignMessage messageField_; public bool HasMessageField { get { return hasMessageField; } } public global::Google.ProtocolBuffers.TestProtos.ForeignMessage MessageField { - get { return messageField_; } + get { return messageField_ ?? global::Google.ProtocolBuffers.TestProtos.ForeignMessage.DefaultInstance; } } public const int StringPieceFieldFieldNumber = 5; @@ -13630,6 +13730,16 @@ namespace Google.ProtocolBuffers.TestProtos { public static TestCamelCaseFieldNames ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private TestCamelCaseFieldNames MakeReadOnly() { + repeatedPrimitiveField_.MakeReadOnly(); + repeatedStringField_.MakeReadOnly(); + repeatedEnumField_.MakeReadOnly(); + repeatedMessageField_.MakeReadOnly(); + repeatedStringPieceField_.MakeReadOnly(); + repeatedCordField_.MakeReadOnly(); + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -13645,22 +13755,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new TestCamelCaseFieldNames(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(TestCamelCaseFieldNames cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - TestCamelCaseFieldNames result; + private bool resultIsReadOnly; + private TestCamelCaseFieldNames result; private TestCamelCaseFieldNames PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { TestCamelCaseFieldNames original = result; result = new TestCamelCaseFieldNames(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -13675,13 +13785,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new TestCamelCaseFieldNames(); - 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); @@ -13697,17 +13807,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestCamelCaseFieldNames BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - result.repeatedPrimitiveField_.MakeReadOnly(); - result.repeatedStringField_.MakeReadOnly(); - result.repeatedEnumField_.MakeReadOnly(); - result.repeatedMessageField_.MakeReadOnly(); - result.repeatedStringPieceField_.MakeReadOnly(); - result.repeatedCordField_.MakeReadOnly(); - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -13980,7 +14084,7 @@ namespace Google.ProtocolBuffers.TestProtos { public Builder ClearMessageField() { PrepareBuilder(); result.hasMessageField = false; - result.messageField_ = global::Google.ProtocolBuffers.TestProtos.ForeignMessage.DefaultInstance; + result.messageField_ = null; return this; } @@ -14236,7 +14340,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class TestFieldOrderings : pb::ExtendableMessage { private TestFieldOrderings() { } - private static readonly TestFieldOrderings defaultInstance = new Builder().BuildPartial(); + private static readonly TestFieldOrderings defaultInstance = new TestFieldOrderings().MakeReadOnly(); private static readonly string[] _testFieldOrderingsFieldNames = new string[] { "my_float", "my_int", "my_string" }; private static readonly uint[] _testFieldOrderingsFieldTags = new uint[] { 813, 8, 90 }; public static TestFieldOrderings DefaultInstance { @@ -14244,7 +14348,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestFieldOrderings DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override TestFieldOrderings ThisMessage { @@ -14367,6 +14471,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static TestFieldOrderings ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private TestFieldOrderings MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -14382,22 +14490,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new TestFieldOrderings(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(TestFieldOrderings cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - TestFieldOrderings result; + private bool resultIsReadOnly; + private TestFieldOrderings result; private TestFieldOrderings PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { TestFieldOrderings original = result; result = new TestFieldOrderings(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -14412,13 +14520,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new TestFieldOrderings(); - 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); @@ -14434,11 +14542,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestFieldOrderings BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -14599,7 +14707,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class TestExtremeDefaultValues : pb::GeneratedMessage { private TestExtremeDefaultValues() { } - private static readonly TestExtremeDefaultValues defaultInstance = new Builder().BuildPartial(); + private static readonly TestExtremeDefaultValues defaultInstance = new TestExtremeDefaultValues().MakeReadOnly(); private static readonly string[] _testExtremeDefaultValuesFieldNames = new string[] { "escaped_bytes", "inf_double", "inf_float", "large_float", "large_uint32", "large_uint64", "nan_double", "nan_float", "neg_inf_double", "neg_inf_float", "negative_float", "negative_one_float", "one_float", "small_float", "small_int32", "small_int64", "small_negative_float", "utf8_string", "zero_float" }; private static readonly uint[] _testExtremeDefaultValuesFieldTags = new uint[] { 10, 113, 141, 101, 16, 24, 129, 157, 121, 149, 93, 85, 69, 77, 32, 40, 109, 50, 61 }; public static TestExtremeDefaultValues DefaultInstance { @@ -14607,7 +14715,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestExtremeDefaultValues DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override TestExtremeDefaultValues ThisMessage { @@ -14983,6 +15091,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static TestExtremeDefaultValues ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private TestExtremeDefaultValues MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -14998,22 +15110,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new TestExtremeDefaultValues(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(TestExtremeDefaultValues cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - TestExtremeDefaultValues result; + private bool resultIsReadOnly; + private TestExtremeDefaultValues result; private TestExtremeDefaultValues PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { TestExtremeDefaultValues original = result; result = new TestExtremeDefaultValues(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -15028,13 +15140,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new TestExtremeDefaultValues(); - 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); @@ -15050,11 +15162,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestExtremeDefaultValues BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -15651,7 +15763,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class OneString : pb::GeneratedMessage { private OneString() { } - private static readonly OneString defaultInstance = new Builder().BuildPartial(); + private static readonly OneString defaultInstance = new OneString().MakeReadOnly(); private static readonly string[] _oneStringFieldNames = new string[] { "data" }; private static readonly uint[] _oneStringFieldTags = new uint[] { 10 }; public static OneString DefaultInstance { @@ -15659,7 +15771,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override OneString DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override OneString ThisMessage { @@ -15745,6 +15857,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static OneString ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private OneString MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -15760,22 +15876,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new OneString(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(OneString cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - OneString result; + private bool resultIsReadOnly; + private OneString result; private OneString PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { OneString original = result; result = new OneString(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -15790,13 +15906,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new OneString(); - 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); @@ -15812,11 +15928,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override OneString BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -15922,7 +16038,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class OneBytes : pb::GeneratedMessage { private OneBytes() { } - private static readonly OneBytes defaultInstance = new Builder().BuildPartial(); + private static readonly OneBytes defaultInstance = new OneBytes().MakeReadOnly(); private static readonly string[] _oneBytesFieldNames = new string[] { "data" }; private static readonly uint[] _oneBytesFieldTags = new uint[] { 10 }; public static OneBytes DefaultInstance { @@ -15930,7 +16046,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override OneBytes DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override OneBytes ThisMessage { @@ -16016,6 +16132,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static OneBytes ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private OneBytes MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -16031,22 +16151,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new OneBytes(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(OneBytes cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - OneBytes result; + private bool resultIsReadOnly; + private OneBytes result; private OneBytes PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { OneBytes original = result; result = new OneBytes(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -16061,13 +16181,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new OneBytes(); - 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); @@ -16083,11 +16203,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override OneBytes BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -16193,7 +16313,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class TestPackedTypes : pb::GeneratedMessage { private TestPackedTypes() { } - private static readonly TestPackedTypes defaultInstance = new Builder().BuildPartial(); + private static readonly TestPackedTypes defaultInstance = new TestPackedTypes().MakeReadOnly(); private static readonly string[] _testPackedTypesFieldNames = new string[] { "packed_bool", "packed_double", "packed_enum", "packed_fixed32", "packed_fixed64", "packed_float", "packed_int32", "packed_int64", "packed_sfixed32", "packed_sfixed64", "packed_sint32", "packed_sint64", "packed_uint32", "packed_uint64" }; private static readonly uint[] _testPackedTypesFieldTags = new uint[] { 818, 810, 826, 770, 778, 802, 722, 730, 786, 794, 754, 762, 738, 746 }; public static TestPackedTypes DefaultInstance { @@ -16201,7 +16321,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestPackedTypes DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override TestPackedTypes ThisMessage { @@ -16644,6 +16764,24 @@ namespace Google.ProtocolBuffers.TestProtos { public static TestPackedTypes ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private TestPackedTypes MakeReadOnly() { + packedInt32_.MakeReadOnly(); + packedInt64_.MakeReadOnly(); + packedUint32_.MakeReadOnly(); + packedUint64_.MakeReadOnly(); + packedSint32_.MakeReadOnly(); + packedSint64_.MakeReadOnly(); + packedFixed32_.MakeReadOnly(); + packedFixed64_.MakeReadOnly(); + packedSfixed32_.MakeReadOnly(); + packedSfixed64_.MakeReadOnly(); + packedFloat_.MakeReadOnly(); + packedDouble_.MakeReadOnly(); + packedBool_.MakeReadOnly(); + packedEnum_.MakeReadOnly(); + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -16659,22 +16797,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new TestPackedTypes(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(TestPackedTypes cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - TestPackedTypes result; + private bool resultIsReadOnly; + private TestPackedTypes result; private TestPackedTypes PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { TestPackedTypes original = result; result = new TestPackedTypes(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -16689,13 +16827,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new TestPackedTypes(); - 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); @@ -16711,25 +16849,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestPackedTypes BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - result.packedInt32_.MakeReadOnly(); - result.packedInt64_.MakeReadOnly(); - result.packedUint32_.MakeReadOnly(); - result.packedUint64_.MakeReadOnly(); - result.packedSint32_.MakeReadOnly(); - result.packedSint64_.MakeReadOnly(); - result.packedFixed32_.MakeReadOnly(); - result.packedFixed64_.MakeReadOnly(); - result.packedSfixed32_.MakeReadOnly(); - result.packedSfixed64_.MakeReadOnly(); - result.packedFloat_.MakeReadOnly(); - result.packedDouble_.MakeReadOnly(); - result.packedBool_.MakeReadOnly(); - result.packedEnum_.MakeReadOnly(); - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -17368,7 +17492,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class TestUnpackedTypes : pb::GeneratedMessage { private TestUnpackedTypes() { } - private static readonly TestUnpackedTypes defaultInstance = new Builder().BuildPartial(); + private static readonly TestUnpackedTypes defaultInstance = new TestUnpackedTypes().MakeReadOnly(); private static readonly string[] _testUnpackedTypesFieldNames = new string[] { "unpacked_bool", "unpacked_double", "unpacked_enum", "unpacked_fixed32", "unpacked_fixed64", "unpacked_float", "unpacked_int32", "unpacked_int64", "unpacked_sfixed32", "unpacked_sfixed64", "unpacked_sint32", "unpacked_sint64", "unpacked_uint32", "unpacked_uint64" }; private static readonly uint[] _testUnpackedTypesFieldTags = new uint[] { 816, 809, 824, 773, 777, 805, 720, 728, 789, 793, 752, 760, 736, 744 }; public static TestUnpackedTypes DefaultInstance { @@ -17376,7 +17500,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestUnpackedTypes DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override TestUnpackedTypes ThisMessage { @@ -17764,6 +17888,24 @@ namespace Google.ProtocolBuffers.TestProtos { public static TestUnpackedTypes ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private TestUnpackedTypes MakeReadOnly() { + unpackedInt32_.MakeReadOnly(); + unpackedInt64_.MakeReadOnly(); + unpackedUint32_.MakeReadOnly(); + unpackedUint64_.MakeReadOnly(); + unpackedSint32_.MakeReadOnly(); + unpackedSint64_.MakeReadOnly(); + unpackedFixed32_.MakeReadOnly(); + unpackedFixed64_.MakeReadOnly(); + unpackedSfixed32_.MakeReadOnly(); + unpackedSfixed64_.MakeReadOnly(); + unpackedFloat_.MakeReadOnly(); + unpackedDouble_.MakeReadOnly(); + unpackedBool_.MakeReadOnly(); + unpackedEnum_.MakeReadOnly(); + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -17779,22 +17921,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new TestUnpackedTypes(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(TestUnpackedTypes cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - TestUnpackedTypes result; + private bool resultIsReadOnly; + private TestUnpackedTypes result; private TestUnpackedTypes PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { TestUnpackedTypes original = result; result = new TestUnpackedTypes(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -17809,13 +17951,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new TestUnpackedTypes(); - 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); @@ -17831,25 +17973,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestUnpackedTypes BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - result.unpackedInt32_.MakeReadOnly(); - result.unpackedInt64_.MakeReadOnly(); - result.unpackedUint32_.MakeReadOnly(); - result.unpackedUint64_.MakeReadOnly(); - result.unpackedSint32_.MakeReadOnly(); - result.unpackedSint64_.MakeReadOnly(); - result.unpackedFixed32_.MakeReadOnly(); - result.unpackedFixed64_.MakeReadOnly(); - result.unpackedSfixed32_.MakeReadOnly(); - result.unpackedSfixed64_.MakeReadOnly(); - result.unpackedFloat_.MakeReadOnly(); - result.unpackedDouble_.MakeReadOnly(); - result.unpackedBool_.MakeReadOnly(); - result.unpackedEnum_.MakeReadOnly(); - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -18488,7 +18616,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class TestPackedExtensions : pb::ExtendableMessage { private TestPackedExtensions() { } - private static readonly TestPackedExtensions defaultInstance = new Builder().BuildPartial(); + private static readonly TestPackedExtensions defaultInstance = new TestPackedExtensions().MakeReadOnly(); private static readonly string[] _testPackedExtensionsFieldNames = new string[] { }; private static readonly uint[] _testPackedExtensionsFieldTags = new uint[] { }; public static TestPackedExtensions DefaultInstance { @@ -18496,7 +18624,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestPackedExtensions DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override TestPackedExtensions ThisMessage { @@ -18570,6 +18698,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static TestPackedExtensions ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private TestPackedExtensions MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -18585,22 +18717,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new TestPackedExtensions(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(TestPackedExtensions cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - TestPackedExtensions result; + private bool resultIsReadOnly; + private TestPackedExtensions result; private TestPackedExtensions PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { TestPackedExtensions original = result; result = new TestPackedExtensions(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -18615,13 +18747,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new TestPackedExtensions(); - 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); @@ -18637,11 +18769,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestPackedExtensions BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -18720,7 +18852,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class TestUnpackedExtensions : pb::ExtendableMessage { private TestUnpackedExtensions() { } - private static readonly TestUnpackedExtensions defaultInstance = new Builder().BuildPartial(); + private static readonly TestUnpackedExtensions defaultInstance = new TestUnpackedExtensions().MakeReadOnly(); private static readonly string[] _testUnpackedExtensionsFieldNames = new string[] { }; private static readonly uint[] _testUnpackedExtensionsFieldTags = new uint[] { }; public static TestUnpackedExtensions DefaultInstance { @@ -18728,7 +18860,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestUnpackedExtensions DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override TestUnpackedExtensions ThisMessage { @@ -18802,6 +18934,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static TestUnpackedExtensions ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private TestUnpackedExtensions MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -18817,22 +18953,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new TestUnpackedExtensions(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(TestUnpackedExtensions cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - TestUnpackedExtensions result; + private bool resultIsReadOnly; + private TestUnpackedExtensions result; private TestUnpackedExtensions PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { TestUnpackedExtensions original = result; result = new TestUnpackedExtensions(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -18847,13 +18983,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new TestUnpackedExtensions(); - 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); @@ -18869,11 +19005,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestUnpackedExtensions BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -18952,7 +19088,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class TestDynamicExtensions : pb::GeneratedMessage { private TestDynamicExtensions() { } - private static readonly TestDynamicExtensions defaultInstance = new Builder().BuildPartial(); + private static readonly TestDynamicExtensions defaultInstance = new TestDynamicExtensions().MakeReadOnly(); private static readonly string[] _testDynamicExtensionsFieldNames = new string[] { "dynamic_enum_extension", "dynamic_message_extension", "enum_extension", "message_extension", "packed_extension", "repeated_extension", "scalar_extension" }; private static readonly uint[] _testDynamicExtensionsFieldTags = new uint[] { 16016, 16034, 16008, 16026, 16050, 16042, 16005 }; public static TestDynamicExtensions DefaultInstance { @@ -18960,7 +19096,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestDynamicExtensions DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override TestDynamicExtensions ThisMessage { @@ -18993,7 +19129,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class DynamicMessageType : pb::GeneratedMessage { private DynamicMessageType() { } - private static readonly DynamicMessageType defaultInstance = new Builder().BuildPartial(); + private static readonly DynamicMessageType defaultInstance = new DynamicMessageType().MakeReadOnly(); private static readonly string[] _dynamicMessageTypeFieldNames = new string[] { "dynamic_field" }; private static readonly uint[] _dynamicMessageTypeFieldTags = new uint[] { 16800 }; public static DynamicMessageType DefaultInstance { @@ -19001,7 +19137,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override DynamicMessageType DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override DynamicMessageType ThisMessage { @@ -19087,6 +19223,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static DynamicMessageType ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private DynamicMessageType MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -19102,22 +19242,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new DynamicMessageType(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(DynamicMessageType cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - DynamicMessageType result; + private bool resultIsReadOnly; + private DynamicMessageType result; private DynamicMessageType PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { DynamicMessageType original = result; result = new DynamicMessageType(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -19132,13 +19272,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new DynamicMessageType(); - 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); @@ -19154,11 +19294,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override DynamicMessageType BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -19294,22 +19434,22 @@ namespace Google.ProtocolBuffers.TestProtos { public const int MessageExtensionFieldNumber = 2003; private bool hasMessageExtension; - private global::Google.ProtocolBuffers.TestProtos.ForeignMessage messageExtension_ = global::Google.ProtocolBuffers.TestProtos.ForeignMessage.DefaultInstance; + private global::Google.ProtocolBuffers.TestProtos.ForeignMessage messageExtension_; public bool HasMessageExtension { get { return hasMessageExtension; } } public global::Google.ProtocolBuffers.TestProtos.ForeignMessage MessageExtension { - get { return messageExtension_; } + get { return messageExtension_ ?? global::Google.ProtocolBuffers.TestProtos.ForeignMessage.DefaultInstance; } } public const int DynamicMessageExtensionFieldNumber = 2004; private bool hasDynamicMessageExtension; - private global::Google.ProtocolBuffers.TestProtos.TestDynamicExtensions.Types.DynamicMessageType dynamicMessageExtension_ = global::Google.ProtocolBuffers.TestProtos.TestDynamicExtensions.Types.DynamicMessageType.DefaultInstance; + private global::Google.ProtocolBuffers.TestProtos.TestDynamicExtensions.Types.DynamicMessageType dynamicMessageExtension_; public bool HasDynamicMessageExtension { get { return hasDynamicMessageExtension; } } public global::Google.ProtocolBuffers.TestProtos.TestDynamicExtensions.Types.DynamicMessageType DynamicMessageExtension { - get { return dynamicMessageExtension_; } + get { return dynamicMessageExtension_ ?? global::Google.ProtocolBuffers.TestProtos.TestDynamicExtensions.Types.DynamicMessageType.DefaultInstance; } } public const int RepeatedExtensionFieldNumber = 2005; @@ -19447,6 +19587,12 @@ namespace Google.ProtocolBuffers.TestProtos { public static TestDynamicExtensions ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private TestDynamicExtensions MakeReadOnly() { + repeatedExtension_.MakeReadOnly(); + packedExtension_.MakeReadOnly(); + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -19462,22 +19608,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new TestDynamicExtensions(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(TestDynamicExtensions cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - TestDynamicExtensions result; + private bool resultIsReadOnly; + private TestDynamicExtensions result; private TestDynamicExtensions PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { TestDynamicExtensions original = result; result = new TestDynamicExtensions(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -19492,13 +19638,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new TestDynamicExtensions(); - 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); @@ -19514,13 +19660,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestDynamicExtensions BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - result.repeatedExtension_.MakeReadOnly(); - result.packedExtension_.MakeReadOnly(); - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -19762,7 +19906,7 @@ namespace Google.ProtocolBuffers.TestProtos { public Builder ClearMessageExtension() { PrepareBuilder(); result.hasMessageExtension = false; - result.messageExtension_ = global::Google.ProtocolBuffers.TestProtos.ForeignMessage.DefaultInstance; + result.messageExtension_ = null; return this; } @@ -19802,7 +19946,7 @@ namespace Google.ProtocolBuffers.TestProtos { public Builder ClearDynamicMessageExtension() { PrepareBuilder(); result.hasDynamicMessageExtension = false; - result.dynamicMessageExtension_ = global::Google.ProtocolBuffers.TestProtos.TestDynamicExtensions.Types.DynamicMessageType.DefaultInstance; + result.dynamicMessageExtension_ = null; return this; } @@ -19878,7 +20022,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class TestRepeatedScalarDifferentTagSizes : pb::GeneratedMessage { private TestRepeatedScalarDifferentTagSizes() { } - private static readonly TestRepeatedScalarDifferentTagSizes defaultInstance = new Builder().BuildPartial(); + private static readonly TestRepeatedScalarDifferentTagSizes defaultInstance = new TestRepeatedScalarDifferentTagSizes().MakeReadOnly(); private static readonly string[] _testRepeatedScalarDifferentTagSizesFieldNames = new string[] { "repeated_fixed32", "repeated_fixed64", "repeated_float", "repeated_int32", "repeated_int64", "repeated_uint64" }; private static readonly uint[] _testRepeatedScalarDifferentTagSizesFieldTags = new uint[] { 101, 16369, 2097141, 104, 16376, 2097144 }; public static TestRepeatedScalarDifferentTagSizes DefaultInstance { @@ -19886,7 +20030,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestRepeatedScalarDifferentTagSizes DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override TestRepeatedScalarDifferentTagSizes ThisMessage { @@ -20094,6 +20238,16 @@ namespace Google.ProtocolBuffers.TestProtos { public static TestRepeatedScalarDifferentTagSizes ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private TestRepeatedScalarDifferentTagSizes MakeReadOnly() { + repeatedFixed32_.MakeReadOnly(); + repeatedInt32_.MakeReadOnly(); + repeatedFixed64_.MakeReadOnly(); + repeatedInt64_.MakeReadOnly(); + repeatedFloat_.MakeReadOnly(); + repeatedUint64_.MakeReadOnly(); + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -20109,22 +20263,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new TestRepeatedScalarDifferentTagSizes(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(TestRepeatedScalarDifferentTagSizes cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - TestRepeatedScalarDifferentTagSizes result; + private bool resultIsReadOnly; + private TestRepeatedScalarDifferentTagSizes result; private TestRepeatedScalarDifferentTagSizes PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { TestRepeatedScalarDifferentTagSizes original = result; result = new TestRepeatedScalarDifferentTagSizes(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -20139,13 +20293,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new TestRepeatedScalarDifferentTagSizes(); - 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); @@ -20161,17 +20315,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override TestRepeatedScalarDifferentTagSizes BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - result.repeatedFixed32_.MakeReadOnly(); - result.repeatedInt32_.MakeReadOnly(); - result.repeatedFixed64_.MakeReadOnly(); - result.repeatedInt64_.MakeReadOnly(); - result.repeatedFloat_.MakeReadOnly(); - result.repeatedUint64_.MakeReadOnly(); - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -20492,7 +20640,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class FooRequest : pb::GeneratedMessage { private FooRequest() { } - private static readonly FooRequest defaultInstance = new Builder().BuildPartial(); + private static readonly FooRequest defaultInstance = new FooRequest().MakeReadOnly(); private static readonly string[] _fooRequestFieldNames = new string[] { }; private static readonly uint[] _fooRequestFieldTags = new uint[] { }; public static FooRequest DefaultInstance { @@ -20500,7 +20648,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override FooRequest DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override FooRequest ThisMessage { @@ -20570,6 +20718,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static FooRequest ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private FooRequest MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -20585,22 +20737,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new FooRequest(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(FooRequest cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - FooRequest result; + private bool resultIsReadOnly; + private FooRequest result; private FooRequest PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { FooRequest original = result; result = new FooRequest(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -20615,13 +20767,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new FooRequest(); - 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); @@ -20637,11 +20789,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override FooRequest BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -20719,7 +20871,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class FooResponse : pb::GeneratedMessage { private FooResponse() { } - private static readonly FooResponse defaultInstance = new Builder().BuildPartial(); + private static readonly FooResponse defaultInstance = new FooResponse().MakeReadOnly(); private static readonly string[] _fooResponseFieldNames = new string[] { }; private static readonly uint[] _fooResponseFieldTags = new uint[] { }; public static FooResponse DefaultInstance { @@ -20727,7 +20879,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override FooResponse DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override FooResponse ThisMessage { @@ -20797,6 +20949,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static FooResponse ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private FooResponse MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -20812,22 +20968,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new FooResponse(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(FooResponse cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - FooResponse result; + private bool resultIsReadOnly; + private FooResponse result; private FooResponse PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { FooResponse original = result; result = new FooResponse(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -20842,13 +20998,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new FooResponse(); - 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); @@ -20864,11 +21020,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override FooResponse BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -20946,7 +21102,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class BarRequest : pb::GeneratedMessage { private BarRequest() { } - private static readonly BarRequest defaultInstance = new Builder().BuildPartial(); + private static readonly BarRequest defaultInstance = new BarRequest().MakeReadOnly(); private static readonly string[] _barRequestFieldNames = new string[] { }; private static readonly uint[] _barRequestFieldTags = new uint[] { }; public static BarRequest DefaultInstance { @@ -20954,7 +21110,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override BarRequest DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override BarRequest ThisMessage { @@ -21024,6 +21180,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static BarRequest ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private BarRequest MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -21039,22 +21199,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new BarRequest(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(BarRequest cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - BarRequest result; + private bool resultIsReadOnly; + private BarRequest result; private BarRequest PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { BarRequest original = result; result = new BarRequest(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -21069,13 +21229,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new BarRequest(); - 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); @@ -21091,11 +21251,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override BarRequest BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) { @@ -21173,7 +21333,7 @@ namespace Google.ProtocolBuffers.TestProtos { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.3.0.277")] public sealed partial class BarResponse : pb::GeneratedMessage { private BarResponse() { } - private static readonly BarResponse defaultInstance = new Builder().BuildPartial(); + private static readonly BarResponse defaultInstance = new BarResponse().MakeReadOnly(); private static readonly string[] _barResponseFieldNames = new string[] { }; private static readonly uint[] _barResponseFieldTags = new uint[] { }; public static BarResponse DefaultInstance { @@ -21181,7 +21341,7 @@ namespace Google.ProtocolBuffers.TestProtos { } public override BarResponse DefaultInstanceForType { - get { return defaultInstance; } + get { return DefaultInstance; } } protected override BarResponse ThisMessage { @@ -21251,6 +21411,10 @@ namespace Google.ProtocolBuffers.TestProtos { public static BarResponse ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } + private BarResponse MakeReadOnly() { + return this; + } + public static Builder CreateBuilder() { return new Builder(); } public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } @@ -21266,22 +21430,22 @@ namespace Google.ProtocolBuffers.TestProtos { get { return this; } } public Builder() { - result = DefaultInstance ?? new BarResponse(); - builderIsReadOnly = result == DefaultInstance; + result = DefaultInstance; + resultIsReadOnly = true; } internal Builder(BarResponse cloneFrom) { result = cloneFrom; - builderIsReadOnly = true; + resultIsReadOnly = true; } - bool builderIsReadOnly; - BarResponse result; + private bool resultIsReadOnly; + private BarResponse result; private BarResponse PrepareBuilder() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { BarResponse original = result; result = new BarResponse(); - builderIsReadOnly = false; + resultIsReadOnly = false; MergeFrom(original); } return result; @@ -21296,13 +21460,13 @@ namespace Google.ProtocolBuffers.TestProtos { } public override Builder Clear() { - result = DefaultInstance ?? new BarResponse(); - 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); @@ -21318,11 +21482,11 @@ namespace Google.ProtocolBuffers.TestProtos { } public override BarResponse BuildPartial() { - if (builderIsReadOnly) { + if (resultIsReadOnly) { return result; } - builderIsReadOnly = true; - return result; + resultIsReadOnly = true; + return result.MakeReadOnly(); } public override Builder MergeFrom(pb::IMessage other) {