docs: @javax.annotation.Nonnull
    public static com.simiacryptus.util.io.MarkdownNotebookOutput get(@javax.annotation.Nonnull Class<?> sourceClass, @Nullable String absoluteUrl, @javax.annotation.Nonnull String... suffix) {
      try {
        final StackTraceElement callingFrame = Thread.currentThread().getStackTrace()[2];
        final String methodName = callingFrame.getMethodName();
        final String className = sourceClass.getCanonicalName();
        @javax.annotation.Nonnull File path = new File(Util.mkString(File.separator, "reports", className.replaceAll("\\.", "/").replaceAll("\\$", "/")));
        for (int i = 0; i < suffix.length - 1; i++) path = new File(path, suffix[i]);
        String testName = suffix.length == 0 ? methodName : suffix[suffix.length - 1];
        path = new File(path, testName + ".md");
        path.getParentFile().mkdirs();
        @javax.annotation.Nonnull com.simiacryptus.util.io.MarkdownNotebookOutput notebookOutput = new com.simiacryptus.util.io.MarkdownNotebookOutput(path, testName);
        if (null != absoluteUrl) {
          try {
            String url = new URI(absoluteUrl + "/" + path.toPath().toString().replaceAll("\\\\", "/")).normalize().toString();
            notebookOutput.setAbsoluteUrl(url);
          } catch (URISyntaxException e) {
            throw new RuntimeException(e);
          }
        }
        return notebookOutput;
      } catch (@javax.annotation.Nonnull final FileNotFoundException e) {
        throw new RuntimeException(e);
      }
    }