Inline normalizePath to make observatory happy.
diff --git a/lib/packages_file.dart b/lib/packages_file.dart
index 48c2334..03b37b6 100644
--- a/lib/packages_file.dart
+++ b/lib/packages_file.dart
@@ -147,12 +147,12 @@
     }
   }
 
-  baseUri = baseUri.normalizePath();
+  baseUri = _normalizePath(baseUri);
   List<String> base = baseUri.pathSegments.toList();
   if (base.isNotEmpty) {
     base = new List<String>.from(base)..removeLast();
   }
-  uri = uri.normalizePath();
+  uri = _normalizePath(uri);
   List<String> target = uri.pathSegments.toList();
   int index = 0;
   while (index < base.length && index < target.length) {
@@ -170,3 +170,6 @@
     return uri;
   }
 }
+
+// TODO: inline to uri.normalizePath() when we move to 1.11
+Uri _normalizePath(Uri uri) => new Uri().resolveUri(uri); 
diff --git a/lib/src/packages_impl.dart b/lib/src/packages_impl.dart
index 6d88a65..880b9db 100644
--- a/lib/src/packages_impl.dart
+++ b/lib/src/packages_impl.dart
@@ -33,7 +33,7 @@
 /// member
 abstract class _PackagesBase implements Packages {
   Uri resolve(Uri packageUri, {Uri notFound(Uri packageUri)}) {
-    packageUri = packageUri.normalizePath();
+    packageUri = _normalizePath(packageUri);
     String packageName = checkValidPackageUri(packageUri);
     Uri packageBase = _getBase(packageName);
     if (packageBase == null) {
@@ -50,6 +50,9 @@
   /// Returns `null` if no package exists with that name, and that can be
   /// determined.
   Uri _getBase(String packageName);
+  
+  // TODO: inline to uri.normalizePath() when we move to 1.11
+  static Uri _normalizePath(Uri uri) => new Uri().resolveUri(uri); 
 }
 
 /// A [Packages] implementation based on an existing map.