@Override public ElementHandle resolveLink(String link, ElementHandle originalHandle) { if (originalHandle.getKind() == ElementKind.KEYWORD) { return Optional.ofNullable(Command.forHandle(originalHandle)) .map((cmd) -> cmd.getDocumentation(null)) .map((doc) -> doc.getUrl()) .map((url) -> { try { return url.toURI(); } catch (URISyntaxException e) { return null; } }) .map((uri) -> { try { return uri.resolve(new URI(link)); } catch (URISyntaxException e) { return null; } }) .map((uri) -> new DocHandle(uri)) .orElse(null); } return null; }