Better error handling for LoadStrategy (#1744)

* Better error handling for LoadStrategy

* update version, changelog, and build
diff --git a/dwds/CHANGELOG.md b/dwds/CHANGELOG.md
index 2cdef0e..1ce76f1 100644
--- a/dwds/CHANGELOG.md
+++ b/dwds/CHANGELOG.md
@@ -1,3 +1,8 @@
+## 16.0.1-dev
+
+- Allow `LoadStrategy.serverPathForModule` and `LoadStrategy.sourceMapPathForModule`
+  to return `null` and add error handling.
+
 ## 16.0.0
 
 - Fix a hang and report errors on hot reload exceptions from the injected
diff --git a/dwds/lib/src/debugging/location.dart b/dwds/lib/src/debugging/location.dart
index 9b13a60..7d3d9d7 100644
--- a/dwds/lib/src/debugging/location.dart
+++ b/dwds/lib/src/debugging/location.dart
@@ -286,8 +286,16 @@
       }
       final modulePath =
           await globalLoadStrategy.serverPathForModule(_entrypoint, module);
+      if (modulePath == null) {
+        _logger.warning('No module path for module: $module');
+        return result;
+      }
       final sourceMapPath =
           await globalLoadStrategy.sourceMapPathForModule(_entrypoint, module);
+      if (sourceMapPath == null) {
+        _logger.warning('No sourceMap path for module: $module');
+        return result;
+      }
       final sourceMapContents =
           await _assetReader.sourceMapContents(sourceMapPath);
       final scriptLocation =
diff --git a/dwds/lib/src/injected/client.js b/dwds/lib/src/injected/client.js
index 44f5333..0390ffc 100644
--- a/dwds/lib/src/injected/client.js
+++ b/dwds/lib/src/injected/client.js
@@ -1,4 +1,4 @@
-// Generated by dart2js (NullSafetyMode.sound, deferred-serialization, csp), the Dart to JavaScript compiler version: 2.18.0.
+// Generated by dart2js (NullSafetyMode.sound, csp, deferred-serialization, intern-composite-values), the Dart to JavaScript compiler version: 2.19.0-edge.6682ac145d5b99fa05a034c7838b94c5d1143f78.
 // The code supports the following hooks:
 // dartPrint(message):
 //    if this function is defined it is called instead of the Dart [print]
@@ -3055,9 +3055,10 @@
     _Parser_toType(universe, environment, item) {
       if (typeof item == "string")
         return A._Universe__lookupInterfaceRti(universe, item, universe.sEA);
-      else if (typeof item == "number")
+      else if (typeof item == "number") {
+        environment.toString;
         return A._Parser_indexToType(universe, environment, item);
-      else
+      } else
         return item;
     },
     _Parser_toTypes(universe, environment, items) {
@@ -6736,9 +6737,9 @@
       var t1, exception,
         result = "element tag unavailable";
       try {
-        t1 = J.getInterceptor$x(element);
-        t1.get$tagName(element);
-        result = t1.get$tagName(element);
+        t1 = element.tagName;
+        t1.toString;
+        result = t1;
       } catch (exception) {
       }
       return result;
@@ -7788,8 +7789,10 @@
       hash ^= hash >>> 11;
       return hash + ((hash & 16383) << 15) & 536870911;
     },
