diff --git a/pkg/analyzer/lib/src/workspace/bazel.dart b/pkg/analyzer/lib/src/workspace/bazel.dart
index 8627efe..fdf4b00 100644
--- a/pkg/analyzer/lib/src/workspace/bazel.dart
+++ b/pkg/analyzer/lib/src/workspace/bazel.dart
@@ -446,8 +446,9 @@
         return writableFile;
       }
       // READONLY
+      var readonly = this.readonly;
       if (readonly != null) {
-        File file = provider.getFile(context.join(readonly!, relative));
+        File file = provider.getFile(context.join(readonly, relative));
         if (file.exists) {
           return file;
         }
@@ -573,8 +574,9 @@
       }
     }
     // READONLY
+    var readonly = this.readonly;
     if (readonly != null) {
-      if (context.isWithin(readonly!, p)) {
+      if (context.isWithin(readonly, p)) {
         return context.relative(p, from: readonly);
       }
     }
@@ -751,21 +753,13 @@
 
   @override
   bool contains(Source source) {
-    if (source.uri.isScheme('package')) {
-      return source.uri.toString().startsWith(_uriPrefix);
-    }
-    var filePath = source.fullName;
-    if (workspace.findFile(filePath) == null) {
-      return false;
-    }
-    if (!workspace.provider.pathContext.isWithin(root, filePath)) {
-      return false;
+    var uri = source.uri;
+    if (uri.isScheme('package')) {
+      return uri.toString().startsWith(_uriPrefix);
     }
 
-    // Just because [filePath] is within [root] does not mean it is in this
-    // package; it could be in a "subpackage." Must go through the work of
-    // learning exactly which package [filePath] is contained in.
-    return workspace.findPackageFor(filePath)!.root == root;
+    var path = source.fullName;
+    return workspace.findPackageFor(path)?.root == root;
   }
 
   @override
diff --git a/tools/VERSION b/tools/VERSION
index 9e39240..e4658d7 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 13
 PATCH 0
-PRERELEASE 112
+PRERELEASE 113
 PRERELEASE_PATCH 0
\ No newline at end of file
