|  | @@ -194,7 +194,7 @@ namespace Google.Protobuf.Reflection {
 | 
	
		
			
				|  |  |    /// The protocol compiler can output a FileDescriptorSet containing the .proto
 | 
	
		
			
				|  |  |    /// files it parses.
 | 
	
		
			
				|  |  |    /// </summary>
 | 
	
		
			
				|  |  | -  public sealed partial class FileDescriptorSet : pb::IMessage<FileDescriptorSet> {
 | 
	
		
			
				|  |  | +  public sealed partial class FileDescriptorSet : pb::IMessage<FileDescriptorSet>, pb::IBufferMessage {
 | 
	
		
			
				|  |  |      private static readonly pb::MessageParser<FileDescriptorSet> _parser = new pb::MessageParser<FileDescriptorSet>(() => new FileDescriptorSet());
 | 
	
		
			
				|  |  |      private pb::UnknownFieldSet _unknownFields;
 | 
	
		
			
				|  |  |      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
 | 
	
	
		
			
				|  | @@ -299,14 +299,19 @@ namespace Google.Protobuf.Reflection {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
 | 
	
		
			
				|  |  |      public void MergeFrom(pb::CodedInputStream input) {
 | 
	
		
			
				|  |  | +      input.ReadRawMessage(this);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
 | 
	
		
			
				|  |  | +    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
 | 
	
		
			
				|  |  |        uint tag;
 | 
	
		
			
				|  |  |        while ((tag = input.ReadTag()) != 0) {
 | 
	
		
			
				|  |  |          switch(tag) {
 | 
	
		
			
				|  |  |            default:
 | 
	
		
			
				|  |  | -            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
 | 
	
		
			
				|  |  | +            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
 | 
	
		
			
				|  |  |              break;
 | 
	
		
			
				|  |  |            case 10: {
 | 
	
		
			
				|  |  | -            file_.AddEntriesFrom(input, _repeated_file_codec);
 | 
	
		
			
				|  |  | +            file_.AddEntriesFrom(ref input, _repeated_file_codec);
 | 
	
		
			
				|  |  |              break;
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  |          }
 | 
	
	
		
			
				|  | @@ -318,7 +323,7 @@ namespace Google.Protobuf.Reflection {
 | 
	
		
			
				|  |  |    /// <summary>
 | 
	
		
			
				|  |  |    /// Describes a complete .proto file.
 | 
	
		
			
				|  |  |    /// </summary>
 | 
	
		
			
				|  |  | -  public sealed partial class FileDescriptorProto : pb::IMessage<FileDescriptorProto> {
 | 
	
		
			
				|  |  | +  public sealed partial class FileDescriptorProto : pb::IMessage<FileDescriptorProto>, pb::IBufferMessage {
 | 
	
		
			
				|  |  |      private static readonly pb::MessageParser<FileDescriptorProto> _parser = new pb::MessageParser<FileDescriptorProto>(() => new FileDescriptorProto());
 | 
	
		
			
				|  |  |      private pb::UnknownFieldSet _unknownFields;
 | 
	
		
			
				|  |  |      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
 | 
	
	
		
			
				|  | @@ -710,11 +715,16 @@ namespace Google.Protobuf.Reflection {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
 | 
	
		
			
				|  |  |      public void MergeFrom(pb::CodedInputStream input) {
 | 
	
		
			
				|  |  | +      input.ReadRawMessage(this);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
 | 
	
		
			
				|  |  | +    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
 | 
	
		
			
				|  |  |        uint tag;
 | 
	
		
			
				|  |  |        while ((tag = input.ReadTag()) != 0) {
 | 
	
		
			
				|  |  |          switch(tag) {
 | 
	
		
			
				|  |  |            default:
 | 
	
		
			
				|  |  | -            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
 | 
	
		
			
				|  |  | +            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
 | 
	
		
			
				|  |  |              break;
 | 
	
		
			
				|  |  |            case 10: {
 | 
	
		
			
				|  |  |              Name = input.ReadString();
 | 
	
	
		
			
				|  | @@ -725,23 +735,23 @@ namespace Google.Protobuf.Reflection {
 | 
	
		
			
				|  |  |              break;
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  |            case 26: {
 | 
	
		
			
				|  |  | -            dependency_.AddEntriesFrom(input, _repeated_dependency_codec);
 | 
	
		
			
				|  |  | +            dependency_.AddEntriesFrom(ref input, _repeated_dependency_codec);
 | 
	
		
			
				|  |  |              break;
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  |            case 34: {
 | 
	
		
			
				|  |  | -            messageType_.AddEntriesFrom(input, _repeated_messageType_codec);
 | 
	
		
			
				|  |  | +            messageType_.AddEntriesFrom(ref input, _repeated_messageType_codec);
 | 
	
		
			
				|  |  |              break;
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  |            case 42: {
 | 
	
		
			
				|  |  | -            enumType_.AddEntriesFrom(input, _repeated_enumType_codec);
 | 
	
		
			
				|  |  | +            enumType_.AddEntriesFrom(ref input, _repeated_enumType_codec);
 | 
	
		
			
				|  |  |              break;
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  |            case 50: {
 | 
	
		
			
				|  |  | -            service_.AddEntriesFrom(input, _repeated_service_codec);
 | 
	
		
			
				|  |  | +            service_.AddEntriesFrom(ref input, _repeated_service_codec);
 | 
	
		
			
				|  |  |              break;
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  |            case 58: {
 | 
	
		
			
				|  |  | -            extension_.AddEntriesFrom(input, _repeated_extension_codec);
 | 
	
		
			
				|  |  | +            extension_.AddEntriesFrom(ref input, _repeated_extension_codec);
 | 
	
		
			
				|  |  |              break;
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  |            case 66: {
 | 
	
	
		
			
				|  | @@ -760,12 +770,12 @@ namespace Google.Protobuf.Reflection {
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  |            case 82:
 | 
	
		
			
				|  |  |            case 80: {
 | 
	
		
			
				|  |  | -            publicDependency_.AddEntriesFrom(input, _repeated_publicDependency_codec);
 | 
	
		
			
				|  |  | +            publicDependency_.AddEntriesFrom(ref input, _repeated_publicDependency_codec);
 | 
	
		
			
				|  |  |              break;
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  |            case 90:
 | 
	
		
			
				|  |  |            case 88: {
 | 
	
		
			
				|  |  | -            weakDependency_.AddEntriesFrom(input, _repeated_weakDependency_codec);
 | 
	
		
			
				|  |  | +            weakDependency_.AddEntriesFrom(ref input, _repeated_weakDependency_codec);
 | 
	
		
			
				|  |  |              break;
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  |            case 98: {
 | 
	
	
		
			
				|  | @@ -781,7 +791,7 @@ namespace Google.Protobuf.Reflection {
 | 
	
		
			
				|  |  |    /// <summary>
 | 
	
		
			
				|  |  |    /// Describes a message type.
 | 
	
		
			
				|  |  |    /// </summary>
 | 
	
		
			
				|  |  | -  public sealed partial class DescriptorProto : pb::IMessage<DescriptorProto> {
 | 
	
		
			
				|  |  | +  public sealed partial class DescriptorProto : pb::IMessage<DescriptorProto>, pb::IBufferMessage {
 | 
	
		
			
				|  |  |      private static readonly pb::MessageParser<DescriptorProto> _parser = new pb::MessageParser<DescriptorProto>(() => new DescriptorProto());
 | 
	
		
			
				|  |  |      private pb::UnknownFieldSet _unknownFields;
 | 
	
		
			
				|  |  |      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
 | 
	
	
		
			
				|  | @@ -1065,34 +1075,39 @@ namespace Google.Protobuf.Reflection {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
 | 
	
		
			
				|  |  |      public void MergeFrom(pb::CodedInputStream input) {
 | 
	
		
			
				|  |  | +      input.ReadRawMessage(this);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
 | 
	
		
			
				|  |  | +    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
 | 
	
		
			
				|  |  |        uint tag;
 | 
	
		
			
				|  |  |        while ((tag = input.ReadTag()) != 0) {
 | 
	
		
			
				|  |  |          switch(tag) {
 | 
	
		
			
				|  |  |            default:
 | 
	
		
			
				|  |  | -            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
 | 
	
		
			
				|  |  | +            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
 | 
	
		
			
				|  |  |              break;
 | 
	
		
			
				|  |  |            case 10: {
 | 
	
		
			
				|  |  |              Name = input.ReadString();
 | 
	
		
			
				|  |  |              break;
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  |            case 18: {
 | 
	
		
			
				|  |  | -            field_.AddEntriesFrom(input, _repeated_field_codec);
 | 
	
		
			
				|  |  | +            field_.AddEntriesFrom(ref input, _repeated_field_codec);
 | 
	
		
			
				|  |  |              break;
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  |            case 26: {
 | 
	
		
			
				|  |  | -            nestedType_.AddEntriesFrom(input, _repeated_nestedType_codec);
 | 
	
		
			
				|  |  | +            nestedType_.AddEntriesFrom(ref input, _repeated_nestedType_codec);
 | 
	
		
			
				|  |  |              break;
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  |            case 34: {
 | 
	
		
			
				|  |  | -            enumType_.AddEntriesFrom(input, _repeated_enumType_codec);
 | 
	
		
			
				|  |  | +            enumType_.AddEntriesFrom(ref input, _repeated_enumType_codec);
 | 
	
		
			
				|  |  |              break;
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  |            case 42: {
 | 
	
		
			
				|  |  | -            extensionRange_.AddEntriesFrom(input, _repeated_extensionRange_codec);
 | 
	
		
			
				|  |  | +            extensionRange_.AddEntriesFrom(ref input, _repeated_extensionRange_codec);
 | 
	
		
			
				|  |  |              break;
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  |            case 50: {
 | 
	
		
			
				|  |  | -            extension_.AddEntriesFrom(input, _repeated_extension_codec);
 | 
	
		
			
				|  |  | +            extension_.AddEntriesFrom(ref input, _repeated_extension_codec);
 | 
	
		
			
				|  |  |              break;
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  |            case 58: {
 | 
	
	
		
			
				|  | @@ -1103,15 +1118,15 @@ namespace Google.Protobuf.Reflection {
 | 
	
		
			
				|  |  |              break;
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  |            case 66: {
 | 
	
		
			
				|  |  | -            oneofDecl_.AddEntriesFrom(input, _repeated_oneofDecl_codec);
 | 
	
		
			
				|  |  | +            oneofDecl_.AddEntriesFrom(ref input, _repeated_oneofDecl_codec);
 | 
	
		
			
				|  |  |              break;
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  |            case 74: {
 | 
	
		
			
				|  |  | -            reservedRange_.AddEntriesFrom(input, _repeated_reservedRange_codec);
 | 
	
		
			
				|  |  | +            reservedRange_.AddEntriesFrom(ref input, _repeated_reservedRange_codec);
 | 
	
		
			
				|  |  |              break;
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  |            case 82: {
 | 
	
		
			
				|  |  | -            reservedName_.AddEntriesFrom(input, _repeated_reservedName_codec);
 | 
	
		
			
				|  |  | +            reservedName_.AddEntriesFrom(ref input, _repeated_reservedName_codec);
 | 
	
		
			
				|  |  |              break;
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  |          }
 | 
	
	
		
			
				|  | @@ -1122,7 +1137,7 @@ namespace Google.Protobuf.Reflection {
 | 
	
		
			
				|  |  |      /// <summary>Container for nested types declared in the DescriptorProto message type.</summary>
 | 
	
		
			
				|  |  |      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
 | 
	
		
			
				|  |  |      public static partial class Types {
 | 
	
		
			
				|  |  | -      public sealed partial class ExtensionRange : pb::IMessage<ExtensionRange> {
 | 
	
		
			
				|  |  | +      public sealed partial class ExtensionRange : pb::IMessage<ExtensionRange>, pb::IBufferMessage {
 | 
	
		
			
				|  |  |          private static readonly pb::MessageParser<ExtensionRange> _parser = new pb::MessageParser<ExtensionRange>(() => new ExtensionRange());
 | 
	
		
			
				|  |  |          private pb::UnknownFieldSet _unknownFields;
 | 
	
		
			
				|  |  |          private int _hasBits0;
 | 
	
	
		
			
				|  | @@ -1320,11 +1335,16 @@ namespace Google.Protobuf.Reflection {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
 | 
	
		
			
				|  |  |          public void MergeFrom(pb::CodedInputStream input) {
 | 
	
		
			
				|  |  | +          input.ReadRawMessage(this);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
 | 
	
		
			
				|  |  | +        void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
 | 
	
		
			
				|  |  |            uint tag;
 | 
	
		
			
				|  |  |            while ((tag = input.ReadTag()) != 0) {
 | 
	
		
			
				|  |  |              switch(tag) {
 | 
	
		
			
				|  |  |                default:
 | 
	
		
			
				|  |  | -                _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
 | 
	
		
			
				|  |  | +                _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
 | 
	
		
			
				|  |  |                  break;
 | 
	
		
			
				|  |  |                case 8: {
 | 
	
		
			
				|  |  |                  Start = input.ReadInt32();
 | 
	
	
		
			
				|  | @@ -1352,7 +1372,7 @@ namespace Google.Protobuf.Reflection {
 | 
	
		
			
				|  |  |        /// fields or extension ranges in the same message. Reserved ranges may
 | 
	
		
			
				|  |  |        /// not overlap.
 | 
	
		
			
				|  |  |        /// </summary>
 | 
	
		
			
				|  |  | -      public sealed partial class ReservedRange : pb::IMessage<ReservedRange> {
 | 
	
		
			
				|  |  | +      public sealed partial class ReservedRange : pb::IMessage<ReservedRange>, pb::IBufferMessage {
 | 
	
		
			
				|  |  |          private static readonly pb::MessageParser<ReservedRange> _parser = new pb::MessageParser<ReservedRange>(() => new ReservedRange());
 | 
	
		
			
				|  |  |          private pb::UnknownFieldSet _unknownFields;
 | 
	
		
			
				|  |  |          private int _hasBits0;
 | 
	
	
		
			
				|  | @@ -1523,11 +1543,16 @@ namespace Google.Protobuf.Reflection {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
 | 
	
		
			
				|  |  |          public void MergeFrom(pb::CodedInputStream input) {
 | 
	
		
			
				|  |  | +          input.ReadRawMessage(this);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
 | 
	
		
			
				|  |  | +        void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
 | 
	
		
			
				|  |  |            uint tag;
 | 
	
		
			
				|  |  |            while ((tag = input.ReadTag()) != 0) {
 | 
	
		
			
				|  |  |              switch(tag) {
 | 
	
		
			
				|  |  |                default:
 | 
	
		
			
				|  |  | -                _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
 | 
	
		
			
				|  |  | +                _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
 | 
	
		
			
				|  |  |                  break;
 | 
	
		
			
				|  |  |                case 8: {
 | 
	
		
			
				|  |  |                  Start = input.ReadInt32();
 | 
	
	
		
			
				|  | @@ -1548,7 +1573,7 @@ namespace Google.Protobuf.Reflection {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  public sealed partial class ExtensionRangeOptions : pb::IExtendableMessage<ExtensionRangeOptions> {
 | 
	
		
			
				|  |  | +  public sealed partial class ExtensionRangeOptions : pb::IExtendableMessage<ExtensionRangeOptions>, pb::IBufferMessage {
 | 
	
		
			
				|  |  |      private static readonly pb::MessageParser<ExtensionRangeOptions> _parser = new pb::MessageParser<ExtensionRangeOptions>(() => new ExtensionRangeOptions());
 | 
	
		
			
				|  |  |      private pb::UnknownFieldSet _unknownFields;
 | 
	
		
			
				|  |  |      internal pb::ExtensionSet<ExtensionRangeOptions> _extensions;
 | 
	
	
		
			
				|  | @@ -1672,16 +1697,21 @@ namespace Google.Protobuf.Reflection {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
 | 
	
		
			
				|  |  |      public void MergeFrom(pb::CodedInputStream input) {
 | 
	
		
			
				|  |  | +      input.ReadRawMessage(this);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
 | 
	
		
			
				|  |  | +    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
 | 
	
		
			
				|  |  |        uint tag;
 | 
	
		
			
				|  |  |        while ((tag = input.ReadTag()) != 0) {
 | 
	
		
			
				|  |  |          switch(tag) {
 | 
	
		
			
				|  |  |            default:
 | 
	
		
			
				|  |  | -            if (!pb::ExtensionSet.TryMergeFieldFrom(ref _extensions, input)) {
 | 
	
		
			
				|  |  | -              _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
 | 
	
		
			
				|  |  | +            if (!pb::ExtensionSet.TryMergeFieldFrom(ref _extensions, ref input)) {
 | 
	
		
			
				|  |  | +              _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              break;
 | 
	
		
			
				|  |  |            case 7994: {
 | 
	
		
			
				|  |  | -            uninterpretedOption_.AddEntriesFrom(input, _repeated_uninterpretedOption_codec);
 | 
	
		
			
				|  |  | +            uninterpretedOption_.AddEntriesFrom(ref input, _repeated_uninterpretedOption_codec);
 | 
	
		
			
				|  |  |              break;
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  |          }
 | 
	
	
		
			
				|  | @@ -1715,7 +1745,7 @@ namespace Google.Protobuf.Reflection {
 | 
	
		
			
				|  |  |    /// <summary>
 | 
	
		
			
				|  |  |    /// Describes a field within a message.
 | 
	
		
			
				|  |  |    /// </summary>
 | 
	
		
			
				|  |  | -  public sealed partial class FieldDescriptorProto : pb::IMessage<FieldDescriptorProto> {
 | 
	
		
			
				|  |  | +  public sealed partial class FieldDescriptorProto : pb::IMessage<FieldDescriptorProto>, pb::IBufferMessage {
 | 
	
		
			
				|  |  |      private static readonly pb::MessageParser<FieldDescriptorProto> _parser = new pb::MessageParser<FieldDescriptorProto>(() => new FieldDescriptorProto());
 | 
	
		
			
				|  |  |      private pb::UnknownFieldSet _unknownFields;
 | 
	
		
			
				|  |  |      private int _hasBits0;
 | 
	
	
		
			
				|  | @@ -2253,11 +2283,16 @@ namespace Google.Protobuf.Reflection {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
 | 
	
		
			
				|  |  |      public void MergeFrom(pb::CodedInputStream input) {
 | 
	
		
			
				|  |  | +      input.ReadRawMessage(this);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
 | 
	
		
			
				|  |  | +    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
 | 
	
		
			
				|  |  |        uint tag;
 | 
	
		
			
				|  |  |        while ((tag = input.ReadTag()) != 0) {
 | 
	
		
			
				|  |  |          switch(tag) {
 | 
	
		
			
				|  |  |            default:
 | 
	
		
			
				|  |  | -            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
 | 
	
		
			
				|  |  | +            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
 | 
	
		
			
				|  |  |              break;
 | 
	
		
			
				|  |  |            case 10: {
 | 
	
		
			
				|  |  |              Name = input.ReadString();
 | 
	
	
		
			
				|  | @@ -2382,7 +2417,7 @@ namespace Google.Protobuf.Reflection {
 | 
	
		
			
				|  |  |    /// <summary>
 | 
	
		
			
				|  |  |    /// Describes a oneof.
 | 
	
		
			
				|  |  |    /// </summary>
 | 
	
		
			
				|  |  | -  public sealed partial class OneofDescriptorProto : pb::IMessage<OneofDescriptorProto> {
 | 
	
		
			
				|  |  | +  public sealed partial class OneofDescriptorProto : pb::IMessage<OneofDescriptorProto>, pb::IBufferMessage {
 | 
	
		
			
				|  |  |      private static readonly pb::MessageParser<OneofDescriptorProto> _parser = new pb::MessageParser<OneofDescriptorProto>(() => new OneofDescriptorProto());
 | 
	
		
			
				|  |  |      private pb::UnknownFieldSet _unknownFields;
 | 
	
		
			
				|  |  |      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
 | 
	
	
		
			
				|  | @@ -2534,11 +2569,16 @@ namespace Google.Protobuf.Reflection {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
 | 
	
		
			
				|  |  |      public void MergeFrom(pb::CodedInputStream input) {
 | 
	
		
			
				|  |  | +      input.ReadRawMessage(this);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
 | 
	
		
			
				|  |  | +    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
 | 
	
		
			
				|  |  |        uint tag;
 | 
	
		
			
				|  |  |        while ((tag = input.ReadTag()) != 0) {
 | 
	
		
			
				|  |  |          switch(tag) {
 | 
	
		
			
				|  |  |            default:
 | 
	
		
			
				|  |  | -            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
 | 
	
		
			
				|  |  | +            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
 | 
	
		
			
				|  |  |              break;
 | 
	
		
			
				|  |  |            case 10: {
 | 
	
		
			
				|  |  |              Name = input.ReadString();
 | 
	
	
		
			
				|  | @@ -2560,7 +2600,7 @@ namespace Google.Protobuf.Reflection {
 | 
	
		
			
				|  |  |    /// <summary>
 | 
	
		
			
				|  |  |    /// Describes an enum type.
 | 
	
		
			
				|  |  |    /// </summary>
 | 
	
		
			
				|  |  | -  public sealed partial class EnumDescriptorProto : pb::IMessage<EnumDescriptorProto> {
 | 
	
		
			
				|  |  | +  public sealed partial class EnumDescriptorProto : pb::IMessage<EnumDescriptorProto>, pb::IBufferMessage {
 | 
	
		
			
				|  |  |      private static readonly pb::MessageParser<EnumDescriptorProto> _parser = new pb::MessageParser<EnumDescriptorProto>(() => new EnumDescriptorProto());
 | 
	
		
			
				|  |  |      private pb::UnknownFieldSet _unknownFields;
 | 
	
		
			
				|  |  |      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
 | 
	
	
		
			
				|  | @@ -2769,18 +2809,23 @@ namespace Google.Protobuf.Reflection {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
 | 
	
		
			
				|  |  |      public void MergeFrom(pb::CodedInputStream input) {
 | 
	
		
			
				|  |  | +      input.ReadRawMessage(this);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
 | 
	
		
			
				|  |  | +    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
 | 
	
		
			
				|  |  |        uint tag;
 | 
	
		
			
				|  |  |        while ((tag = input.ReadTag()) != 0) {
 | 
	
		
			
				|  |  |          switch(tag) {
 | 
	
		
			
				|  |  |            default:
 | 
	
		
			
				|  |  | -            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
 | 
	
		
			
				|  |  | +            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
 | 
	
		
			
				|  |  |              break;
 | 
	
		
			
				|  |  |            case 10: {
 | 
	
		
			
				|  |  |              Name = input.ReadString();
 | 
	
		
			
				|  |  |              break;
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  |            case 18: {
 | 
	
		
			
				|  |  | -            value_.AddEntriesFrom(input, _repeated_value_codec);
 | 
	
		
			
				|  |  | +            value_.AddEntriesFrom(ref input, _repeated_value_codec);
 | 
	
		
			
				|  |  |              break;
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  |            case 26: {
 | 
	
	
		
			
				|  | @@ -2791,11 +2836,11 @@ namespace Google.Protobuf.Reflection {
 | 
	
		
			
				|  |  |              break;
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  |            case 34: {
 | 
	
		
			
				|  |  | -            reservedRange_.AddEntriesFrom(input, _repeated_reservedRange_codec);
 | 
	
		
			
				|  |  | +            reservedRange_.AddEntriesFrom(ref input, _repeated_reservedRange_codec);
 | 
	
		
			
				|  |  |              break;
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  |            case 42: {
 | 
	
		
			
				|  |  | -            reservedName_.AddEntriesFrom(input, _repeated_reservedName_codec);
 | 
	
		
			
				|  |  | +            reservedName_.AddEntriesFrom(ref input, _repeated_reservedName_codec);
 | 
	
		
			
				|  |  |              break;
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  |          }
 | 
	
	
		
			
				|  | @@ -2814,7 +2859,7 @@ namespace Google.Protobuf.Reflection {
 | 
	
		
			
				|  |  |        /// is inclusive such that it can appropriately represent the entire int32
 | 
	
		
			
				|  |  |        /// domain.
 | 
	
		
			
				|  |  |        /// </summary>
 | 
	
		
			
				|  |  | -      public sealed partial class EnumReservedRange : pb::IMessage<EnumReservedRange> {
 | 
	
		
			
				|  |  | +      public sealed partial class EnumReservedRange : pb::IMessage<EnumReservedRange>, pb::IBufferMessage {
 | 
	
		
			
				|  |  |          private static readonly pb::MessageParser<EnumReservedRange> _parser = new pb::MessageParser<EnumReservedRange>(() => new EnumReservedRange());
 | 
	
		
			
				|  |  |          private pb::UnknownFieldSet _unknownFields;
 | 
	
		
			
				|  |  |          private int _hasBits0;
 | 
	
	
		
			
				|  | @@ -2985,11 +3030,16 @@ namespace Google.Protobuf.Reflection {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
 | 
	
		
			
				|  |  |          public void MergeFrom(pb::CodedInputStream input) {
 | 
	
		
			
				|  |  | +          input.ReadRawMessage(this);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
 | 
	
		
			
				|  |  | +        void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
 | 
	
		
			
				|  |  |            uint tag;
 | 
	
		
			
				|  |  |            while ((tag = input.ReadTag()) != 0) {
 | 
	
		
			
				|  |  |              switch(tag) {
 | 
	
		
			
				|  |  |                default:
 | 
	
		
			
				|  |  | -                _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
 | 
	
		
			
				|  |  | +                _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
 | 
	
		
			
				|  |  |                  break;
 | 
	
		
			
				|  |  |                case 8: {
 | 
	
		
			
				|  |  |                  Start = input.ReadInt32();
 | 
	
	
		
			
				|  | @@ -3013,7 +3063,7 @@ namespace Google.Protobuf.Reflection {
 | 
	
		
			
				|  |  |    /// <summary>
 | 
	
		
			
				|  |  |    /// Describes a value within an enum.
 | 
	
		
			
				|  |  |    /// </summary>
 | 
	
		
			
				|  |  | -  public sealed partial class EnumValueDescriptorProto : pb::IMessage<EnumValueDescriptorProto> {
 | 
	
		
			
				|  |  | +  public sealed partial class EnumValueDescriptorProto : pb::IMessage<EnumValueDescriptorProto>, pb::IBufferMessage {
 | 
	
		
			
				|  |  |      private static readonly pb::MessageParser<EnumValueDescriptorProto> _parser = new pb::MessageParser<EnumValueDescriptorProto>(() => new EnumValueDescriptorProto());
 | 
	
		
			
				|  |  |      private pb::UnknownFieldSet _unknownFields;
 | 
	
		
			
				|  |  |      private int _hasBits0;
 | 
	
	
		
			
				|  | @@ -3204,11 +3254,16 @@ namespace Google.Protobuf.Reflection {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
 | 
	
		
			
				|  |  |      public void MergeFrom(pb::CodedInputStream input) {
 | 
	
		
			
				|  |  | +      input.ReadRawMessage(this);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
 | 
	
		
			
				|  |  | +    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
 | 
	
		
			
				|  |  |        uint tag;
 | 
	
		
			
				|  |  |        while ((tag = input.ReadTag()) != 0) {
 | 
	
		
			
				|  |  |          switch(tag) {
 | 
	
		
			
				|  |  |            default:
 | 
	
		
			
				|  |  | -            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
 | 
	
		
			
				|  |  | +            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
 | 
	
		
			
				|  |  |              break;
 | 
	
		
			
				|  |  |            case 10: {
 | 
	
		
			
				|  |  |              Name = input.ReadString();
 | 
	
	
		
			
				|  | @@ -3234,7 +3289,7 @@ namespace Google.Protobuf.Reflection {
 | 
	
		
			
				|  |  |    /// <summary>
 | 
	
		
			
				|  |  |    /// Describes a service.
 | 
	
		
			
				|  |  |    /// </summary>
 | 
	
		
			
				|  |  | -  public sealed partial class ServiceDescriptorProto : pb::IMessage<ServiceDescriptorProto> {
 | 
	
		
			
				|  |  | +  public sealed partial class ServiceDescriptorProto : pb::IMessage<ServiceDescriptorProto>, pb::IBufferMessage {
 | 
	
		
			
				|  |  |      private static readonly pb::MessageParser<ServiceDescriptorProto> _parser = new pb::MessageParser<ServiceDescriptorProto>(() => new ServiceDescriptorProto());
 | 
	
		
			
				|  |  |      private pb::UnknownFieldSet _unknownFields;
 | 
	
		
			
				|  |  |      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
 | 
	
	
		
			
				|  | @@ -3402,18 +3457,23 @@ namespace Google.Protobuf.Reflection {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
 | 
	
		
			
				|  |  |      public void MergeFrom(pb::CodedInputStream input) {
 | 
	
		
			
				|  |  | +      input.ReadRawMessage(this);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
 | 
	
		
			
				|  |  | +    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
 | 
	
		
			
				|  |  |        uint tag;
 | 
	
		
			
				|  |  |        while ((tag = input.ReadTag()) != 0) {
 | 
	
		
			
				|  |  |          switch(tag) {
 | 
	
		
			
				|  |  |            default:
 | 
	
		
			
				|  |  | -            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
 | 
	
		
			
				|  |  | +            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
 | 
	
		
			
				|  |  |              break;
 | 
	
		
			
				|  |  |            case 10: {
 | 
	
		
			
				|  |  |              Name = input.ReadString();
 | 
	
		
			
				|  |  |              break;
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  |            case 18: {
 | 
	
		
			
				|  |  | -            method_.AddEntriesFrom(input, _repeated_method_codec);
 | 
	
		
			
				|  |  | +            method_.AddEntriesFrom(ref input, _repeated_method_codec);
 | 
	
		
			
				|  |  |              break;
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  |            case 26: {
 | 
	
	
		
			
				|  | @@ -3432,7 +3492,7 @@ namespace Google.Protobuf.Reflection {
 | 
	
		
			
				|  |  |    /// <summary>
 | 
	
		
			
				|  |  |    /// Describes a method of a service.
 | 
	
		
			
				|  |  |    /// </summary>
 | 
	
		
			
				|  |  | -  public sealed partial class MethodDescriptorProto : pb::IMessage<MethodDescriptorProto> {
 | 
	
		
			
				|  |  | +  public sealed partial class MethodDescriptorProto : pb::IMessage<MethodDescriptorProto>, pb::IBufferMessage {
 | 
	
		
			
				|  |  |      private static readonly pb::MessageParser<MethodDescriptorProto> _parser = new pb::MessageParser<MethodDescriptorProto>(() => new MethodDescriptorProto());
 | 
	
		
			
				|  |  |      private pb::UnknownFieldSet _unknownFields;
 | 
	
		
			
				|  |  |      private int _hasBits0;
 | 
	
	
		
			
				|  | @@ -3742,11 +3802,16 @@ namespace Google.Protobuf.Reflection {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
 | 
	
		
			
				|  |  |      public void MergeFrom(pb::CodedInputStream input) {
 | 
	
		
			
				|  |  | +      input.ReadRawMessage(this);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
 | 
	
		
			
				|  |  | +    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
 | 
	
		
			
				|  |  |        uint tag;
 | 
	
		
			
				|  |  |        while ((tag = input.ReadTag()) != 0) {
 | 
	
		
			
				|  |  |          switch(tag) {
 | 
	
		
			
				|  |  |            default:
 | 
	
		
			
				|  |  | -            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
 | 
	
		
			
				|  |  | +            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
 | 
	
		
			
				|  |  |              break;
 | 
	
		
			
				|  |  |            case 10: {
 | 
	
		
			
				|  |  |              Name = input.ReadString();
 | 
	
	
		
			
				|  | @@ -3781,7 +3846,7 @@ namespace Google.Protobuf.Reflection {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  public sealed partial class FileOptions : pb::IExtendableMessage<FileOptions> {
 | 
	
		
			
				|  |  | +  public sealed partial class FileOptions : pb::IExtendableMessage<FileOptions>, pb::IBufferMessage {
 | 
	
		
			
				|  |  |      private static readonly pb::MessageParser<FileOptions> _parser = new pb::MessageParser<FileOptions>(() => new FileOptions());
 | 
	
		
			
				|  |  |      private pb::UnknownFieldSet _unknownFields;
 | 
	
		
			
				|  |  |      internal pb::ExtensionSet<FileOptions> _extensions;
 | 
	
	
		
			
				|  | @@ -4734,12 +4799,17 @@ namespace Google.Protobuf.Reflection {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
 | 
	
		
			
				|  |  |      public void MergeFrom(pb::CodedInputStream input) {
 | 
	
		
			
				|  |  | +      input.ReadRawMessage(this);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
 | 
	
		
			
				|  |  | +    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
 | 
	
		
			
				|  |  |        uint tag;
 | 
	
		
			
				|  |  |        while ((tag = input.ReadTag()) != 0) {
 | 
	
		
			
				|  |  |          switch(tag) {
 | 
	
		
			
				|  |  |            default:
 | 
	
		
			
				|  |  | -            if (!pb::ExtensionSet.TryMergeFieldFrom(ref _extensions, input)) {
 | 
	
		
			
				|  |  | -              _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
 | 
	
		
			
				|  |  | +            if (!pb::ExtensionSet.TryMergeFieldFrom(ref _extensions, ref input)) {
 | 
	
		
			
				|  |  | +              _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              break;
 | 
	
		
			
				|  |  |            case 10: {
 | 
	
	
		
			
				|  | @@ -4823,7 +4893,7 @@ namespace Google.Protobuf.Reflection {
 | 
	
		
			
				|  |  |              break;
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  |            case 7994: {
 | 
	
		
			
				|  |  | -            uninterpretedOption_.AddEntriesFrom(input, _repeated_uninterpretedOption_codec);
 | 
	
		
			
				|  |  | +            uninterpretedOption_.AddEntriesFrom(ref input, _repeated_uninterpretedOption_codec);
 | 
	
		
			
				|  |  |              break;
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  |          }
 | 
	
	
		
			
				|  | @@ -4879,7 +4949,7 @@ namespace Google.Protobuf.Reflection {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  public sealed partial class MessageOptions : pb::IExtendableMessage<MessageOptions> {
 | 
	
		
			
				|  |  | +  public sealed partial class MessageOptions : pb::IExtendableMessage<MessageOptions>, pb::IBufferMessage {
 | 
	
		
			
				|  |  |      private static readonly pb::MessageParser<MessageOptions> _parser = new pb::MessageParser<MessageOptions>(() => new MessageOptions());
 | 
	
		
			
				|  |  |      private pb::UnknownFieldSet _unknownFields;
 | 
	
		
			
				|  |  |      internal pb::ExtensionSet<MessageOptions> _extensions;
 | 
	
	
		
			
				|  | @@ -5207,12 +5277,17 @@ namespace Google.Protobuf.Reflection {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
 | 
	
		
			
				|  |  |      public void MergeFrom(pb::CodedInputStream input) {
 | 
	
		
			
				|  |  | +      input.ReadRawMessage(this);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
 | 
	
		
			
				|  |  | +    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
 | 
	
		
			
				|  |  |        uint tag;
 | 
	
		
			
				|  |  |        while ((tag = input.ReadTag()) != 0) {
 | 
	
		
			
				|  |  |          switch(tag) {
 | 
	
		
			
				|  |  |            default:
 | 
	
		
			
				|  |  | -            if (!pb::ExtensionSet.TryMergeFieldFrom(ref _extensions, input)) {
 | 
	
		
			
				|  |  | -              _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
 | 
	
		
			
				|  |  | +            if (!pb::ExtensionSet.TryMergeFieldFrom(ref _extensions, ref input)) {
 | 
	
		
			
				|  |  | +              _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              break;
 | 
	
		
			
				|  |  |            case 8: {
 | 
	
	
		
			
				|  | @@ -5232,7 +5307,7 @@ namespace Google.Protobuf.Reflection {
 | 
	
		
			
				|  |  |              break;
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  |            case 7994: {
 | 
	
		
			
				|  |  | -            uninterpretedOption_.AddEntriesFrom(input, _repeated_uninterpretedOption_codec);
 | 
	
		
			
				|  |  | +            uninterpretedOption_.AddEntriesFrom(ref input, _repeated_uninterpretedOption_codec);
 | 
	
		
			
				|  |  |              break;
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  |          }
 | 
	
	
		
			
				|  | @@ -5263,7 +5338,7 @@ namespace Google.Protobuf.Reflection {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  public sealed partial class FieldOptions : pb::IExtendableMessage<FieldOptions> {
 | 
	
		
			
				|  |  | +  public sealed partial class FieldOptions : pb::IExtendableMessage<FieldOptions>, pb::IBufferMessage {
 | 
	
		
			
				|  |  |      private static readonly pb::MessageParser<FieldOptions> _parser = new pb::MessageParser<FieldOptions>(() => new FieldOptions());
 | 
	
		
			
				|  |  |      private pb::UnknownFieldSet _unknownFields;
 | 
	
		
			
				|  |  |      internal pb::ExtensionSet<FieldOptions> _extensions;
 | 
	
	
		
			
				|  | @@ -5675,12 +5750,17 @@ namespace Google.Protobuf.Reflection {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
 | 
	
		
			
				|  |  |      public void MergeFrom(pb::CodedInputStream input) {
 | 
	
		
			
				|  |  | +      input.ReadRawMessage(this);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
 | 
	
		
			
				|  |  | +    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
 | 
	
		
			
				|  |  |        uint tag;
 | 
	
		
			
				|  |  |        while ((tag = input.ReadTag()) != 0) {
 | 
	
		
			
				|  |  |          switch(tag) {
 | 
	
		
			
				|  |  |            default:
 | 
	
		
			
				|  |  | -            if (!pb::ExtensionSet.TryMergeFieldFrom(ref _extensions, input)) {
 | 
	
		
			
				|  |  | -              _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
 | 
	
		
			
				|  |  | +            if (!pb::ExtensionSet.TryMergeFieldFrom(ref _extensions, ref input)) {
 | 
	
		
			
				|  |  | +              _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              break;
 | 
	
		
			
				|  |  |            case 8: {
 | 
	
	
		
			
				|  | @@ -5708,7 +5788,7 @@ namespace Google.Protobuf.Reflection {
 | 
	
		
			
				|  |  |              break;
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  |            case 7994: {
 | 
	
		
			
				|  |  | -            uninterpretedOption_.AddEntriesFrom(input, _repeated_uninterpretedOption_codec);
 | 
	
		
			
				|  |  | +            uninterpretedOption_.AddEntriesFrom(ref input, _repeated_uninterpretedOption_codec);
 | 
	
		
			
				|  |  |              break;
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  |          }
 | 
	
	
		
			
				|  | @@ -5770,7 +5850,7 @@ namespace Google.Protobuf.Reflection {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  public sealed partial class OneofOptions : pb::IExtendableMessage<OneofOptions> {
 | 
	
		
			
				|  |  | +  public sealed partial class OneofOptions : pb::IExtendableMessage<OneofOptions>, pb::IBufferMessage {
 | 
	
		
			
				|  |  |      private static readonly pb::MessageParser<OneofOptions> _parser = new pb::MessageParser<OneofOptions>(() => new OneofOptions());
 | 
	
		
			
				|  |  |      private pb::UnknownFieldSet _unknownFields;
 | 
	
		
			
				|  |  |      internal pb::ExtensionSet<OneofOptions> _extensions;
 | 
	
	
		
			
				|  | @@ -5894,16 +5974,21 @@ namespace Google.Protobuf.Reflection {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
 | 
	
		
			
				|  |  |      public void MergeFrom(pb::CodedInputStream input) {
 | 
	
		
			
				|  |  | +      input.ReadRawMessage(this);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
 | 
	
		
			
				|  |  | +    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
 | 
	
		
			
				|  |  |        uint tag;
 | 
	
		
			
				|  |  |        while ((tag = input.ReadTag()) != 0) {
 | 
	
		
			
				|  |  |          switch(tag) {
 | 
	
		
			
				|  |  |            default:
 | 
	
		
			
				|  |  | -            if (!pb::ExtensionSet.TryMergeFieldFrom(ref _extensions, input)) {
 | 
	
		
			
				|  |  | -              _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
 | 
	
		
			
				|  |  | +            if (!pb::ExtensionSet.TryMergeFieldFrom(ref _extensions, ref input)) {
 | 
	
		
			
				|  |  | +              _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              break;
 | 
	
		
			
				|  |  |            case 7994: {
 | 
	
		
			
				|  |  | -            uninterpretedOption_.AddEntriesFrom(input, _repeated_uninterpretedOption_codec);
 | 
	
		
			
				|  |  | +            uninterpretedOption_.AddEntriesFrom(ref input, _repeated_uninterpretedOption_codec);
 | 
	
		
			
				|  |  |              break;
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  |          }
 | 
	
	
		
			
				|  | @@ -5934,7 +6019,7 @@ namespace Google.Protobuf.Reflection {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  public sealed partial class EnumOptions : pb::IExtendableMessage<EnumOptions> {
 | 
	
		
			
				|  |  | +  public sealed partial class EnumOptions : pb::IExtendableMessage<EnumOptions>, pb::IBufferMessage {
 | 
	
		
			
				|  |  |      private static readonly pb::MessageParser<EnumOptions> _parser = new pb::MessageParser<EnumOptions>(() => new EnumOptions());
 | 
	
		
			
				|  |  |      private pb::UnknownFieldSet _unknownFields;
 | 
	
		
			
				|  |  |      internal pb::ExtensionSet<EnumOptions> _extensions;
 | 
	
	
		
			
				|  | @@ -6144,12 +6229,17 @@ namespace Google.Protobuf.Reflection {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
 | 
	
		
			
				|  |  |      public void MergeFrom(pb::CodedInputStream input) {
 | 
	
		
			
				|  |  | +      input.ReadRawMessage(this);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
 | 
	
		
			
				|  |  | +    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
 | 
	
		
			
				|  |  |        uint tag;
 | 
	
		
			
				|  |  |        while ((tag = input.ReadTag()) != 0) {
 | 
	
		
			
				|  |  |          switch(tag) {
 | 
	
		
			
				|  |  |            default:
 | 
	
		
			
				|  |  | -            if (!pb::ExtensionSet.TryMergeFieldFrom(ref _extensions, input)) {
 | 
	
		
			
				|  |  | -              _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
 | 
	
		
			
				|  |  | +            if (!pb::ExtensionSet.TryMergeFieldFrom(ref _extensions, ref input)) {
 | 
	
		
			
				|  |  | +              _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              break;
 | 
	
		
			
				|  |  |            case 16: {
 | 
	
	
		
			
				|  | @@ -6161,7 +6251,7 @@ namespace Google.Protobuf.Reflection {
 | 
	
		
			
				|  |  |              break;
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  |            case 7994: {
 | 
	
		
			
				|  |  | -            uninterpretedOption_.AddEntriesFrom(input, _repeated_uninterpretedOption_codec);
 | 
	
		
			
				|  |  | +            uninterpretedOption_.AddEntriesFrom(ref input, _repeated_uninterpretedOption_codec);
 | 
	
		
			
				|  |  |              break;
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  |          }
 | 
	
	
		
			
				|  | @@ -6192,7 +6282,7 @@ namespace Google.Protobuf.Reflection {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  public sealed partial class EnumValueOptions : pb::IExtendableMessage<EnumValueOptions> {
 | 
	
		
			
				|  |  | +  public sealed partial class EnumValueOptions : pb::IExtendableMessage<EnumValueOptions>, pb::IBufferMessage {
 | 
	
		
			
				|  |  |      private static readonly pb::MessageParser<EnumValueOptions> _parser = new pb::MessageParser<EnumValueOptions>(() => new EnumValueOptions());
 | 
	
		
			
				|  |  |      private pb::UnknownFieldSet _unknownFields;
 | 
	
		
			
				|  |  |      internal pb::ExtensionSet<EnumValueOptions> _extensions;
 | 
	
	
		
			
				|  | @@ -6361,12 +6451,17 @@ namespace Google.Protobuf.Reflection {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
 | 
	
		
			
				|  |  |      public void MergeFrom(pb::CodedInputStream input) {
 | 
	
		
			
				|  |  | +      input.ReadRawMessage(this);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
 | 
	
		
			
				|  |  | +    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
 | 
	
		
			
				|  |  |        uint tag;
 | 
	
		
			
				|  |  |        while ((tag = input.ReadTag()) != 0) {
 | 
	
		
			
				|  |  |          switch(tag) {
 | 
	
		
			
				|  |  |            default:
 | 
	
		
			
				|  |  | -            if (!pb::ExtensionSet.TryMergeFieldFrom(ref _extensions, input)) {
 | 
	
		
			
				|  |  | -              _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
 | 
	
		
			
				|  |  | +            if (!pb::ExtensionSet.TryMergeFieldFrom(ref _extensions, ref input)) {
 | 
	
		
			
				|  |  | +              _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              break;
 | 
	
		
			
				|  |  |            case 8: {
 | 
	
	
		
			
				|  | @@ -6374,7 +6469,7 @@ namespace Google.Protobuf.Reflection {
 | 
	
		
			
				|  |  |              break;
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  |            case 7994: {
 | 
	
		
			
				|  |  | -            uninterpretedOption_.AddEntriesFrom(input, _repeated_uninterpretedOption_codec);
 | 
	
		
			
				|  |  | +            uninterpretedOption_.AddEntriesFrom(ref input, _repeated_uninterpretedOption_codec);
 | 
	
		
			
				|  |  |              break;
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  |          }
 | 
	
	
		
			
				|  | @@ -6405,7 +6500,7 @@ namespace Google.Protobuf.Reflection {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  public sealed partial class ServiceOptions : pb::IExtendableMessage<ServiceOptions> {
 | 
	
		
			
				|  |  | +  public sealed partial class ServiceOptions : pb::IExtendableMessage<ServiceOptions>, pb::IBufferMessage {
 | 
	
		
			
				|  |  |      private static readonly pb::MessageParser<ServiceOptions> _parser = new pb::MessageParser<ServiceOptions>(() => new ServiceOptions());
 | 
	
		
			
				|  |  |      private pb::UnknownFieldSet _unknownFields;
 | 
	
		
			
				|  |  |      internal pb::ExtensionSet<ServiceOptions> _extensions;
 | 
	
	
		
			
				|  | @@ -6574,12 +6669,17 @@ namespace Google.Protobuf.Reflection {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
 | 
	
		
			
				|  |  |      public void MergeFrom(pb::CodedInputStream input) {
 | 
	
		
			
				|  |  | +      input.ReadRawMessage(this);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
 | 
	
		
			
				|  |  | +    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
 | 
	
		
			
				|  |  |        uint tag;
 | 
	
		
			
				|  |  |        while ((tag = input.ReadTag()) != 0) {
 | 
	
		
			
				|  |  |          switch(tag) {
 | 
	
		
			
				|  |  |            default:
 | 
	
		
			
				|  |  | -            if (!pb::ExtensionSet.TryMergeFieldFrom(ref _extensions, input)) {
 | 
	
		
			
				|  |  | -              _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
 | 
	
		
			
				|  |  | +            if (!pb::ExtensionSet.TryMergeFieldFrom(ref _extensions, ref input)) {
 | 
	
		
			
				|  |  | +              _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              break;
 | 
	
		
			
				|  |  |            case 264: {
 | 
	
	
		
			
				|  | @@ -6587,7 +6687,7 @@ namespace Google.Protobuf.Reflection {
 | 
	
		
			
				|  |  |              break;
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  |            case 7994: {
 | 
	
		
			
				|  |  | -            uninterpretedOption_.AddEntriesFrom(input, _repeated_uninterpretedOption_codec);
 | 
	
		
			
				|  |  | +            uninterpretedOption_.AddEntriesFrom(ref input, _repeated_uninterpretedOption_codec);
 | 
	
		
			
				|  |  |              break;
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  |          }
 | 
	
	
		
			
				|  | @@ -6618,7 +6718,7 @@ namespace Google.Protobuf.Reflection {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  public sealed partial class MethodOptions : pb::IExtendableMessage<MethodOptions> {
 | 
	
		
			
				|  |  | +  public sealed partial class MethodOptions : pb::IExtendableMessage<MethodOptions>, pb::IBufferMessage {
 | 
	
		
			
				|  |  |      private static readonly pb::MessageParser<MethodOptions> _parser = new pb::MessageParser<MethodOptions>(() => new MethodOptions());
 | 
	
		
			
				|  |  |      private pb::UnknownFieldSet _unknownFields;
 | 
	
		
			
				|  |  |      internal pb::ExtensionSet<MethodOptions> _extensions;
 | 
	
	
		
			
				|  | @@ -6824,12 +6924,17 @@ namespace Google.Protobuf.Reflection {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
 | 
	
		
			
				|  |  |      public void MergeFrom(pb::CodedInputStream input) {
 | 
	
		
			
				|  |  | +      input.ReadRawMessage(this);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
 | 
	
		
			
				|  |  | +    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
 | 
	
		
			
				|  |  |        uint tag;
 | 
	
		
			
				|  |  |        while ((tag = input.ReadTag()) != 0) {
 | 
	
		
			
				|  |  |          switch(tag) {
 | 
	
		
			
				|  |  |            default:
 | 
	
		
			
				|  |  | -            if (!pb::ExtensionSet.TryMergeFieldFrom(ref _extensions, input)) {
 | 
	
		
			
				|  |  | -              _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
 | 
	
		
			
				|  |  | +            if (!pb::ExtensionSet.TryMergeFieldFrom(ref _extensions, ref input)) {
 | 
	
		
			
				|  |  | +              _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              break;
 | 
	
		
			
				|  |  |            case 264: {
 | 
	
	
		
			
				|  | @@ -6841,7 +6946,7 @@ namespace Google.Protobuf.Reflection {
 | 
	
		
			
				|  |  |              break;
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  |            case 7994: {
 | 
	
		
			
				|  |  | -            uninterpretedOption_.AddEntriesFrom(input, _repeated_uninterpretedOption_codec);
 | 
	
		
			
				|  |  | +            uninterpretedOption_.AddEntriesFrom(ref input, _repeated_uninterpretedOption_codec);
 | 
	
		
			
				|  |  |              break;
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  |          }
 | 
	
	
		
			
				|  | @@ -6904,7 +7009,7 @@ namespace Google.Protobuf.Reflection {
 | 
	
		
			
				|  |  |    /// or produced by Descriptor::CopyTo()) will never have UninterpretedOptions
 | 
	
		
			
				|  |  |    /// in them.
 | 
	
		
			
				|  |  |    /// </summary>
 | 
	
		
			
				|  |  | -  public sealed partial class UninterpretedOption : pb::IMessage<UninterpretedOption> {
 | 
	
		
			
				|  |  | +  public sealed partial class UninterpretedOption : pb::IMessage<UninterpretedOption>, pb::IBufferMessage {
 | 
	
		
			
				|  |  |      private static readonly pb::MessageParser<UninterpretedOption> _parser = new pb::MessageParser<UninterpretedOption>(() => new UninterpretedOption());
 | 
	
		
			
				|  |  |      private pb::UnknownFieldSet _unknownFields;
 | 
	
		
			
				|  |  |      private int _hasBits0;
 | 
	
	
		
			
				|  | @@ -7234,14 +7339,19 @@ namespace Google.Protobuf.Reflection {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
 | 
	
		
			
				|  |  |      public void MergeFrom(pb::CodedInputStream input) {
 | 
	
		
			
				|  |  | +      input.ReadRawMessage(this);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
 | 
	
		
			
				|  |  | +    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
 | 
	
		
			
				|  |  |        uint tag;
 | 
	
		
			
				|  |  |        while ((tag = input.ReadTag()) != 0) {
 | 
	
		
			
				|  |  |          switch(tag) {
 | 
	
		
			
				|  |  |            default:
 | 
	
		
			
				|  |  | -            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
 | 
	
		
			
				|  |  | +            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
 | 
	
		
			
				|  |  |              break;
 | 
	
		
			
				|  |  |            case 18: {
 | 
	
		
			
				|  |  | -            name_.AddEntriesFrom(input, _repeated_name_codec);
 | 
	
		
			
				|  |  | +            name_.AddEntriesFrom(ref input, _repeated_name_codec);
 | 
	
		
			
				|  |  |              break;
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  |            case 26: {
 | 
	
	
		
			
				|  | @@ -7283,7 +7393,7 @@ namespace Google.Protobuf.Reflection {
 | 
	
		
			
				|  |  |        /// E.g.,{ ["foo", false], ["bar.baz", true], ["qux", false] } represents
 | 
	
		
			
				|  |  |        /// "foo.(bar.baz).qux".
 | 
	
		
			
				|  |  |        /// </summary>
 | 
	
		
			
				|  |  | -      public sealed partial class NamePart : pb::IMessage<NamePart> {
 | 
	
		
			
				|  |  | +      public sealed partial class NamePart : pb::IMessage<NamePart>, pb::IBufferMessage {
 | 
	
		
			
				|  |  |          private static readonly pb::MessageParser<NamePart> _parser = new pb::MessageParser<NamePart>(() => new NamePart());
 | 
	
		
			
				|  |  |          private pb::UnknownFieldSet _unknownFields;
 | 
	
		
			
				|  |  |          private int _hasBits0;
 | 
	
	
		
			
				|  | @@ -7447,11 +7557,16 @@ namespace Google.Protobuf.Reflection {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
 | 
	
		
			
				|  |  |          public void MergeFrom(pb::CodedInputStream input) {
 | 
	
		
			
				|  |  | +          input.ReadRawMessage(this);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
 | 
	
		
			
				|  |  | +        void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
 | 
	
		
			
				|  |  |            uint tag;
 | 
	
		
			
				|  |  |            while ((tag = input.ReadTag()) != 0) {
 | 
	
		
			
				|  |  |              switch(tag) {
 | 
	
		
			
				|  |  |                default:
 | 
	
		
			
				|  |  | -                _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
 | 
	
		
			
				|  |  | +                _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
 | 
	
		
			
				|  |  |                  break;
 | 
	
		
			
				|  |  |                case 10: {
 | 
	
		
			
				|  |  |                  NamePart_ = input.ReadString();
 | 
	
	
		
			
				|  | @@ -7476,7 +7591,7 @@ namespace Google.Protobuf.Reflection {
 | 
	
		
			
				|  |  |    /// Encapsulates information about the original source file from which a
 | 
	
		
			
				|  |  |    /// FileDescriptorProto was generated.
 | 
	
		
			
				|  |  |    /// </summary>
 | 
	
		
			
				|  |  | -  public sealed partial class SourceCodeInfo : pb::IMessage<SourceCodeInfo> {
 | 
	
		
			
				|  |  | +  public sealed partial class SourceCodeInfo : pb::IMessage<SourceCodeInfo>, pb::IBufferMessage {
 | 
	
		
			
				|  |  |      private static readonly pb::MessageParser<SourceCodeInfo> _parser = new pb::MessageParser<SourceCodeInfo>(() => new SourceCodeInfo());
 | 
	
		
			
				|  |  |      private pb::UnknownFieldSet _unknownFields;
 | 
	
		
			
				|  |  |      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
 | 
	
	
		
			
				|  | @@ -7626,14 +7741,19 @@ namespace Google.Protobuf.Reflection {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
 | 
	
		
			
				|  |  |      public void MergeFrom(pb::CodedInputStream input) {
 | 
	
		
			
				|  |  | +      input.ReadRawMessage(this);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
 | 
	
		
			
				|  |  | +    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
 | 
	
		
			
				|  |  |        uint tag;
 | 
	
		
			
				|  |  |        while ((tag = input.ReadTag()) != 0) {
 | 
	
		
			
				|  |  |          switch(tag) {
 | 
	
		
			
				|  |  |            default:
 | 
	
		
			
				|  |  | -            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
 | 
	
		
			
				|  |  | +            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
 | 
	
		
			
				|  |  |              break;
 | 
	
		
			
				|  |  |            case 10: {
 | 
	
		
			
				|  |  | -            location_.AddEntriesFrom(input, _repeated_location_codec);
 | 
	
		
			
				|  |  | +            location_.AddEntriesFrom(ref input, _repeated_location_codec);
 | 
	
		
			
				|  |  |              break;
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  |          }
 | 
	
	
		
			
				|  | @@ -7644,7 +7764,7 @@ namespace Google.Protobuf.Reflection {
 | 
	
		
			
				|  |  |      /// <summary>Container for nested types declared in the SourceCodeInfo message type.</summary>
 | 
	
		
			
				|  |  |      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
 | 
	
		
			
				|  |  |      public static partial class Types {
 | 
	
		
			
				|  |  | -      public sealed partial class Location : pb::IMessage<Location> {
 | 
	
		
			
				|  |  | +      public sealed partial class Location : pb::IMessage<Location>, pb::IBufferMessage {
 | 
	
		
			
				|  |  |          private static readonly pb::MessageParser<Location> _parser = new pb::MessageParser<Location>(() => new Location());
 | 
	
		
			
				|  |  |          private pb::UnknownFieldSet _unknownFields;
 | 
	
		
			
				|  |  |          [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
 | 
	
	
		
			
				|  | @@ -7934,20 +8054,25 @@ namespace Google.Protobuf.Reflection {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
 | 
	
		
			
				|  |  |          public void MergeFrom(pb::CodedInputStream input) {
 | 
	
		
			
				|  |  | +          input.ReadRawMessage(this);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
 | 
	
		
			
				|  |  | +        void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
 | 
	
		
			
				|  |  |            uint tag;
 | 
	
		
			
				|  |  |            while ((tag = input.ReadTag()) != 0) {
 | 
	
		
			
				|  |  |              switch(tag) {
 | 
	
		
			
				|  |  |                default:
 | 
	
		
			
				|  |  | -                _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
 | 
	
		
			
				|  |  | +                _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
 | 
	
		
			
				|  |  |                  break;
 | 
	
		
			
				|  |  |                case 10:
 | 
	
		
			
				|  |  |                case 8: {
 | 
	
		
			
				|  |  | -                path_.AddEntriesFrom(input, _repeated_path_codec);
 | 
	
		
			
				|  |  | +                path_.AddEntriesFrom(ref input, _repeated_path_codec);
 | 
	
		
			
				|  |  |                  break;
 | 
	
		
			
				|  |  |                }
 | 
	
		
			
				|  |  |                case 18:
 | 
	
		
			
				|  |  |                case 16: {
 | 
	
		
			
				|  |  | -                span_.AddEntriesFrom(input, _repeated_span_codec);
 | 
	
		
			
				|  |  | +                span_.AddEntriesFrom(ref input, _repeated_span_codec);
 | 
	
		
			
				|  |  |                  break;
 | 
	
		
			
				|  |  |                }
 | 
	
		
			
				|  |  |                case 26: {
 | 
	
	
		
			
				|  | @@ -7959,7 +8084,7 @@ namespace Google.Protobuf.Reflection {
 | 
	
		
			
				|  |  |                  break;
 | 
	
		
			
				|  |  |                }
 | 
	
		
			
				|  |  |                case 50: {
 | 
	
		
			
				|  |  | -                leadingDetachedComments_.AddEntriesFrom(input, _repeated_leadingDetachedComments_codec);
 | 
	
		
			
				|  |  | +                leadingDetachedComments_.AddEntriesFrom(ref input, _repeated_leadingDetachedComments_codec);
 | 
	
		
			
				|  |  |                  break;
 | 
	
		
			
				|  |  |                }
 | 
	
		
			
				|  |  |              }
 | 
	
	
		
			
				|  | @@ -7978,7 +8103,7 @@ namespace Google.Protobuf.Reflection {
 | 
	
		
			
				|  |  |    /// file. A GeneratedCodeInfo message is associated with only one generated
 | 
	
		
			
				|  |  |    /// source file, but may contain references to different source .proto files.
 | 
	
		
			
				|  |  |    /// </summary>
 | 
	
		
			
				|  |  | -  public sealed partial class GeneratedCodeInfo : pb::IMessage<GeneratedCodeInfo> {
 | 
	
		
			
				|  |  | +  public sealed partial class GeneratedCodeInfo : pb::IMessage<GeneratedCodeInfo>, pb::IBufferMessage {
 | 
	
		
			
				|  |  |      private static readonly pb::MessageParser<GeneratedCodeInfo> _parser = new pb::MessageParser<GeneratedCodeInfo>(() => new GeneratedCodeInfo());
 | 
	
		
			
				|  |  |      private pb::UnknownFieldSet _unknownFields;
 | 
	
		
			
				|  |  |      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
 | 
	
	
		
			
				|  | @@ -8087,14 +8212,19 @@ namespace Google.Protobuf.Reflection {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
 | 
	
		
			
				|  |  |      public void MergeFrom(pb::CodedInputStream input) {
 | 
	
		
			
				|  |  | +      input.ReadRawMessage(this);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
 | 
	
		
			
				|  |  | +    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
 | 
	
		
			
				|  |  |        uint tag;
 | 
	
		
			
				|  |  |        while ((tag = input.ReadTag()) != 0) {
 | 
	
		
			
				|  |  |          switch(tag) {
 | 
	
		
			
				|  |  |            default:
 | 
	
		
			
				|  |  | -            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
 | 
	
		
			
				|  |  | +            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
 | 
	
		
			
				|  |  |              break;
 | 
	
		
			
				|  |  |            case 10: {
 | 
	
		
			
				|  |  | -            annotation_.AddEntriesFrom(input, _repeated_annotation_codec);
 | 
	
		
			
				|  |  | +            annotation_.AddEntriesFrom(ref input, _repeated_annotation_codec);
 | 
	
		
			
				|  |  |              break;
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  |          }
 | 
	
	
		
			
				|  | @@ -8105,7 +8235,7 @@ namespace Google.Protobuf.Reflection {
 | 
	
		
			
				|  |  |      /// <summary>Container for nested types declared in the GeneratedCodeInfo message type.</summary>
 | 
	
		
			
				|  |  |      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
 | 
	
		
			
				|  |  |      public static partial class Types {
 | 
	
		
			
				|  |  | -      public sealed partial class Annotation : pb::IMessage<Annotation> {
 | 
	
		
			
				|  |  | +      public sealed partial class Annotation : pb::IMessage<Annotation>, pb::IBufferMessage {
 | 
	
		
			
				|  |  |          private static readonly pb::MessageParser<Annotation> _parser = new pb::MessageParser<Annotation>(() => new Annotation());
 | 
	
		
			
				|  |  |          private pb::UnknownFieldSet _unknownFields;
 | 
	
		
			
				|  |  |          private int _hasBits0;
 | 
	
	
		
			
				|  | @@ -8338,15 +8468,20 @@ namespace Google.Protobuf.Reflection {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
 | 
	
		
			
				|  |  |          public void MergeFrom(pb::CodedInputStream input) {
 | 
	
		
			
				|  |  | +          input.ReadRawMessage(this);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
 | 
	
		
			
				|  |  | +        void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
 | 
	
		
			
				|  |  |            uint tag;
 | 
	
		
			
				|  |  |            while ((tag = input.ReadTag()) != 0) {
 | 
	
		
			
				|  |  |              switch(tag) {
 | 
	
		
			
				|  |  |                default:
 | 
	
		
			
				|  |  | -                _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
 | 
	
		
			
				|  |  | +                _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
 | 
	
		
			
				|  |  |                  break;
 | 
	
		
			
				|  |  |                case 10:
 | 
	
		
			
				|  |  |                case 8: {
 | 
	
		
			
				|  |  | -                path_.AddEntriesFrom(input, _repeated_path_codec);
 | 
	
		
			
				|  |  | +                path_.AddEntriesFrom(ref input, _repeated_path_codec);
 | 
	
		
			
				|  |  |                  break;
 | 
	
		
			
				|  |  |                }
 | 
	
		
			
				|  |  |                case 18: {
 |