docs: public String getBasePath() {
          if (basePath == null) {
              try {
                  basePath = getMainClass().getProtectionDomain().getCodeSource().getLocation().getPath();
                  int lastIndex = basePath.lastIndexOf('/');
                  if (lastIndex < 0) {
                      lastIndex = basePath.lastIndexOf('\\');
                  }
                  basePath = basePath.substring(0, lastIndex);
                  basePath = URLDecoder.decode(basePath, Encoding.UTF8);
              } catch (Throwable e) {
                  basePath = ".";
              }
          }
          return basePath;
      }