-    BuiltValueNullFieldError$(type, field) {
-      return new A.BuiltValueNullFieldError(type, field);
+    BuiltValueNullFieldError_checkNotNull(value, type, field, $T) {
+      if (value == null)
+        throw A.wrapException(new A.BuiltValueNullFieldError(type, field));
+      return value;
     },
     BuiltValueNestedFieldError$(type, field, error) {
       return new A.BuiltValueNestedFieldError(type, field, error);
@@ -16812,11 +16815,6 @@
     set$_innerHtml(receiver, value) {
       receiver.innerHTML = value;
     },
-    get$tagName(receiver) {
-      var t1 = receiver.tagName;
-      t1.toString;
-      return t1;
-    },
     $isElement: 1
   };
   A.Element_Element$html_closure.prototype = {
@@ -22002,6 +22000,7 @@
     },
     deserialize$3$specifiedType(serializers, serialized, specifiedType) {
       var t1, t2, value, $$v, _$result,
+        _s11_ = "BuildResult",
         result = new A.BuildResultBuilder(),
         iterator = J.get$iterator$ax(type$.Iterable_nullable_Object._as(serialized));
       for (t1 = type$.BuildStatus; iterator.moveNext$0();) {
@@ -22026,10 +22025,9 @@
       }
       _$result = result._build_result$_$v;
       if (_$result == null) {
-        t1 = result.get$_build_result$_$this()._status;
-        if (t1 == null)
-          A.throwExpression(A.BuiltValueNullFieldError$("BuildResult", "status"));
-        _$result = new A._$BuildResult(t1);
+        t2 = A.BuiltValueNullFieldError_checkNotNull(result.get$_build_result$_$this()._status, _s11_, "status", t1);
+        _$result = new A._$BuildResult(t2);
+        A.BuiltValueNullFieldError_checkNotNull(t2, _s11_, "status", t1);
       }
       A.ArgumentError_checkNotNull(_$result, "other", type$.BuildResult);
       return result._build_result$_$v = _$result;
@@ -22163,20 +22161,20 @@
       return _this;
     },
     _build$0() {
-      var t1, t2, t3, _this = this,
+      var t1, t2, t3, t4, _this = this,
         _s14_ = "ConnectRequest",
+        _s10_ = "instanceId",
+        _s14_0 = "entrypointPath",
         _$result = _this._$v;
       if (_$result == null) {
-        t1 = _this.get$_$this()._appId;
-        if (t1 == null)
-          A.throwExpression(A.BuiltValueNullFieldError$(_s14_, "appId"));
-        t2 = _this.get$_$this()._instanceId;
-        if (t2 == null)
-          A.throwExpression(A.BuiltValueNullFieldError$(_s14_, "instanceId"));
-        t3 = _this.get$_$this()._entrypointPath;
-        if (t3 == null)
-          A.throwExpression(A.BuiltValueNullFieldError$(_s14_, "entrypointPath"));
-        _$result = new A._$ConnectRequest(t1, t2, t3);
+        t1 = type$.String;
+        t2 = A.BuiltValueNullFieldError_checkNotNull(_this.get$_$this()._appId, _s14_, "appId", t1);
+        t3 = A.BuiltValueNullFieldError_checkNotNull(_this.get$_$this()._instanceId, _s14_, _s10_, t1);
+        t4 = A.BuiltValueNullFieldError_checkNotNull(_this.get$_$this()._entrypointPath, _s14_, _s14_0, t1);
+        _$result = new A._$ConnectRequest(t2, t3, t4);
+        A.BuiltValueNullFieldError_checkNotNull(t2, _s14_, "appId", t1);
+        A.BuiltValueNullFieldError_checkNotNull(t3, _s14_, _s10_, t1);
+        A.BuiltValueNullFieldError_checkNotNull(t4, _s14_, _s14_0, t1);
       }
       A.ArgumentError_checkNotNull(_$result, "other", type$.ConnectRequest);
       return _this._$v = _$result;
@@ -22346,20 +22344,21 @@
       return _this;
     },
     _debug_event$_build$0() {
-      var t1, t2, t3, _this = this,
+      var t1, t2, t3, t4, t5, _this = this,
         _s10_ = "DebugEvent",
+        _s9_ = "eventData",
+        _s9_0 = "timestamp",
         _$result = _this._debug_event$_$v;
       if (_$result == null) {
-        t1 = _this.get$_debug_event$_$this()._debug_event$_kind;
-        if (t1 == null)
-          A.throwExpression(A.BuiltValueNullFieldError$(_s10_, "kind"));
-        t2 = _this.get$_debug_event$_$this()._eventData;
-        if (t2 == null)
-          A.throwExpression(A.BuiltValueNullFieldError$(_s10_, "eventData"));
-        t3 = _this.get$_debug_event$_$this()._timestamp;
-        if (t3 == null)
-          A.throwExpression(A.BuiltValueNullFieldError$(_s10_, "timestamp"));
-        _$result = new A._$DebugEvent(t1, t2, t3);
+        t1 = type$.String;
+        t2 = A.BuiltValueNullFieldError_checkNotNull(_this.get$_debug_event$_$this()._debug_event$_kind, _s10_, "kind", t1);
+        t3 = A.BuiltValueNullFieldError_checkNotNull(_this.get$_debug_event$_$this()._eventData, _s10_, _s9_, t1);
+        t4 = type$.int;
+        t5 = A.BuiltValueNullFieldError_checkNotNull(_this.get$_debug_event$_$this()._timestamp, _s10_, _s9_0, t4);
+        _$result = new A._$DebugEvent(t2, t3, t5);
+        A.BuiltValueNullFieldError_checkNotNull(t2, _s10_, "kind", t1);
+        A.BuiltValueNullFieldError_checkNotNull(t3, _s10_, _s9_, t1);
+        A.BuiltValueNullFieldError_checkNotNull(t5, _s10_, _s9_0, t4);
       }
       A.ArgumentError_checkNotNull(_$result, "other", type$.DebugEvent);
       return _this._debug_event$_$v = _$result;
@@ -22407,11 +22406,16 @@
       return _this;
     },
     _debug_event$_build$0() {
-      var _$failedField, e, _$result0, exception, t1, t2, _this = this, _$result = null;
+      var _$failedField, e, _$result0, t1, exception, t2, _this = this,
+        _s18_ = "BatchedDebugEvents",
+        _$result = null;
       try {
         _$result0 = _this._debug_event$_$v;
-        if (_$result0 == null)
-          _$result0 = new A._$BatchedDebugEvents(_this.get$events().build$0());
+        if (_$result0 == null) {
+          t1 = _this.get$events().build$0();
+          _$result0 = new A._$BatchedDebugEvents(t1);
+          A.BuiltValueNullFieldError_checkNotNull(t1, _s18_, "events", type$.BuiltList_DebugEvent);
+        }
         _$result = _$result0;
       } catch (exception) {
         _$failedField = A._Cell$named("_$failedField");
@@ -22420,7 +22424,7 @@
           _this.get$events().build$0();
         } catch (exception) {
           e = A.unwrapException(exception);
-          t1 = A.BuiltValueNestedFieldError$("BatchedDebugEvents", _$failedField.readLocal$0(), J.toString$0$(e));
+          t1 = A.BuiltValueNestedFieldError$(_s18_, _$failedField.readLocal$0(), J.toString$0$(e));
           throw A.wrapException(t1);
         }
         throw exception;
@@ -22529,7 +22533,8 @@
       return this.serialize$3$specifiedType(serializers, object, B.FullType_null_List_empty_false);
     },
     deserialize$3$specifiedType(serializers, serialized, specifiedType) {
-      var t1, value, _$result, t2,
+      var t1, value, _$result, t2, t3,
+        _s15_ = "promptExtension",
         _s16_ = "DevToolsResponse",
         result = new A.DevToolsResponseBuilder(),
         iterator = J.get$iterator$ax(type$.Iterable_nullable_Object._as(serialized));
@@ -22560,13 +22565,12 @@
       }
       _$result = result._devtools_request$_$v;
       if (_$result == null) {
-        t1 = result.get$_devtools_request$_$this()._success;
-        if (t1 == null)
-          A.throwExpression(A.BuiltValueNullFieldError$(_s16_, "success"));
-        t2 = result.get$_devtools_request$_$this()._promptExtension;
-        if (t2 == null)
-          A.throwExpression(A.BuiltValueNullFieldError$(_s16_, "promptExtension"));
-        _$result = new A._$DevToolsResponse(t1, t2, result.get$_devtools_request$_$this()._error);
+        t1 = type$.bool;
+        t2 = A.BuiltValueNullFieldError_checkNotNull(result.get$_devtools_request$_$this()._success, _s16_, "success", t1);
+        t3 = A.BuiltValueNullFieldError_checkNotNull(result.get$_devtools_request$_$this()._promptExtension, _s16_, _s15_, t1);
+        _$result = new A._$DevToolsResponse(t2, t3, result.get$_devtools_request$_$this()._error);
+        A.BuiltValueNullFieldError_checkNotNull(t2, _s16_, "success", t1);
+        A.BuiltValueNullFieldError_checkNotNull(t3, _s16_, _s15_, t1);
       }
       A.ArgumentError_checkNotNull(_$result, "other", type$.DevToolsResponse);
       return result._devtools_request$_$v = _$result;
@@ -22623,17 +22627,17 @@
       return _this;
     },
     _devtools_request$_build$0() {
-      var t1, t2, _this = this,
+      var t1, t2, t3, _this = this,
         _s15_ = "DevToolsRequest",
+        _s10_ = "instanceId",
         _$result = _this._devtools_request$_$v;
       if (_$result == null) {
-        t1 = _this.get$_devtools_request$_$this()._devtools_request$_appId;
-        if (t1 == null)
-          A.throwExpression(A.BuiltValueNullFieldError$(_s15_, "appId"));
-        t2 = _this.get$_devtools_request$_$this()._devtools_request$_instanceId;
-        if (t2 == null)
-          A.throwExpression(A.BuiltValueNullFieldError$(_s15_, "instanceId"));
-        _$result = new A._$DevToolsRequest(t1, t2, _this.get$_devtools_request$_$this()._contextId, _this.get$_devtools_request$_$this()._tabUrl, _this.get$_devtools_request$_$this()._uriOnly);
+        t1 = type$.String;
+        t2 = A.BuiltValueNullFieldError_checkNotNull(_this.get$_devtools_request$_$this()._devtools_request$_appId, _s15_, "appId", t1);
+        t3 = A.BuiltValueNullFieldError_checkNotNull(_this.get$_devtools_request$_$this()._devtools_request$_instanceId, _s15_, _s10_, t1);
+        _$result = new A._$DevToolsRequest(t2, t3, _this.get$_devtools_request$_$this()._contextId, _this.get$_devtools_request$_$this()._tabUrl, _this.get$_devtools_request$_$this()._uriOnly);
+        A.BuiltValueNullFieldError_checkNotNull(t2, _s15_, "appId", t1);
+        A.BuiltValueNullFieldError_checkNotNull(t3, _s15_, _s10_, t1);
       }
       A.ArgumentError_checkNotNull(_$result, "other", type$.DevToolsRequest);
       return _this._devtools_request$_$v = _$result;
@@ -22683,7 +22687,8 @@
       return this.serialize$3$specifiedType(serializers, object, B.FullType_null_List_empty_false);
     },
     deserialize$3$specifiedType(serializers, serialized, specifiedType) {
-      var t1, value, $$v, _$result, t2,
+      var t1, value, $$v, _$result, t2, t3,
+        _s10_ = "stackTrace",
         _s13_ = "ErrorResponse",
         result = new A.ErrorResponseBuilder(),
         iterator = J.get$iterator$ax(type$.Iterable_nullable_Object._as(serialized));
@@ -22722,13 +22727,12 @@
       }
       _$result = result._error_response$_$v;
       if (_$result == null) {
-        t1 = result.get$_error_response$_$this()._error_response$_error;
-        if (t1 == null)
-          A.throwExpression(A.BuiltValueNullFieldError$(_s13_, "error"));
-        t2 = result.get$_error_response$_$this()._error_response$_stackTrace;
-        if (t2 == null)
-          A.throwExpression(A.BuiltValueNullFieldError$(_s13_, "stackTrace"));
-        _$result = new A._$ErrorResponse(t1, t2);
+        t1 = type$.String;
+        t2 = A.BuiltValueNullFieldError_checkNotNull(result.get$_error_response$_$this()._error_response$_error, _s13_, "error", t1);
+        t3 = A.BuiltValueNullFieldError_checkNotNull(result.get$_error_response$_$this()._error_response$_stackTrace, _s13_, _s10_, t1);
+        _$result = new A._$ErrorResponse(t2, t3);
+        A.BuiltValueNullFieldError_checkNotNull(t2, _s13_, "error", t1);
+        A.BuiltValueNullFieldError_checkNotNull(t3, _s13_, _s10_, t1);
       }
       A.ArgumentError_checkNotNull(_$result, "other", type$.ErrorResponse);
       return result._error_response$_$v = _$result;
