|  | @@ -402,8 +402,15 @@ namespace Google.Protobuf
 | 
	
		
			
				|  |  |          /// <returns>A codec for the given tag.</returns>
 | 
	
		
			
				|  |  |          public static FieldCodec<T> ForMessage<T>(uint tag, MessageParser<T> parser) where T : class, IMessage<T>
 | 
	
		
			
				|  |  |          {
 | 
	
		
			
				|  |  | -            return new FieldCodec<T>(input => { T message = parser.CreateTemplate(); input.ReadMessage(message); return message; },
 | 
	
		
			
				|  |  | -                (output, value) => output.WriteMessage(value), (CodedInputStream i, ref T v) => 
 | 
	
		
			
				|  |  | +            return new FieldCodec<T>(
 | 
	
		
			
				|  |  | +                input => 
 | 
	
		
			
				|  |  | +                { 
 | 
	
		
			
				|  |  | +                    T message = parser.CreateTemplate(); 
 | 
	
		
			
				|  |  | +                    input.ReadMessage(message); 
 | 
	
		
			
				|  |  | +                    return message; 
 | 
	
		
			
				|  |  | +                },
 | 
	
		
			
				|  |  | +                (output, value) => output.WriteMessage(value),
 | 
	
		
			
				|  |  | +                (CodedInputStream i, ref T v) => 
 | 
	
		
			
				|  |  |                  {
 | 
	
		
			
				|  |  |                      if (v == null)
 | 
	
		
			
				|  |  |                      {
 | 
	
	
		
			
				|  | @@ -427,7 +434,8 @@ namespace Google.Protobuf
 | 
	
		
			
				|  |  |                          v.MergeFrom(v2);
 | 
	
		
			
				|  |  |                      }
 | 
	
		
			
				|  |  |                      return true;
 | 
	
		
			
				|  |  | -                }, message => CodedOutputStream.ComputeMessageSize(message), tag);
 | 
	
		
			
				|  |  | +                }, 
 | 
	
		
			
				|  |  | +                message => CodedOutputStream.ComputeMessageSize(message), tag);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          /// <summary>
 | 
	
	
		
			
				|  | @@ -439,8 +447,16 @@ namespace Google.Protobuf
 | 
	
		
			
				|  |  |          /// <returns>A codec for given tag</returns>
 | 
	
		
			
				|  |  |          public static FieldCodec<T> ForGroup<T>(uint startTag, uint endTag, MessageParser<T> parser) where T : class, IMessage<T>
 | 
	
		
			
				|  |  |          {
 | 
	
		
			
				|  |  | -            return new FieldCodec<T>(input => { T message = parser.CreateTemplate(); input.ReadGroup(message); return message; },
 | 
	
		
			
				|  |  | -                (output, value) => output.WriteGroup(value), (CodedInputStream i, ref T v) => {
 | 
	
		
			
				|  |  | +            return new FieldCodec<T>(
 | 
	
		
			
				|  |  | +                input => 
 | 
	
		
			
				|  |  | +                { 
 | 
	
		
			
				|  |  | +                    T message = parser.CreateTemplate();
 | 
	
		
			
				|  |  | +                    input.ReadGroup(message);
 | 
	
		
			
				|  |  | +                    return message;
 | 
	
		
			
				|  |  | +                },
 | 
	
		
			
				|  |  | +                (output, value) => output.WriteGroup(value), 
 | 
	
		
			
				|  |  | +                (CodedInputStream i, ref T v) => 
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  |                      if (v == null)
 | 
	
		
			
				|  |  |                      {
 | 
	
		
			
				|  |  |                          v = parser.CreateTemplate();
 | 
	
	
		
			
				|  | @@ -463,7 +479,8 @@ namespace Google.Protobuf
 | 
	
		
			
				|  |  |                          v.MergeFrom(v2);
 | 
	
		
			
				|  |  |                      }
 | 
	
		
			
				|  |  |                      return true;
 | 
	
		
			
				|  |  | -                }, message => CodedOutputStream.ComputeGroupSize(message), startTag, endTag);
 | 
	
		
			
				|  |  | +                }, 
 | 
	
		
			
				|  |  | +                message => CodedOutputStream.ComputeGroupSize(message), startTag, endTag);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          /// <summary>
 |