diff --git a/pkg/nnbd_migration/lib/migration_cli.dart b/pkg/nnbd_migration/lib/migration_cli.dart
index d8468bd..0c70a3e 100644
--- a/pkg/nnbd_migration/lib/migration_cli.dart
+++ b/pkg/nnbd_migration/lib/migration_cli.dart
@@ -796,7 +796,26 @@
   /// return additional paths that aren't inside the user's project, but doesn't
   /// override this method, then those additional paths will be analyzed but not
   /// migrated.
-  bool shouldBeMigrated(DriverBasedAnalysisContext context, String path) {
+  ///
+  /// Note: in a future version of the code, the [context] argument will be
+  /// removed; to ease the transition, clients should stop overriding this
+  /// method and should override [shouldBeMigrated2] instead.
+  bool shouldBeMigrated(DriverBasedAnalysisContext context, String path) =>
+      shouldBeMigrated2(path);
+
+  /// Determines whether a migrated version of the file at [path] should be
+  /// output by the migration too.  May be overridden by a derived class.
+  ///
+  /// This method should return `false` for files that are being considered by
+  /// the migration tool for information only (for example generated files, or
+  /// usages of the code-to-be-migrated by one one of its clients).
+  ///
+  /// By default returns `true` if the file is contained within the context
+  /// root.  This means that if a client overrides [computePathsToProcess] to
+  /// return additional paths that aren't inside the user's project, but doesn't
+  /// override this method, then those additional paths will be analyzed but not
+  /// migrated.
+  bool shouldBeMigrated2(String path) {
     return analysisContext.contextRoot.isAnalyzed(path);
   }
 
diff --git a/pkg/nnbd_migration/test/migration_cli_test.dart b/pkg/nnbd_migration/test/migration_cli_test.dart
index 1f85e00..c21ca01 100644
--- a/pkg/nnbd_migration/test/migration_cli_test.dart
+++ b/pkg/nnbd_migration/test/migration_cli_test.dart
@@ -184,9 +184,9 @@
   }
 
   @override
-  bool shouldBeMigrated(DriverBasedAnalysisContext context, String path) =>
+  bool shouldBeMigrated2(String path) =>
       cli._test.overrideShouldBeMigrated?.call(path) ??
