@Override
      protected String convertReference(String root, String href) {
        if (BrowserUtil.isAbsoluteURL(href)) {
          return href;
        }
        String reference = JavaDocInfoGenerator.createReferenceForRelativeLink(href, myElement);
        if (reference == null) {
          if (href.startsWith("#")) {
            return root + href;
          }
          else if (href.startsWith("//")) {
            Url rootUrl = Urls.parse(root, false);
            if (rootUrl == null) return href;
            String scheme = rootUrl.getScheme();
            if (scheme == null) return href;
            String[] parts = href.substring(2).split("/", 2);
            if (parts.length != 2) return href;
            Url relativeUrl = Urls.newUrl(scheme, parts[0], '/' + parts[1]);
            return relativeUrl.toDecodedForm();
          }
          else if (href.startsWith("/")) {
            Url rootUrl = Urls.parse(root, false);
            if (rootUrl == null) return href;
            String scheme = rootUrl.getScheme();
            String authority = rootUrl.getAuthority();
            if (scheme == null || authority == null) return href;
            Url relativeUrl = Urls.newUrl(scheme, authority, href);
            return relativeUrl.toDecodedForm();
          }
          else {
            String nakedRoot = ourHtmlFileSuffix.matcher(root).replaceAll("/");
            return doAnnihilate(nakedRoot + href);
          }
        }
        else {
          return reference;
        }
      }
@Override
      protected String convertReference(String root, String href)