diff --git a/DEPS b/DEPS
index c94237f..4db49ee 100644
--- a/DEPS
+++ b/DEPS
@@ -106,7 +106,7 @@
   # For more details, see https://github.com/dart-lang/sdk/issues/30164.
   "dart_style_rev": "d7b73536a8079331c888b7da539b80e6825270ea",
 
-  "dartdoc_rev": "c58f21042ebd95014c5426a2f34411876685ecc7",
+  "dartdoc_rev": "8549817bb1b59808108e83ef0e513157cb572d2a",
   "devtools_rev": "3c16b8d73120e46958982d94215d499793b972eb",
   "ffi_rev": "0c8364a728cfe4e4ba859c53b99d56b3dbe3add4",
   "file_rev": "0132eeedea2933513bf230513a766a8baeab0c4f",
diff --git a/pkg/analysis_server/test/src/plugin/notification_manager_test.dart b/pkg/analysis_server/test/src/plugin/notification_manager_test.dart
index 5504afb..79665b8 100644
--- a/pkg/analysis_server/test/src/plugin/notification_manager_test.dart
+++ b/pkg/analysis_server/test/src/plugin/notification_manager_test.dart
@@ -90,7 +90,7 @@
     _verifyNavigationParams(serverParams);
   }
 
-  void test_handlePluginNotification_occurences() {
+  void test_handlePluginNotification_occurrences() {
     manager.setSubscriptions({
       server.AnalysisService.OCCURRENCES: {fileA, fileB}
     });
diff --git a/pkg/compiler/lib/src/js/size_estimator.dart b/pkg/compiler/lib/src/js/size_estimator.dart
index e7faf76..e04a3e9 100644
--- a/pkg/compiler/lib/src/js/size_estimator.dart
+++ b/pkg/compiler/lib/src/js/size_estimator.dart
@@ -59,7 +59,7 @@
       // '<typeHolder>$.<type>' where <typeHolder> is a one byte local and
       // <type> is roughly 3 bytes. However, we also have to initialize the type
       // in the holder, some like ab:f("QQ<b7c>"), ie 16 bytes. For two
-      // occurences we will have on average 13 bytes. For a more detailed
+      // occurrences we will have on average 13 bytes. For a more detailed
       // estimate, we'd have to partially finalize the results.
       return '###_###_###_#';
     } else if (node is StringReference) {
diff --git a/pkg/compiler/lib/src/js_backend/frequency_assignment.dart b/pkg/compiler/lib/src/js_backend/frequency_assignment.dart
index d01096c..7acd907 100644
--- a/pkg/compiler/lib/src/js_backend/frequency_assignment.dart
+++ b/pkg/compiler/lib/src/js_backend/frequency_assignment.dart
@@ -42,7 +42,7 @@
 ///
 /// - [hashOf]: Function returning a stable hash code for item `i`.
 ///
-/// - [countOf]: Function returning the frequency or number of occurences of
+/// - [countOf]: Function returning the frequency or number of occurrences of
 ///   item `i`.
 ///
 /// - [assign]: Function to register the assignment of a name to item `i`.
diff --git a/pkg/dds/test/dap/integration/test_client.dart b/pkg/dds/test/dap/integration/test_client.dart
index 8ce631d..1a7c817 100644
--- a/pkg/dds/test/dap/integration/test_client.dart
+++ b/pkg/dds/test/dap/integration/test_client.dart
@@ -582,7 +582,7 @@
       null,
     );
 
-    // For convenience, use the ProtocolList to deserialise the custom
+    // For convenience, use the ProtocolList to deserialize the custom
     // response to check if included DDS.
     final protocolList =
         vm.ProtocolList.parse(response.body as Map<String, Object?>?);
diff --git a/pkg/dds/tool/dap/codegen.dart b/pkg/dds/tool/dap/codegen.dart
index ccb78a6..bd021a5 100644
--- a/pkg/dds/tool/dap/codegen.dart
+++ b/pkg/dds/tool/dap/codegen.dart
@@ -457,7 +457,7 @@
     }
   }
 
-  /// Writes an expression to deserialise a [valueCode].
+  /// Writes an expression to deserialize a [valueCode].
   ///
   /// If [type] represents a spec type, it's `fromJson` function will be called.
   /// If [type] is a [List], it will be mapped over this function again.