@@ -22796,7 +22800,7 @@
       return this.serialize$3$specifiedType(serializers, object, B.FullType_null_List_empty_false);
     },
     deserialize$3$specifiedType(serializers, serialized, specifiedType) {
-      var t1, value, _$result, t2,
+      var t1, value, _$result, t2, t3, t4,
         _s16_ = "ExtensionRequest",
         result = new A.ExtensionRequestBuilder(),
         iterator = J.get$iterator$ax(type$.Iterable_nullable_Object._as(serialized));
@@ -22827,13 +22831,13 @@
       }
       _$result = result._extension_request$_$v;
       if (_$result == null) {
-        t1 = result.get$_extension_request$_$this()._id;
-        if (t1 == null)
-          A.throwExpression(A.BuiltValueNullFieldError$(_s16_, "id"));
-        t2 = result.get$_extension_request$_$this()._command;
-        if (t2 == null)
-          A.throwExpression(A.BuiltValueNullFieldError$(_s16_, "command"));
-        _$result = new A._$ExtensionRequest(t1, t2, result.get$_extension_request$_$this()._commandParams);
+        t1 = type$.int;
+        t2 = A.BuiltValueNullFieldError_checkNotNull(result.get$_extension_request$_$this()._id, _s16_, "id", t1);
+        t3 = type$.String;
+        t4 = A.BuiltValueNullFieldError_checkNotNull(result.get$_extension_request$_$this()._command, _s16_, "command", t3);
+        _$result = new A._$ExtensionRequest(t2, t4, result.get$_extension_request$_$this()._commandParams);
+        A.BuiltValueNullFieldError_checkNotNull(t2, _s16_, "id", t1);
+        A.BuiltValueNullFieldError_checkNotNull(t4, _s16_, "command", t3);
       }
       A.ArgumentError_checkNotNull(_$result, "other", type$.ExtensionRequest);
       return result._extension_request$_$v = _$result;
