public class org.apache.tomcat.util.descriptor.web.WebXmlParser
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.apache.tomcat.util.descriptor.web.WebXmlParser
  super_class: java.lang.Object
{
  private final org.apache.juli.logging.Log log;
    descriptor: Lorg/apache/juli/logging/Log;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  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 final org.apache.tomcat.util.digester.Digester webDigester;
    descriptor: Lorg/apache/tomcat/util/digester/Digester;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.apache.tomcat.util.descriptor.web.WebRuleSet webRuleSet;
    descriptor: Lorg/apache/tomcat/util/descriptor/web/WebRuleSet;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.apache.tomcat.util.digester.Digester webFragmentDigester;
    descriptor: Lorg/apache/tomcat/util/digester/Digester;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.apache.tomcat.util.descriptor.web.WebRuleSet webFragmentRuleSet;
    descriptor: Lorg/apache/tomcat/util/descriptor/web/WebRuleSet;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 40
            getstatic org.apache.tomcat.util.descriptor.web.Constants.PACKAGE_NAME:Ljava/lang/String;
            invokestatic org.apache.tomcat.util.res.StringManager.getManager:(Ljava/lang/String;)Lorg/apache/tomcat/util/res/StringManager;
         1: .line 39
            putstatic org.apache.tomcat.util.descriptor.web.WebXmlParser.sm:Lorg/apache/tomcat/util/res/StringManager;
         2: .line 40
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(boolean, boolean, boolean);
    descriptor: (ZZZ)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=4, args_size=4
        start local 0 // org.apache.tomcat.util.descriptor.web.WebXmlParser this
        start local 1 // boolean namespaceAware
        start local 2 // boolean validation
        start local 3 // boolean blockExternal
         0: .line 57
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 34
            aload 0 /* this */
            ldc Lorg/apache/tomcat/util/descriptor/web/WebXmlParser;
            invokestatic org.apache.juli.logging.LogFactory.getLog:(Ljava/lang/Class;)Lorg/apache/juli/logging/Log;
            putfield org.apache.tomcat.util.descriptor.web.WebXmlParser.log:Lorg/apache/juli/logging/Log;
         2: .line 59
            aload 0 /* this */
            new org.apache.tomcat.util.descriptor.web.WebRuleSet
            dup
            iconst_0
            invokespecial org.apache.tomcat.util.descriptor.web.WebRuleSet.<init>:(Z)V
            putfield org.apache.tomcat.util.descriptor.web.WebXmlParser.webRuleSet:Lorg/apache/tomcat/util/descriptor/web/WebRuleSet;
         3: .line 60
            aload 0 /* this */
            iload 2 /* validation */
         4: .line 61
            iload 1 /* namespaceAware */
            aload 0 /* this */
            getfield org.apache.tomcat.util.descriptor.web.WebXmlParser.webRuleSet:Lorg/apache/tomcat/util/descriptor/web/WebRuleSet;
            iload 3 /* blockExternal */
         5: .line 60
            invokestatic org.apache.tomcat.util.descriptor.DigesterFactory.newDigester:(ZZLorg/apache/tomcat/util/digester/RuleSet;Z)Lorg/apache/tomcat/util/digester/Digester;
            putfield org.apache.tomcat.util.descriptor.web.WebXmlParser.webDigester:Lorg/apache/tomcat/util/digester/Digester;
         6: .line 62
            aload 0 /* this */
            getfield org.apache.tomcat.util.descriptor.web.WebXmlParser.webDigester:Lorg/apache/tomcat/util/digester/Digester;
            invokevirtual org.apache.tomcat.util.digester.Digester.getParser:()Ljavax/xml/parsers/SAXParser;
            pop
         7: .line 64
            aload 0 /* this */
            new org.apache.tomcat.util.descriptor.web.WebRuleSet
            dup
            iconst_1
            invokespecial org.apache.tomcat.util.descriptor.web.WebRuleSet.<init>:(Z)V
            putfield org.apache.tomcat.util.descriptor.web.WebXmlParser.webFragmentRuleSet:Lorg/apache/tomcat/util/descriptor/web/WebRuleSet;
         8: .line 65
            aload 0 /* this */
            iload 2 /* validation */
         9: .line 66
            iload 1 /* namespaceAware */
            aload 0 /* this */
            getfield org.apache.tomcat.util.descriptor.web.WebXmlParser.webFragmentRuleSet:Lorg/apache/tomcat/util/descriptor/web/WebRuleSet;
            iload 3 /* blockExternal */
        10: .line 65
            invokestatic org.apache.tomcat.util.descriptor.DigesterFactory.newDigester:(ZZLorg/apache/tomcat/util/digester/RuleSet;Z)Lorg/apache/tomcat/util/digester/Digester;
            putfield org.apache.tomcat.util.descriptor.web.WebXmlParser.webFragmentDigester:Lorg/apache/tomcat/util/digester/Digester;
        11: .line 67
            aload 0 /* this */
            getfield org.apache.tomcat.util.descriptor.web.WebXmlParser.webFragmentDigester:Lorg/apache/tomcat/util/digester/Digester;
            invokevirtual org.apache.tomcat.util.digester.Digester.getParser:()Ljavax/xml/parsers/SAXParser;
            pop
        12: .line 68
            return
        end local 3 // boolean blockExternal
        end local 2 // boolean validation
        end local 1 // boolean namespaceAware
        end local 0 // org.apache.tomcat.util.descriptor.web.WebXmlParser this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   13     0            this  Lorg/apache/tomcat/util/descriptor/web/WebXmlParser;
            0   13     1  namespaceAware  Z
            0   13     2      validation  Z
            0   13     3   blockExternal  Z
    MethodParameters:
                Name  Flags
      namespaceAware  
      validation      
      blockExternal   

  public boolean parseWebXml(java.net.URL, org.apache.tomcat.util.descriptor.web.WebXml, boolean);
    descriptor: (Ljava/net/URL;Lorg/apache/tomcat/util/descriptor/web/WebXml;Z)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=5, args_size=4
        start local 0 // org.apache.tomcat.util.descriptor.web.WebXmlParser this
        start local 1 // java.net.URL url
        start local 2 // org.apache.tomcat.util.descriptor.web.WebXml dest
        start local 3 // boolean fragment
         0: .line 80
            aload 1 /* url */
            ifnonnull 2
         1: .line 81
            iconst_1
            ireturn
         2: .line 83
      StackMap locals:
      StackMap stack:
            new org.xml.sax.InputSource
            dup
            aload 1 /* url */
            invokevirtual java.net.URL.toExternalForm:()Ljava/lang/String;
            invokespecial org.xml.sax.InputSource.<init>:(Ljava/lang/String;)V
            astore 4 /* source */
        start local 4 // org.xml.sax.InputSource source
         3: .line 84
            aload 4 /* source */
            aload 1 /* url */
            invokevirtual java.net.URL.openStream:()Ljava/io/InputStream;
            invokevirtual org.xml.sax.InputSource.setByteStream:(Ljava/io/InputStream;)V
         4: .line 85
            aload 0 /* this */
            aload 4 /* source */
            aload 2 /* dest */
            iload 3 /* fragment */
            invokevirtual org.apache.tomcat.util.descriptor.web.WebXmlParser.parseWebXml:(Lorg/xml/sax/InputSource;Lorg/apache/tomcat/util/descriptor/web/WebXml;Z)Z
            ireturn
        end local 4 // org.xml.sax.InputSource source
        end local 3 // boolean fragment
        end local 2 // org.apache.tomcat.util.descriptor.web.WebXml dest
        end local 1 // java.net.URL url
        end local 0 // org.apache.tomcat.util.descriptor.web.WebXmlParser this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    5     0      this  Lorg/apache/tomcat/util/descriptor/web/WebXmlParser;
            0    5     1       url  Ljava/net/URL;
            0    5     2      dest  Lorg/apache/tomcat/util/descriptor/web/WebXml;
            0    5     3  fragment  Z
            3    5     4    source  Lorg/xml/sax/InputSource;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
          Name  Flags
      url       
      dest      
      fragment  

  public boolean parseWebXml(org.xml.sax.InputSource, org.apache.tomcat.util.descriptor.web.WebXml, boolean);
    descriptor: (Lorg/xml/sax/InputSource;Lorg/apache/tomcat/util/descriptor/web/WebXml;Z)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=10, args_size=4
        start local 0 // org.apache.tomcat.util.descriptor.web.WebXmlParser this
        start local 1 // org.xml.sax.InputSource source
        start local 2 // org.apache.tomcat.util.descriptor.web.WebXml dest
        start local 3 // boolean fragment
         0: .line 92
            iconst_1
            istore 4 /* ok */
        start local 4 // boolean ok
         1: .line 94
            aload 1 /* source */
            ifnonnull 3
         2: .line 95
            iload 4 /* ok */
            ireturn
         3: .line 98
      StackMap locals: int
      StackMap stack:
            new org.apache.tomcat.util.descriptor.XmlErrorHandler
            dup
            invokespecial org.apache.tomcat.util.descriptor.XmlErrorHandler.<init>:()V
            astore 5 /* handler */
        start local 5 // org.apache.tomcat.util.descriptor.XmlErrorHandler handler
         4: .line 102
            iload 3 /* fragment */
            ifeq 8
         5: .line 103
            aload 0 /* this */
            getfield org.apache.tomcat.util.descriptor.web.WebXmlParser.webFragmentDigester:Lorg/apache/tomcat/util/digester/Digester;
            astore 6 /* digester */
        start local 6 // org.apache.tomcat.util.digester.Digester digester
         6: .line 104
            aload 0 /* this */
            getfield org.apache.tomcat.util.descriptor.web.WebXmlParser.webFragmentRuleSet:Lorg/apache/tomcat/util/descriptor/web/WebRuleSet;
            astore 7 /* ruleSet */
        start local 7 // org.apache.tomcat.util.descriptor.web.WebRuleSet ruleSet
         7: .line 105
            goto 10
        end local 7 // org.apache.tomcat.util.descriptor.web.WebRuleSet ruleSet
        end local 6 // org.apache.tomcat.util.digester.Digester digester
         8: .line 106
      StackMap locals: org.apache.tomcat.util.descriptor.XmlErrorHandler
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.tomcat.util.descriptor.web.WebXmlParser.webDigester:Lorg/apache/tomcat/util/digester/Digester;
            astore 6 /* digester */
        start local 6 // org.apache.tomcat.util.digester.Digester digester
         9: .line 107
            aload 0 /* this */
            getfield org.apache.tomcat.util.descriptor.web.WebXmlParser.webRuleSet:Lorg/apache/tomcat/util/descriptor/web/WebRuleSet;
            astore 7 /* ruleSet */
        start local 7 // org.apache.tomcat.util.descriptor.web.WebRuleSet ruleSet
        10: .line 110
      StackMap locals: org.apache.tomcat.util.digester.Digester org.apache.tomcat.util.descriptor.web.WebRuleSet
      StackMap stack:
            aload 6 /* digester */
            aload 2 /* dest */
            invokevirtual org.apache.tomcat.util.digester.Digester.push:(Ljava/lang/Object;)V
        11: .line 111
            aload 6 /* digester */
            aload 5 /* handler */
            invokevirtual org.apache.tomcat.util.digester.Digester.setErrorHandler:(Lorg/xml/sax/ErrorHandler;)V
        12: .line 113
            aload 0 /* this */
            getfield org.apache.tomcat.util.descriptor.web.WebXmlParser.log:Lorg/apache/juli/logging/Log;
            invokeinterface org.apache.juli.logging.Log.isDebugEnabled:()Z
            ifeq 16
        13: .line 114
            aload 0 /* this */
            getfield org.apache.tomcat.util.descriptor.web.WebXmlParser.log:Lorg/apache/juli/logging/Log;
            getstatic org.apache.tomcat.util.descriptor.web.WebXmlParser.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "webXmlParser.applicationStart"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
        14: .line 115
            aload 1 /* source */
            invokevirtual org.xml.sax.InputSource.getSystemId:()Ljava/lang/String;
            aastore
        15: .line 114
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokeinterface org.apache.juli.logging.Log.debug:(Ljava/lang/Object;)V
        16: .line 119
      StackMap locals:
      StackMap stack:
            aload 6 /* digester */
            aload 1 /* source */
            invokevirtual org.apache.tomcat.util.digester.Digester.parse:(Lorg/xml/sax/InputSource;)Ljava/lang/Object;
            pop
        17: .line 121
            aload 5 /* handler */
            invokevirtual org.apache.tomcat.util.descriptor.XmlErrorHandler.getWarnings:()Ljava/util/List;
            invokeinterface java.util.List.size:()I
            ifgt 19
        18: .line 122
            aload 5 /* handler */
            invokevirtual org.apache.tomcat.util.descriptor.XmlErrorHandler.getErrors:()Ljava/util/List;
            invokeinterface java.util.List.size:()I
            ifle 51
        19: .line 123
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 4 /* ok */
        20: .line 124
            aload 5 /* handler */
            aload 0 /* this */
            getfield org.apache.tomcat.util.descriptor.web.WebXmlParser.log:Lorg/apache/juli/logging/Log;
            aload 1 /* source */
            invokevirtual org.xml.sax.InputSource.getSystemId:()Ljava/lang/String;
            invokevirtual org.apache.tomcat.util.descriptor.XmlErrorHandler.logFindings:(Lorg/apache/juli/logging/Log;Ljava/lang/String;)V
        21: .line 126
            goto 51
      StackMap locals:
      StackMap stack: org.xml.sax.SAXParseException
        22: astore 8 /* e */
        start local 8 // org.xml.sax.SAXParseException e
        23: .line 127
            aload 0 /* this */
            getfield org.apache.tomcat.util.descriptor.web.WebXmlParser.log:Lorg/apache/juli/logging/Log;
            getstatic org.apache.tomcat.util.descriptor.web.WebXmlParser.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "webXmlParser.applicationParse"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
        24: .line 128
            aload 1 /* source */
            invokevirtual org.xml.sax.InputSource.getSystemId:()Ljava/lang/String;
            aastore
        25: .line 127
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
        26: .line 128
            aload 8 /* e */
        27: .line 127
            invokeinterface org.apache.juli.logging.Log.error:(Ljava/lang/Object;Ljava/lang/Throwable;)V
        28: .line 129
            aload 0 /* this */
            getfield org.apache.tomcat.util.descriptor.web.WebXmlParser.log:Lorg/apache/juli/logging/Log;
            getstatic org.apache.tomcat.util.descriptor.web.WebXmlParser.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "webXmlParser.applicationPosition"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
        29: .line 130
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            aload 8 /* e */
            invokevirtual org.xml.sax.SAXParseException.getLineNumber:()I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aastore
            dup
            iconst_1
        30: .line 131
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            aload 8 /* e */
            invokevirtual org.xml.sax.SAXParseException.getColumnNumber:()I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aastore
        31: .line 129
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokeinterface org.apache.juli.logging.Log.error:(Ljava/lang/Object;)V
        32: .line 132
            iconst_0
            istore 4 /* ok */
        end local 8 // org.xml.sax.SAXParseException e
        33: .line 138
            aload 1 /* source */
            invokestatic org.apache.tomcat.util.descriptor.InputSourceUtil.close:(Lorg/xml/sax/InputSource;)V
        34: .line 139
            aload 6 /* digester */
            invokevirtual org.apache.tomcat.util.digester.Digester.reset:()V
        35: .line 140
            aload 7 /* ruleSet */
            invokevirtual org.apache.tomcat.util.descriptor.web.WebRuleSet.recycle:()V
            goto 54
        36: .line 133
      StackMap locals:
      StackMap stack: java.lang.Exception
            astore 8 /* e */
        start local 8 // java.lang.Exception e
        37: .line 134
            aload 0 /* this */
            getfield org.apache.tomcat.util.descriptor.web.WebXmlParser.log:Lorg/apache/juli/logging/Log;
            getstatic org.apache.tomcat.util.descriptor.web.WebXmlParser.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "webXmlParser.applicationParse"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
        38: .line 135
            aload 1 /* source */
            invokevirtual org.xml.sax.InputSource.getSystemId:()Ljava/lang/String;
            aastore
        39: .line 134
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
        40: .line 135
            aload 8 /* e */
        41: .line 134
            invokeinterface org.apache.juli.logging.Log.error:(Ljava/lang/Object;Ljava/lang/Throwable;)V
        42: .line 136
            iconst_0
            istore 4 /* ok */
        end local 8 // java.lang.Exception e
        43: .line 138
            aload 1 /* source */
            invokestatic org.apache.tomcat.util.descriptor.InputSourceUtil.close:(Lorg/xml/sax/InputSource;)V
        44: .line 139
            aload 6 /* digester */
            invokevirtual org.apache.tomcat.util.digester.Digester.reset:()V
        45: .line 140
            aload 7 /* ruleSet */
            invokevirtual org.apache.tomcat.util.descriptor.web.WebRuleSet.recycle:()V
            goto 54
        46: .line 137
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 9
        47: .line 138
            aload 1 /* source */
            invokestatic org.apache.tomcat.util.descriptor.InputSourceUtil.close:(Lorg/xml/sax/InputSource;)V
        48: .line 139
            aload 6 /* digester */
            invokevirtual org.apache.tomcat.util.digester.Digester.reset:()V
        49: .line 140
            aload 7 /* ruleSet */
            invokevirtual org.apache.tomcat.util.descriptor.web.WebRuleSet.recycle:()V
        50: .line 141
            aload 9
            athrow
        51: .line 138
      StackMap locals:
      StackMap stack:
            aload 1 /* source */
            invokestatic org.apache.tomcat.util.descriptor.InputSourceUtil.close:(Lorg/xml/sax/InputSource;)V
        52: .line 139
            aload 6 /* digester */
            invokevirtual org.apache.tomcat.util.digester.Digester.reset:()V
        53: .line 140
            aload 7 /* ruleSet */
            invokevirtual org.apache.tomcat.util.descriptor.web.WebRuleSet.recycle:()V
        54: .line 143
      StackMap locals:
      StackMap stack:
            iload 4 /* ok */
            ireturn
        end local 7 // org.apache.tomcat.util.descriptor.web.WebRuleSet ruleSet
        end local 6 // org.apache.tomcat.util.digester.Digester digester
        end local 5 // org.apache.tomcat.util.descriptor.XmlErrorHandler handler
        end local 4 // boolean ok
        end local 3 // boolean fragment
        end local 2 // org.apache.tomcat.util.descriptor.web.WebXml dest
        end local 1 // org.xml.sax.InputSource source
        end local 0 // org.apache.tomcat.util.descriptor.web.WebXmlParser this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   55     0      this  Lorg/apache/tomcat/util/descriptor/web/WebXmlParser;
            0   55     1    source  Lorg/xml/sax/InputSource;
            0   55     2      dest  Lorg/apache/tomcat/util/descriptor/web/WebXml;
            0   55     3  fragment  Z
            1   55     4        ok  Z
            4   55     5   handler  Lorg/apache/tomcat/util/descriptor/XmlErrorHandler;
            6    8     6  digester  Lorg/apache/tomcat/util/digester/Digester;
            9   55     6  digester  Lorg/apache/tomcat/util/digester/Digester;
            7    8     7   ruleSet  Lorg/apache/tomcat/util/descriptor/web/WebRuleSet;
           10   55     7   ruleSet  Lorg/apache/tomcat/util/descriptor/web/WebRuleSet;
           23   33     8         e  Lorg/xml/sax/SAXParseException;
           37   43     8         e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
          16    21      22  Class org.xml.sax.SAXParseException
          16    21      36  Class java.lang.Exception
          16    33      46  any
          36    43      46  any
    MethodParameters:
          Name  Flags
      source    
      dest      
      fragment  

  public void setClassLoader(java.lang.ClassLoader);
    descriptor: (Ljava/lang/ClassLoader;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.tomcat.util.descriptor.web.WebXmlParser this
        start local 1 // java.lang.ClassLoader classLoader
         0: .line 152
            aload 0 /* this */
            getfield org.apache.tomcat.util.descriptor.web.WebXmlParser.webDigester:Lorg/apache/tomcat/util/digester/Digester;
            aload 1 /* classLoader */
            invokevirtual org.apache.tomcat.util.digester.Digester.setClassLoader:(Ljava/lang/ClassLoader;)V
         1: .line 153
            aload 0 /* this */
            getfield org.apache.tomcat.util.descriptor.web.WebXmlParser.webFragmentDigester:Lorg/apache/tomcat/util/digester/Digester;
            aload 1 /* classLoader */
            invokevirtual org.apache.tomcat.util.digester.Digester.setClassLoader:(Ljava/lang/ClassLoader;)V
         2: .line 154
            return
        end local 1 // java.lang.ClassLoader classLoader
        end local 0 // org.apache.tomcat.util.descriptor.web.WebXmlParser this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    3     0         this  Lorg/apache/tomcat/util/descriptor/web/WebXmlParser;
            0    3     1  classLoader  Ljava/lang/ClassLoader;
    MethodParameters:
             Name  Flags
      classLoader  
}
SourceFile: "WebXmlParser.java"