docs: function loadPath(dbProject, rootHash, loadedObjects, path, excludeParents) {
      var deferred = Q.defer(),
          pathArray = path.split('/');
  
      function processLoadResult(hash, result) {
          var subHash;
          if (result.multipleObjects === true) {
              for (subHash in result.objects) {
                  loadedObjects[subHash] = result.objects[subHash];
              }
          } else {
              loadedObjects[hash] = result;
          }
      }
  
      function loadParent(parentHash, relPath) {
          var hash;
          if (loadedObjects[parentHash]) {
              // Object was already loaded.
              if (relPath) {
                  hash = loadedObjects[parentHash][relPath];
                  loadParent(hash, pathArray.shift());
              } else {
                  deferred.resolve();
              }
          } else {
              loadObject(dbProject, parentHash)
                  .then(function (object) {
                      if (relPath) {
                          hash = object[relPath];
                          if (!excludeParents) {
                              processLoadResult(parentHash, object);
                          }
                          loadParent(hash, pathArray.shift());
                      } else {
                          processLoadResult(parentHash, object);
                          deferred.resolve();
                      }
                  })
                  .catch(function (err) {
                      deferred.reject(err);
                  });
          }
      }
  
      // Remove the root-path
      pathArray.shift();
  
      loadParent(rootHash, pathArray.shift());
      return deferred.promise;
  }