@@ -22866,7 +22870,7 @@
       return this.serialize$3$specifiedType(serializers, object, B.FullType_null_List_empty_false);
     },
     deserialize$3$specifiedType(serializers, serialized, specifiedType) {
-      var t1, value, _$result, t2, t3,
+      var t1, value, _$result, t2, t3, t4, t5, t6,
         _s17_ = "ExtensionResponse",
         result = new A.ExtensionResponseBuilder(),
         iterator = J.get$iterator$ax(type$.Iterable_nullable_Object._as(serialized));
@@ -22903,16 +22907,16 @@
       }
       _$result = result._extension_request$_$v;
       if (_$result == null) {
-        t1 = result.get$_extension_request$_$this()._id;
-        if (t1 == null)
-          A.throwExpression(A.BuiltValueNullFieldError$(_s17_, "id"));
-        t2 = result.get$_extension_request$_$this()._extension_request$_success;
-        if (t2 == null)
-          A.throwExpression(A.BuiltValueNullFieldError$(_s17_, "success"));
-        t3 = result.get$_extension_request$_$this()._extension_request$_result;
-        if (t3 == null)
-          A.throwExpression(A.BuiltValueNullFieldError$(_s17_, "result"));
-        _$result = new A._$ExtensionResponse(t1, t2, t3, result.get$_extension_request$_$this()._extension_request$_error);
+        t1 = type$.int;
+        t2 = A.BuiltValueNullFieldError_checkNotNull(result.get$_extension_request$_$this()._id, _s17_, "id", t1);
+        t3 = type$.bool;
+        t4 = A.BuiltValueNullFieldError_checkNotNull(result.get$_extension_request$_$this()._extension_request$_success, _s17_, "success", t3);
+        t5 = type$.String;
+        t6 = A.BuiltValueNullFieldError_checkNotNull(result.get$_extension_request$_$this()._extension_request$_result, _s17_, "result", t5);
+        _$result = new A._$ExtensionResponse(t2, t4, t6, result.get$_extension_request$_$this()._extension_request$_error);
+        A.BuiltValueNullFieldError_checkNotNull(t2, _s17_, "id", t1);
+        A.BuiltValueNullFieldError_checkNotNull(t4, _s17_, "success", t3);
+        A.BuiltValueNullFieldError_checkNotNull(t6, _s17_, "result", t5);
       }
       A.ArgumentError_checkNotNull(_$result, "other", type$.ExtensionResponse);
       return result._extension_request$_$v = _$result;
