docs: private static InMemoryJarfile modifyCatalogClasses(Catalog catalog, InMemoryJarfile jarfile, String deletePatterns,
              InMemoryJarfile newJarfile, boolean isXDCR, HSQLInterface hsql)
                      throws IOException, ClassNotFoundException, VoltCompilerException
      {
          // modify the old jar in place based on the @UpdateClasses inputs, and then
          // recompile it if necessary
          boolean deletedClasses = false;
          if (deletePatterns != null) {
              String[] patterns = deletePatterns.split(",");
              ClassMatcher matcher = new ClassMatcher();
              // Need to concatenate all the classnames together for ClassMatcher
              String currentClasses = "";
              for (String classname : jarfile.getLoader().getClassNames()) {
                  currentClasses = currentClasses.concat(classname + "\n");
              }
              matcher.m_classList = currentClasses;
              for (String pattern : patterns) {
                  ClassNameMatchStatus status = matcher.addPattern(pattern.trim());
                  if (status == ClassNameMatchStatus.MATCH_FOUND) {
                      deletedClasses = true;
                  }
              }
  
              for (String classname : matcher.getMatchedClassList()) {
                  jarfile.removeClassFromJar(classname);
              }
          }
          boolean foundClasses = false;
          if (newJarfile != null) {
              for (Entry<String, byte[]> e : newJarfile.entrySet()) {
                  String filename = e.getKey();
                  // Ignore root level, non-class file names
                  boolean isRootFile = Paths.get(filename).getNameCount() == 1;
                  if (isRootFile && !filename.endsWith(".class")) {
                      continue;
                  }
                  foundClasses = true;
                  jarfile.put(e.getKey(), e.getValue());
              }
          }
          if (!deletedClasses && !foundClasses) {
              return null;
          }
  
          compilerLog.info("Updating java classes available to stored procedures");
          VoltCompiler compiler = new VoltCompiler(isXDCR);
          try {
              compiler.compileInMemoryJarfileForUpdateClasses(jarfile, catalog, hsql);
          } catch (ClassNotFoundException | VoltCompilerException | IOException ex) {
              throw ex;
          }
  
          return jarfile;
      }