docs: function crawl (obj, path, $refs, options) {
    var promises = [];
  
    if (obj && typeof obj === "object") {
      if ($Ref.isExternal$Ref(obj)) {
        promises.push(resolve$Ref(obj, path, $refs, options));
      }
      else {
        Object.keys(obj).forEach(function (key) {
          var keyPath = Pointer.join(path, key);
          var value = obj[key];
  
          if ($Ref.isExternal$Ref(value)) {
            promises.push(resolve$Ref(value, keyPath, $refs, options));
          }
          else {
            promises = promises.concat(crawl(value, keyPath, $refs, options));
          }
        });
      }
    }
  
    return promises;
  }