@@ -22938,7 +22942,7 @@
       return this.serialize$3$specifiedType(serializers, object, B.FullType_null_List_empty_false);
     },
     deserialize$3$specifiedType(serializers, serialized, specifiedType) {
-      var t1, value, $$v, _$result, t2,
+      var t1, value, $$v, _$result, t2, t3,
         _s14_ = "ExtensionEvent",
         result = new A.ExtensionEventBuilder(),
         iterator = J.get$iterator$ax(type$.Iterable_nullable_Object._as(serialized));
@@ -22977,13 +22981,12 @@
       }
       _$result = result._extension_request$_$v;
       if (_$result == null) {
-        t1 = result.get$_extension_request$_$this()._params;
-        if (t1 == null)
-          A.throwExpression(A.BuiltValueNullFieldError$(_s14_, "params"));
-        t2 = result.get$_extension_request$_$this()._extension_request$_method;
-        if (t2 == null)
-          A.throwExpression(A.BuiltValueNullFieldError$(_s14_, "method"));
-        _$result = new A._$ExtensionEvent(t1, t2);
+        t1 = type$.String;
+        t2 = A.BuiltValueNullFieldError_checkNotNull(result.get$_extension_request$_$this()._params, _s14_, "params", t1);
+        t3 = A.BuiltValueNullFieldError_checkNotNull(result.get$_extension_request$_$this()._extension_request$_method, _s14_, "method", t1);
+        _$result = new A._$ExtensionEvent(t2, t3);
+        A.BuiltValueNullFieldError_checkNotNull(t2, _s14_, "params", t1);
+        A.BuiltValueNullFieldError_checkNotNull(t3, _s14_, "method", t1);
       }
       A.ArgumentError_checkNotNull(_$result, "other", type$.ExtensionEvent);
       return result._extension_request$_$v = _$result;
