diff --git a/com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/resource/IndexLookup_areReferringToSameFile_Tests.java b/com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/resource/IndexLookup_areReferringToSameFile_Tests.java
index 5706a4b..dbcf6e6 100644
--- a/com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/resource/IndexLookup_areReferringToSameFile_Tests.java
+++ b/com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/resource/IndexLookup_areReferringToSameFile_Tests.java
@@ -38,13 +38,13 @@
 
   @Test public void should_return_true_if_path_is_subset_of_URI() {
     IPath path = new Path("/google/proto");
-    URI uri = URI.createPlatformResourceURI("/usr/local/google/proto", false);
+    URI uri = URI.createPlatformResourceURI("/usr/local/google/proto", true);
     assertTrue(lookup.areReferringToSameFile(path, uri));
   }
 
   @Test public void should_return_false_if_last_segments_in_path_and_URI_are_not_equal() {
     IPath path = new Path("/usr/local/google/proto");
-    URI uri = URI.createPlatformResourceURI("/usr/local/google/cpp", false);
+    URI uri = URI.createPlatformResourceURI("/usr/local/google/cpp", true);
     assertFalse(lookup.areReferringToSameFile(path, uri));
   }
 }
diff --git a/com.google.eclipse.protobuf.ui.test/src/com/google/eclipse/protobuf/ui/editor/hyperlinking/ImportHyperlink_open_Test.java b/com.google.eclipse.protobuf.ui.test/src/com/google/eclipse/protobuf/ui/editor/hyperlinking/ImportHyperlink_open_Test.java
index e9c11c3..fe30825 100644
--- a/com.google.eclipse.protobuf.ui.test/src/com/google/eclipse/protobuf/ui/editor/hyperlinking/ImportHyperlink_open_Test.java
+++ b/com.google.eclipse.protobuf.ui.test/src/com/google/eclipse/protobuf/ui/editor/hyperlinking/ImportHyperlink_open_Test.java
@@ -37,14 +37,14 @@
   }
 
   @Test public void should_open_file_in_workspace() throws Throwable {
-    URI uri = createPlatformResourceURI("test.proto", false);
+    URI uri = createPlatformResourceURI("test.proto", true);
     hyperlink = new ImportHyperlink(uri, region, fileOpener);
     hyperlink.open();
     verify(fileOpener).openProtoFileInWorkspace(uri);
   }
 
   @Test public void should_open_file_in_plugin() throws Throwable {
-    URI uri = createPlatformPluginURI("test.proto", false);
+    URI uri = createPlatformPluginURI("test.proto", true);
     hyperlink = new ImportHyperlink(uri, region, fileOpener);
     hyperlink.open();
     verify(fileOpener).openProtoFileInPlugin(uri);
diff --git a/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/resource/IndexLookup.java b/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/resource/IndexLookup.java
index f1e989e..f72c2be 100644
--- a/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/resource/IndexLookup.java
+++ b/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/resource/IndexLookup.java
@@ -40,7 +40,7 @@
   }
 
   private IResourceDescription lookup(IPath path) {
-    URI uri = URI.createPlatformResourceURI(path.toOSString(), false);
+    URI uri = URI.createPlatformResourceURI(path.toOSString(), true);
     return xtextIndex.getResourceDescription(uri);
   }
 
