fix some typos (#9771)

* fix some typos

Signed-off-by: cuishuang <imcusg@gmail.com>

* fix typo

Signed-off-by: cuishuang <imcusg@gmail.com>
diff --git a/csharp/src/Google.Protobuf/CodedInputStream.cs b/csharp/src/Google.Protobuf/CodedInputStream.cs
index 912c11f..96ae84c 100644
--- a/csharp/src/Google.Protobuf/CodedInputStream.cs
+++ b/csharp/src/Google.Protobuf/CodedInputStream.cs
@@ -431,7 +431,7 @@
         {
             // TODO(jtattermusch): if the message doesn't implement IBufferMessage (and thus does not provide the InternalMergeFrom method),
             // what we're doing here works fine, but could be more efficient.
-            // What happends is that we first initialize a ParseContext from the current coded input stream only to parse the length of the message, at which point
+            // What happens is that we first initialize a ParseContext from the current coded input stream only to parse the length of the message, at which point
             // we will need to switch back again to CodedInputStream-based parsing (which involves copying and storing the state) to be able to
             // invoke the legacy MergeFrom(CodedInputStream) method.
             // For now, this inefficiency is fine, considering this is only a backward-compatibility scenario (and regenerating the code fixes it).
diff --git a/csharp/src/Google.Protobuf/Reflection/ExtensionCollection.cs b/csharp/src/Google.Protobuf/Reflection/ExtensionCollection.cs
index 9664559..ca874f9 100644
--- a/csharp/src/Google.Protobuf/Reflection/ExtensionCollection.cs
+++ b/csharp/src/Google.Protobuf/Reflection/ExtensionCollection.cs
@@ -93,7 +93,7 @@
 
         /// <summary>
         /// Returns a readonly list of all the extensions define in this type that extend 
-        /// the provided descriptor type in accending field order
+        /// the provided descriptor type in ascending field order
         /// </summary>
         public IList<FieldDescriptor> GetExtensionsInNumberOrder(MessageDescriptor descriptor)
         {
diff --git a/docs/field_presence.md b/docs/field_presence.md
index ed76375..218622d 100644
--- a/docs/field_presence.md
+++ b/docs/field_presence.md
@@ -16,7 +16,7 @@
 
 The wire format is a stream of tagged, _self-delimiting_ values. By definition, the wire format represents a sequence of _present_ values. In other words, every value found within a serialization represents a _present_ field; furthermore, the serialization contains no information about not-present values.
 
-The generated API for a proto message includes (de)serialization definitions which translate between API types and a stream of definitionally _present_ (tag, value) pairs. This translation is designed to be forward- and backward-compatibile across changes to the message definition; however, this compatibility introduces some (perhaps surprising) considerations when deserializing wire-formatted messages:
+The generated API for a proto message includes (de)serialization definitions which translate between API types and a stream of definitionally _present_ (tag, value) pairs. This translation is designed to be forward- and backward-compatible across changes to the message definition; however, this compatibility introduces some (perhaps surprising) considerations when deserializing wire-formatted messages:
 
 -   When serializing, fields with _no presence_ are not serialized if they contain their default value.
 	-   For numeric types, the default is 0.
diff --git a/post_process_dist.sh b/post_process_dist.sh
index 5b14de6..116824d 100755
--- a/post_process_dist.sh
+++ b/post_process_dist.sh
@@ -11,7 +11,7 @@
 #    2005 *or* 2008 can open them.  (In version control, we keep things in
 #    MSVC 2008 format since that's what we use in development.)
 # 4) Uses the result to create .tar.gz, .tar.bz2, and .zip versions and
-#    deposites them in the "dist" directory.  In the .zip version, all
+#    deposits them in the "dist" directory.  In the .zip version, all
 #    non-testdata .txt files are converted to Windows-style line endings.
 # 5) Cleans up after itself.
 
diff --git a/src/google/protobuf/compiler/cpp/helpers.h b/src/google/protobuf/compiler/cpp/helpers.h
index bab2501..7ad7244 100644
--- a/src/google/protobuf/compiler/cpp/helpers.h
+++ b/src/google/protobuf/compiler/cpp/helpers.h
@@ -767,7 +767,7 @@
 // but consider using named variables. Named variables like $foo$, with some
 // identifier foo, are looked up in the map. One additional feature is that
 // spaces are accepted between the '$' delimiters, $ foo$ will
-// substiture to " bar" if foo stands for "bar", but in case it's empty
+// substitute to " bar" if foo stands for "bar", but in case it's empty
 // will substitute to "". Hence, for example,
 //
 // Format(vars, "$dllexport $void fun();") -> "void fun();"
diff --git a/src/google/protobuf/io/coded_stream.cc b/src/google/protobuf/io/coded_stream.cc
index aacf007..487e1b8 100644
--- a/src/google/protobuf/io/coded_stream.cc
+++ b/src/google/protobuf/io/coded_stream.cc
@@ -392,7 +392,7 @@
   b = *(ptr++);
   result += b << 28;
   if (!(b & 0x80)) goto done;
-  // "result -= 0x80 << 28" is irrevelant.
+  // "result -= 0x80 << 28" is irrelevant.
 
   // If the input is larger than 32 bits, we still need to read it all
   // and discard the high-order bits.
diff --git a/src/google/protobuf/parse_context.h b/src/google/protobuf/parse_context.h
index 7c021c4..81b27b7 100644
--- a/src/google/protobuf/parse_context.h
+++ b/src/google/protobuf/parse_context.h
@@ -410,7 +410,7 @@
   // Spawns a child parsing context that inherits key properties. New context
   // inherits the following:
   // --depth_, data_, check_required_fields_, lazy_parse_mode_
-  // The spanwed context always disables aliasing (different input).
+  // The spawned context always disables aliasing (different input).
   template <typename... T>
   ParseContext Spawn(const char** start, T&&... args) {
     ParseContext spawned(depth_, false, start, std::forward<T>(args)...);