@@ -23214,11 +23217,16 @@
       return t1;
     },
     _extension_request$_build$0() {
-      var _$failedField, e, _$result0, exception, t1, t2, _this = this, _$result = null;
+      var _$failedField, e, _$result0, t1, exception, t2, _this = this,
+        _s13_ = "BatchedEvents",
+        _$result = null;
       try {
         _$result0 = _this._extension_request$_$v;
-        if (_$result0 == null)
-          _$result0 = new A._$BatchedEvents(_this.get$events().build$0());
+        if (_$result0 == null) {
+          t1 = _this.get$events().build$0();
+          _$result0 = new A._$BatchedEvents(t1);
+          A.BuiltValueNullFieldError_checkNotNull(t1, _s13_, "events", type$.BuiltList_ExtensionEvent);
+        }
         _$result = _$result0;
       } catch (exception) {
         _$failedField = A._Cell$named("_$failedField");
@@ -23227,7 +23235,7 @@
           _this.get$events().build$0();
         } catch (exception) {
           e = A.unwrapException(exception);
-          t1 = A.BuiltValueNestedFieldError$("BatchedEvents", _$failedField.readLocal$0(), J.toString$0$(e));
+          t1 = A.BuiltValueNestedFieldError$(_s13_, _$failedField.readLocal$0(), J.toString$0$(e));
           throw A.wrapException(t1);
         }
         throw exception;
@@ -23431,17 +23439,19 @@
       return _this;
     },
     _register_event$_build$0() {
-      var t1, t2, _this = this,
+      var t1, t2, t3, t4, _this = this,
         _s13_ = "RegisterEvent",
+        _s9_ = "eventData",
+        _s9_0 = "timestamp",
         _$result = _this._register_event$_$v;
       if (_$result == null) {
-        t1 = _this.get$_register_event$_$this()._register_event$_eventData;
-        if (t1 == null)
-          A.throwExpression(A.BuiltValueNullFieldError$(_s13_, "eventData"));
-        t2 = _this.get$_register_event$_$this()._register_event$_timestamp;
-        if (t2 == null)
-          A.throwExpression(A.BuiltValueNullFieldError$(_s13_, "timestamp"));
-        _$result = new A._$RegisterEvent(t1, t2);
+        t1 = type$.String;
+        t2 = A.BuiltValueNullFieldError_checkNotNull(_this.get$_register_event$_$this()._register_event$_eventData, _s13_, _s9_, t1);
+        t3 = type$.int;
+        t4 = A.BuiltValueNullFieldError_checkNotNull(_this.get$_register_event$_$this()._register_event$_timestamp, _s13_, _s9_0, t3);
+        _$result = new A._$RegisterEvent(t2, t4);
+        A.BuiltValueNullFieldError_checkNotNull(t2, _s13_, _s9_, t1);
+        A.BuiltValueNullFieldError_checkNotNull(t4, _s13_, _s9_0, t3);
       }
       A.ArgumentError_checkNotNull(_$result, "other", type$.RegisterEvent);
       return _this._register_event$_$v = _$result;
@@ -25831,6 +25841,8 @@
       BuildResult: findType("BuildResult"),
       BuildStatus: findType("BuildStatus"),
       BuiltListMultimap_dynamic_dynamic: findType("BuiltListMultimap<@,@>"),
+      BuiltList_DebugEvent: findType("BuiltList<DebugEvent>"),
+      BuiltList_ExtensionEvent: findType("BuiltList<ExtensionEvent>"),
       BuiltList_dynamic: findType("BuiltList<@>"),
       BuiltList_nullable_Object: findType("BuiltList<Object?>"),
       BuiltMap_dynamic_dynamic: findType("BuiltMap<@,@>"),
diff --git a/dwds/lib/src/loaders/build_runner_require.dart b/dwds/lib/src/loaders/build_runner_require.dart
index 6da1723..81685c3 100644
--- a/dwds/lib/src/loaders/build_runner_require.dart
+++ b/dwds/lib/src/loaders/build_runner_require.dart
@@ -84,17 +84,16 @@
     return null;
   }
 
