diff --git a/pkgs/test_api/lib/src/backend/stack_trace_formatter.dart b/pkgs/test_api/lib/src/backend/stack_trace_formatter.dart
index 2bb897e..9d9dfeb 100644
--- a/pkgs/test_api/lib/src/backend/stack_trace_formatter.dart
+++ b/pkgs/test_api/lib/src/backend/stack_trace_formatter.dart
@@ -34,9 +34,9 @@
   static StackTraceFormatter get current =>
       Zone.current[_currentKey] as StackTraceFormatter;
 
-  /// Runs [body] with [this] as [StackTraceFormatter.current].
+  /// Runs [body] with this as [StackTraceFormatter.current].
   ///
-  /// This is zone-scoped, so [this] will be the current configuration in any
+  /// This is zone-scoped, so this will be the current configuration in any
   /// asynchronous callbacks transitively created by [body].
   T asCurrent<T>(T Function() body) =>
       runZoned(body, zoneValues: {_currentKey: this});
diff --git a/pkgs/test_core/CHANGELOG.md b/pkgs/test_core/CHANGELOG.md
index 80c1ded..1307218 100644
--- a/pkgs/test_core/CHANGELOG.md
+++ b/pkgs/test_core/CHANGELOG.md
@@ -1,3 +1,5 @@
+## 0.3.10-dev
+
 ## 0.3.9
 
 * Ignore a null `RunnerSuite` rather than throw an error.
diff --git a/pkgs/test_core/lib/src/runner/configuration.dart b/pkgs/test_core/lib/src/runner/configuration.dart
index ce40ff0..cd4b1f6 100644
--- a/pkgs/test_core/lib/src/runner/configuration.dart
+++ b/pkgs/test_core/lib/src/runner/configuration.dart
@@ -444,14 +444,14 @@
     return Map.unmodifiable(input);
   }
 
-  /// Runs [body] with [this] as [Configuration.current].
+  /// Runs [body] with this as [Configuration.current].
   ///
-  /// This is zone-scoped, so [this] will be the current configuration in any
+  /// This is zone-scoped, so this will be the current configuration in any
   /// asynchronous callbacks transitively created by [body].
   T asCurrent<T>(T Function() body) =>
       runZoned(body, zoneValues: {_currentKey: this});
 
-  /// Throws a [FormatException] if [this] refers to any undefined runtimes.
+  /// Throws a [FormatException] if this refers to any undefined runtimes.
   void validateRuntimes(List<Runtime> allRuntimes) {
     // We don't need to verify [customRuntimes] here because those runtimes
     // already need to be verified and resolved to create [allRuntimes].
diff --git a/pkgs/test_core/lib/src/runner/engine.dart b/pkgs/test_core/lib/src/runner/engine.dart
index 512e968..93bd8fb 100644
--- a/pkgs/test_core/lib/src/runner/engine.dart
+++ b/pkgs/test_core/lib/src/runner/engine.dart
@@ -73,14 +73,14 @@
   /// A pool that limits the number of test suites running concurrently.
   final Pool _runPool;
 
-  /// A completer that will complete when [this] is unpaused.
+  /// A completer that will complete when this engine is unpaused.
   ///
-  /// If [this] isn't paused, [_pauseCompleter] is `null`.
+  /// `null` if this engine is not paused.
   Completer _pauseCompleter;
 
-  /// A future that completes once [this] is unpaused.
+  /// A future that completes once this is unpaused.
   ///
-  /// If [this] isn't paused, this completes immediately.
+  /// If this engine isn't paused, this future completes immediately.
   Future get _onUnpaused =>
       _pauseCompleter == null ? Future.value() : _pauseCompleter.future;
 
diff --git a/pkgs/test_core/lib/src/runner/live_suite_controller.dart b/pkgs/test_core/lib/src/runner/live_suite_controller.dart
index e2ec1dc..b8f8cc3 100644
--- a/pkgs/test_core/lib/src/runner/live_suite_controller.dart
+++ b/pkgs/test_core/lib/src/runner/live_suite_controller.dart
@@ -61,7 +61,7 @@
 /// suite, [noMoreLiveTests] should be called. Once the suite should be torn
 /// down, [close] should be called.
 class LiveSuiteController {
-  /// The [LiveSuite] controlled by [this].
+  /// The [LiveSuite] being controlled.
   LiveSuite get liveSuite => _liveSuite;
   LiveSuite _liveSuite;
 
diff --git a/pkgs/test_core/lib/src/runner/suite.dart b/pkgs/test_core/lib/src/runner/suite.dart
index c95494a..33e748b 100644
--- a/pkgs/test_core/lib/src/runner/suite.dart
+++ b/pkgs/test_core/lib/src/runner/suite.dart
@@ -122,8 +122,7 @@
 
   Set<String> _knownTags;
 
-  /// All child configurations of [this] that may be selected under various
-  /// circumstances.
+  /// All child configurations that may be selected under various circumstances.
   Iterable<SuiteConfiguration> get _children sync* {
     yield* tags.values;
     yield* onPlatform.values;
@@ -307,7 +306,7 @@
     return config._resolveTags();
   }
 
-  /// Throws a [FormatException] if [this] refers to any undefined runtimes.
+  /// Throws a [FormatException] if this refers to any undefined runtimes.
   void validateRuntimes(List<Runtime> allRuntimes) {
     var validVariables =
         allRuntimes.map((runtime) => runtime.identifier).toSet();
@@ -333,7 +332,7 @@
     });
   }
 
-  /// Returns a copy of [this] with all platform-specific configuration from
+  /// Returns a copy of this with all platform-specific configuration from
   /// [onPlatform] resolved.
   SuiteConfiguration forPlatform(SuitePlatform platform) {
     if (onPlatform.isEmpty) return this;
diff --git a/pkgs/test_core/pubspec.yaml b/pkgs/test_core/pubspec.yaml
index aa42f90..b9453e8 100644
--- a/pkgs/test_core/pubspec.yaml
+++ b/pkgs/test_core/pubspec.yaml
@@ -1,5 +1,5 @@
 name: test_core
-version: 0.3.9
+version: 0.3.10-dev
 description: A basic library for writing tests and running them on the VM.
 homepage: https://github.com/dart-lang/test/blob/master/pkgs/test_core
 
