docs: public void dbSchemaCheckVersion() {
      try {
        String dbVersion = getDbVersion();
        if (!ProcessEngine.VERSION.equals(dbVersion)) {
          throw LOG.wrongDbVersionException(ProcessEngine.VERSION, dbVersion);
        }
  
        List<String> missingComponents = new ArrayList<>();
        if (!isEngineTablePresent()) {
          missingComponents.add("engine");
        }
        if (dbSqlSessionFactory.isDbHistoryUsed() && !isHistoryTablePresent()) {
          missingComponents.add("history");
        }
        if (dbSqlSessionFactory.isDbIdentityUsed() && !isIdentityTablePresent()) {
          missingComponents.add("identity");
        }
        if (dbSqlSessionFactory.isCmmnEnabled() && !isCmmnTablePresent()) {
          missingComponents.add("case.engine");
        }
        if (dbSqlSessionFactory.isDmnEnabled() && !isDmnTablePresent()) {
          missingComponents.add("decision.engine");
        }
  
        if (!missingComponents.isEmpty()) {
          throw LOG.missingTableException(missingComponents);
        }
  
      } catch (Exception e) {
        if (isMissingTablesException(e)) {
          throw LOG.missingActivitiTablesException();
        } else {
          if (e instanceof RuntimeException) {
            throw (RuntimeException) e;
          } else {
            throw LOG.unableToFetchDbSchemaVersion(e);
          }
        }
      }
    }