-  Future<String> _serverPathForModule(
+  Future<String?> _serverPathForModule(
       MetadataProvider metadataProvider, String module) async {
-    final result = stripTopLevelDirectory(
-        (await metadataProvider.moduleToModulePath)[module] ?? '');
-    return result;
+    final modulePath = (await metadataProvider.moduleToModulePath)[module];
+    return modulePath == null ? null : stripTopLevelDirectory(modulePath);
   }
 
-  Future<String> _sourceMapPathForModule(
+  Future<String?> _sourceMapPathForModule(
       MetadataProvider metadataProvider, String module) async {
-    final path = (await metadataProvider.moduleToSourceMap)[module] ?? '';
-    return stripTopLevelDirectory(path);
+    final sourceMapPath = (await metadataProvider.moduleToSourceMap)[module];
+    return sourceMapPath == null ? null : stripTopLevelDirectory(sourceMapPath);
   }
 
   String? _serverPathForAppUri(String appUrl) {
@@ -115,13 +114,17 @@
     final result = <String, ModuleInfo>{};
     for (var module in modules) {
       final serverPath = await _serverPathForModule(metadataProvider, module);
-      result[module] = ModuleInfo(
-          // TODO: Save locations of full kernel files in ddc metadata.
-          // Issue: https://github.com/dart-lang/sdk/issues/43684
-          // TODO: Change these to URIs instead of paths when the SDK supports
-          // it.
-          p.setExtension(serverPath, '.full.dill'),
-          p.setExtension(serverPath, '.dill'));
+      if (serverPath == null) {
+        _logger.warning('No module info found for module $module');
+      } else {
+        result[module] = ModuleInfo(
+            // TODO: Save locations of full kernel files in ddc metadata.
+            // Issue: https://github.com/dart-lang/sdk/issues/43684
+            // TODO: Change these to URIs instead of paths when the SDK supports
+            // it.
+            p.setExtension(serverPath, '.full.dill'),
+            p.setExtension(serverPath, '.dill'));
+      }
     }
     return result;
   }
diff --git a/dwds/lib/src/loaders/legacy.dart b/dwds/lib/src/loaders/legacy.dart
index 87308c1..2af1485 100644
--- a/dwds/lib/src/loaders/legacy.dart
+++ b/dwds/lib/src/loaders/legacy.dart
@@ -20,7 +20,7 @@
   ///
   /// /packages/path/path.ddc.js -> packages/path/path
   ///
-  final Future<String> Function(
+  final Future<String?> Function(
           MetadataProvider metadataProvider, String sourcePath)
       _moduleForServerPath;
 
@@ -39,7 +39,7 @@
   ///
   ///   web/main -> main.ddc.js
   ///
-  final Future<String> Function(
+  final Future<String?> Function(
       MetadataProvider metadataProvider, String module) _serverPathForModule;
 
   /// Returns the source map path for the provided module.
@@ -48,7 +48,7 @@
   ///
   ///   web/main -> main.ddc.js.map
   ///
-  final Future<String> Function(
+  final Future<String?> Function(
       MetadataProvider metadataProvider, String module) _sourceMapPathForModule;
 
   /// Returns the server path for the app uri.
@@ -101,7 +101,7 @@
       'window.\$dartLoader.forceLoadModule("$clientScript");\n';
 
   @override
-  Future<String> moduleForServerPath(
+  Future<String?> moduleForServerPath(
           String entrypoint, String serverPath) async =>
       _moduleForServerPath(metadataProviderFor(entrypoint), serverPath);
 
@@ -110,11 +110,11 @@
       _moduleInfoForProvider(metadataProviderFor(entrypoint));
 
   @override
-  Future<String> serverPathForModule(String entrypoint, String module) async =>
+  Future<String?> serverPathForModule(String entrypoint, String module) async =>
       _serverPathForModule(metadataProviderFor(entrypoint), module);
 
   @override
-  Future<String> sourceMapPathForModule(
+  Future<String?> sourceMapPathForModule(
           String entrypoint, String module) async =>
       _sourceMapPathForModule(metadataProviderFor(entrypoint), module);
 
diff --git a/dwds/lib/src/loaders/require.dart b/dwds/lib/src/loaders/require.dart
index fe98073..ce01bd1 100644
--- a/dwds/lib/src/loaders/require.dart
+++ b/dwds/lib/src/loaders/require.dart
@@ -102,7 +102,7 @@
   ///
   ///   web/main -> main.ddc.js
   ///
-  final Future<String> Function(MetadataProvider provider, String module)
+  final Future<String?> Function(MetadataProvider provider, String module)
       _serverPathForModule;
 
   /// Returns the source map path for the provided module.
@@ -111,7 +111,7 @@
   ///
   ///   web/main -> main.ddc.js.map
   ///
-  final Future<String> Function(MetadataProvider provider, String module)
+  final Future<String?> Function(MetadataProvider provider, String module)
       _sourceMapPathForModule;
 
   /// Returns the server path for the app uri.
@@ -276,13 +276,13 @@
   }
 
   @override
-  Future<String> serverPathForModule(String entrypoint, String module) {
+  Future<String?> serverPathForModule(String entrypoint, String module) {
     final metadataProvider = metadataProviderFor(entrypoint);
     return _serverPathForModule(metadataProvider, module);
   }
 
   @override
-  Future<String> sourceMapPathForModule(String entrypoint, String module) {
+  Future<String?> sourceMapPathForModule(String entrypoint, String module) {
     final metadataProvider = metadataProviderFor(entrypoint);
     return _sourceMapPathForModule(metadataProvider, module);
   }
diff --git a/dwds/lib/src/loaders/strategy.dart b/dwds/lib/src/loaders/strategy.dart
index ece82bf..d019ac1 100644
--- a/dwds/lib/src/loaders/strategy.dart
+++ b/dwds/lib/src/loaders/strategy.dart
@@ -93,7 +93,7 @@
   ///
   ///   web/main -> main.ddc.js
   ///
-  Future<String> serverPathForModule(String entrypoint, String module);
+  Future<String?> serverPathForModule(String entrypoint, String module);
 
   /// Returns the source map path for the provided module.
   ///
@@ -101,7 +101,7 @@
   ///
   ///   web/main -> main.ddc.js.map
   ///
-  Future<String> sourceMapPathForModule(String entrypoint, String module);
+  Future<String?> sourceMapPathForModule(String entrypoint, String module);
 
   /// Returns a map from module id to module info for the provided entrypoint.
   ///
diff --git a/webdev/pubspec.yaml b/webdev/pubspec.yaml
index c972248..e787cb8 100644
--- a/webdev/pubspec.yaml
+++ b/webdev/pubspec.yaml
@@ -49,9 +49,9 @@
   webdriver: ^3.0.0
 
 # Comment out before releasing webdev.
-# dependency_overrides:
-#   dwds:
-#     path: ../dwds
+dependency_overrides:
+  dwds:
+    path: ../dwds
 
 executables:
   webdev: