Migrate the rest of package:dwds to null safety (#1689)

* Migrate debugging/inspector.dart to null safety

* Migrate expression evaluator to null safety

* format

* Fix failing tests

* Migrate services/chrome_proxu_service.dart to null safety

* Migrate rest of the services and dwds_vm_client to null safety

* Migrate package:dwds to null safety

* Make inspector.getObject  return non-null value

* Remove unused parameter restoreBreakpoint in tests

* Cleanup error messages in Inspector._getScript

* Cleanup

* Fixed spelling error
diff --git a/dwds/CHANGELOG.md b/dwds/CHANGELOG.md
index fe53aa6..11b6df6 100644
--- a/dwds/CHANGELOG.md
+++ b/dwds/CHANGELOG.md
@@ -7,6 +7,7 @@
   the scope.
 - Remove showing uncaptured values from the stack during evaluation.
 - Refactor code to break most circular dependencies between files.
+- Migrate `package:dwds` to null safety.
 
 **Breaking changes**
 - Remove no longer used `ExpressionCompilerService.handler`.
diff --git a/dwds/lib/dart_web_debug_service.dart b/dwds/lib/dart_web_debug_service.dart
index 1429aa6..b650041 100644
--- a/dwds/lib/dart_web_debug_service.dart
+++ b/dwds/lib/dart_web_debug_service.dart
@@ -2,12 +2,9 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-// @dart = 2.9
-
 import 'dart:async';
 
 import 'package:logging/logging.dart';
-import 'package:meta/meta.dart';
 import 'package:shelf/shelf.dart';
 import 'package:sse/server/sse_handler.dart';
 import 'package:webkit_inspection_protocol/webkit_inspection_protocol.dart';
@@ -33,7 +30,7 @@
   static final _logger = Logger('DWDS');
   final Middleware middleware;
   final Handler handler;
-  final DevTools _devTools;
+  final DevTools? _devTools;
   final DevHandler _devHandler;
   final AssetReader _assetReader;
   final bool _enableDebugging;
@@ -67,53 +64,42 @@
   }
 
   static Future<Dwds> start({
-    @required AssetReader assetReader,
-    @required Stream<BuildResult> buildResults,
-    @required ConnectionProvider chromeConnection,
-    @required LoadStrategy loadStrategy,
-    @required bool enableDebugging,
+    required AssetReader assetReader,
+    required Stream<BuildResult> buildResults,
+    required ConnectionProvider chromeConnection,
+    required LoadStrategy loadStrategy,
+    required bool enableDebugging,
     // TODO(annagrin): make expressionCompiler argument required
     // [issue 881](https://github.com/dart-lang/webdev/issues/881)
-    ExpressionCompiler expressionCompiler,
-    bool enableDebugExtension,
-    String hostname,
-    bool useSseForDebugProxy,
-    bool useSseForDebugBackend,
-    bool useSseForInjectedClient,
-    UrlEncoder urlEncoder,
-    bool spawnDds,
+    ExpressionCompiler? expressionCompiler,
+    bool enableDebugExtension = false,
+    String hostname = 'localhost',
+    bool useSseForDebugProxy = true,
+    bool useSseForDebugBackend = true,
+    bool useSseForInjectedClient = true,
+    UrlEncoder? urlEncoder,
+    bool spawnDds = true,
     // TODO(elliette): DevTools is inconsistently capitalized throughout this
-    // file. Change all occurances of devtools/Devtools to devTools/DevTools.
-    bool enableDevtoolsLaunch,
-    DevtoolsLauncher devtoolsLauncher,
-    bool launchDevToolsInNewWindow,
-    SdkConfigurationProvider sdkConfigurationProvider,
-    bool emitDebugEvents,
+    // file. Change all occurrences of devtools/Devtools to devTools/DevTools.
+    bool enableDevtoolsLaunch = true,
+    DevtoolsLauncher? devtoolsLauncher,
+    bool launchDevToolsInNewWindow = true,
+    SdkConfigurationProvider? sdkConfigurationProvider,
+    bool emitDebugEvents = true,
   }) async {
-    hostname ??= 'localhost';
-    enableDebugging ??= true;
-    enableDebugExtension ??= false;
-    useSseForDebugProxy ??= true;
-    useSseForDebugBackend ??= true;
-    useSseForInjectedClient ??= true;
-    enableDevtoolsLaunch ??= true;
-    launchDevToolsInNewWindow ??= true;
-    spawnDds ??= true;
     globalLoadStrategy = loadStrategy;
-    emitDebugEvents ??= true;
-
     sdkConfigurationProvider ??= DefaultSdkConfigurationProvider();
 
-    DevTools devTools;
-    Future<String> extensionUri;
-    ExtensionBackend extensionBackend;
+    DevTools? devTools;
+    Future<String>? extensionUri;
+    ExtensionBackend? extensionBackend;
     if (enableDebugExtension) {
       final handler = useSseForDebugBackend
           ? SseSocketHandler(SseHandler(Uri.parse('/\$debug'),
               // Proxy servers may actively kill long standing connections.
               // Allow for clients to reconnect in a short window. Making the
               // window too long may cause issues if the user closes a debug
-              // session and initites a new one during the keepAlive window.
+              // session and initiates a new one during the keepAlive window.
               keepAlive: const Duration(seconds: 5)))
           : WebSocketSocketHandler();
 
@@ -154,7 +140,6 @@
       urlEncoder,
       useSseForDebugProxy,
       useSseForInjectedClient,
-      serveDevTools,
       expressionCompiler,
       injected,
       spawnDds,
diff --git a/dwds/lib/dwds.dart b/dwds/lib/dwds.dart
index fbf6198..40f1034 100644
--- a/dwds/lib/dwds.dart
+++ b/dwds/lib/dwds.dart
@@ -2,8 +2,6 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-// @dart = 2.9
-
 export 'dart_web_debug_service.dart' show Dwds, ConnectionProvider;
 export 'src/connections/app_connection.dart' show AppConnection;
 export 'src/connections/debug_connection.dart' show DebugConnection;
diff --git a/dwds/lib/src/debugging/inspector.dart b/dwds/lib/src/debugging/inspector.dart
index b147fb9..3b1e22b 100644
--- a/dwds/lib/src/debugging/inspector.dart
+++ b/dwds/lib/src/debugging/inspector.dart
@@ -374,7 +374,7 @@
       }
       final scriptRef = _scriptRefsById[objectId];
       if (scriptRef != null) {
-        return await _getScript(scriptRef);
+        return _getScript(scriptRef);
       }
       final instance = await _instanceHelper
           .instanceFor(remoteObjectFor(objectId), offset: offset, count: count);
diff --git a/dwds/lib/src/handlers/dev_handler.dart b/dwds/lib/src/handlers/dev_handler.dart
index a013abd..d51e2a2 100644
--- a/dwds/lib/src/handlers/dev_handler.dart
+++ b/dwds/lib/src/handlers/dev_handler.dart
@@ -2,8 +2,6 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-// @dart = 2.9
-
 import 'dart:async';
 import 'dart:convert';
 import 'dart:io';
@@ -55,7 +53,7 @@
   final _subs = <StreamSubscription>[];
   final _sseHandlers = <String, SocketHandler>{};
   final _injectedConnections = <SocketConnection>{};
-  final DevTools _devTools;
+  final DevTools? _devTools;
   final AssetReader _assetReader;
   final LoadStrategy _loadStrategy;
   final String _hostname;
@@ -64,23 +62,22 @@
   final _appConnectionByAppId = <String, AppConnection>{};
   final Stream<BuildResult> buildResults;
   final Future<ChromeConnection> Function() _chromeConnection;
-  final ExtensionBackend _extensionBackend;
+  final ExtensionBackend? _extensionBackend;
   final StreamController<DebugConnection> extensionDebugConnections =
       StreamController<DebugConnection>();
-  final UrlEncoder _urlEncoder;
+  final UrlEncoder? _urlEncoder;
   final bool _useSseForDebugProxy;
   final bool _useSseForInjectedClient;
-  final bool _serveDevTools;
   final bool _spawnDds;
   final bool _launchDevToolsInNewWindow;
-  final ExpressionCompiler _expressionCompiler;
+  final ExpressionCompiler? _expressionCompiler;
   final DwdsInjector _injected;
   final SdkConfigurationProvider _sdkConfigurationProvider;
 
   /// Null until [close] is called.
   ///
   /// All subsequent calls to [close] will return this future.
-  Future<void> _closed;
+  Future<void>? _closed;
 
   Stream<AppConnection> get connectedApps => _connectedApps.stream;
 
@@ -95,14 +92,12 @@
     this._urlEncoder,
     this._useSseForDebugProxy,
     this._useSseForInjectedClient,
-    this._serveDevTools,
     this._expressionCompiler,
     this._injected,
     this._spawnDds,
     this._launchDevToolsInNewWindow,
     this._sdkConfigurationProvider,
   ) {
-    _validateDevToolsOptions();
     _subs.add(buildResults.listen(_emitBuildResults));
     _listen();
     if (_extensionBackend != null) {
@@ -112,8 +107,9 @@
 
   Handler get handler => (request) async {
         final path = request.requestedUri.path;
-        if (_sseHandlers.containsKey(path)) {
-          return _sseHandlers[path].handler(request);
+        final sseHandler = _sseHandlers[path];
+        if (sseHandler != null) {
+          return sseHandler.handler(request);
         }
         return Response.notFound('');
       };
@@ -141,26 +137,26 @@
   /// Starts a [DebugService] for local debugging.
   Future<DebugService> _startLocalDebugService(
       ChromeConnection chromeConnection, AppConnection appConnection) async {
-    ChromeTab appTab;
-    ExecutionContext executionContext;
-    WipConnection tabConnection;
+    ChromeTab? appTab;
+    ExecutionContext? executionContext;
+    WipConnection? tabConnection;
     final appInstanceId = appConnection.request.instanceId;
     for (var tab in await chromeConnection.getTabs()) {
       if (tab.isChromeExtension || tab.isBackgroundPage) continue;
 
-      tabConnection = await tab.connect();
+      final connection = tabConnection = await tab.connect();
       if (_enableLogging) {
-        tabConnection.onSend.listen((message) {
+        connection.onSend.listen((message) {
           _log('  wip', '==> $message');
         });
-        tabConnection.onReceive.listen((message) {
+        connection.onReceive.listen((message) {
           _log('  wip', '<== $message');
         });
-        tabConnection.onNotification.listen((message) {
+        connection.onNotification.listen((message) {
           _log('  wip', '<== $message');
         });
       }
-      final contextIds = tabConnection.runtime.onExecutionContextCreated
+      final contextIds = connection.runtime.onExecutionContextCreated
           .map((context) => context.id)
           // There is no way to calculate the number of existing execution
           // contexts so keep receiving them until there is a 50ms gap after
@@ -168,25 +164,25 @@
           .takeUntilGap(const Duration(milliseconds: 50));
       // We enqueue this work as we need to begin listening (`.hasNext`)
       // before events are received.
-      unawaited(Future.microtask(() => tabConnection.runtime.enable()));
+      unawaited(Future.microtask(() => connection.runtime.enable()));
 
       await for (var contextId in contextIds) {
-        final result = await tabConnection.sendCommand('Runtime.evaluate', {
+        final result = await connection.sendCommand('Runtime.evaluate', {
           'expression': r'window["$dartAppInstanceId"];',
           'contextId': contextId,
         });
-        final evaluatedAppId = result.result['result']['value'];
+        final evaluatedAppId = result.result?['result']?['value'];
         if (evaluatedAppId == appInstanceId) {
           appTab = tab;
           executionContext = RemoteDebuggerExecutionContext(
-              contextId, WebkitDebugger(WipDebugger(tabConnection)));
+              contextId, WebkitDebugger(WipDebugger(connection)));
           break;
         }
       }
       if (appTab != null) break;
-      unawaited(tabConnection.close());
+      unawaited(connection.close());
     }
-    if (appTab == null) {
+    if (appTab == null || tabConnection == null || executionContext == null) {
       throw AppConnectionException(
           'Could not connect to application with appInstanceId: '
           '$appInstanceId');
@@ -238,26 +234,27 @@
 
   Future<AppDebugServices> loadAppServices(AppConnection appConnection) async {
     final appId = appConnection.request.appId;
-    if (_servicesByAppId[appId] == null) {
+    var appServices = _servicesByAppId[appId];
+    if (appServices == null) {
       final debugService = await _startLocalDebugService(
           await _chromeConnection(), appConnection);
-      final appServices = await _createAppDebugServices(
+      appServices = await _createAppDebugServices(
           appConnection.request.appId, debugService);
       unawaited(appServices.chromeProxyService.remoteDebugger.onClose.first
           .whenComplete(() async {
-        await appServices.close();
+        await appServices?.close();
         _servicesByAppId.remove(appConnection.request.appId);
         _logger.info('Stopped debug service on '
             'ws://${debugService.hostname}:${debugService.port}\n');
       }));
       _servicesByAppId[appId] = appServices;
     }
-    return _servicesByAppId[appId];
+    return appServices;
   }
 
   void _handleConnection(SocketConnection injectedConnection) {
     _injectedConnections.add(injectedConnection);
-    AppConnection appConnection;
+    AppConnection? appConnection;
     injectedConnection.stream.listen((data) async {
       try {
         final message = serializers.deserialize(jsonDecode(data));
@@ -270,27 +267,28 @@
           appConnection =
               await _handleConnectRequest(message, injectedConnection);
         } else {
-          if (appConnection == null) {
+          final connection = appConnection;
+          if (connection == null) {
             throw StateError('Not connected to an application.');
           }
           if (message is DevToolsRequest) {
-            await _handleDebugRequest(appConnection, injectedConnection);
+            await _handleDebugRequest(connection, injectedConnection);
           } else if (message is IsolateExit) {
-            await _handleIsolateExit(appConnection);
+            await _handleIsolateExit(connection);
           } else if (message is IsolateStart) {
-            await _handleIsolateStart(appConnection, injectedConnection);
+            await _handleIsolateStart(connection, injectedConnection);
           } else if (message is BatchedDebugEvents) {
-            await _servicesByAppId[appConnection.request.appId]
+            await _servicesByAppId[connection.request.appId]
                 ?.chromeProxyService
-                ?.parseBatchedDebugEvents(message);
+                .parseBatchedDebugEvents(message);
           } else if (message is DebugEvent) {
-            await _servicesByAppId[appConnection.request.appId]
+            await _servicesByAppId[connection.request.appId]
                 ?.chromeProxyService
-                ?.parseDebugEvent(message);
+                .parseDebugEvent(message);
           } else if (message is RegisterEvent) {
-            await _servicesByAppId[appConnection.request.appId]
+            await _servicesByAppId[connection.request.appId]
                 ?.chromeProxyService
-                ?.parseRegisterEvent(message);
+                .parseRegisterEvent(message);
           }
         }
       } catch (e, s) {
@@ -311,15 +309,15 @@
 
     unawaited(injectedConnection.sink.done.then((_) async {
       _injectedConnections.remove(injectedConnection);
-      if (appConnection != null) {
-        _appConnectionByAppId.remove(appConnection.request.appId);
-        final services = _servicesByAppId[appConnection.request.appId];
+      final connection = appConnection;
+      if (connection != null) {
+        _appConnectionByAppId.remove(connection.request.appId);
+        final services = _servicesByAppId[connection.request.appId];
         if (services != null) {
           if (services.connectedInstanceId == null ||
-              services.connectedInstanceId ==
-                  appConnection.request.instanceId) {
+              services.connectedInstanceId == connection.request.instanceId) {
             services.connectedInstanceId = null;
-            services.chromeProxyService?.destroyIsolate();
+            services.chromeProxyService.destroyIsolate();
           }
         }
       }
@@ -386,7 +384,7 @@
       debuggerStart: debuggerStart,
       devToolsStart: DateTime.now(),
     );
-    if (_serveDevTools) {
+    if (_devTools != null) {
       await _launchDevTools(
           appServices.chromeProxyService.remoteDebugger,
           _constructDevToolsUri(appServices.debugService.uri,
@@ -399,7 +397,7 @@
     // After a page refresh, reconnect to the same app services if they
     // were previously launched and create the new isolate.
     final services = _servicesByAppId[message.appId];
-    final existingAppConection = _appConnectionByAppId[message.appId];
+    final existingConnection = _appConnectionByAppId[message.appId];
     final connection = AppConnection(message, sseConnection);
 
     // We can take over a connection if there is no connectedInstanceId (this
@@ -409,13 +407,13 @@
     // reload).
     final canReuseConnection = services != null &&
         (services.connectedInstanceId == null ||
-            existingAppConection?.isInKeepAlivePeriod == true);
+            existingConnection?.isInKeepAlivePeriod == true);
 
     if (canReuseConnection) {
       // Disconnect any old connection (eg. those in the keep-alive waiting
       // state when reloading the page).
-      existingAppConection?.shutDown();
-      services.chromeProxyService?.destroyIsolate();
+      existingConnection?.shutDown();
+      services.chromeProxyService.destroyIsolate();
 
       // Reconnect to existing service.
       services.connectedInstanceId = message.instanceId;
@@ -429,14 +427,14 @@
   Future<void> _handleIsolateExit(AppConnection appConnection) async {
     _servicesByAppId[appConnection.request.appId]
         ?.chromeProxyService
-        ?.destroyIsolate();
+        .destroyIsolate();
   }
 
   Future<void> _handleIsolateStart(
       AppConnection appConnection, SocketConnection sseConnection) async {
     await _servicesByAppId[appConnection.request.appId]
         ?.chromeProxyService
-        ?.createIsolate(appConnection);
+        .createIsolate(appConnection);
   }
 
   void _listen() async {
@@ -481,33 +479,47 @@
   }
 
   void _listenForDebugExtension() async {
-    while (await _extensionBackend.connections.hasNext) {
+    while (await _extensionBackend!.connections.hasNext) {
       _startExtensionDebugService();
     }
   }
 
   /// Starts a [DebugService] for Dart Debug Extension.
   void _startExtensionDebugService() async {
-    final extensionDebugger = await _extensionBackend.extensionDebugger;
+    final extensionDebugger = await _extensionBackend!.extensionDebugger;
     // Waits for a `DevToolsRequest` to be sent from the extension background
     // when the extension is clicked.
     extensionDebugger.devToolsRequestStream.listen((devToolsRequest) async {
-      final connection = _appConnectionByAppId[devToolsRequest.appId];
-      if (connection == null) {
-        // TODO(grouma) - Ideally we surface this warning to the extension so
-        // that it can be displayed to the user through an alert.
-        _logger.warning(
-            'Not connected to an app with id: ${devToolsRequest.appId}');
+      // TODO(grouma) - Ideally we surface those warnings to the extension so
+      // that it can be displayed to the user through an alert.
+      final tabUrl = devToolsRequest.tabUrl;
+      final appId = devToolsRequest.appId;
+      if (tabUrl == null) {
+        _logger.warning('Failed to start extension debug service. '
+            'Missing tab url in DevTools request for app with id: $appId');
         return;
       }
+      final connection = _appConnectionByAppId[appId];
+      if (connection == null) {
+        _logger.warning('Failed to start extension debug service. '
+            'Not connected to an app with id: $appId');
+        return;
+      }
+      final executionContext = extensionDebugger.executionContext;
+      if (executionContext == null) {
+        _logger.warning('Failed to start extension debug service. '
+            'No execution context for app with id: $appId');
+        return;
+      }
+
       final debuggerStart = DateTime.now();
-      final appId = devToolsRequest.appId;
-      if (_servicesByAppId[appId] == null) {
+      var appServices = _servicesByAppId[appId];
+      if (appServices == null) {
         final debugService = await DebugService.start(
           _hostname,
           extensionDebugger,
-          extensionDebugger.executionContext,
-          basePathForServerUri(devToolsRequest.tabUrl),
+          executionContext,
+          basePathForServerUri(tabUrl),
           _assetReader,
           _loadStrategy,
           connection,
@@ -522,7 +534,7 @@
           spawnDds: _spawnDds,
           sdkConfigurationProvider: _sdkConfigurationProvider,
         );
-        final appServices = await _createAppDebugServices(
+        appServices = await _createAppDebugServices(
           devToolsRequest.appId,
           debugService,
         );
@@ -530,25 +542,24 @@
         extensionDebugger.sendEvent('dwds.encodedUri', encodedUri);
         unawaited(appServices.chromeProxyService.remoteDebugger.onClose.first
             .whenComplete(() async {
-          appServices.chromeProxyService.destroyIsolate();
-          await appServices.close();
+          appServices?.chromeProxyService.destroyIsolate();
+          await appServices?.close();
           _servicesByAppId.remove(devToolsRequest.appId);
           _logger.info('Stopped debug service on '
-              '${await appServices.debugService.encodedUri}\n');
+              '${await appServices?.debugService.encodedUri}\n');
         }));
         extensionDebugConnections.add(DebugConnection(appServices));
         _servicesByAppId[appId] = appServices;
       }
-      final appServices = _servicesByAppId[appId];
       final encodedUri = await appServices.debugService.encodedUri;
 
       appServices.dwdsStats.updateLoadTime(
           debuggerStart: debuggerStart, devToolsStart: DateTime.now());
 
-      if (_serveDevTools) {
+      if (_devTools != null) {
         // If we only want the URI, this means we are embedding Dart DevTools in
         // Chrome DevTools. Therefore return early.
-        if (devToolsRequest.uriOnly != null && devToolsRequest.uriOnly) {
+        if (devToolsRequest.uriOnly ?? false) {
           final devToolsUri = _constructDevToolsUri(
             encodedUri,
             ideQueryParam: 'ChromeDevTools',
@@ -565,23 +576,19 @@
     });
   }
 
-  void _ensureServeDevtools() {
-    if (!_serveDevTools) {
-      _logger.severe('Expected _serveDevTools');
-      throw StateError('Expected _serveDevTools');
+  DevTools _ensureDevTools() {
+    final devTools = _devTools;
+    if (devTools == null) {
+      throw StateError('DevHandler: DevTools is not available');
     }
-  }
-
-  void _validateDevToolsOptions() {
-    if (_serveDevTools && _devTools == null) {
-      _logger.severe('DevHandler: invalid DevTools options');
-      throw StateError('DevHandler: invalid DevTools options');
-    }
+    return devTools;
   }
 
   Future<void> _launchDevTools(
       RemoteDebugger remoteDebugger, String devToolsUri) async {
-    _ensureServeDevtools();
+    // TODO(annagrin): move checking whether devtools should be started
+    // and the creation of the uri logic here so it is easier to follow.
+    _ensureDevTools();
     // TODO(grouma) - We may want to log the debugServiceUri if we don't launch
     // DevTools so that users can manually connect.
     emitEvent(DwdsEvent.devtoolsLaunch());
@@ -595,11 +602,11 @@
     String debugServiceUri, {
     String ideQueryParam = '',
   }) {
-    _ensureServeDevtools();
+    final devTools = _ensureDevTools();
     return Uri(
         scheme: 'http',
-        host: _devTools.hostname,
-        port: _devTools.port,
+        host: devTools.hostname,
+        port: devTools.port,
         queryParameters: {
           'uri': debugServiceUri,
           if (ideQueryParam.isNotEmpty) 'ide': ideQueryParam,
@@ -621,8 +628,8 @@
         ? StreamController<T>.broadcast(sync: true)
         : StreamController<T>(sync: true);
 
-    StreamSubscription<T> subscription;
-    Timer gapTimer;
+    late StreamSubscription<T> subscription;
+    Timer? gapTimer;
     controller.onListen = () {
       subscription = listen((e) {
         controller.add(e);
diff --git a/dwds/test/fixtures/context.dart b/dwds/test/fixtures/context.dart
index d6a138c..3d40515 100644
--- a/dwds/test/fixtures/context.dart
+++ b/dwds/test/fixtures/context.dart
@@ -135,35 +135,23 @@
   }
 
   Future<void> setUp({
-    ReloadConfiguration reloadConfiguration,
-    bool serveDevTools,
-    bool enableDebugExtension,
-    bool autoRun,
-    bool enableDebugging,
-    bool useSse,
-    bool spawnDds,
-    String hostname,
-    bool waitToDebug,
+    ReloadConfiguration reloadConfiguration = ReloadConfiguration.none,
+    bool serveDevTools = false,
+    bool enableDebugExtension = false,
+    bool autoRun = true,
+    bool enableDebugging = true,
+    bool useSse = true,
+    bool spawnDds = true,
+    String hostname = 'localhost',
+    bool waitToDebug = false,
     UrlEncoder urlEncoder,
-    bool restoreBreakpoints,
-    CompilationMode compilationMode,
-    NullSafety nullSafety,
-    bool enableExpressionEvaluation,
-    bool verboseCompiler,
+    CompilationMode compilationMode = CompilationMode.buildDaemon,
+    NullSafety nullSafety = NullSafety.weak,
+    bool enableExpressionEvaluation = false,
+    bool verboseCompiler = false,
     SdkConfigurationProvider sdkConfigurationProvider,
   }) async {
-    reloadConfiguration ??= ReloadConfiguration.none;
-    serveDevTools ??= false;
-    enableDebugExtension ??= false;
-    autoRun ??= true;
-    enableDebugging ??= true;
-    waitToDebug ??= false;
-    compilationMode ??= CompilationMode.buildDaemon;
-    enableExpressionEvaluation ??= false;
-    spawnDds ??= true;
-    verboseCompiler ??= false;
     sdkConfigurationProvider ??= DefaultSdkConfigurationProvider();
-    nullSafety ??= NullSafety.weak;
 
     try {
       configureLogWriter();
@@ -349,7 +337,6 @@
         enableDebugging,
         useSse,
         urlEncoder,
-        restoreBreakpoints,
         expressionCompiler,
         spawnDds,
         ddcService,
diff --git a/dwds/test/fixtures/server.dart b/dwds/test/fixtures/server.dart
index bf6bff7..9c14641 100644
--- a/dwds/test/fixtures/server.dart
+++ b/dwds/test/fixtures/server.dart
@@ -79,7 +79,6 @@
     bool enableDebugging,
     bool useSse,
     UrlEncoder urlEncoder,
-    bool restoreBreakpoints,
     ExpressionCompiler expressionCompiler,
     bool spawnDds,
     ExpressionCompilerService ddcService,
diff --git a/dwds/test/restore_breakpoints_test.dart b/dwds/test/restore_breakpoints_test.dart
index af7b1ea..4691c85 100644
--- a/dwds/test/restore_breakpoints_test.dart
+++ b/dwds/test/restore_breakpoints_test.dart
@@ -24,9 +24,7 @@
 void main() {
   setUpAll(() async {
     setCurrentLogWriter();
-    await context.setUp(
-      restoreBreakpoints: true,
-    );
+    await context.setUp();
   });
 
   tearDownAll(() async {