| 
					
				 | 
			
			
				@@ -321,24 +321,35 @@ namespace Google.Protobuf 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         public static void WriteRawVarint64(ref Span<byte> buffer, ref WriterInternalState state, ulong value) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            while (value > 127 && state.position < state.limit) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // Optimize for the common case of a single byte value 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (value < 128 && state.position < buffer.Length) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                buffer[state.position++] = (byte)((value & 0x7F) | 0x80); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                value >>= 7; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                buffer[state.position++] = (byte)value; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // Fast path when capacity is available 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            while (state.position < buffer.Length) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (value > 127) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    buffer[state.position++] = (byte)((value & 0x7F) | 0x80); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    value >>= 7; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    buffer[state.position++] = (byte)value; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             while (value > 127) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 WriteRawByte(ref buffer, ref state, (byte)((value & 0x7F) | 0x80)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 value >>= 7; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (state.position < state.limit) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                buffer[state.position++] = (byte)value; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                WriteRawByte(ref buffer, ref state, (byte)value); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            WriteRawByte(ref buffer, ref state, (byte)value); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         public static void WriteRawLittleEndian32(ref Span<byte> buffer, ref WriterInternalState state, uint value) 
			 |