          #
          # Parse the URL
          #
-@@ -414,11 +431,48 @@
+@@ -414,11 +431,53 @@
          def notFound(f):
              f.trap(http.HTTPError)
              if f.response.code != responsecode.NOT_FOUND:

+                return f
+            return None
+
+        d = defer.maybeDeferred(self._getChild, None, res, [segment], updatepaths=False)
+        d.addCallback(self._rememberResource, url)
+        d.addErrback(notFound)
+        return d

+        d.addErrback(notFound)
+        return d
 
+    def locateChildResource(self, resource, child_path):
+        """
+        Looks up the child resource with the given name given the parent
+        resource.  This is similar to locateResource(), but doesn't have to
+        start the lookup from the root resource, so it is potentially faster.
+        @param resource: the parent of the resource being looked up.
+        @param child_path: the path of the resource being looked up, relative
+            to C{parent}.
+        @return: a L{Deferred} resulting in the L{IResource} at the
+            given URL or C{None} if no such resource can be located.
+        @raise HTTPError: If C{url} is not a URL on the site that this
