docs: public void checkout(@Nonnull Run<?,?> build, @Nonnull Launcher launcher, @Nonnull FilePath workspace, @Nonnull TaskListener listener, @CheckForNull File changelogFile, @CheckForNull SCMRevisionState baseline) throws IOException, InterruptedException {
          if (build instanceof AbstractBuild && listener instanceof BuildListener && Util.isOverridden(SCM.class, getClass(), "checkout", AbstractBuild.class, Launcher.class, FilePath.class, BuildListener.class, File.class)) {
              if (changelogFile == null) {
                  changelogFile = File.createTempFile("changelog", ".xml");
                  try {
                      if (!checkout((AbstractBuild) build, launcher, workspace, (BuildListener) listener, changelogFile)) {
                          throw new AbortException();
                      }
                  } finally {
                      Util.deleteFile(changelogFile);
                  }
              } else {
                  if (!checkout((AbstractBuild) build, launcher, workspace, (BuildListener) listener, changelogFile)) {
                      throw new AbortException();
                  }
              }
          } else {
              throw new AbstractMethodError("you must override the new overload of checkout");
          }
      }