-      super.shouldBeMigrated(context, path);
+      super.shouldBeMigrated2(path);
 
   /// Sorts the paths in [paths] for repeatability of migration tests.
   Set<String> _sortPaths(Set<String> paths) {
diff --git a/sdk/lib/convert/base64.dart b/sdk/lib/convert/base64.dart
index 0955ca1..5fcab0a 100644
--- a/sdk/lib/convert/base64.dart
+++ b/sdk/lib/convert/base64.dart
@@ -11,11 +11,11 @@
 /// does not allow invalid characters and requires padding.
 ///
 /// Examples:
-///
-///     var encoded = base64.encode([0x62, 0x6c, 0xc3, 0xa5, 0x62, 0xc3, 0xa6,
-///                                  0x72, 0x67, 0x72, 0xc3, 0xb8, 0x64]);
-///     var decoded = base64.decode("YmzDpWLDpnJncsO4ZAo=");
-///
+/// ```dart
+/// var encoded = base64.encode([0x62, 0x6c, 0xc3, 0xa5, 0x62, 0xc3, 0xa6,
+///                              0x72, 0x67, 0x72, 0xc3, 0xb8, 0x64]);
+/// var decoded = base64.decode("YmzDpWLDpnJncsO4ZAo=");
+/// ```
 /// The top-level [base64Encode] and [base64Decode] functions may be used
 /// instead if a local variable shadows the [base64] constant.
 const Base64Codec base64 = Base64Codec();
@@ -27,10 +27,11 @@
 /// does not allow invalid characters and requires padding.
 ///
 /// Examples:
-///
-///     var encoded = base64Url.encode([0x62, 0x6c, 0xc3, 0xa5, 0x62, 0xc3, 0xa6,
-///                                     0x72, 0x67, 0x72, 0xc3, 0xb8, 0x64]);
-///     var decoded = base64Url.decode("YmzDpWLDpnJncsO4ZAo=");
+/// ```dart
+/// var encoded = base64Url.encode([0x62, 0x6c, 0xc3, 0xa5, 0x62, 0xc3, 0xa6,
+///                                 0x72, 0x67, 0x72, 0xc3, 0xb8, 0x64]);
+/// var decoded = base64Url.decode("YmzDpWLDpnJncsO4ZAo=");
+/// ```
 const Base64Codec base64Url = Base64Codec.urlSafe();
 
 /// Encodes [bytes] using [base64](https://tools.ietf.org/html/rfc4648) encoding.
diff --git a/sdk/lib/convert/convert.dart b/sdk/lib/convert/convert.dart
index 1ea3d26..081f006 100644
--- a/sdk/lib/convert/convert.dart
+++ b/sdk/lib/convert/convert.dart
@@ -11,9 +11,9 @@
 /// chain and to use with streams.
 ///
 /// To use this library in your code:
-///
-///     import 'dart:convert';
-///
+/// ```dart
+/// import 'dart:convert';
+/// ```
 /// Two commonly used converters are the top-level instances of
 /// [JsonCodec] and [Utf8Codec], named [json] and [utf8], respectively.
 ///
@@ -34,19 +34,19 @@
 /// as it's read from a file,
 /// The second is an instance of [LineSplitter],
 /// which splits the data on newline boundaries.
+/// ```dart
+/// var lineNumber = 1;
+/// var stream = File('quotes.txt').openRead();
 ///
-///     var lineNumber = 1;
-///     var stream = File('quotes.txt').openRead();
-///
-///     stream.transform(utf8.decoder)
-///           .transform(const LineSplitter())
-///           .listen((line) {
-///             if (showLineNumbers) {
-///               stdout.write('${lineNumber++} ');
-///             }
-///             stdout.writeln(line);
-///           });
-///
+/// stream.transform(utf8.decoder)
+///       .transform(const LineSplitter())
+///       .listen((line) {
+///         if (showLineNumbers) {
+///           stdout.write('${lineNumber++} ');
+///         }
+///         stdout.writeln(line);
+///       });
+/// ```
 /// See the documentation for the [Codec] and [Converter] classes
 /// for information about creating your own converters.
 ///
diff --git a/sdk/lib/convert/json.dart b/sdk/lib/convert/json.dart
index e55bc2a..33eaab6 100644
--- a/sdk/lib/convert/json.dart
+++ b/sdk/lib/convert/json.dart
@@ -56,10 +56,10 @@
 /// use cases.
 ///
 /// Examples:
-///
-///     var encoded = json.encode([1, 2, { "a": null }]);
-///     var decoded = json.decode('["foo", { "bar": 499 }]');
-///
+/// ```dart
+/// var encoded = json.encode([1, 2, { "a": null }]);
+/// var decoded = json.decode('["foo", { "bar": 499 }]');
+/// ```
 /// The top-level [jsonEncode] and [jsonDecode] functions may be used instead if
 /// a local variable shadows the [json] constant.
 const JsonCodec json = JsonCodec();
@@ -99,9 +99,10 @@
 /// JSON objects.
 ///
 /// Examples:
-///
-///     var encoded = json.encode([1, 2, { "a": null }]);
-///     var decoded = json.decode('["foo", { "bar": 499 }]');
+/// ```dart
+/// var encoded = json.encode([1, 2, { "a": null }]);
+/// var decoded = json.decode('["foo", { "bar": 499 }]');
+/// ```
 class JsonCodec extends Codec<Object?, String> {
   final Object? Function(Object? key, Object? value)? _reviver;
   final Object? Function(dynamic)? _toEncodable;
@@ -246,7 +247,7 @@
   /// If the conversion throws, or returns a value that is not directly
   /// serializable, a [JsonUnsupportedObjectError] exception is thrown.
   /// If the call throws, the error is caught and stored in the
-  /// [JsonUnsupportedObjectError]'s [:cause:] field.
+  /// [JsonUnsupportedObjectError]'s `cause` field.
   ///
   /// If a [List] or [Map] contains a reference to itself, directly or through
   /// other lists or maps, it cannot be serialized and a [JsonCyclicError] is
diff --git a/sdk/lib/convert/utf.dart b/sdk/lib/convert/utf.dart
index c74f918..bbfba77 100644
--- a/sdk/lib/convert/utf.dart
+++ b/sdk/lib/convert/utf.dart
@@ -16,10 +16,11 @@
 /// use cases.
 ///
 /// Examples:
-///
-///     var encoded = utf8.encode("Îñţérñåţîöñåļîžåţîờñ");
-///     var decoded = utf8.decode([0x62, 0x6c, 0xc3, 0xa5, 0x62, 0xc3, 0xa6,
-///                                0x72, 0x67, 0x72, 0xc3, 0xb8, 0x64]);
+/// ```dart
+/// var encoded = utf8.encode("Îñţérñåţîöñåļîžåţîờñ");
+/// var decoded = utf8.decode([0x62, 0x6c, 0xc3, 0xa5, 0x62, 0xc3, 0xa6,
+///                            0x72, 0x67, 0x72, 0xc3, 0xb8, 0x64]);
+/// ```
 const Utf8Codec utf8 = Utf8Codec();
 
 /// A [Utf8Codec] encodes strings to utf-8 code units (bytes) and decodes
diff --git a/tools/VERSION b/tools/VERSION
index 52f5ed8b..d95fb06 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 12
 PATCH 0
-PRERELEASE 218
+PRERELEASE 219
 PRERELEASE_PATCH 0
\ No newline at end of file
