protected PsiReference createUrlReference(final PsiElement dtdUrlElement) {
    return new URLReference(this) {
      @Override
      public @NotNull String getCanonicalText() {
        return extractValue(dtdUrlElement);
      }
      @Override
      public @NotNull TextRange getRangeInElement() {
        return TextRange.from(dtdUrlElement.getTextRange().getStartOffset() - getTextRange().getStartOffset() + 1, Math.max(dtdUrlElement.getTextRange().getLength() - 2, 0));
      }
    };
  }
protected PsiReference createUrlReference(final PsiElement dtdUrlElement)