docs: protected String getMFMainClass(Container appEntryContainer, String entryPath, boolean required) {
          String mfMainClass = null;
          try {
              String entry = "/META-INF/MANIFEST.MF";
              Entry manifestEntry = appEntryContainer.getEntry(entry);
              if (manifestEntry != null) {
                  InputStream is = null;
                  try {
                      is = manifestEntry.adapt(InputStream.class);
                      // "is" is null when MANIFEST.MF is a directory
                      if (is == null) {
                          throw new FileNotFoundException(entry);
                      }
                      Manifest manifest = new Manifest(is);
                      mfMainClass = manifest.getMainAttributes().getValue(Attributes.Name.MAIN_CLASS);
                      if ("".equals(mfMainClass)) {
                          mfMainClass = null;
                      }
                  } finally {
                      if (is != null) {
                          try {
                              is.close();
                          } catch (IOException io) {
                              /* do nothing */
                          }
                      }
                  }
              }
              if (mfMainClass == null && required) {
                  Tr.error(_tc, "error.module.manifest.read.no.mainclass", getName(), entryPath);
              }
          } catch (IOException ioe) {
              Tr.error(_tc, "error.module.manifest.read.failed", getName(), entryPath, ioe);
          } catch (UnableToAdaptException uae) {
              Tr.error(_tc, "error.module.manifest.read.failed", getName(), entryPath, uae);
          }
          return mfMainClass;
      }