diff --git a/pkg/front_end/test/spell_checking_list_code.txt b/pkg/front_end/test/spell_checking_list_code.txt
index 6311cd6..bdc9ea7 100644
--- a/pkg/front_end/test/spell_checking_list_code.txt
+++ b/pkg/front_end/test/spell_checking_list_code.txt
@@ -871,7 +871,6 @@
 obstruct
 occasionally
 occupied
-occurences
 offending
 ogham
 oked
diff --git a/pkg/kernel/lib/type_algebra.dart b/pkg/kernel/lib/type_algebra.dart
index a0ee467..aa91ae6 100644
--- a/pkg/kernel/lib/type_algebra.dart
+++ b/pkg/kernel/lib/type_algebra.dart
@@ -284,7 +284,7 @@
   /// *not* correspond to a sequence of two substitutions. For example,
   /// combining `{T -> List<G>}` with `{G -> String}` does not correspond to
   /// `{T -> List<String>}` because the result from substituting `T` is not
-  /// searched for occurences of `G`.
+  /// searched for occurrences of `G`.
   static Substitution combine(Substitution first, Substitution second) {
     if (first == _NullSubstitution.instance) return second;
     if (second == _NullSubstitution.instance) return first;
diff --git a/runtime/vm/json_test.cc b/runtime/vm/json_test.cc
index 672369c..8be27b3 100644
--- a/runtime/vm/json_test.cc
+++ b/runtime/vm/json_test.cc
@@ -169,7 +169,7 @@
     JSONObject jsobj(&jsarr);
     jsobj.AddProperty("object_key", Object::Handle(Object::null()));
   }
-  // WARNING: This MUST be big enough for the serialised JSON string.
+  // WARNING: This MUST be big enough for the serialized JSON string.
   const int kBufferSize = 2048;
   char buffer[kBufferSize];
   const char* json_str = js.ToCString();
