public class org.apache.catalina.webresources.ExtractingRoot extends org.apache.catalina.webresources.StandardRoot
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.apache.catalina.webresources.ExtractingRoot
  super_class: org.apache.catalina.webresources.StandardRoot
{
  private static final org.apache.tomcat.util.res.StringManager sm;
    descriptor: Lorg/apache/tomcat/util/res/StringManager;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.lang.String APPLICATION_JARS_DIR;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "application-jars"

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 39
            ldc Lorg/apache/catalina/webresources/ExtractingRoot;
            invokestatic org.apache.tomcat.util.res.StringManager.getManager:(Ljava/lang/Class;)Lorg/apache/tomcat/util/res/StringManager;
            putstatic org.apache.catalina.webresources.ExtractingRoot.sm:Lorg/apache/tomcat/util/res/StringManager;
         1: .line 41
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.catalina.webresources.ExtractingRoot this
         0: .line 37
            aload 0 /* this */
            invokespecial org.apache.catalina.webresources.StandardRoot.<init>:()V
            return
        end local 0 // org.apache.catalina.webresources.ExtractingRoot this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/catalina/webresources/ExtractingRoot;

  protected void processWebInfLib();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=8, locals=12, args_size=1
        start local 0 // org.apache.catalina.webresources.ExtractingRoot this
         0: .line 48
            aload 0 /* this */
            invokespecial org.apache.catalina.webresources.StandardRoot.isPackedWarFile:()Z
            ifne 3
         1: .line 49
            aload 0 /* this */
            invokespecial org.apache.catalina.webresources.StandardRoot.processWebInfLib:()V
         2: .line 50
            return
         3: .line 53
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.apache.catalina.webresources.ExtractingRoot.getExpansionTarget:()Ljava/io/File;
            astore 1 /* expansionTarget */
        start local 1 // java.io.File expansionTarget
         4: .line 54
            aload 1 /* expansionTarget */
            invokevirtual java.io.File.isDirectory:()Z
            ifne 9
         5: .line 55
            aload 1 /* expansionTarget */
            invokevirtual java.io.File.mkdirs:()Z
            ifne 9
         6: .line 56
            new org.apache.catalina.LifecycleException
            dup
         7: .line 57
            getstatic org.apache.catalina.webresources.ExtractingRoot.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "extractingRoot.targetFailed"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1 /* expansionTarget */
            aastore
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
         8: .line 56
            invokespecial org.apache.catalina.LifecycleException.<init>:(Ljava/lang/String;)V
            athrow
         9: .line 61
      StackMap locals: java.io.File
      StackMap stack:
            aload 0 /* this */
            ldc "/WEB-INF/lib"
            iconst_0
            invokevirtual org.apache.catalina.webresources.ExtractingRoot.listResources:(Ljava/lang/String;Z)[Lorg/apache/catalina/WebResource;
            astore 2 /* possibleJars */
        start local 2 // org.apache.catalina.WebResource[] possibleJars
        10: .line 63
            aload 2 /* possibleJars */
            dup
            astore 6
            arraylength
            istore 5
            iconst_0
            istore 4
            goto 39
      StackMap locals: org.apache.catalina.webresources.ExtractingRoot java.io.File org.apache.catalina.WebResource[] top int int org.apache.catalina.WebResource[]
      StackMap stack:
        11: aload 6
            iload 4
            aaload
            astore 3 /* possibleJar */
        start local 3 // org.apache.catalina.WebResource possibleJar
        12: .line 64
            aload 3 /* possibleJar */
            invokeinterface org.apache.catalina.WebResource.isFile:()Z
            ifeq 38
            aload 3 /* possibleJar */
            invokeinterface org.apache.catalina.WebResource.getName:()Ljava/lang/String;
            ldc ".jar"
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifeq 38
        13: .line 66
            new java.io.File
            dup
            aload 1 /* expansionTarget */
            aload 3 /* possibleJar */
            invokeinterface org.apache.catalina.WebResource.getName:()Ljava/lang/String;
            invokespecial java.io.File.<init>:(Ljava/io/File;Ljava/lang/String;)V
            astore 7 /* dest */
        start local 7 // java.io.File dest
        14: .line 67
            aload 7 /* dest */
            invokevirtual java.io.File.getCanonicalFile:()Ljava/io/File;
            astore 7 /* dest */
        15: .line 68
            aconst_null
            astore 8
            aconst_null
            astore 9
        16: aload 3 /* possibleJar */
            invokeinterface org.apache.catalina.WebResource.getInputStream:()Ljava/io/InputStream;
            astore 10 /* sourceStream */
        start local 10 // java.io.InputStream sourceStream
        17: .line 69
            new java.io.FileOutputStream
            dup
            aload 7 /* dest */
            invokespecial java.io.FileOutputStream.<init>:(Ljava/io/File;)V
            astore 11 /* destStream */
        start local 11 // java.io.OutputStream destStream
        18: .line 70
            aload 10 /* sourceStream */
            aload 11 /* destStream */
            invokestatic org.apache.catalina.util.IOTools.flow:(Ljava/io/InputStream;Ljava/io/OutputStream;)V
        19: .line 71
            aload 11 /* destStream */
            ifnull 22
            aload 11 /* destStream */
            invokevirtual java.io.OutputStream.close:()V
            goto 22
      StackMap locals: org.apache.catalina.webresources.ExtractingRoot java.io.File org.apache.catalina.WebResource[] org.apache.catalina.WebResource int int org.apache.catalina.WebResource[] java.io.File java.lang.Throwable java.lang.Throwable java.io.InputStream java.io.OutputStream
      StackMap stack: java.lang.Throwable
        20: astore 8
            aload 11 /* destStream */
            ifnull 21
            aload 11 /* destStream */
            invokevirtual java.io.OutputStream.close:()V
        end local 11 // java.io.OutputStream destStream
      StackMap locals:
      StackMap stack:
        21: aload 8
            athrow
      StackMap locals:
      StackMap stack:
        22: aload 10 /* sourceStream */
            ifnull 30
            aload 10 /* sourceStream */
            invokevirtual java.io.InputStream.close:()V
            goto 30
      StackMap locals:
      StackMap stack: java.lang.Throwable
        23: astore 9
            aload 8
            ifnonnull 24
            aload 9
            astore 8
            goto 25
      StackMap locals:
      StackMap stack:
        24: aload 8
            aload 9
            if_acmpeq 25
            aload 8
            aload 9
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        25: aload 10 /* sourceStream */
            ifnull 26
            aload 10 /* sourceStream */
            invokevirtual java.io.InputStream.close:()V
        end local 10 // java.io.InputStream sourceStream
      StackMap locals:
      StackMap stack:
        26: aload 8
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        27: astore 9
            aload 8
            ifnonnull 28
            aload 9
            astore 8
            goto 29
      StackMap locals:
      StackMap stack:
        28: aload 8
            aload 9
            if_acmpeq 29
            aload 8
            aload 9
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        29: aload 8
            athrow
        30: .line 73
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getstatic org.apache.catalina.WebResourceRoot$ResourceSetType.CLASSES_JAR:Lorg/apache/catalina/WebResourceRoot$ResourceSetType;
        31: .line 74
            ldc "/WEB-INF/classes"
            aload 7 /* dest */
            invokevirtual java.io.File.toURI:()Ljava/net/URI;
            invokevirtual java.net.URI.toURL:()Ljava/net/URL;
            ldc "/"
        32: .line 73
            invokevirtual org.apache.catalina.webresources.ExtractingRoot.createWebResourceSet:(Lorg/apache/catalina/WebResourceRoot$ResourceSetType;Ljava/lang/String;Ljava/net/URL;Ljava/lang/String;)V
        end local 7 // java.io.File dest
        33: .line 75
            goto 38
      StackMap locals: org.apache.catalina.webresources.ExtractingRoot java.io.File org.apache.catalina.WebResource[] org.apache.catalina.WebResource int int org.apache.catalina.WebResource[]
      StackMap stack: java.io.IOException
        34: astore 7 /* ioe */
        start local 7 // java.io.IOException ioe
        35: .line 76
            new org.apache.catalina.LifecycleException
            dup
        36: .line 77
            getstatic org.apache.catalina.webresources.ExtractingRoot.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "extractingRoot.jarFailed"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 3 /* possibleJar */
            invokeinterface org.apache.catalina.WebResource.getName:()Ljava/lang/String;
            aastore
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            aload 7 /* ioe */
        37: .line 76
            invokespecial org.apache.catalina.LifecycleException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 7 // java.io.IOException ioe
        end local 3 // org.apache.catalina.WebResource possibleJar
        38: .line 63
      StackMap locals: org.apache.catalina.webresources.ExtractingRoot java.io.File org.apache.catalina.WebResource[] top int int org.apache.catalina.WebResource[]
      StackMap stack:
            iinc 4 1
      StackMap locals:
      StackMap stack:
        39: iload 4
            iload 5
            if_icmplt 11
        40: .line 81
            return
        end local 2 // org.apache.catalina.WebResource[] possibleJars
        end local 1 // java.io.File expansionTarget
        end local 0 // org.apache.catalina.webresources.ExtractingRoot this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   41     0             this  Lorg/apache/catalina/webresources/ExtractingRoot;
            4   41     1  expansionTarget  Ljava/io/File;
           10   41     2     possibleJars  [Lorg/apache/catalina/WebResource;
           12   38     3      possibleJar  Lorg/apache/catalina/WebResource;
           14   33     7             dest  Ljava/io/File;
           17   26    10     sourceStream  Ljava/io/InputStream;
           18   21    11       destStream  Ljava/io/OutputStream;
           35   38     7              ioe  Ljava/io/IOException;
      Exception table:
        from    to  target  type
          18    19      20  any
          17    22      23  any
          16    27      27  any
          13    33      34  Class java.io.IOException
    Exceptions:
      throws org.apache.catalina.LifecycleException

  private java.io.File getExpansionTarget();
    descriptor: ()Ljava/io/File;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=3, args_size=1
        start local 0 // org.apache.catalina.webresources.ExtractingRoot this
         0: .line 84
            aload 0 /* this */
            invokevirtual org.apache.catalina.webresources.ExtractingRoot.getContext:()Lorg/apache/catalina/Context;
            invokeinterface org.apache.catalina.Context.getServletContext:()Ljakarta/servlet/ServletContext;
            ldc "jakarta.servlet.context.tempdir"
            invokeinterface jakarta.servlet.ServletContext.getAttribute:(Ljava/lang/String;)Ljava/lang/Object;
            checkcast java.io.File
            astore 1 /* tmpDir */
        start local 1 // java.io.File tmpDir
         1: .line 85
            new java.io.File
            dup
            aload 1 /* tmpDir */
            ldc "application-jars"
            invokespecial java.io.File.<init>:(Ljava/io/File;Ljava/lang/String;)V
            astore 2 /* expansionTarget */
        start local 2 // java.io.File expansionTarget
         2: .line 86
            aload 2 /* expansionTarget */
            areturn
        end local 2 // java.io.File expansionTarget
        end local 1 // java.io.File tmpDir
        end local 0 // org.apache.catalina.webresources.ExtractingRoot this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    3     0             this  Lorg/apache/catalina/webresources/ExtractingRoot;
            1    3     1           tmpDir  Ljava/io/File;
            2    3     2  expansionTarget  Ljava/io/File;

  protected boolean isPackedWarFile();
    descriptor: ()Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.catalina.webresources.ExtractingRoot this
         0: .line 92
            iconst_0
            ireturn
        end local 0 // org.apache.catalina.webresources.ExtractingRoot this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/catalina/webresources/ExtractingRoot;

  protected void stopInternal();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=2, args_size=1
        start local 0 // org.apache.catalina.webresources.ExtractingRoot this
         0: .line 98
            aload 0 /* this */
            invokespecial org.apache.catalina.webresources.StandardRoot.stopInternal:()V
         1: .line 100
            aload 0 /* this */
            invokespecial org.apache.catalina.webresources.StandardRoot.isPackedWarFile:()Z
            ifeq 4
         2: .line 102
            aload 0 /* this */
            invokevirtual org.apache.catalina.webresources.ExtractingRoot.getExpansionTarget:()Ljava/io/File;
            astore 1 /* expansionTarget */
        start local 1 // java.io.File expansionTarget
         3: .line 103
            aload 1 /* expansionTarget */
            invokestatic org.apache.catalina.startup.ExpandWar.delete:(Ljava/io/File;)Z
            pop
        end local 1 // java.io.File expansionTarget
         4: .line 105
      StackMap locals:
      StackMap stack:
            return
        end local 0 // org.apache.catalina.webresources.ExtractingRoot this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    5     0             this  Lorg/apache/catalina/webresources/ExtractingRoot;
            3    4     1  expansionTarget  Ljava/io/File;
    Exceptions:
      throws org.apache.catalina.LifecycleException
}
SourceFile: "ExtractingRoot.java"
InnerClasses:
  public final ResourceSetType = org.apache.catalina.WebResourceRoot$ResourceSetType of org.apache.catalina.WebResourceRoot