public class io.vertx.ext.stomp.impl.FrameParser implements io.vertx.core.Handler<io.vertx.core.buffer.Buffer>
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: io.vertx.ext.stomp.impl.FrameParser
  super_class: java.lang.Object
{
  public static final java.lang.String NULL;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "\u0000"

  public static final java.lang.String EOL;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "\n"

  public static final java.lang.String CARRIAGE_RETURN;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "\r"

  public static final char LINE_FEED;
    descriptor: C
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 10

  public static final java.lang.String COLON;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: ":"

  public static final char ESCAPE;
    descriptor: C
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 92

  public static final java.lang.String COMMA;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: ","

  private final io.vertx.ext.stomp.StompServerOptions options;
    descriptor: Lio/vertx/ext/stomp/StompServerOptions;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private io.vertx.ext.stomp.Frame$Command command;
    descriptor: Lio/vertx/ext/stomp/Frame$Command;
    flags: (0x0002) ACC_PRIVATE

  private java.util.HashMap<java.lang.String, java.lang.String> headers;
    descriptor: Ljava/util/HashMap;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/HashMap<Ljava/lang/String;Ljava/lang/String;>;

  private io.vertx.core.Handler<io.vertx.ext.stomp.Frame> handler;
    descriptor: Lio/vertx/core/Handler;
    flags: (0x0002) ACC_PRIVATE
    Signature: Lio/vertx/core/Handler<Lio/vertx/ext/stomp/Frame;>;

  private int bodyLength;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  private io.vertx.core.Handler<io.vertx.ext.stomp.impl.FrameException> errorHandler;
    descriptor: Lio/vertx/core/Handler;
    flags: (0x0002) ACC_PRIVATE
    Signature: Lio/vertx/core/Handler<Lio/vertx/ext/stomp/impl/FrameException;>;

  private final io.vertx.core.parsetools.RecordParser frameParser;
    descriptor: Lio/vertx/core/parsetools/RecordParser;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private io.vertx.ext.stomp.impl.FrameParser$State current;
    descriptor: Lio/vertx/ext/stomp/impl/FrameParser$State;
    flags: (0x0002) ACC_PRIVATE

  private static volatile int[] $SWITCH_TABLE$io$vertx$ext$stomp$impl$FrameParser$State;
    descriptor: [I
    flags: (0x104a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE, ACC_SYNTHETIC

  public void <init>(io.vertx.ext.stomp.StompServerOptions);
    descriptor: (Lio/vertx/ext/stomp/StompServerOptions;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // io.vertx.ext.stomp.impl.FrameParser this
        start local 1 // io.vertx.ext.stomp.StompServerOptions options
         0: .line 66
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 50
            aload 0 /* this */
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            putfield io.vertx.ext.stomp.impl.FrameParser.headers:Ljava/util/HashMap;
         2: .line 52
            aload 0 /* this */
            iconst_0
            putfield io.vertx.ext.stomp.impl.FrameParser.bodyLength:I
         3: .line 62
            aload 0 /* this */
            ldc "\n"
            aload 0 /* this */
            invokedynamic handle(Lio/vertx/ext/stomp/impl/FrameParser;)Lio/vertx/core/Handler;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)V
                  io/vertx/ext/stomp/impl/FrameParser.handleLine(Lio/vertx/core/buffer/Buffer;)V (7)
                  (Lio/vertx/core/buffer/Buffer;)V
            invokestatic io.vertx.core.parsetools.RecordParser.newDelimited:(Ljava/lang/String;Lio/vertx/core/Handler;)Lio/vertx/core/parsetools/RecordParser;
            putfield io.vertx.ext.stomp.impl.FrameParser.frameParser:Lio/vertx/core/parsetools/RecordParser;
         4: .line 64
            aload 0 /* this */
            getstatic io.vertx.ext.stomp.impl.FrameParser$State.COMMAND:Lio/vertx/ext/stomp/impl/FrameParser$State;
            putfield io.vertx.ext.stomp.impl.FrameParser.current:Lio/vertx/ext/stomp/impl/FrameParser$State;
         5: .line 67
            aload 0 /* this */
            aload 1 /* options */
            putfield io.vertx.ext.stomp.impl.FrameParser.options:Lio/vertx/ext/stomp/StompServerOptions;
         6: .line 68
            return
        end local 1 // io.vertx.ext.stomp.StompServerOptions options
        end local 0 // io.vertx.ext.stomp.impl.FrameParser this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    7     0     this  Lio/vertx/ext/stomp/impl/FrameParser;
            0    7     1  options  Lio/vertx/ext/stomp/StompServerOptions;
    MethodParameters:
         Name  Flags
      options  

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // io.vertx.ext.stomp.impl.FrameParser this
         0: .line 71
            aload 0 /* this */
            new io.vertx.ext.stomp.StompServerOptions
            dup
            invokespecial io.vertx.ext.stomp.StompServerOptions.<init>:()V
            invokespecial io.vertx.ext.stomp.impl.FrameParser.<init>:(Lio/vertx/ext/stomp/StompServerOptions;)V
         1: .line 72
            return
        end local 0 // io.vertx.ext.stomp.impl.FrameParser this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lio/vertx/ext/stomp/impl/FrameParser;

  public synchronized io.vertx.ext.stomp.impl.FrameParser handler(io.vertx.core.Handler<io.vertx.ext.stomp.Frame>);
    descriptor: (Lio/vertx/core/Handler;)Lio/vertx/ext/stomp/impl/FrameParser;
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // io.vertx.ext.stomp.impl.FrameParser this
        start local 1 // io.vertx.core.Handler handler
         0: .line 75
            aload 1 /* handler */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 76
            aload 0 /* this */
            aload 1 /* handler */
            putfield io.vertx.ext.stomp.impl.FrameParser.handler:Lio/vertx/core/Handler;
         2: .line 77
            aload 0 /* this */
            areturn
        end local 1 // io.vertx.core.Handler handler
        end local 0 // io.vertx.ext.stomp.impl.FrameParser this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    3     0     this  Lio/vertx/ext/stomp/impl/FrameParser;
            0    3     1  handler  Lio/vertx/core/Handler<Lio/vertx/ext/stomp/Frame;>;
    Signature: (Lio/vertx/core/Handler<Lio/vertx/ext/stomp/Frame;>;)Lio/vertx/ext/stomp/impl/FrameParser;
    MethodParameters:
         Name  Flags
      handler  

  public synchronized io.vertx.ext.stomp.impl.FrameParser errorHandler(io.vertx.core.Handler<io.vertx.ext.stomp.impl.FrameException>);
    descriptor: (Lio/vertx/core/Handler;)Lio/vertx/ext/stomp/impl/FrameParser;
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // io.vertx.ext.stomp.impl.FrameParser this
        start local 1 // io.vertx.core.Handler handler
         0: .line 81
            aload 0 /* this */
            aload 1 /* handler */
            putfield io.vertx.ext.stomp.impl.FrameParser.errorHandler:Lio/vertx/core/Handler;
         1: .line 82
            aload 0 /* this */
            areturn
        end local 1 // io.vertx.core.Handler handler
        end local 0 // io.vertx.ext.stomp.impl.FrameParser this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Lio/vertx/ext/stomp/impl/FrameParser;
            0    2     1  handler  Lio/vertx/core/Handler<Lio/vertx/ext/stomp/impl/FrameException;>;
    Signature: (Lio/vertx/core/Handler<Lio/vertx/ext/stomp/impl/FrameException;>;)Lio/vertx/ext/stomp/impl/FrameParser;
    MethodParameters:
         Name  Flags
      handler  

  private void handleLine(io.vertx.core.buffer.Buffer);
    descriptor: (Lio/vertx/core/buffer/Buffer;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=7, args_size=2
        start local 0 // io.vertx.ext.stomp.impl.FrameParser this
        start local 1 // io.vertx.core.buffer.Buffer buffer
         0: .line 86
            invokestatic io.vertx.ext.stomp.impl.FrameParser.$SWITCH_TABLE$io$vertx$ext$stomp$impl$FrameParser$State:()[I
            aload 0 /* this */
            getfield io.vertx.ext.stomp.impl.FrameParser.current:Lio/vertx/ext/stomp/impl/FrameParser$State;
            invokevirtual io.vertx.ext.stomp.impl.FrameParser$State.ordinal:()I
            iaload
            tableswitch { // 1 - 3
                    1: 1
                    2: 13
                    3: 37
              default: 48
          }
         1: .line 88
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* buffer */
            invokevirtual io.vertx.ext.stomp.impl.FrameParser.isEmpty:(Lio/vertx/core/buffer/Buffer;)Z
            ifeq 5
         2: .line 90
            aload 0 /* this */
            invokevirtual io.vertx.ext.stomp.impl.FrameParser.reset:()V
         3: .line 91
            aload 0 /* this */
            getfield io.vertx.ext.stomp.impl.FrameParser.handler:Lio/vertx/core/Handler;
            invokestatic io.vertx.ext.stomp.Frames.ping:()Lio/vertx/ext/stomp/Frame;
            invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
         4: .line 92
            goto 48
         5: .line 98
      StackMap locals:
      StackMap stack:
            aload 1 /* buffer */
            ldc "utf-8"
            invokeinterface io.vertx.core.buffer.Buffer.toString:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.String.trim:()Ljava/lang/String;
            astore 2 /* commandLine */
        start local 2 // java.lang.String commandLine
         6: .line 100
            aload 0 /* this */
            aload 2 /* commandLine */
            invokestatic io.vertx.ext.stomp.Frame$Command.valueOf:(Ljava/lang/String;)Lio/vertx/ext/stomp/Frame$Command;
            putfield io.vertx.ext.stomp.impl.FrameParser.command:Lio/vertx/ext/stomp/Frame$Command;
         7: .line 101
            goto 11
      StackMap locals: io.vertx.ext.stomp.impl.FrameParser io.vertx.core.buffer.Buffer java.lang.String
      StackMap stack: java.lang.IllegalArgumentException
         8: pop
         9: .line 103
            aload 0 /* this */
            getstatic io.vertx.ext.stomp.Frame$Command.UNKNOWN:Lio/vertx/ext/stomp/Frame$Command;
            putfield io.vertx.ext.stomp.impl.FrameParser.command:Lio/vertx/ext/stomp/Frame$Command;
        10: .line 104
            aload 0 /* this */
            getfield io.vertx.ext.stomp.impl.FrameParser.headers:Ljava/util/HashMap;
            ldc "frame-command"
            aload 2 /* commandLine */
            invokevirtual java.util.HashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        11: .line 107
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getstatic io.vertx.ext.stomp.impl.FrameParser$State.HEADERS:Lio/vertx/ext/stomp/impl/FrameParser$State;
            putfield io.vertx.ext.stomp.impl.FrameParser.current:Lio/vertx/ext/stomp/impl/FrameParser$State;
        12: .line 108
            goto 48
        end local 2 // java.lang.String commandLine
        13: .line 110
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* buffer */
            invokevirtual io.vertx.ext.stomp.impl.FrameParser.isEmpty:(Lio/vertx/core/buffer/Buffer;)Z
            ifeq 22
        14: .line 112
            aload 0 /* this */
            getstatic io.vertx.ext.stomp.impl.FrameParser$State.BODY:Lio/vertx/ext/stomp/impl/FrameParser$State;
            putfield io.vertx.ext.stomp.impl.FrameParser.current:Lio/vertx/ext/stomp/impl/FrameParser$State;
        15: .line 113
            aload 0 /* this */
            getfield io.vertx.ext.stomp.impl.FrameParser.headers:Ljava/util/HashMap;
            ldc "content-length"
            invokevirtual java.util.HashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String
            astore 3 /* length */
        start local 3 // java.lang.String length
        16: .line 114
            aload 3 /* length */
            ifnull 20
        17: .line 115
            aload 3 /* length */
            invokestatic java.lang.Integer.parseInt:(Ljava/lang/String;)I
            istore 4 /* contentLength */
        start local 4 // int contentLength
        18: .line 116
            aload 0 /* this */
            getfield io.vertx.ext.stomp.impl.FrameParser.frameParser:Lio/vertx/core/parsetools/RecordParser;
            iload 4 /* contentLength */
            invokeinterface io.vertx.core.parsetools.RecordParser.fixedSizeMode:(I)V
        end local 4 // int contentLength
        19: .line 117
            goto 48
        20: .line 118
      StackMap locals: io.vertx.ext.stomp.impl.FrameParser io.vertx.core.buffer.Buffer top java.lang.String
      StackMap stack:
            aload 0 /* this */
            getfield io.vertx.ext.stomp.impl.FrameParser.frameParser:Lio/vertx/core/parsetools/RecordParser;
            ldc "\u0000"
            invokeinterface io.vertx.core.parsetools.RecordParser.delimitedMode:(Ljava/lang/String;)V
        21: .line 120
            goto 48
        end local 3 // java.lang.String length
        22: .line 127
      StackMap locals: io.vertx.ext.stomp.impl.FrameParser io.vertx.core.buffer.Buffer
      StackMap stack:
            aload 1 /* buffer */
            ldc "utf-8"
            invokeinterface io.vertx.core.buffer.Buffer.toString:(Ljava/lang/String;)Ljava/lang/String;
            astore 3 /* line */
        start local 3 // java.lang.String line
        23: .line 128
            aload 3 /* line */
            ldc ":"
            invokevirtual java.lang.String.indexOf:(Ljava/lang/String;)I
            istore 4 /* index */
        start local 4 // int index
        24: .line 129
            iload 4 /* index */
            iconst_m1
            if_icmpne 27
        25: .line 130
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            ldc "Invalid header line : '"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* buffer */
            invokeinterface io.vertx.core.buffer.Buffer.toString:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "'"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual io.vertx.ext.stomp.impl.FrameParser.reportOrThrow:(Ljava/lang/String;)V
        26: .line 131
            return
        27: .line 134
      StackMap locals: io.vertx.ext.stomp.impl.FrameParser io.vertx.core.buffer.Buffer top java.lang.String int
      StackMap stack:
            aload 3 /* line */
            iconst_0
            iload 4 /* index */
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            astore 5 /* header */
        start local 5 // java.lang.String header
        28: .line 135
            aload 3 /* line */
            iload 4 /* index */
            iconst_1
            iadd
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            astore 6 /* value */
        start local 6 // java.lang.String value
        29: .line 137
            aload 0 /* this */
            invokevirtual io.vertx.ext.stomp.impl.FrameParser.hasExceededNumberOfHeaders:()Z
            ifeq 32
        30: .line 138
            aload 0 /* this */
            ldc "Number of headers exceeded"
            invokevirtual io.vertx.ext.stomp.impl.FrameParser.reportOrThrow:(Ljava/lang/String;)V
        31: .line 139
            return
        32: .line 142
      StackMap locals: java.lang.String java.lang.String
      StackMap stack:
            aload 0 /* this */
            aload 5 /* header */
            aload 6 /* value */
            invokevirtual io.vertx.ext.stomp.impl.FrameParser.hasExceededHeaderLength:(Ljava/lang/String;Ljava/lang/String;)Z
            ifeq 35
        33: .line 143
            aload 0 /* this */
            ldc "Header length exceeded"
            invokevirtual io.vertx.ext.stomp.impl.FrameParser.reportOrThrow:(Ljava/lang/String;)V
        34: .line 144
            return
        35: .line 148
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.vertx.ext.stomp.impl.FrameParser.headers:Ljava/util/HashMap;
            aload 5 /* header */
            aload 0 /* this */
            aload 0 /* this */
            aload 6 /* value */
            invokevirtual io.vertx.ext.stomp.impl.FrameParser.strip:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual io.vertx.ext.stomp.impl.FrameParser.decode:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.util.HashMap.putIfAbsent:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        36: .line 149
            goto 48
        end local 6 // java.lang.String value
        end local 5 // java.lang.String header
        end local 4 // int index
        end local 3 // java.lang.String line
        37: .line 152
      StackMap locals: io.vertx.ext.stomp.impl.FrameParser io.vertx.core.buffer.Buffer
      StackMap stack:
            aload 0 /* this */
            getfield io.vertx.ext.stomp.impl.FrameParser.bodyLength:I
            ifne 42
        38: .line 154
            aload 0 /* this */
            aload 1 /* buffer */
            invokeinterface io.vertx.core.buffer.Buffer.length:()I
            putfield io.vertx.ext.stomp.impl.FrameParser.bodyLength:I
        39: .line 155
            aload 0 /* this */
            invokevirtual io.vertx.ext.stomp.impl.FrameParser.hasExceededBodySize:()Z
            ifeq 42
        40: .line 156
            aload 0 /* this */
            ldc "Body size exceeded"
            invokevirtual io.vertx.ext.stomp.impl.FrameParser.reportOrThrow:(Ljava/lang/String;)V
        41: .line 157
            return
        42: .line 162
      StackMap locals:
      StackMap stack:
            new io.vertx.ext.stomp.Frame
            dup
            aload 0 /* this */
            getfield io.vertx.ext.stomp.impl.FrameParser.command:Lio/vertx/ext/stomp/Frame$Command;
            aload 0 /* this */
            getfield io.vertx.ext.stomp.impl.FrameParser.headers:Ljava/util/HashMap;
            aload 1 /* buffer */
            invokespecial io.vertx.ext.stomp.Frame.<init>:(Lio/vertx/ext/stomp/Frame$Command;Ljava/util/Map;Lio/vertx/core/buffer/Buffer;)V
            astore 3 /* frame */
        start local 3 // io.vertx.ext.stomp.Frame frame
        43: .line 163
            aload 0 /* this */
            invokevirtual io.vertx.ext.stomp.impl.FrameParser.reset:()V
        44: .line 164
            aload 0 /* this */
            getfield io.vertx.ext.stomp.impl.FrameParser.handler:Lio/vertx/core/Handler;
            aload 3 /* frame */
            invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
        end local 3 // io.vertx.ext.stomp.Frame frame
        45: .line 165
            goto 48
      StackMap locals:
      StackMap stack: io.vertx.ext.stomp.impl.FrameException
        46: pop
        47: .line 166
            aload 0 /* this */
            ldc "Malformed frame received"
            invokevirtual io.vertx.ext.stomp.impl.FrameParser.reportOrThrow:(Ljava/lang/String;)V
        48: .line 169
      StackMap locals:
      StackMap stack:
            return
        end local 1 // io.vertx.core.buffer.Buffer buffer
        end local 0 // io.vertx.ext.stomp.impl.FrameParser this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   49     0           this  Lio/vertx/ext/stomp/impl/FrameParser;
            0   49     1         buffer  Lio/vertx/core/buffer/Buffer;
            6   13     2    commandLine  Ljava/lang/String;
           16   22     3         length  Ljava/lang/String;
           18   19     4  contentLength  I
           23   37     3           line  Ljava/lang/String;
           24   37     4          index  I
           28   37     5         header  Ljava/lang/String;
           29   37     6          value  Ljava/lang/String;
           43   45     3          frame  Lio/vertx/ext/stomp/Frame;
      Exception table:
        from    to  target  type
           6     7       8  Class java.lang.IllegalArgumentException
          42    45      46  Class io.vertx.ext.stomp.impl.FrameException
    MethodParameters:
        Name  Flags
      buffer  

  private void reset();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // io.vertx.ext.stomp.impl.FrameParser this
         0: .line 172
            aload 0 /* this */
            aconst_null
            putfield io.vertx.ext.stomp.impl.FrameParser.command:Lio/vertx/ext/stomp/Frame$Command;
         1: .line 173
            aload 0 /* this */
            iconst_0
            putfield io.vertx.ext.stomp.impl.FrameParser.bodyLength:I
         2: .line 174
            aload 0 /* this */
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            putfield io.vertx.ext.stomp.impl.FrameParser.headers:Ljava/util/HashMap;
         3: .line 175
            aload 0 /* this */
            getstatic io.vertx.ext.stomp.impl.FrameParser$State.COMMAND:Lio/vertx/ext/stomp/impl/FrameParser$State;
            putfield io.vertx.ext.stomp.impl.FrameParser.current:Lio/vertx/ext/stomp/impl/FrameParser$State;
         4: .line 176
            aload 0 /* this */
            getfield io.vertx.ext.stomp.impl.FrameParser.frameParser:Lio/vertx/core/parsetools/RecordParser;
            ldc "\n"
            invokeinterface io.vertx.core.parsetools.RecordParser.delimitedMode:(Ljava/lang/String;)V
         5: .line 177
            return
        end local 0 // io.vertx.ext.stomp.impl.FrameParser this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Lio/vertx/ext/stomp/impl/FrameParser;

  private boolean hasExceededHeaderLength(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // io.vertx.ext.stomp.impl.FrameParser this
        start local 1 // java.lang.String header
        start local 2 // java.lang.String value
         0: .line 180
            aload 2 /* value */
            invokevirtual java.lang.String.length:()I
            aload 0 /* this */
            getfield io.vertx.ext.stomp.impl.FrameParser.options:Lio/vertx/ext/stomp/StompServerOptions;
            invokevirtual io.vertx.ext.stomp.StompServerOptions.getMaxHeaderLength:()I
            if_icmpgt 3
         1: .line 181
            aload 1 /* header */
            invokevirtual java.lang.String.length:()I
            aload 0 /* this */
            getfield io.vertx.ext.stomp.impl.FrameParser.options:Lio/vertx/ext/stomp/StompServerOptions;
            invokevirtual io.vertx.ext.stomp.StompServerOptions.getMaxHeaderLength:()I
         2: .line 180
            if_icmpgt 3
            iconst_0
            ireturn
      StackMap locals:
      StackMap stack:
         3: iconst_1
            ireturn
        end local 2 // java.lang.String value
        end local 1 // java.lang.String header
        end local 0 // io.vertx.ext.stomp.impl.FrameParser this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    4     0    this  Lio/vertx/ext/stomp/impl/FrameParser;
            0    4     1  header  Ljava/lang/String;
            0    4     2   value  Ljava/lang/String;
    MethodParameters:
        Name  Flags
      header  
      value   

  private boolean hasExceededNumberOfHeaders();
    descriptor: ()Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // io.vertx.ext.stomp.impl.FrameParser this
         0: .line 185
            aload 0 /* this */
            getfield io.vertx.ext.stomp.impl.FrameParser.headers:Ljava/util/HashMap;
            invokevirtual java.util.HashMap.size:()I
            iconst_1
            iadd
            aload 0 /* this */
            getfield io.vertx.ext.stomp.impl.FrameParser.options:Lio/vertx/ext/stomp/StompServerOptions;
            invokevirtual io.vertx.ext.stomp.StompServerOptions.getMaxHeaders:()I
            if_icmple 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 0 // io.vertx.ext.stomp.impl.FrameParser this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lio/vertx/ext/stomp/impl/FrameParser;

  private java.lang.String decode(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // io.vertx.ext.stomp.impl.FrameParser this
        start local 1 // java.lang.String value
         0: .line 192
            aload 1 /* value */
            aload 0 /* this */
            getfield io.vertx.ext.stomp.impl.FrameParser.command:Lio/vertx/ext/stomp/Frame$Command;
            getstatic io.vertx.ext.stomp.Frame$Command.CONNECT:Lio/vertx/ext/stomp/Frame$Command;
            if_acmpeq 1
            aload 0 /* this */
            getfield io.vertx.ext.stomp.impl.FrameParser.command:Lio/vertx/ext/stomp/Frame$Command;
            getstatic io.vertx.ext.stomp.Frame$Command.CONNECTED:Lio/vertx/ext/stomp/Frame$Command;
            if_acmpeq 1
            iconst_0
            goto 2
      StackMap locals:
      StackMap stack: java.lang.String
         1: iconst_1
      StackMap locals: io.vertx.ext.stomp.impl.FrameParser java.lang.String
      StackMap stack: java.lang.String int
         2: invokestatic io.vertx.ext.stomp.impl.HeaderCodec.decode:(Ljava/lang/String;Z)Ljava/lang/String;
            areturn
        end local 1 // java.lang.String value
        end local 0 // io.vertx.ext.stomp.impl.FrameParser this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    3     0   this  Lio/vertx/ext/stomp/impl/FrameParser;
            0    3     1  value  Ljava/lang/String;
    MethodParameters:
       Name  Flags
      value  

  private java.lang.String strip(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // io.vertx.ext.stomp.impl.FrameParser this
        start local 1 // java.lang.String s
         0: .line 196
            aload 1 /* s */
            ldc "\r"
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifeq 2
         1: .line 197
            aload 1 /* s */
            iconst_0
            aload 1 /* s */
            invokevirtual java.lang.String.length:()I
            iconst_1
            isub
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            areturn
         2: .line 199
      StackMap locals:
      StackMap stack:
            aload 1 /* s */
            areturn
        end local 1 // java.lang.String s
        end local 0 // io.vertx.ext.stomp.impl.FrameParser this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lio/vertx/ext/stomp/impl/FrameParser;
            0    3     1     s  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      s     

  private boolean isEmpty(io.vertx.core.buffer.Buffer);
    descriptor: (Lio/vertx/core/buffer/Buffer;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // io.vertx.ext.stomp.impl.FrameParser this
        start local 1 // io.vertx.core.buffer.Buffer buffer
         0: .line 203
            aload 1 /* buffer */
            invokeinterface io.vertx.core.buffer.Buffer.toString:()Ljava/lang/String;
            invokevirtual java.lang.String.length:()I
            ifeq 3
            aload 1 /* buffer */
            invokeinterface io.vertx.core.buffer.Buffer.toString:()Ljava/lang/String;
            ldc "\r"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 3
         1: .line 204
            aload 1 /* buffer */
            invokeinterface io.vertx.core.buffer.Buffer.length:()I
            iconst_1
            if_icmpne 2
            aload 1 /* buffer */
            iconst_0
            invokeinterface io.vertx.core.buffer.Buffer.getByte:(I)B
            ifeq 3
         2: .line 203
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
      StackMap locals:
      StackMap stack:
         3: iconst_1
            ireturn
        end local 1 // io.vertx.core.buffer.Buffer buffer
        end local 0 // io.vertx.ext.stomp.impl.FrameParser this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    4     0    this  Lio/vertx/ext/stomp/impl/FrameParser;
            0    4     1  buffer  Lio/vertx/core/buffer/Buffer;
    MethodParameters:
        Name  Flags
      buffer  

  public synchronized void handle(io.vertx.core.buffer.Buffer);
    descriptor: (Lio/vertx/core/buffer/Buffer;)V
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // io.vertx.ext.stomp.impl.FrameParser this
        start local 1 // io.vertx.core.buffer.Buffer event
         0: .line 214
            aload 0 /* this */
            getfield io.vertx.ext.stomp.impl.FrameParser.current:Lio/vertx/ext/stomp/impl/FrameParser$State;
            getstatic io.vertx.ext.stomp.impl.FrameParser$State.BODY:Lio/vertx/ext/stomp/impl/FrameParser$State;
            if_acmpne 5
         1: .line 215
            aload 0 /* this */
            dup
            getfield io.vertx.ext.stomp.impl.FrameParser.bodyLength:I
            aload 1 /* event */
            invokeinterface io.vertx.core.buffer.Buffer.length:()I
            iadd
            putfield io.vertx.ext.stomp.impl.FrameParser.bodyLength:I
         2: .line 216
            aload 0 /* this */
            invokevirtual io.vertx.ext.stomp.impl.FrameParser.hasExceededBodySize:()Z
            ifeq 5
         3: .line 217
            aload 0 /* this */
            ldc "Body size exceeded"
            invokevirtual io.vertx.ext.stomp.impl.FrameParser.reportOrThrow:(Ljava/lang/String;)V
         4: .line 218
            return
         5: .line 221
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.vertx.ext.stomp.impl.FrameParser.frameParser:Lio/vertx/core/parsetools/RecordParser;
            aload 1 /* event */
            invokeinterface io.vertx.core.parsetools.RecordParser.handle:(Lio/vertx/core/buffer/Buffer;)V
         6: .line 222
            return
        end local 1 // io.vertx.core.buffer.Buffer event
        end local 0 // io.vertx.ext.stomp.impl.FrameParser this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    7     0   this  Lio/vertx/ext/stomp/impl/FrameParser;
            0    7     1  event  Lio/vertx/core/buffer/Buffer;
    MethodParameters:
       Name  Flags
      event  

  private boolean hasExceededBodySize();
    descriptor: ()Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // io.vertx.ext.stomp.impl.FrameParser this
         0: .line 225
            aload 0 /* this */
            getfield io.vertx.ext.stomp.impl.FrameParser.bodyLength:I
            aload 0 /* this */
            getfield io.vertx.ext.stomp.impl.FrameParser.options:Lio/vertx/ext/stomp/StompServerOptions;
            invokevirtual io.vertx.ext.stomp.StompServerOptions.getMaxBodyLength:()I
            if_icmplt 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 0 // io.vertx.ext.stomp.impl.FrameParser this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lio/vertx/ext/stomp/impl/FrameParser;

  private void reportOrThrow(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // io.vertx.ext.stomp.impl.FrameParser this
        start local 1 // java.lang.String error
         0: .line 235
            new io.vertx.ext.stomp.impl.FrameException
            dup
            aload 1 /* error */
            invokespecial io.vertx.ext.stomp.impl.FrameException.<init>:(Ljava/lang/String;)V
            astore 2 /* exception */
        start local 2 // io.vertx.ext.stomp.impl.FrameException exception
         1: .line 236
            aload 0 /* this */
            invokevirtual io.vertx.ext.stomp.impl.FrameParser.reset:()V
         2: .line 237
            aload 0 /* this */
            getfield io.vertx.ext.stomp.impl.FrameParser.errorHandler:Lio/vertx/core/Handler;
            ifnull 5
         3: .line 238
            aload 0 /* this */
            getfield io.vertx.ext.stomp.impl.FrameParser.errorHandler:Lio/vertx/core/Handler;
            aload 2 /* exception */
            invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
         4: .line 239
            goto 6
         5: .line 240
      StackMap locals: io.vertx.ext.stomp.impl.FrameException
      StackMap stack:
            aload 2 /* exception */
            athrow
         6: .line 242
      StackMap locals:
      StackMap stack:
            return
        end local 2 // io.vertx.ext.stomp.impl.FrameException exception
        end local 1 // java.lang.String error
        end local 0 // io.vertx.ext.stomp.impl.FrameParser this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    7     0       this  Lio/vertx/ext/stomp/impl/FrameParser;
            0    7     1      error  Ljava/lang/String;
            1    7     2  exception  Lio/vertx/ext/stomp/impl/FrameException;
    MethodParameters:
       Name  Flags
      error  

  public void handle(java.lang.Object);
    descriptor: (Ljava/lang/Object;)V
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
         0: .line 1
            aload 0
            aload 1
            checkcast io.vertx.core.buffer.Buffer
            invokevirtual io.vertx.ext.stomp.impl.FrameParser.handle:(Lio/vertx/core/buffer/Buffer;)V
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  static int[] $SWITCH_TABLE$io$vertx$ext$stomp$impl$FrameParser$State();
    descriptor: ()[I
    flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=1, args_size=0
         0: .line 35
            getstatic io.vertx.ext.stomp.impl.FrameParser.$SWITCH_TABLE$io$vertx$ext$stomp$impl$FrameParser$State:[I
            dup
            ifnull 1
            areturn
      StackMap locals:
      StackMap stack: int[]
         1: pop
            invokestatic io.vertx.ext.stomp.impl.FrameParser$State.values:()[Lio/vertx/ext/stomp/impl/FrameParser$State;
            arraylength
            newarray 10
            astore 0
         2: aload 0
            getstatic io.vertx.ext.stomp.impl.FrameParser$State.BODY:Lio/vertx/ext/stomp/impl/FrameParser$State;
            invokevirtual io.vertx.ext.stomp.impl.FrameParser$State.ordinal:()I
            iconst_3
            iastore
         3: goto 5
      StackMap locals: int[]
      StackMap stack: java.lang.NoSuchFieldError
         4: pop
      StackMap locals:
      StackMap stack:
         5: aload 0
            getstatic io.vertx.ext.stomp.impl.FrameParser$State.COMMAND:Lio/vertx/ext/stomp/impl/FrameParser$State;
            invokevirtual io.vertx.ext.stomp.impl.FrameParser$State.ordinal:()I
            iconst_1
            iastore
         6: goto 8
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
         7: pop
      StackMap locals:
      StackMap stack:
         8: aload 0
            getstatic io.vertx.ext.stomp.impl.FrameParser$State.HEADERS:Lio/vertx/ext/stomp/impl/FrameParser$State;
            invokevirtual io.vertx.ext.stomp.impl.FrameParser$State.ordinal:()I
            iconst_2
            iastore
         9: goto 11
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        10: pop
      StackMap locals:
      StackMap stack:
        11: aload 0
            dup
            putstatic io.vertx.ext.stomp.impl.FrameParser.$SWITCH_TABLE$io$vertx$ext$stomp$impl$FrameParser$State:[I
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
      Exception table:
        from    to  target  type
           2     3       4  Class java.lang.NoSuchFieldError
           5     6       7  Class java.lang.NoSuchFieldError
           8     9      10  Class java.lang.NoSuchFieldError
}
Signature: Ljava/lang/Object;Lio/vertx/core/Handler<Lio/vertx/core/buffer/Buffer;>;
SourceFile: "FrameParser.java"
NestMembers:
  io.vertx.ext.stomp.impl.FrameParser$State
InnerClasses:
  public final Command = io.vertx.ext.stomp.Frame$Command of io.vertx.ext.stomp.Frame
  final State = io.vertx.ext.stomp.impl.FrameParser$State of io.vertx.ext.stomp.impl.FrameParser
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles