diff --git a/pkg/meta/lib/meta.dart b/pkg/meta/lib/meta.dart
index c6dff3b..45b2e84 100644
--- a/pkg/meta/lib/meta.dart
+++ b/pkg/meta/lib/meta.dart
@@ -209,9 +209,10 @@
 /// field) `m` in a class `C`. If the annotation is on a field it applies to the
 /// getter, and setter if appropriate, that are induced by the field. Indicates
 /// that `m` should only be invoked from instance methods of `C` or classes that
-/// extend, implement or mix in `C`, either directly or indirectly. Additionally
-/// indicates that `m` should only be invoked on `this`, whether explicitly or
-/// implicitly.
+/// extend, implement or mix in `C`, either directly or indirectly or from within
+/// the same library that `m` is declared in. Additionally indicates that `m`
+/// should only be invoked on `this` (when outside of the library that it is
+/// declared in), whether explicitly or implicitly.
 ///
 /// Tools, such as the analyzer, can provide feedback if
 ///
diff --git a/pkg/test_runner/lib/src/multitest.dart b/pkg/test_runner/lib/src/multitest.dart
index a194c73..0b3040e 100644
--- a/pkg/test_runner/lib/src/multitest.dart
+++ b/pkg/test_runner/lib/src/multitest.dart
@@ -75,8 +75,7 @@
 import "test_file.dart";
 import "utils.dart";
 
