findVersionInfo() {
    var _this4 = this;

    return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
      const exoticResolver = (0, (_index || _load_index()).getExoticResolver)(_this4.pattern);
      if (exoticResolver) {
        return _this4.findExoticVersionInfo(exoticResolver, _this4.pattern);
      } else if ((_workspaceResolver || _load_workspaceResolver()).default.isWorkspace(_this4.pattern, _this4.resolver.workspaceLayout)) {
        (0, (_invariant || _load_invariant()).default)(_this4.resolver.workspaceLayout, 'expected workspaceLayout');
        const resolver = new (_workspaceResolver || _load_workspaceResolver()).default(_this4, _this4.pattern, _this4.resolver.workspaceLayout);
        let manifest;
        if (_this4.config.focus && !_this4.pattern.includes(_this4.resolver.workspaceLayout.virtualManifestName) && !_this4.pattern.startsWith(_this4.config.focusedWorkspaceName + '@')) {
          const localInfo = _this4.resolver.workspaceLayout.getManifestByPattern(_this4.pattern);
          (0, (_invariant || _load_invariant()).default)(localInfo, 'expected local info for ' + _this4.pattern);
          const localManifest = localInfo.manifest;
          const requestPattern = localManifest.name + '@' + localManifest.version;
          manifest = yield _this4.findVersionOnRegistry(requestPattern);
        }
        return resolver.resolve(manifest);
      } else {
        return _this4.findVersionOnRegistry(_this4.pattern);
      }
    })();
  }
If the current pattern matches an exotic resolver then delegate to it or else try
the registry.