Code Review Feedback

* Move additional `ReadOnlySpan<byte>` `ParseContext` overloads next to
the existing overload
* Pass `ReadOnlySpan<byte>` parameters by `ref`
* Update `MessageParsingHelpers` to add checks for parsing from
`ReadOnlySpan<byte>`, remove tests from `CodedInputStreamTest`
diff --git a/csharp/src/Google.Protobuf.Test/MessageParsingHelpers.cs b/csharp/src/Google.Protobuf.Test/MessageParsingHelpers.cs
index 65d2fe0..0e33cc0 100644
--- a/csharp/src/Google.Protobuf.Test/MessageParsingHelpers.cs
+++ b/csharp/src/Google.Protobuf.Test/MessageParsingHelpers.cs
@@ -41,32 +41,40 @@
     {
         public static void AssertReadingMessage<T>(MessageParser<T> parser, byte[] bytes, Action<T> assert) where T : IMessage<T>
         {
-            var parsedStream = parser.ParseFrom(bytes);
+            var parsedBuffer = parser.ParseFrom(bytes);
+            assert(parsedBuffer);
 
             // Load content as single segment
-            var parsedBuffer = parser.ParseFrom(new ReadOnlySequence<byte>(bytes));
+            parsedBuffer = parser.ParseFrom(new ReadOnlySequence<byte>(bytes));
             assert(parsedBuffer);
 
             // Load content as multiple segments
             parsedBuffer = parser.ParseFrom(ReadOnlySequenceFactory.CreateWithContent(bytes));
             assert(parsedBuffer);
 
-            assert(parsedStream);
+            // Load content as ReadOnlySpan
+            ReadOnlySpan<byte> bytesSpan = bytes.AsSpan();
+            parsedBuffer = parser.ParseFrom(ref bytesSpan);
+            assert(parsedBuffer);
         }
 
         public static void AssertReadingMessage(MessageParser parser, byte[] bytes, Action<IMessage> assert)
         {
-            var parsedStream = parser.ParseFrom(bytes);
+            var parsedBuffer = parser.ParseFrom(bytes);
+            assert(parsedBuffer);
 
             // Load content as single segment
-            var parsedBuffer = parser.ParseFrom(new ReadOnlySequence<byte>(bytes));
+            parsedBuffer = parser.ParseFrom(new ReadOnlySequence<byte>(bytes));
             assert(parsedBuffer);
 
             // Load content as multiple segments
             parsedBuffer = parser.ParseFrom(ReadOnlySequenceFactory.CreateWithContent(bytes));
             assert(parsedBuffer);
 
-            assert(parsedStream);
+            // Load content as ReadOnlySpan
+            ReadOnlySpan<byte> bytesSpan = bytes.AsSpan();
+            parsedBuffer = parser.ParseFrom(ref bytesSpan);
+            assert(parsedBuffer);
         }
 
         public static void AssertReadingMessageThrows<TMessage, TException>(MessageParser<TMessage> parser, byte[] bytes)
@@ -76,6 +84,12 @@
             Assert.Throws<TException>(() => parser.ParseFrom(bytes));
 
             Assert.Throws<TException>(() => parser.ParseFrom(new ReadOnlySequence<byte>(bytes)));
+
+            Assert.Throws<TException>(() => 
+              {
+                ReadOnlySpan<byte> bytesSpan = bytes.AsSpan();
+                parser.ParseFrom(ref bytesSpan);
+              });
         }
 
         public static void AssertRoundtrip<T>(MessageParser<T> parser, T message, Action<T> additionalAssert = null) where T : IMessage<T>
@@ -87,8 +101,12 @@
             message.WriteTo(bufferWriter);
             Assert.AreEqual(bytes, bufferWriter.WrittenSpan.ToArray(), "Both serialization approaches need to result in the same data.");
 
+            var parsedBuffer = parser.ParseFrom(bytes);
+            Assert.AreEqual(message, parsedBuffer);
+            additionalAssert?.Invoke(parsedBuffer);
+
             // Load content as single segment
-            var parsedBuffer = parser.ParseFrom(new ReadOnlySequence<byte>(bytes));
+            parsedBuffer = parser.ParseFrom(new ReadOnlySequence<byte>(bytes));
             Assert.AreEqual(message, parsedBuffer);
             additionalAssert?.Invoke(parsedBuffer);
 
@@ -97,10 +115,11 @@
             Assert.AreEqual(message, parsedBuffer);
             additionalAssert?.Invoke(parsedBuffer);
 
-            var parsedStream = parser.ParseFrom(bytes);
-
-            Assert.AreEqual(message, parsedStream);
-            additionalAssert?.Invoke(parsedStream);
+            // Load content as ReadOnlySpan
+            ReadOnlySpan<byte> bytesSpan = bytes.AsSpan();
+            parsedBuffer = parser.ParseFrom(ref bytesSpan);
+            Assert.AreEqual(message, parsedBuffer);
+            additionalAssert?.Invoke(parsedBuffer);
         }
 
         public static void AssertWritingMessage(IMessage message)