-/// Until legacy multitests are ported we need to support both /// and //#
-final multitestMarker = RegExp(r"//[/#]");
+final multitestMarker = "//#";
 
 final _multitestOutcomes = {
   'ok',
diff --git a/pkg/test_runner/tool/convert_multitest.dart b/pkg/test_runner/tool/convert_multitest.dart
index c44394e..0647876 100644
--- a/pkg/test_runner/tool/convert_multitest.dart
+++ b/pkg/test_runner/tool/convert_multitest.dart
@@ -159,7 +159,7 @@
   var suiteDirectory = Path.raw(Uri.base.path);
   var content = await testFile.readAsString();
   var test = TestFile.parse(suiteDirectory, testFilePath, content);
-  if (!multitestMarker.hasMatch(content)) {
+  if (!content.contains(multitestMarker)) {
     print("Test ${test.path.toNativePath()} is not a multi-test.");
     exitCode = 1;
     return;
diff --git a/runtime/observatory/tests/service/evaluate_activation_test.dart b/runtime/observatory/tests/service/evaluate_activation_test.dart
index bf65d96..5a5708f 100644
--- a/runtime/observatory/tests/service/evaluate_activation_test.dart
+++ b/runtime/observatory/tests/service/evaluate_activation_test.dart
@@ -84,28 +84,28 @@
     print("Event $event");
     if (event.kind == ServiceEvent.kPauseBreakpoint) {
       dynamic frameNumber = 1, r;
-      r = await isolate.evalFrame(frameNumber, '123');  /// instance: ok
-      expect(r.valueAsString, equals('123'));  /// instance: continued
-      r = await isolate.evalFrame(frameNumber, 'this');  /// scope: ok
-      expect(r.clazz.name, equals('C'));  /// scope: continued
-      r = await isolate.evalFrame(frameNumber, 'instVar');  /// instance: continued
-      expect(r.valueAsString, equals('1'));  /// instance: continued
-      r = await isolate.evalFrame(frameNumber, 'classVar'); /// instance: continued
-      expect(r.valueAsString, equals('2'));  /// instance: continued
-      r = await isolate.evalFrame(frameNumber, 'methodParam');  /// scope: continued
-      expect(r.valueAsString, equals('3'));  /// scope: continued
-      r = await isolate.evalFrame(frameNumber, 'methodTemp');  /// scope: continued
-      expect(r.valueAsString, equals('4'));  /// scope: continued
-      r = await isolate.evalFrame(frameNumber, 'outerParam');  /// scope: continued
-      expect(r.valueAsString, equals('5'));  /// scope: continued
-      r = await isolate.evalFrame(frameNumber, 'outerTemp');  /// scope: continued
-      expect(r.valueAsString, equals('6'));  /// scope: continued
-      r = await isolate.evalFrame(frameNumber, 'innerParam');  /// instance: continued
-      expect(r.valueAsString, equals('7'));  /// instance: continued
-      r = await isolate.evalFrame(frameNumber, 'innerTemp');  /// instance: continued
-      expect(r.valueAsString, equals('8'));  /// instance: continued
-      r = await isolate.evalFrame(frameNumber, 'math.sqrt');  /// instance: continued
-      expect(r.isClosure, isTrue);  /// instance: continued
+      r = await isolate.evalFrame(frameNumber, '123');  //# instance: ok
+      expect(r.valueAsString, equals('123'));  //# instance: continued
+      r = await isolate.evalFrame(frameNumber, 'this');  //# scope: ok
+      expect(r.clazz.name, equals('C'));  //# scope: continued
+      r = await isolate.evalFrame(frameNumber, 'instVar');  //# instance: continued
+      expect(r.valueAsString, equals('1'));  //# instance: continued
+      r = await isolate.evalFrame(frameNumber, 'classVar'); //# instance: continued
+      expect(r.valueAsString, equals('2'));  //# instance: continued
+      r = await isolate.evalFrame(frameNumber, 'methodParam');  //# scope: continued
+      expect(r.valueAsString, equals('3'));  //# scope: continued
+      r = await isolate.evalFrame(frameNumber, 'methodTemp');  //# scope: continued
+      expect(r.valueAsString, equals('4'));  //# scope: continued
+      r = await isolate.evalFrame(frameNumber, 'outerParam');  //# scope: continued
+      expect(r.valueAsString, equals('5'));  //# scope: continued
+      r = await isolate.evalFrame(frameNumber, 'outerTemp');  //# scope: continued
+      expect(r.valueAsString, equals('6'));  //# scope: continued
+      r = await isolate.evalFrame(frameNumber, 'innerParam');  //# instance: continued
+      expect(r.valueAsString, equals('7'));  //# instance: continued
+      r = await isolate.evalFrame(frameNumber, 'innerTemp');  //# instance: continued
+      expect(r.valueAsString, equals('8'));  //# instance: continued
+      r = await isolate.evalFrame(frameNumber, 'math.sqrt');  //# instance: continued
+      expect(r.isClosure, isTrue);  //# instance: continued
 
       hitBreakpoint = true;
       sub.cancel();  // Do not handle events for the other tests.
@@ -142,13 +142,13 @@
       r = await isolate.evalFrame(frameNumber, 'classVar');
       expect(r.valueAsString, equals('2'));
       r = await isolate.evalFrame(frameNumber, 'methodParam');
-      expect(r.valueAsString, equals('3'));  /// scope: continued
+      expect(r.valueAsString, equals('3'));  //# scope: continued
       r = await isolate.evalFrame(frameNumber, 'methodTemp');
-      expect(r.valueAsString, equals('4'));  /// scope: continued
+      expect(r.valueAsString, equals('4'));  //# scope: continued
       r = await isolate.evalFrame(frameNumber, 'outerParam');
-      expect(r.valueAsString, equals('5'));  /// scope: continued
+      expect(r.valueAsString, equals('5'));  //# scope: continued
       r = await isolate.evalFrame(frameNumber, 'outerTemp');
-      expect(r.valueAsString, equals('6'));  /// scope: continued
+      expect(r.valueAsString, equals('6'));  //# scope: continued
       r = await isolate.evalFrame(frameNumber, 'innerParam');
       expect(r.valueAsString, equals('7'));
       r = await isolate.evalFrame(frameNumber, 'innerTemp');
@@ -224,28 +224,28 @@
     print("Event $event");
     if (event.kind == ServiceEvent.kPauseBreakpoint) {
       dynamic frameNumber = 1, r;
-      r = await isolate.evalFrame(frameNumber, '123');  /// instance: continued
-      expect(r.valueAsString, equals('123'));  /// instance: continued
-      r = await isolate.evalFrame(frameNumber, 'this');  /// scope: continued
-      expect(r.clazz.name, equals('C'));  /// scope: continued
-      r = await isolate.evalFrame(frameNumber, 'instVar');  /// instance: continued
-      expect(r.valueAsString, equals('1'));  /// instance: continued
-      r = await isolate.evalFrame(frameNumber, 'classVar');  /// instance: continued
-      expect(r.valueAsString, equals('2'));  /// instance: continued
-      r = await isolate.evalFrame(frameNumber, 'methodParam');  /// scope: continued
-      expect(r.valueAsString, equals('3'));  /// scope: continued
-      r = await isolate.evalFrame(frameNumber, 'methodTemp');  /// scope: continued
-      expect(r.valueAsString, equals('4'));  /// scope: continued
-      r = await isolate.evalFrame(frameNumber, 'outerParam');  /// scope: continued
-      expect(r.valueAsString, equals('5'));  /// scope: continued
-      r = await isolate.evalFrame(frameNumber, 'outerTemp');  /// scope: continued
-      expect(r.valueAsString, equals('6'));  /// scope: continued
-      r = await isolate.evalFrame(frameNumber, 'innerParam');  /// instance: continued
-      expect(r.valueAsString, equals('7'));  /// instance: continued
-      r = await isolate.evalFrame(frameNumber, 'innerTemp');  /// instance: continued
-      expect(r.valueAsString, equals('8'));  /// instance: continued
-      r = await isolate.evalFrame(frameNumber, 'math.sqrt');  /// instance: continued
-      expect(r.isClosure, isTrue);  /// instance: continued
+      r = await isolate.evalFrame(frameNumber, '123');  //# instance: continued
+      expect(r.valueAsString, equals('123'));  //# instance: continued
+      r = await isolate.evalFrame(frameNumber, 'this');  //# scope: continued
+      expect(r.clazz.name, equals('C'));  //# scope: continued
+      r = await isolate.evalFrame(frameNumber, 'instVar');  //# instance: continued
+      expect(r.valueAsString, equals('1'));  //# instance: continued
+      r = await isolate.evalFrame(frameNumber, 'classVar');  //# instance: continued
+      expect(r.valueAsString, equals('2'));  //# instance: continued
+      r = await isolate.evalFrame(frameNumber, 'methodParam');  //# scope: continued
+      expect(r.valueAsString, equals('3'));  //# scope: continued
+      r = await isolate.evalFrame(frameNumber, 'methodTemp');  //# scope: continued
+      expect(r.valueAsString, equals('4'));  //# scope: continued
+      r = await isolate.evalFrame(frameNumber, 'outerParam');  //# scope: continued
+      expect(r.valueAsString, equals('5'));  //# scope: continued
+      r = await isolate.evalFrame(frameNumber, 'outerTemp');  //# scope: continued
+      expect(r.valueAsString, equals('6'));  //# scope: continued
+      r = await isolate.evalFrame(frameNumber, 'innerParam');  //# instance: continued
+      expect(r.valueAsString, equals('7'));  //# instance: continued
+      r = await isolate.evalFrame(frameNumber, 'innerTemp');  //# instance: continued
+      expect(r.valueAsString, equals('8'));  //# instance: continued
+      r = await isolate.evalFrame(frameNumber, 'math.sqrt');  //# instance: continued
+      expect(r.isClosure, isTrue);  //# instance: continued
 
       hitBreakpoint = true;
       sub.cancel();  // Do not handle events for the other tests.
diff --git a/runtime/observatory_2/tests/service_2/evaluate_activation_test.dart b/runtime/observatory_2/tests/service_2/evaluate_activation_test.dart
index 7967aae..a1c3a5b 100644
--- a/runtime/observatory_2/tests/service_2/evaluate_activation_test.dart
+++ b/runtime/observatory_2/tests/service_2/evaluate_activation_test.dart
@@ -84,28 +84,28 @@
     print("Event $event");
     if (event.kind == ServiceEvent.kPauseBreakpoint) {
       var frameNumber = 1, r;
-      r = await isolate.evalFrame(frameNumber, '123');  /// instance: ok
-      expect(r.valueAsString, equals('123'));  /// instance: continued
-      r = await isolate.evalFrame(frameNumber, 'this');  /// scope: ok
-      expect(r.clazz.name, equals('C'));  /// scope: continued
-      r = await isolate.evalFrame(frameNumber, 'instVar');  /// instance: continued
-      expect(r.valueAsString, equals('1'));  /// instance: continued
-      r = await isolate.evalFrame(frameNumber, 'classVar'); /// instance: continued
-      expect(r.valueAsString, equals('2'));  /// instance: continued
-      r = await isolate.evalFrame(frameNumber, 'methodParam');  /// scope: continued
-      expect(r.valueAsString, equals('3'));  /// scope: continued
-      r = await isolate.evalFrame(frameNumber, 'methodTemp');  /// scope: continued
-      expect(r.valueAsString, equals('4'));  /// scope: continued
-      r = await isolate.evalFrame(frameNumber, 'outerParam');  /// scope: continued
-      expect(r.valueAsString, equals('5'));  /// scope: continued
-      r = await isolate.evalFrame(frameNumber, 'outerTemp');  /// scope: continued
-      expect(r.valueAsString, equals('6'));  /// scope: continued
-      r = await isolate.evalFrame(frameNumber, 'innerParam');  /// instance: continued
-      expect(r.valueAsString, equals('7'));  /// instance: continued
-      r = await isolate.evalFrame(frameNumber, 'innerTemp');  /// instance: continued
-      expect(r.valueAsString, equals('8'));  /// instance: continued
-      r = await isolate.evalFrame(frameNumber, 'math.sqrt');  /// instance: continued
-      expect(r.isClosure, isTrue);  /// instance: continued
+      r = await isolate.evalFrame(frameNumber, '123');  //# instance: ok
+      expect(r.valueAsString, equals('123'));  //# instance: continued
+      r = await isolate.evalFrame(frameNumber, 'this');  //# scope: ok
+      expect(r.clazz.name, equals('C'));  //# scope: continued
+      r = await isolate.evalFrame(frameNumber, 'instVar');  //# instance: continued
+      expect(r.valueAsString, equals('1'));  //# instance: continued
+      r = await isolate.evalFrame(frameNumber, 'classVar'); //# instance: continued
+      expect(r.valueAsString, equals('2'));  //# instance: continued
+      r = await isolate.evalFrame(frameNumber, 'methodParam');  //# scope: continued
+      expect(r.valueAsString, equals('3'));  //# scope: continued
+      r = await isolate.evalFrame(frameNumber, 'methodTemp');  //# scope: continued
+      expect(r.valueAsString, equals('4'));  //# scope: continued
+      r = await isolate.evalFrame(frameNumber, 'outerParam');  //# scope: continued
+      expect(r.valueAsString, equals('5'));  //# scope: continued
+      r = await isolate.evalFrame(frameNumber, 'outerTemp');  //# scope: continued
+      expect(r.valueAsString, equals('6'));  //# scope: continued
+      r = await isolate.evalFrame(frameNumber, 'innerParam');  //# instance: continued
+      expect(r.valueAsString, equals('7'));  //# instance: continued
+      r = await isolate.evalFrame(frameNumber, 'innerTemp');  //# instance: continued
+      expect(r.valueAsString, equals('8'));  //# instance: continued
+      r = await isolate.evalFrame(frameNumber, 'math.sqrt');  //# instance: continued
+      expect(r.isClosure, isTrue);  //# instance: continued
 
       hitBreakpoint = true;
       sub.cancel();  // Do not handle events for the other tests.
@@ -142,13 +142,13 @@
       r = await isolate.evalFrame(frameNumber, 'classVar');
       expect(r.valueAsString, equals('2'));
       r = await isolate.evalFrame(frameNumber, 'methodParam');
-      expect(r.valueAsString, equals('3'));  /// scope: continued
+      expect(r.valueAsString, equals('3'));  //# scope: continued
       r = await isolate.evalFrame(frameNumber, 'methodTemp');
-      expect(r.valueAsString, equals('4'));  /// scope: continued
+      expect(r.valueAsString, equals('4'));  //# scope: continued
       r = await isolate.evalFrame(frameNumber, 'outerParam');
-      expect(r.valueAsString, equals('5'));  /// scope: continued
+      expect(r.valueAsString, equals('5'));  //# scope: continued
       r = await isolate.evalFrame(frameNumber, 'outerTemp');
-      expect(r.valueAsString, equals('6'));  /// scope: continued
+      expect(r.valueAsString, equals('6'));  //# scope: continued
       r = await isolate.evalFrame(frameNumber, 'innerParam');
       expect(r.valueAsString, equals('7'));
       r = await isolate.evalFrame(frameNumber, 'innerTemp');
@@ -224,28 +224,28 @@
     print("Event $event");
     if (event.kind == ServiceEvent.kPauseBreakpoint) {
       var frameNumber = 1, r;
-      r = await isolate.evalFrame(frameNumber, '123');  /// instance: continued
-      expect(r.valueAsString, equals('123'));  /// instance: continued
-      r = await isolate.evalFrame(frameNumber, 'this');  /// scope: continued
-      expect(r.clazz.name, equals('C'));  /// scope: continued
-      r = await isolate.evalFrame(frameNumber, 'instVar');  /// instance: continued
-      expect(r.valueAsString, equals('1'));  /// instance: continued
-      r = await isolate.evalFrame(frameNumber, 'classVar');  /// instance: continued
-      expect(r.valueAsString, equals('2'));  /// instance: continued
-      r = await isolate.evalFrame(frameNumber, 'methodParam');  /// scope: continued
-      expect(r.valueAsString, equals('3'));  /// scope: continued
-      r = await isolate.evalFrame(frameNumber, 'methodTemp');  /// scope: continued
-      expect(r.valueAsString, equals('4'));  /// scope: continued
-      r = await isolate.evalFrame(frameNumber, 'outerParam');  /// scope: continued
-      expect(r.valueAsString, equals('5'));  /// scope: continued
-      r = await isolate.evalFrame(frameNumber, 'outerTemp');  /// scope: continued
-      expect(r.valueAsString, equals('6'));  /// scope: continued
-      r = await isolate.evalFrame(frameNumber, 'innerParam');  /// instance: continued
-      expect(r.valueAsString, equals('7'));  /// instance: continued
-      r = await isolate.evalFrame(frameNumber, 'innerTemp');  /// instance: continued
-      expect(r.valueAsString, equals('8'));  /// instance: continued
-      r = await isolate.evalFrame(frameNumber, 'math.sqrt');  /// instance: continued
-      expect(r.isClosure, isTrue);  /// instance: continued
+      r = await isolate.evalFrame(frameNumber, '123');  //# instance: continued
+      expect(r.valueAsString, equals('123'));  //# instance: continued
+      r = await isolate.evalFrame(frameNumber, 'this');  //# scope: continued
+      expect(r.clazz.name, equals('C'));  //# scope: continued
+      r = await isolate.evalFrame(frameNumber, 'instVar');  //# instance: continued
+      expect(r.valueAsString, equals('1'));  //# instance: continued
+      r = await isolate.evalFrame(frameNumber, 'classVar');  //# instance: continued
+      expect(r.valueAsString, equals('2'));  //# instance: continued
+      r = await isolate.evalFrame(frameNumber, 'methodParam');  //# scope: continued
+      expect(r.valueAsString, equals('3'));  //# scope: continued
+      r = await isolate.evalFrame(frameNumber, 'methodTemp');  //# scope: continued
+      expect(r.valueAsString, equals('4'));  //# scope: continued
+      r = await isolate.evalFrame(frameNumber, 'outerParam');  //# scope: continued
+      expect(r.valueAsString, equals('5'));  //# scope: continued
+      r = await isolate.evalFrame(frameNumber, 'outerTemp');  //# scope: continued
+      expect(r.valueAsString, equals('6'));  //# scope: continued
+      r = await isolate.evalFrame(frameNumber, 'innerParam');  //# instance: continued
+      expect(r.valueAsString, equals('7'));  //# instance: continued
+      r = await isolate.evalFrame(frameNumber, 'innerTemp');  //# instance: continued
+      expect(r.valueAsString, equals('8'));  //# instance: continued
+      r = await isolate.evalFrame(frameNumber, 'math.sqrt');  //# instance: continued
+      expect(r.isClosure, isTrue);  //# instance: continued
 
       hitBreakpoint = true;
       sub.cancel();  // Do not handle events for the other tests.
diff --git a/runtime/tests/vm/dart/data_uri_import_test.dart b/runtime/tests/vm/dart/data_uri_import_test.dart
index 576f302..384240d 100644
--- a/runtime/tests/vm/dart/data_uri_import_test.dart
+++ b/runtime/tests/vm/dart/data_uri_import_test.dart
@@ -3,13 +3,13 @@
 // BSD-style license that can be found in the LICENSE file.
 
 // foo() => 42;
-import 'data:application/dart;charset=utf-8,foo%28%29%20%3D%3E%2042%3B';  /// percentencoded: ok
-import 'data:text/plain;charset=utf-8,foo%28%29%20%3D%3E%2042%3B';  /// wrongmime: ok
-import 'data:;charset=utf-8,foo%28%29%20%3D%3E%2042%3B';  /// nomime: ok
-import 'data:application/dart;charset=utf-16,foo%28%29%20%3D%3E%2042%3B';  /// utf16: ok
-import 'data:application/dart,foo%28%29%20%3D%3E%2042%3B';  /// nocharset: ok
-import 'data:application/dart;charset=utf-8,foo?%9g';  /// badencodeddate: compile-time error
-import 'data:application/dart;charset=utf-8;base64,Zm9vKCkgPT4gNDI7';  /// base64: ok
+import 'data:application/dart;charset=utf-8,foo%28%29%20%3D%3E%2042%3B';  //# percentencoded: ok
+import 'data:text/plain;charset=utf-8,foo%28%29%20%3D%3E%2042%3B';  //# wrongmime: ok
+import 'data:;charset=utf-8,foo%28%29%20%3D%3E%2042%3B';  //# nomime: ok
+import 'data:application/dart;charset=utf-16,foo%28%29%20%3D%3E%2042%3B';  //# utf16: ok
+import 'data:application/dart,foo%28%29%20%3D%3E%2042%3B';  //# nocharset: ok
+import 'data:application/dart;charset=utf-8,foo?%9g';  //# badencodeddate: compile-time error
+import 'data:application/dart;charset=utf-8;base64,Zm9vKCkgPT4gNDI7';  //# base64: ok
 
 import "package:expect/expect.dart";
 
diff --git a/runtime/tests/vm/dart/redirection_type_shuffling_test.dart b/runtime/tests/vm/dart/redirection_type_shuffling_test.dart
index b177334..0567a24 100644
--- a/runtime/tests/vm/dart/redirection_type_shuffling_test.dart
+++ b/runtime/tests/vm/dart/redirection_type_shuffling_test.dart
@@ -7,7 +7,7 @@
 
 class G<A extends int, B extends String> {
   G();
-  factory G.swap() = G<B,A>;  /// 00: compile-time error
+  factory G.swap() = G<B,A>;  //# 00: compile-time error
   factory G.retain() = G<A,B>;
 }
 
@@ -16,5 +16,5 @@
 
   Expect.isTrue(cm.newInstance(#retain, []).reflectee is G<int,String>);
 
-  Expect.isTrue(cm.newInstance(#swap, []).reflectee is G<String,int>);  /// 00: dynamic type error
+  Expect.isTrue(cm.newInstance(#swap, []).reflectee is G<String,int>);  //# 00: dynamic type error
 }
diff --git a/runtime/tests/vm/dart_2/data_uri_import_test.dart b/runtime/tests/vm/dart_2/data_uri_import_test.dart
index 576f302..ec23fb5 100644
--- a/runtime/tests/vm/dart_2/data_uri_import_test.dart
+++ b/runtime/tests/vm/dart_2/data_uri_import_test.dart
@@ -3,13 +3,13 @@
 // BSD-style license that can be found in the LICENSE file.
 
 // foo() => 42;
-import 'data:application/dart;charset=utf-8,foo%28%29%20%3D%3E%2042%3B';  /// percentencoded: ok
-import 'data:text/plain;charset=utf-8,foo%28%29%20%3D%3E%2042%3B';  /// wrongmime: ok
-import 'data:;charset=utf-8,foo%28%29%20%3D%3E%2042%3B';  /// nomime: ok
-import 'data:application/dart;charset=utf-16,foo%28%29%20%3D%3E%2042%3B';  /// utf16: ok
-import 'data:application/dart,foo%28%29%20%3D%3E%2042%3B';  /// nocharset: ok
-import 'data:application/dart;charset=utf-8,foo?%9g';  /// badencodeddate: compile-time error
-import 'data:application/dart;charset=utf-8;base64,Zm9vKCkgPT4gNDI7';  /// base64: ok
+import 'data:application/dart;charset=utf-8,foo%28%29%20%3D%3E%2042%3B'; //# percentencoded: ok
+import 'data:text/plain;charset=utf-8,foo%28%29%20%3D%3E%2042%3B';  //# wrongmime: ok
+import 'data:;charset=utf-8,foo%28%29%20%3D%3E%2042%3B';  //# nomime: ok
+import 'data:application/dart;charset=utf-16,foo%28%29%20%3D%3E%2042%3B';  //# utf16: ok
+import 'data:application/dart,foo%28%29%20%3D%3E%2042%3B';  //# nocharset: ok
+import 'data:application/dart;charset=utf-8,foo?%9g';  //# badencodeddate: compile-time error
+import 'data:application/dart;charset=utf-8;base64,Zm9vKCkgPT4gNDI7';  //# base64: ok
 
 import "package:expect/expect.dart";
 
diff --git a/runtime/tests/vm/dart_2/redirection_type_shuffling_test.dart b/runtime/tests/vm/dart_2/redirection_type_shuffling_test.dart
index b177334..0567a24 100644
--- a/runtime/tests/vm/dart_2/redirection_type_shuffling_test.dart
+++ b/runtime/tests/vm/dart_2/redirection_type_shuffling_test.dart
@@ -7,7 +7,7 @@
 
 class G<A extends int, B extends String> {
   G();
-  factory G.swap() = G<B,A>;  /// 00: compile-time error
+  factory G.swap() = G<B,A>;  //# 00: compile-time error
   factory G.retain() = G<A,B>;
 }
 
@@ -16,5 +16,5 @@
 
   Expect.isTrue(cm.newInstance(#retain, []).reflectee is G<int,String>);
 
-  Expect.isTrue(cm.newInstance(#swap, []).reflectee is G<String,int>);  /// 00: dynamic type error
+  Expect.isTrue(cm.newInstance(#swap, []).reflectee is G<String,int>);  //# 00: dynamic type error
 }
diff --git a/tools/VERSION b/tools/VERSION
index ed6e679..e74acea 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 14
 PATCH 0
-PRERELEASE 90
+PRERELEASE 91
 PRERELEASE_PATCH 0
\ No newline at end of file