diff --git a/runtime/vm/object_test.cc b/runtime/vm/object_test.cc
index 207a9a4..b168abc 100644
--- a/runtime/vm/object_test.cc
+++ b/runtime/vm/object_test.cc
@@ -5838,7 +5838,7 @@
 }
 
 ISOLATE_UNIT_TEST_CASE(PrintJSONPrimitives) {
-  // WARNING: This MUST be big enough for the serialised JSON string.
+  // WARNING: This MUST be big enough for the serialized JSON string.
   const int kBufferSize = 4096;
   char buffer[kBufferSize];
   Isolate* isolate = Isolate::Current();
diff --git a/runtime/vm/source_report_test.cc b/runtime/vm/source_report_test.cc
index 4e7a409..7acb99b 100644
--- a/runtime/vm/source_report_test.cc
+++ b/runtime/vm/source_report_test.cc
@@ -27,7 +27,7 @@
 }
 
 ISOLATE_UNIT_TEST_CASE(SourceReport_Coverage_NoCalls) {
-  // WARNING: This MUST be big enough for the serialised JSON string.
+  // WARNING: This MUST be big enough for the serialized JSON string.
   const int kBufferSize = 1024;
   char buffer[kBufferSize];
   const char* kScript =
@@ -59,7 +59,7 @@
 }
 
 ISOLATE_UNIT_TEST_CASE(SourceReport_Coverage_SimpleCall) {
-  // WARNING: This MUST be big enough for the serialised JSON string.
+  // WARNING: This MUST be big enough for the serialized JSON string.
   const int kBufferSize = 1024;
   char buffer[kBufferSize];
   const char* kScript =
@@ -107,7 +107,7 @@
 }
 
 ISOLATE_UNIT_TEST_CASE(SourceReport_Coverage_ForceCompile) {
-  // WARNING: This MUST be big enough for the serialised JSON string.
+  // WARNING: This MUST be big enough for the serialized JSON string.
   const int kBufferSize = 1024;
   char buffer[kBufferSize];
   const char* kScript =
@@ -157,7 +157,7 @@
 }
 
 ISOLATE_UNIT_TEST_CASE(SourceReport_Coverage_UnusedClass_NoForceCompile) {
-  // WARNING: This MUST be big enough for the serialised JSON string.
+  // WARNING: This MUST be big enough for the serialized JSON string.
   const int kBufferSize = 1024;
   char buffer[kBufferSize];
   const char* kScript =
@@ -203,7 +203,7 @@
 }
 
 ISOLATE_UNIT_TEST_CASE(SourceReport_Coverage_UnusedClass_ForceCompile) {
-  // WARNING: This MUST be big enough for the serialised JSON string.
+  // WARNING: This MUST be big enough for the serialized JSON string.
   const int kBufferSize = 1024;
   char buffer[kBufferSize];
   const char* kScript =
@@ -250,7 +250,7 @@
 }
 
 ISOLATE_UNIT_TEST_CASE(SourceReport_Coverage_UnusedClass_ForceCompileError) {
-  // WARNING: This MUST be big enough for the serialised JSON string.
+  // WARNING: This MUST be big enough for the serialized JSON string.
   const int kBufferSize = 1024;
   char buffer[kBufferSize];
   const char* kScript =
@@ -302,7 +302,7 @@
 }
 
 ISOLATE_UNIT_TEST_CASE(SourceReport_Coverage_NestedFunctions) {
-  // WARNING: This MUST be big enough for the serialised JSON string.
+  // WARNING: This MUST be big enough for the serialized JSON string.
   const int kBufferSize = 1024;
   char buffer[kBufferSize];
   const char* kScript =
@@ -362,7 +362,7 @@
 }
 
 ISOLATE_UNIT_TEST_CASE(SourceReport_Coverage_RestrictedRange) {
-  // WARNING: This MUST be big enough for the serialised JSON string.
+  // WARNING: This MUST be big enough for the serialized JSON string.
   const int kBufferSize = 1024;
   char buffer[kBufferSize];
   const char* kScript =
@@ -496,7 +496,7 @@
 }
 
 ISOLATE_UNIT_TEST_CASE(SourceReport_CallSites_SimpleCall) {
-  // WARNING: This MUST be big enough for the serialised JSON string.
+  // WARNING: This MUST be big enough for the serialized JSON string.
   const int kBufferSize = 2048;
   char buffer[kBufferSize];
   const char* kScript =
@@ -551,7 +551,7 @@
 }
 
 ISOLATE_UNIT_TEST_CASE(SourceReport_CallSites_PolymorphicCall) {
-  // WARNING: This MUST be big enough for the serialised JSON string.
+  // WARNING: This MUST be big enough for the serialized JSON string.
   const int kBufferSize = 4096;
   char buffer[kBufferSize];
   const char* kScript =
@@ -675,7 +675,7 @@
 }
 
 ISOLATE_UNIT_TEST_CASE(SourceReport_MultipleReports) {
-  // WARNING: This MUST be big enough for the serialised JSON string.
+  // WARNING: This MUST be big enough for the serialized JSON string.
   const int kBufferSize = 2048;
   char buffer[kBufferSize];
   const char* kScript =
@@ -731,7 +731,7 @@
 }
 
 ISOLATE_UNIT_TEST_CASE(SourceReport_PossibleBreakpoints_Simple) {
-  // WARNING: This MUST be big enough for the serialised JSON string.
+  // WARNING: This MUST be big enough for the serialized JSON string.
   const int kBufferSize = 1024;
   char buffer[kBufferSize];
   const char* kScript =
@@ -779,7 +779,7 @@
 }
 
 ISOLATE_UNIT_TEST_CASE(SourceReport_Coverage_Issue35453_NoSuchMethod) {
-  // WARNING: This MUST be big enough for the serialised JSON string.
+  // WARNING: This MUST be big enough for the serialized JSON string.
   const int kBufferSize = 1024;
   char buffer[kBufferSize];
   const char* kScript =
@@ -828,7 +828,7 @@
 }
 
 ISOLATE_UNIT_TEST_CASE(SourceReport_Coverage_Issue47017_Assert) {
-  // WARNING: This MUST be big enough for the serialised JSON string.
+  // WARNING: This MUST be big enough for the serialized JSON string.
   const int kBufferSize = 1024;
   char buffer[kBufferSize];
   const char* kScript =
@@ -873,7 +873,7 @@
 }
 
 ISOLATE_UNIT_TEST_CASE(SourceReport_Coverage_Issue47021_StaticOnlyClasses) {
-  // WARNING: This MUST be big enough for the serialised JSON string.
+  // WARNING: This MUST be big enough for the serialized JSON string.
   const int kBufferSize = 2048;
   char buffer[kBufferSize];
   const char* kScript =
@@ -1025,7 +1025,7 @@
 
 ISOLATE_UNIT_TEST_CASE(SourceReport_Coverage_IssueCov341_LateFinalVars) {
   // https://github.com/dart-lang/coverage/issues/341
-  // WARNING: This MUST be big enough for the serialised JSON string.
+  // WARNING: This MUST be big enough for the serialized JSON string.
   const int kBufferSize = 1024;
   char buffer[kBufferSize];
   const char* kScript =
@@ -1076,7 +1076,7 @@
 ISOLATE_UNIT_TEST_CASE(SourceReport_Coverage_IssueCov386_EnhancedEnums) {
   // https://github.com/dart-lang/coverage/issues/386
   // https://github.com/dart-lang/coverage/issues/377
-  // WARNING: This MUST be big enough for the serialised JSON string.
+  // WARNING: This MUST be big enough for the serialized JSON string.
   const int kBufferSize = 1024;
   char buffer[kBufferSize];
   const char* kScript =
@@ -1121,7 +1121,7 @@
 }
 
 ISOLATE_UNIT_TEST_CASE(SourceReport_Regress95008_RedirectingFactory) {
-  // WARNING: This MUST be big enough for the serialised JSON string.
+  // WARNING: This MUST be big enough for the serialized JSON string.
   const int kBufferSize = 1024;
   char buffer[kBufferSize];
   const char* kScript = R"(
@@ -1175,7 +1175,7 @@
 }
 
 ISOLATE_UNIT_TEST_CASE(SourceReport_BranchCoverage_if) {
-  // WARNING: This MUST be big enough for the serialised JSON string.
+  // WARNING: This MUST be big enough for the serialized JSON string.
   const int kBufferSize = 1024;
   char buffer[kBufferSize];
   const char* kScript = R"(
@@ -1231,7 +1231,7 @@
 }
 
 ISOLATE_UNIT_TEST_CASE(SourceReport_BranchCoverage_loops) {
-  // WARNING: This MUST be big enough for the serialised JSON string.
+  // WARNING: This MUST be big enough for the serialized JSON string.
   const int kBufferSize = 1024;
   char buffer[kBufferSize];
   const char* kScript = R"(
@@ -1297,7 +1297,7 @@
 }
 
 ISOLATE_UNIT_TEST_CASE(SourceReport_BranchCoverage_switch) {
-  // WARNING: This MUST be big enough for the serialised JSON string.
+  // WARNING: This MUST be big enough for the serialized JSON string.
   const int kBufferSize = 1024;
   char buffer[kBufferSize];
   const char* kScript = R"(
@@ -1351,7 +1351,7 @@
 }
 
 ISOLATE_UNIT_TEST_CASE(SourceReport_BranchCoverage_try) {
-  // WARNING: This MUST be big enough for the serialised JSON string.
+  // WARNING: This MUST be big enough for the serialized JSON string.
   const int kBufferSize = 1024;
   char buffer[kBufferSize];
   const char* kScript = R"(
diff --git a/sdk/lib/_internal/js_runtime/lib/string_helper.dart b/sdk/lib/_internal/js_runtime/lib/string_helper.dart
index 9305f55..56fead7 100644
--- a/sdk/lib/_internal/js_runtime/lib/string_helper.dart
+++ b/sdk/lib/_internal/js_runtime/lib/string_helper.dart
@@ -190,7 +190,7 @@
   return result.toString();
 }
 
-/// Replaces all non-overlapping occurences of [pattern] in [receiver] with
+/// Replaces all non-overlapping occurrences of [pattern] in [receiver] with
 /// [replacement].  This should be replace with
 /// (String.prototype.replaceAll)[https://github.com/tc39/proposal-string-replace-all]
 /// when available.
diff --git a/tests/corelib/string_replace_all_common.dart b/tests/corelib/string_replace_all_common.dart
index 4bdbff0..761be56 100644
--- a/tests/corelib/string_replace_all_common.dart
+++ b/tests/corelib/string_replace_all_common.dart
@@ -19,7 +19,7 @@
   // Test with the replaced string at the end.
   Expect.equals("abcabdaXX", "abcabdae".replaceAll(wrap("e"), "XX"));
 
-  // Test when there are no occurence of the string to replace.
+  // Test when there are no occurrence of the string to replace.
   Expect.equals("abcabdae", "abcabdae".replaceAll(wrap("f"), "XX"));
 
   // Test when the string to change is the empty string.
@@ -69,7 +69,7 @@
   // Test with the replaced string at the end.
   Expect.equals("abcabda[e]", "abcabdae".replaceAllMapped(wrap("e"), mark));
 
-  // Test when there are no occurence of the string to replace.
+  // Test when there are no occurrence of the string to replace.
   Expect.equals("abcabdae", "abcabdae".replaceAllMapped(wrap("f"), mark));
 
   // Test when the string to change is the empty string.
@@ -109,7 +109,7 @@
   Expect.equals("<abcabda>[e]<>",
       "abcabdae".splitMapJoin(wrap("e"), onMatch: mark, onNonMatch: rest));
 
-  // Test when there are no occurence of the string to replace.
+  // Test when there are no occurrence of the string to replace.
   Expect.equals("<abcabdae>",
       "abcabdae".splitMapJoin(wrap("f"), onMatch: mark, onNonMatch: rest));
 
diff --git a/tests/corelib/string_replace_test.dart b/tests/corelib/string_replace_test.dart
index 15f0c44..b318a01 100644
--- a/tests/corelib/string_replace_test.dart
+++ b/tests/corelib/string_replace_test.dart
@@ -14,7 +14,7 @@
   // Test with the replaced string at the end.
   Expect.equals("toABtoCDtoEto", "fromABtoCDtoEto".replaceFirst("from", "to"));
 
-  // Test when there are no occurence of the string to replace.
+  // Test when there are no occurrence of the string to replace.
   Expect.equals("ABC", "ABC".replaceFirst("from", "to"));
 
   // Test when the string to change is the empty string.
@@ -84,7 +84,7 @@
   Expect.equals("toABtoCDtoEto",
       "fromABtoCDtoEto".replaceFirstMapped("from", (_) => "to"));
 
-  // Test when there are no occurence of the string to replace.
+  // Test when there are no occurrence of the string to replace.
   Expect.equals("ABC", "ABC".replaceFirstMapped("from", (_) => "to"));
 
   // Test when the string to change is the empty string.
diff --git a/tests/corelib/string_test.dart b/tests/corelib/string_test.dart
index f66f16b..8afec78 100644
--- a/tests/corelib/string_test.dart
+++ b/tests/corelib/string_test.dart
@@ -321,7 +321,7 @@
   Expect.equals(
       "toABtoCDtoEto", "fromABfromCDfromEfrom".replaceAll("from", "to"));
 
-  // Test when there are no occurence of the string to replace.
+  // Test when there are no occurrence of the string to replace.
   Expect.equals("ABC", "ABC".replaceAll("from", "to"));
 
   // Test when the string to change is the empty string.
diff --git a/tests/corelib_2/string_replace_all_common.dart b/tests/corelib_2/string_replace_all_common.dart
index 780761c..d4deff1 100644
--- a/tests/corelib_2/string_replace_all_common.dart
+++ b/tests/corelib_2/string_replace_all_common.dart
@@ -21,7 +21,7 @@
   // Test with the replaced string at the end.
   Expect.equals("abcabdaXX", "abcabdae".replaceAll(wrap("e"), "XX"));
 
-  // Test when there are no occurence of the string to replace.
+  // Test when there are no occurrence of the string to replace.
   Expect.equals("abcabdae", "abcabdae".replaceAll(wrap("f"), "XX"));
 
   // Test when the string to change is the empty string.
@@ -71,7 +71,7 @@
   // Test with the replaced string at the end.
   Expect.equals("abcabda[e]", "abcabdae".replaceAllMapped(wrap("e"), mark));
 
-  // Test when there are no occurence of the string to replace.
+  // Test when there are no occurrence of the string to replace.
   Expect.equals("abcabdae", "abcabdae".replaceAllMapped(wrap("f"), mark));
 
   // Test when the string to change is the empty string.
@@ -111,7 +111,7 @@
   Expect.equals("<abcabda>[e]<>",
       "abcabdae".splitMapJoin(wrap("e"), onMatch: mark, onNonMatch: rest));
 
-  // Test when there are no occurence of the string to replace.
+  // Test when there are no occurrence of the string to replace.
   Expect.equals("<abcabdae>",
       "abcabdae".splitMapJoin(wrap("f"), onMatch: mark, onNonMatch: rest));
 
diff --git a/tests/corelib_2/string_replace_test.dart b/tests/corelib_2/string_replace_test.dart
index 49161de..4a7bad9 100644
--- a/tests/corelib_2/string_replace_test.dart
+++ b/tests/corelib_2/string_replace_test.dart
@@ -16,7 +16,7 @@
   // Test with the replaced string at the end.
   Expect.equals("toABtoCDtoEto", "fromABtoCDtoEto".replaceFirst("from", "to"));
 
-  // Test when there are no occurence of the string to replace.
+  // Test when there are no occurrence of the string to replace.
   Expect.equals("ABC", "ABC".replaceFirst("from", "to"));
 
   // Test when the string to change is the empty string.
@@ -89,7 +89,7 @@
   Expect.equals("toABtoCDtoEto",
       "fromABtoCDtoEto".replaceFirstMapped("from", (_) => "to"));
 
-  // Test when there are no occurence of the string to replace.
+  // Test when there are no occurrence of the string to replace.
   Expect.equals("ABC", "ABC".replaceFirstMapped("from", (_) => "to"));
 
   // Test when the string to change is the empty string.
diff --git a/tests/corelib_2/string_test.dart b/tests/corelib_2/string_test.dart
index 7054a81..d7789e6 100644
--- a/tests/corelib_2/string_test.dart
+++ b/tests/corelib_2/string_test.dart
@@ -323,7 +323,7 @@
   Expect.equals(
       "toABtoCDtoEto", "fromABfromCDfromEfrom".replaceAll("from", "to"));
 
-  // Test when there are no occurence of the string to replace.
+  // Test when there are no occurrence of the string to replace.
   Expect.equals("ABC", "ABC".replaceAll("from", "to"));
 
   // Test when the string to change is the empty string.
diff --git a/tests/web/native/native_missing_method1_frog_test.dart b/tests/web/native/native_missing_method1_frog_test.dart
index 13e8277..d9da3b7 100644
--- a/tests/web/native/native_missing_method1_frog_test.dart
+++ b/tests/web/native/native_missing_method1_frog_test.dart
@@ -22,7 +22,7 @@
 
 class B {
   // We need to define a foo method so that dart2js sees it. Because the
-  // only occurences of 'foo' is on B, a Dart class, no interceptor is used.  It
+  // only occurrences of 'foo' is on B, a Dart class, no interceptor is used.  It
   // thinks all calls will either go to this method, or throw a
   // NoSuchMethodError. It is possible that the native class will shadow a
   // method, but it will not shadow 'foo' because the name is either 'mangled'
diff --git a/tests/web_2/native/native_missing_method1_frog_test.dart b/tests/web_2/native/native_missing_method1_frog_test.dart
index df551ab..a1b2ad8 100644
--- a/tests/web_2/native/native_missing_method1_frog_test.dart
+++ b/tests/web_2/native/native_missing_method1_frog_test.dart
@@ -24,7 +24,7 @@
 
 class B {
   // We need to define a foo method so that dart2js sees it. Because the
-  // only occurences of 'foo' is on B, a Dart class, no interceptor is used.  It
+  // only occurrences of 'foo' is on B, a Dart class, no interceptor is used.  It
   // thinks all calls will either go to this method, or throw a
   // NoSuchMethodError. It is possible that the native class will shadow a
   // method, but it will not shadow 'foo' because the name is either 'mangled'
diff --git a/tools/VERSION b/tools/VERSION
index e0ae251..0611a21 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 18
 PATCH 0
-PRERELEASE 147
+PRERELEASE 148
 PRERELEASE_PATCH 0
\ No newline at end of file
