public class org.glassfish.grizzly.http.multipart.MultipartScanner
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.glassfish.grizzly.http.multipart.MultipartScanner
  super_class: java.lang.Object
{
  public static final java.lang.String BOUNDARY_ATTR;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "boundary"

  private static final java.util.logging.Logger LOGGER;
    descriptor: Ljava/util/logging/Logger;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static final java.lang.String MULTIPART_CONTENT_TYPE;
    descriptor: Ljava/lang/String;
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: "multipart"

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 41
            ldc Lorg/glassfish/grizzly/http/multipart/MultipartScanner;
            invokestatic org.glassfish.grizzly.Grizzly.logger:(Ljava/lang/Class;)Ljava/util/logging/Logger;
            putstatic org.glassfish.grizzly.http.multipart.MultipartScanner.LOGGER:Ljava/util/logging/Logger;
         1: .line 43
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private void <init>();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.glassfish.grizzly.http.multipart.MultipartScanner this
         0: .line 45
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 46
            return
        end local 0 // org.glassfish.grizzly.http.multipart.MultipartScanner this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/glassfish/grizzly/http/multipart/MultipartScanner;

  public static void scan(org.glassfish.grizzly.http.server.Request, org.glassfish.grizzly.http.multipart.MultipartEntryHandler, org.glassfish.grizzly.CompletionHandler<org.glassfish.grizzly.http.server.Request>);
    descriptor: (Lorg/glassfish/grizzly/http/server/Request;Lorg/glassfish/grizzly/http/multipart/MultipartEntryHandler;Lorg/glassfish/grizzly/CompletionHandler;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=11, locals=13, args_size=3
        start local 0 // org.glassfish.grizzly.http.server.Request request
        start local 1 // org.glassfish.grizzly.http.multipart.MultipartEntryHandler partHandler
        start local 2 // org.glassfish.grizzly.CompletionHandler completionHandler
         0: .line 58
            aload 0 /* request */
            invokevirtual org.glassfish.grizzly.http.server.Request.getContentType:()Ljava/lang/String;
            astore 3 /* contentType */
        start local 3 // java.lang.String contentType
         1: .line 59
            aload 3 /* contentType */
            ifnonnull 3
         2: .line 60
            new java.lang.IllegalStateException
            dup
            ldc "ContentType not found"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         3: .line 63
      StackMap locals: java.lang.String
      StackMap stack:
            aload 3 /* contentType */
            ldc ";"
            invokevirtual java.lang.String.split:(Ljava/lang/String;)[Ljava/lang/String;
            astore 4 /* contentTypeParams */
        start local 4 // java.lang.String[] contentTypeParams
         4: .line 64
            aload 4 /* contentTypeParams */
            iconst_0
            aaload
            ldc "/"
            invokevirtual java.lang.String.split:(Ljava/lang/String;)[Ljava/lang/String;
            astore 5 /* contentSubType */
        start local 5 // java.lang.String[] contentSubType
         5: .line 66
            aload 5 /* contentSubType */
            arraylength
            iconst_2
            if_icmpne 6
            ldc "multipart"
            aload 5 /* contentSubType */
            iconst_0
            aaload
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifne 7
         6: .line 67
      StackMap locals: java.lang.String[] java.lang.String[]
      StackMap stack:
            new java.lang.IllegalStateException
            dup
            ldc "Not multipart request"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         7: .line 70
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 6 /* boundary */
        start local 6 // java.lang.String boundary
         8: .line 71
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            astore 7 /* contentTypeProperties */
        start local 7 // java.util.Map contentTypeProperties
         9: .line 73
            iconst_1
            istore 8 /* i */
        start local 8 // int i
        10: goto 22
        11: .line 74
      StackMap locals: java.lang.String java.util.Map int
      StackMap stack:
            aload 4 /* contentTypeParams */
            iload 8 /* i */
            aaload
            invokevirtual java.lang.String.trim:()Ljava/lang/String;
            astore 9 /* param */
        start local 9 // java.lang.String param
        12: .line 75
            aload 9 /* param */
            ldc "="
            iconst_2
            invokevirtual java.lang.String.split:(Ljava/lang/String;I)[Ljava/lang/String;
            astore 10 /* paramValue */
        start local 10 // java.lang.String[] paramValue
        13: .line 76
            aload 10 /* paramValue */
            arraylength
            iconst_2
            if_icmpne 21
        14: .line 77
            aload 10 /* paramValue */
            iconst_0
            aaload
            invokevirtual java.lang.String.trim:()Ljava/lang/String;
            astore 11 /* key */
        start local 11 // java.lang.String key
        15: .line 78
            aload 10 /* paramValue */
            iconst_1
            aaload
            invokevirtual java.lang.String.trim:()Ljava/lang/String;
            astore 12 /* value */
        start local 12 // java.lang.String value
        16: .line 79
            aload 12 /* value */
            iconst_0
            invokevirtual java.lang.String.charAt:(I)C
            bipush 34
            if_icmpne 18
        17: .line 80
            aload 12 /* value */
            iconst_1
            aload 12 /* value */
            invokevirtual java.lang.String.length:()I
            iconst_1
            isub
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            astore 12 /* value */
        18: .line 82
      StackMap locals: org.glassfish.grizzly.http.server.Request org.glassfish.grizzly.http.multipart.MultipartEntryHandler org.glassfish.grizzly.CompletionHandler java.lang.String java.lang.String[] java.lang.String[] java.lang.String java.util.Map int java.lang.String java.lang.String[] java.lang.String java.lang.String
      StackMap stack:
            aload 7 /* contentTypeProperties */
            aload 11 /* key */
            aload 12 /* value */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        19: .line 83
            ldc "boundary"
            aload 11 /* key */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 21
        20: .line 84
            aload 12 /* value */
            astore 6 /* boundary */
        end local 12 // java.lang.String value
        end local 11 // java.lang.String key
        end local 10 // java.lang.String[] paramValue
        end local 9 // java.lang.String param
        21: .line 73
      StackMap locals: org.glassfish.grizzly.http.server.Request org.glassfish.grizzly.http.multipart.MultipartEntryHandler org.glassfish.grizzly.CompletionHandler java.lang.String java.lang.String[] java.lang.String[] java.lang.String java.util.Map int
      StackMap stack:
            iinc 8 /* i */ 1
      StackMap locals:
      StackMap stack:
        22: iload 8 /* i */
            aload 4 /* contentTypeParams */
            arraylength
            if_icmplt 11
        end local 8 // int i
        23: .line 89
            aload 6 /* boundary */
            ifnonnull 25
        24: .line 90
            new java.lang.IllegalStateException
            dup
            ldc "Boundary not found"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
        25: .line 93
      StackMap locals:
      StackMap stack:
            aload 0 /* request */
            invokevirtual org.glassfish.grizzly.http.server.Request.getNIOInputStream:()Lorg/glassfish/grizzly/http/io/NIOInputStream;
            astore 8 /* nioInputStream */
        start local 8 // org.glassfish.grizzly.http.io.NIOInputStream nioInputStream
        26: .line 95
            aload 8 /* nioInputStream */
        27: .line 96
            new org.glassfish.grizzly.http.multipart.MultipartReadHandler
            dup
            aload 0 /* request */
            aload 1 /* partHandler */
            aload 2 /* completionHandler */
            new org.glassfish.grizzly.http.multipart.MultipartContext
            dup
            aload 6 /* boundary */
            aload 3 /* contentType */
            aload 7 /* contentTypeProperties */
            invokespecial org.glassfish.grizzly.http.multipart.MultipartContext.<init>:(Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;)V
            invokespecial org.glassfish.grizzly.http.multipart.MultipartReadHandler.<init>:(Lorg/glassfish/grizzly/http/server/Request;Lorg/glassfish/grizzly/http/multipart/MultipartEntryHandler;Lorg/glassfish/grizzly/CompletionHandler;Lorg/glassfish/grizzly/http/multipart/MultipartContext;)V
        28: .line 95
            invokevirtual org.glassfish.grizzly.http.io.NIOInputStream.notifyAvailable:(Lorg/glassfish/grizzly/ReadHandler;)V
        end local 8 // org.glassfish.grizzly.http.io.NIOInputStream nioInputStream
        end local 7 // java.util.Map contentTypeProperties
        end local 6 // java.lang.String boundary
        end local 5 // java.lang.String[] contentSubType
        end local 4 // java.lang.String[] contentTypeParams
        end local 3 // java.lang.String contentType
        29: .line 97
            goto 35
      StackMap locals: org.glassfish.grizzly.http.server.Request org.glassfish.grizzly.http.multipart.MultipartEntryHandler org.glassfish.grizzly.CompletionHandler
      StackMap stack: java.lang.Exception
        30: astore 3 /* e */
        start local 3 // java.lang.Exception e
        31: .line 98
            aload 2 /* completionHandler */
            ifnull 34
        32: .line 99
            aload 2 /* completionHandler */
            aload 3 /* e */
            invokeinterface org.glassfish.grizzly.CompletionHandler.failed:(Ljava/lang/Throwable;)V
        33: .line 100
            goto 35
        34: .line 101
      StackMap locals: java.lang.Exception
      StackMap stack:
            getstatic org.glassfish.grizzly.http.multipart.MultipartScanner.LOGGER:Ljava/util/logging/Logger;
            getstatic java.util.logging.Level.WARNING:Ljava/util/logging/Level;
            ldc "Error occurred, but no CompletionHandler installed to handle it"
            aload 3 /* e */
            invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V
        end local 3 // java.lang.Exception e
        35: .line 104
      StackMap locals:
      StackMap stack:
            return
        end local 2 // org.glassfish.grizzly.CompletionHandler completionHandler
        end local 1 // org.glassfish.grizzly.http.multipart.MultipartEntryHandler partHandler
        end local 0 // org.glassfish.grizzly.http.server.Request request
      LocalVariableTable:
        Start  End  Slot                   Name  Signature
            0   36     0                request  Lorg/glassfish/grizzly/http/server/Request;
            0   36     1            partHandler  Lorg/glassfish/grizzly/http/multipart/MultipartEntryHandler;
            0   36     2      completionHandler  Lorg/glassfish/grizzly/CompletionHandler<Lorg/glassfish/grizzly/http/server/Request;>;
            1   29     3            contentType  Ljava/lang/String;
            4   29     4      contentTypeParams  [Ljava/lang/String;
            5   29     5         contentSubType  [Ljava/lang/String;
            8   29     6               boundary  Ljava/lang/String;
            9   29     7  contentTypeProperties  Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;
           10   23     8                      i  I
           12   21     9                  param  Ljava/lang/String;
           13   21    10             paramValue  [Ljava/lang/String;
           15   21    11                    key  Ljava/lang/String;
           16   21    12                  value  Ljava/lang/String;
           26   29     8         nioInputStream  Lorg/glassfish/grizzly/http/io/NIOInputStream;
           31   35     3                      e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           0    29      30  Class java.lang.Exception
    Signature: (Lorg/glassfish/grizzly/http/server/Request;Lorg/glassfish/grizzly/http/multipart/MultipartEntryHandler;Lorg/glassfish/grizzly/CompletionHandler<Lorg/glassfish/grizzly/http/server/Request;>;)V
    MethodParameters:
                   Name  Flags
      request            final
      partHandler        final
      completionHandler  final

  public static void scan(org.glassfish.grizzly.http.multipart.MultipartEntry, org.glassfish.grizzly.http.multipart.MultipartEntryHandler, org.glassfish.grizzly.CompletionHandler<org.glassfish.grizzly.http.multipart.MultipartEntry>);
    descriptor: (Lorg/glassfish/grizzly/http/multipart/MultipartEntry;Lorg/glassfish/grizzly/http/multipart/MultipartEntryHandler;Lorg/glassfish/grizzly/CompletionHandler;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=11, locals=13, args_size=3
        start local 0 // org.glassfish.grizzly.http.multipart.MultipartEntry multipartMixedEntry
        start local 1 // org.glassfish.grizzly.http.multipart.MultipartEntryHandler partHandler
        start local 2 // org.glassfish.grizzly.CompletionHandler completionHandler
         0: .line 117
            aload 0 /* multipartMixedEntry */
            invokevirtual org.glassfish.grizzly.http.multipart.MultipartEntry.getContentType:()Ljava/lang/String;
            astore 3 /* contentType */
        start local 3 // java.lang.String contentType
         1: .line 118
            aload 3 /* contentType */
            ldc ";"
            invokevirtual java.lang.String.split:(Ljava/lang/String;)[Ljava/lang/String;
            astore 4 /* contentTypeParams */
        start local 4 // java.lang.String[] contentTypeParams
         2: .line 119
            aload 4 /* contentTypeParams */
            iconst_0
            aaload
            ldc "/"
            invokevirtual java.lang.String.split:(Ljava/lang/String;)[Ljava/lang/String;
            astore 5 /* contentSubType */
        start local 5 // java.lang.String[] contentSubType
         3: .line 121
            aload 5 /* contentSubType */
            arraylength
            iconst_2
            if_icmpne 4
            ldc "multipart"
            aload 5 /* contentSubType */
            iconst_0
            aaload
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifne 5
         4: .line 122
      StackMap locals: java.lang.String java.lang.String[] java.lang.String[]
      StackMap stack:
            new java.lang.IllegalStateException
            dup
            ldc "Not multipart request"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         5: .line 125
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 6 /* boundary */
        start local 6 // java.lang.String boundary
         6: .line 126
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            astore 7 /* contentTypeProperties */
        start local 7 // java.util.Map contentTypeProperties
         7: .line 128
            iconst_1
            istore 8 /* i */
        start local 8 // int i
         8: goto 20
         9: .line 129
      StackMap locals: java.lang.String java.util.Map int
      StackMap stack:
            aload 4 /* contentTypeParams */
            iload 8 /* i */
            aaload
            invokevirtual java.lang.String.trim:()Ljava/lang/String;
            astore 9 /* param */
        start local 9 // java.lang.String param
        10: .line 130
            aload 9 /* param */
            ldc "="
            iconst_2
            invokevirtual java.lang.String.split:(Ljava/lang/String;I)[Ljava/lang/String;
            astore 10 /* paramValue */
        start local 10 // java.lang.String[] paramValue
        11: .line 131
            aload 10 /* paramValue */
            arraylength
            iconst_2
            if_icmpne 19
        12: .line 132
            aload 10 /* paramValue */
            iconst_0
            aaload
            invokevirtual java.lang.String.trim:()Ljava/lang/String;
            astore 11 /* key */
        start local 11 // java.lang.String key
        13: .line 133
            aload 10 /* paramValue */
            iconst_1
            aaload
            invokevirtual java.lang.String.trim:()Ljava/lang/String;
            astore 12 /* value */
        start local 12 // java.lang.String value
        14: .line 134
            aload 12 /* value */
            iconst_0
            invokevirtual java.lang.String.charAt:(I)C
            bipush 34
            if_icmpne 16
        15: .line 135
            aload 12 /* value */
            iconst_1
            aload 12 /* value */
            invokevirtual java.lang.String.length:()I
            iconst_1
            isub
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            astore 12 /* value */
        16: .line 137
      StackMap locals: org.glassfish.grizzly.http.multipart.MultipartEntry org.glassfish.grizzly.http.multipart.MultipartEntryHandler org.glassfish.grizzly.CompletionHandler java.lang.String java.lang.String[] java.lang.String[] java.lang.String java.util.Map int java.lang.String java.lang.String[] java.lang.String java.lang.String
      StackMap stack:
            aload 7 /* contentTypeProperties */
            aload 11 /* key */
            aload 12 /* value */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        17: .line 138
            ldc "boundary"
            aload 11 /* key */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 19
        18: .line 139
            aload 12 /* value */
            astore 6 /* boundary */
        end local 12 // java.lang.String value
        end local 11 // java.lang.String key
        end local 10 // java.lang.String[] paramValue
        end local 9 // java.lang.String param
        19: .line 128
      StackMap locals: org.glassfish.grizzly.http.multipart.MultipartEntry org.glassfish.grizzly.http.multipart.MultipartEntryHandler org.glassfish.grizzly.CompletionHandler java.lang.String java.lang.String[] java.lang.String[] java.lang.String java.util.Map int
      StackMap stack:
            iinc 8 /* i */ 1
      StackMap locals:
      StackMap stack:
        20: iload 8 /* i */
            aload 4 /* contentTypeParams */
            arraylength
            if_icmplt 9
        end local 8 // int i
        21: .line 144
            aload 6 /* boundary */
            ifnonnull 23
        22: .line 145
            new java.lang.IllegalStateException
            dup
            ldc "Boundary not found"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
        23: .line 148
      StackMap locals:
      StackMap stack:
            aload 0 /* multipartMixedEntry */
            invokevirtual org.glassfish.grizzly.http.multipart.MultipartEntry.getNIOInputStream:()Lorg/glassfish/grizzly/http/io/NIOInputStream;
            astore 8 /* nioInputStream */
        start local 8 // org.glassfish.grizzly.http.io.NIOInputStream nioInputStream
        24: .line 150
            aload 8 /* nioInputStream */
            new org.glassfish.grizzly.http.multipart.MultipartReadHandler
            dup
            aload 0 /* multipartMixedEntry */
            aload 1 /* partHandler */
            aload 2 /* completionHandler */
        25: .line 151
            new org.glassfish.grizzly.http.multipart.MultipartContext
            dup
            aload 6 /* boundary */
            aload 3 /* contentType */
            aload 7 /* contentTypeProperties */
            invokespecial org.glassfish.grizzly.http.multipart.MultipartContext.<init>:(Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;)V
            invokespecial org.glassfish.grizzly.http.multipart.MultipartReadHandler.<init>:(Lorg/glassfish/grizzly/http/multipart/MultipartEntry;Lorg/glassfish/grizzly/http/multipart/MultipartEntryHandler;Lorg/glassfish/grizzly/CompletionHandler;Lorg/glassfish/grizzly/http/multipart/MultipartContext;)V
        26: .line 150
            invokevirtual org.glassfish.grizzly.http.io.NIOInputStream.notifyAvailable:(Lorg/glassfish/grizzly/ReadHandler;)V
        end local 8 // org.glassfish.grizzly.http.io.NIOInputStream nioInputStream
        end local 7 // java.util.Map contentTypeProperties
        end local 6 // java.lang.String boundary
        end local 5 // java.lang.String[] contentSubType
        end local 4 // java.lang.String[] contentTypeParams
        end local 3 // java.lang.String contentType
        27: .line 152
            goto 33
      StackMap locals: org.glassfish.grizzly.http.multipart.MultipartEntry org.glassfish.grizzly.http.multipart.MultipartEntryHandler org.glassfish.grizzly.CompletionHandler
      StackMap stack: java.lang.Exception
        28: astore 3 /* e */
        start local 3 // java.lang.Exception e
        29: .line 153
            aload 2 /* completionHandler */
            ifnull 32
        30: .line 154
            aload 2 /* completionHandler */
            aload 3 /* e */
            invokeinterface org.glassfish.grizzly.CompletionHandler.failed:(Ljava/lang/Throwable;)V
        31: .line 155
            goto 33
        32: .line 156
      StackMap locals: java.lang.Exception
      StackMap stack:
            getstatic org.glassfish.grizzly.http.multipart.MultipartScanner.LOGGER:Ljava/util/logging/Logger;
            getstatic java.util.logging.Level.WARNING:Ljava/util/logging/Level;
            ldc "Error occurred, but no CompletionHandler installed to handle it"
            aload 3 /* e */
            invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V
        end local 3 // java.lang.Exception e
        33: .line 159
      StackMap locals:
      StackMap stack:
            return
        end local 2 // org.glassfish.grizzly.CompletionHandler completionHandler
        end local 1 // org.glassfish.grizzly.http.multipart.MultipartEntryHandler partHandler
        end local 0 // org.glassfish.grizzly.http.multipart.MultipartEntry multipartMixedEntry
      LocalVariableTable:
        Start  End  Slot                   Name  Signature
            0   34     0    multipartMixedEntry  Lorg/glassfish/grizzly/http/multipart/MultipartEntry;
            0   34     1            partHandler  Lorg/glassfish/grizzly/http/multipart/MultipartEntryHandler;
            0   34     2      completionHandler  Lorg/glassfish/grizzly/CompletionHandler<Lorg/glassfish/grizzly/http/multipart/MultipartEntry;>;
            1   27     3            contentType  Ljava/lang/String;
            2   27     4      contentTypeParams  [Ljava/lang/String;
            3   27     5         contentSubType  [Ljava/lang/String;
            6   27     6               boundary  Ljava/lang/String;
            7   27     7  contentTypeProperties  Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;
            8   21     8                      i  I
           10   19     9                  param  Ljava/lang/String;
           11   19    10             paramValue  [Ljava/lang/String;
           13   19    11                    key  Ljava/lang/String;
           14   19    12                  value  Ljava/lang/String;
           24   27     8         nioInputStream  Lorg/glassfish/grizzly/http/io/NIOInputStream;
           29   33     3                      e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           0    27      28  Class java.lang.Exception
    Signature: (Lorg/glassfish/grizzly/http/multipart/MultipartEntry;Lorg/glassfish/grizzly/http/multipart/MultipartEntryHandler;Lorg/glassfish/grizzly/CompletionHandler<Lorg/glassfish/grizzly/http/multipart/MultipartEntry;>;)V
    MethodParameters:
                     Name  Flags
      multipartMixedEntry  final
      partHandler          final
      completionHandler    final
}
SourceFile: "MultipartScanner.java"