public class io.vertx.ext.web.handler.sockjs.impl.SockJSHandlerImpl implements io.vertx.ext.web.handler.sockjs.SockJSHandler, io.vertx.core.Handler<io.vertx.ext.web.RoutingContext>
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: io.vertx.ext.web.handler.sockjs.impl.SockJSHandlerImpl
  super_class: java.lang.Object
{
  private static final io.vertx.core.logging.Logger log;
    descriptor: Lio/vertx/core/logging/Logger;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private io.vertx.core.Vertx vertx;
    descriptor: Lio/vertx/core/Vertx;
    flags: (0x0002) ACC_PRIVATE

  private io.vertx.ext.web.Router router;
    descriptor: Lio/vertx/ext/web/Router;
    flags: (0x0002) ACC_PRIVATE

  private io.vertx.core.shareddata.LocalMap<java.lang.String, io.vertx.ext.web.handler.sockjs.impl.SockJSSession> sessions;
    descriptor: Lio/vertx/core/shareddata/LocalMap;
    flags: (0x0002) ACC_PRIVATE
    Signature: Lio/vertx/core/shareddata/LocalMap<Ljava/lang/String;Lio/vertx/ext/web/handler/sockjs/impl/SockJSSession;>;

  private io.vertx.ext.web.handler.sockjs.SockJSHandlerOptions options;
    descriptor: Lio/vertx/ext/web/handler/sockjs/SockJSHandlerOptions;
    flags: (0x0002) ACC_PRIVATE

  private static final java.lang.String IFRAME_TEMPLATE;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "<!DOCTYPE html>\n<html>\n<head>\n  <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" />\n  <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n  <script src=\"{{ sockjs_url }}\"></script>\n  <script>\n    document.domain = document.domain;\n    SockJS.bootstrap_iframe();\n  </script>\n</head>\n<body>\n  <h2>Don't panic!</h2>\n  <p>This is a SockJS hidden iframe. It's used for cross domain magic.</p>\n</body>\n</html>"

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 70
            ldc Lio/vertx/ext/web/handler/sockjs/impl/SockJSHandlerImpl;
            invokestatic io.vertx.core.logging.LoggerFactory.getLogger:(Ljava/lang/Class;)Lio/vertx/core/logging/Logger;
            putstatic io.vertx.ext.web.handler.sockjs.impl.SockJSHandlerImpl.log:Lio/vertx/core/logging/Logger;
         1: .line 282
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(io.vertx.core.Vertx, io.vertx.ext.web.handler.sockjs.SockJSHandlerOptions);
    descriptor: (Lio/vertx/core/Vertx;Lio/vertx/ext/web/handler/sockjs/SockJSHandlerOptions;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // io.vertx.ext.web.handler.sockjs.impl.SockJSHandlerImpl this
        start local 1 // io.vertx.core.Vertx vertx
        start local 2 // io.vertx.ext.web.handler.sockjs.SockJSHandlerOptions options
         0: .line 77
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 78
            aload 0 /* this */
            aload 1 /* vertx */
            putfield io.vertx.ext.web.handler.sockjs.impl.SockJSHandlerImpl.vertx:Lio/vertx/core/Vertx;
         2: .line 80
            aload 0 /* this */
            aload 1 /* vertx */
            invokeinterface io.vertx.core.Vertx.sharedData:()Lio/vertx/core/shareddata/SharedData;
            ldc "_vertx.sockjssessions"
            invokeinterface io.vertx.core.shareddata.SharedData.getLocalMap:(Ljava/lang/String;)Lio/vertx/core/shareddata/LocalMap;
            putfield io.vertx.ext.web.handler.sockjs.impl.SockJSHandlerImpl.sessions:Lio/vertx/core/shareddata/LocalMap;
         3: .line 81
            aload 0 /* this */
            aload 1 /* vertx */
            invokestatic io.vertx.ext.web.Router.router:(Lio/vertx/core/Vertx;)Lio/vertx/ext/web/Router;
            putfield io.vertx.ext.web.handler.sockjs.impl.SockJSHandlerImpl.router:Lio/vertx/ext/web/Router;
         4: .line 82
            aload 0 /* this */
            aload 2 /* options */
            putfield io.vertx.ext.web.handler.sockjs.impl.SockJSHandlerImpl.options:Lio/vertx/ext/web/handler/sockjs/SockJSHandlerOptions;
         5: .line 83
            return
        end local 2 // io.vertx.ext.web.handler.sockjs.SockJSHandlerOptions options
        end local 1 // io.vertx.core.Vertx vertx
        end local 0 // io.vertx.ext.web.handler.sockjs.impl.SockJSHandlerImpl this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    6     0     this  Lio/vertx/ext/web/handler/sockjs/impl/SockJSHandlerImpl;
            0    6     1    vertx  Lio/vertx/core/Vertx;
            0    6     2  options  Lio/vertx/ext/web/handler/sockjs/SockJSHandlerOptions;
    MethodParameters:
         Name  Flags
      vertx    
      options  

  public void handle(io.vertx.ext.web.RoutingContext);
    descriptor: (Lio/vertx/ext/web/RoutingContext;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // io.vertx.ext.web.handler.sockjs.impl.SockJSHandlerImpl this
        start local 1 // io.vertx.ext.web.RoutingContext context
         0: .line 87
            getstatic io.vertx.ext.web.handler.sockjs.impl.SockJSHandlerImpl.log:Lio/vertx/core/logging/Logger;
            invokevirtual io.vertx.core.logging.Logger.isTraceEnabled:()Z
            ifeq 2
         1: .line 88
            getstatic io.vertx.ext.web.handler.sockjs.impl.SockJSHandlerImpl.log:Lio/vertx/core/logging/Logger;
            new java.lang.StringBuilder
            dup
            ldc "Got request in sockjs server: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* context */
            invokeinterface io.vertx.ext.web.RoutingContext.request:()Lio/vertx/core/http/HttpServerRequest;
            invokeinterface io.vertx.core.http.HttpServerRequest.uri:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual io.vertx.core.logging.Logger.trace:(Ljava/lang/Object;)V
         2: .line 90
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.vertx.ext.web.handler.sockjs.impl.SockJSHandlerImpl.router:Lio/vertx/ext/web/Router;
            aload 1 /* context */
            invokeinterface io.vertx.ext.web.Router.handleContext:(Lio/vertx/ext/web/RoutingContext;)V
         3: .line 91
            return
        end local 1 // io.vertx.ext.web.RoutingContext context
        end local 0 // io.vertx.ext.web.handler.sockjs.impl.SockJSHandlerImpl this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    4     0     this  Lio/vertx/ext/web/handler/sockjs/impl/SockJSHandlerImpl;
            0    4     1  context  Lio/vertx/ext/web/RoutingContext;
    MethodParameters:
         Name  Flags
      context  

  public io.vertx.ext.web.handler.sockjs.SockJSHandler bridge(io.vertx.ext.web.handler.sockjs.BridgeOptions);
    descriptor: (Lio/vertx/ext/web/handler/sockjs/BridgeOptions;)Lio/vertx/ext/web/handler/sockjs/SockJSHandler;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // io.vertx.ext.web.handler.sockjs.impl.SockJSHandlerImpl this
        start local 1 // io.vertx.ext.web.handler.sockjs.BridgeOptions bridgeOptions
         0: .line 95
            aload 0 /* this */
            aload 1 /* bridgeOptions */
            aconst_null
            invokevirtual io.vertx.ext.web.handler.sockjs.impl.SockJSHandlerImpl.bridge:(Lio/vertx/ext/web/handler/sockjs/BridgeOptions;Lio/vertx/core/Handler;)Lio/vertx/ext/web/handler/sockjs/SockJSHandler;
            areturn
        end local 1 // io.vertx.ext.web.handler.sockjs.BridgeOptions bridgeOptions
        end local 0 // io.vertx.ext.web.handler.sockjs.impl.SockJSHandlerImpl this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    1     0           this  Lio/vertx/ext/web/handler/sockjs/impl/SockJSHandlerImpl;
            0    1     1  bridgeOptions  Lio/vertx/ext/web/handler/sockjs/BridgeOptions;
    MethodParameters:
               Name  Flags
      bridgeOptions  

  public io.vertx.ext.web.handler.sockjs.SockJSHandler bridge(io.vertx.ext.web.handler.sockjs.BridgeOptions, io.vertx.core.Handler<io.vertx.ext.web.handler.sockjs.BridgeEvent>);
    descriptor: (Lio/vertx/ext/web/handler/sockjs/BridgeOptions;Lio/vertx/core/Handler;)Lio/vertx/ext/web/handler/sockjs/SockJSHandler;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=3, args_size=3
        start local 0 // io.vertx.ext.web.handler.sockjs.impl.SockJSHandlerImpl this
        start local 1 // io.vertx.ext.web.handler.sockjs.BridgeOptions bridgeOptions
        start local 2 // io.vertx.core.Handler bridgeEventHandler
         0: .line 100
            aload 0 /* this */
            new io.vertx.ext.web.handler.sockjs.impl.EventBusBridgeImpl
            dup
            aload 0 /* this */
            getfield io.vertx.ext.web.handler.sockjs.impl.SockJSHandlerImpl.vertx:Lio/vertx/core/Vertx;
            aload 1 /* bridgeOptions */
            aload 2 /* bridgeEventHandler */
            invokespecial io.vertx.ext.web.handler.sockjs.impl.EventBusBridgeImpl.<init>:(Lio/vertx/core/Vertx;Lio/vertx/ext/web/handler/sockjs/BridgeOptions;Lio/vertx/core/Handler;)V
            invokevirtual io.vertx.ext.web.handler.sockjs.impl.SockJSHandlerImpl.socketHandler:(Lio/vertx/core/Handler;)Lio/vertx/ext/web/handler/sockjs/SockJSHandler;
            pop
         1: .line 101
            aload 0 /* this */
            areturn
        end local 2 // io.vertx.core.Handler bridgeEventHandler
        end local 1 // io.vertx.ext.web.handler.sockjs.BridgeOptions bridgeOptions
        end local 0 // io.vertx.ext.web.handler.sockjs.impl.SockJSHandlerImpl this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    2     0                this  Lio/vertx/ext/web/handler/sockjs/impl/SockJSHandlerImpl;
            0    2     1       bridgeOptions  Lio/vertx/ext/web/handler/sockjs/BridgeOptions;
            0    2     2  bridgeEventHandler  Lio/vertx/core/Handler<Lio/vertx/ext/web/handler/sockjs/BridgeEvent;>;
    Signature: (Lio/vertx/ext/web/handler/sockjs/BridgeOptions;Lio/vertx/core/Handler<Lio/vertx/ext/web/handler/sockjs/BridgeEvent;>;)Lio/vertx/ext/web/handler/sockjs/SockJSHandler;
    MethodParameters:
                    Name  Flags
      bridgeOptions       
      bridgeEventHandler  

  public io.vertx.ext.web.handler.sockjs.SockJSHandler socketHandler(io.vertx.core.Handler<io.vertx.ext.web.handler.sockjs.SockJSSocket>);
    descriptor: (Lio/vertx/core/Handler;)Lio/vertx/ext/web/handler/sockjs/SockJSHandler;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=6, args_size=2
        start local 0 // io.vertx.ext.web.handler.sockjs.impl.SockJSHandlerImpl this
        start local 1 // io.vertx.core.Handler sockHandler
         0: .line 107
            aload 0 /* this */
            getfield io.vertx.ext.web.handler.sockjs.impl.SockJSHandlerImpl.router:Lio/vertx/ext/web/Router;
            ldc "/"
            invokeinterface io.vertx.ext.web.Router.route:(Ljava/lang/String;)Lio/vertx/ext/web/Route;
            iconst_0
            invokeinterface io.vertx.ext.web.Route.useNormalisedPath:(Z)Lio/vertx/ext/web/Route;
            invokedynamic handle()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/web/handler/sockjs/impl/SockJSHandlerImpl.lambda$0(Lio/vertx/ext/web/RoutingContext;)V (6)
                  (Lio/vertx/ext/web/RoutingContext;)V
            invokeinterface io.vertx.ext.web.Route.handler:(Lio/vertx/core/Handler;)Lio/vertx/ext/web/Route;
            pop
         1: .line 113
            ldc "<!DOCTYPE html>\n<html>\n<head>\n  <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" />\n  <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n  <script src=\"{{ sockjs_url }}\"></script>\n  <script>\n    document.domain = document.domain;\n    SockJS.bootstrap_iframe();\n  </script>\n</head>\n<body>\n  <h2>Don't panic!</h2>\n  <p>This is a SockJS hidden iframe. It's used for cross domain magic.</p>\n</body>\n</html>"
            ldc "{{ sockjs_url }}"
            aload 0 /* this */
            getfield io.vertx.ext.web.handler.sockjs.impl.SockJSHandlerImpl.options:Lio/vertx/ext/web/handler/sockjs/SockJSHandlerOptions;
            invokevirtual io.vertx.ext.web.handler.sockjs.SockJSHandlerOptions.getLibraryURL:()Ljava/lang/String;
            invokevirtual java.lang.String.replace:(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;
            astore 2 /* iframeHTML */
        start local 2 // java.lang.String iframeHTML
         2: .line 114
            aload 0 /* this */
            aload 2 /* iframeHTML */
            invokevirtual io.vertx.ext.web.handler.sockjs.impl.SockJSHandlerImpl.createIFrameHandler:(Ljava/lang/String;)Lio/vertx/core/Handler;
            astore 3 /* iframeHandler */
        start local 3 // io.vertx.core.Handler iframeHandler
         3: .line 117
            aload 0 /* this */
            getfield io.vertx.ext.web.handler.sockjs.impl.SockJSHandlerImpl.router:Lio/vertx/ext/web/Router;
            ldc "/iframe.html"
            invokeinterface io.vertx.ext.web.Router.get:(Ljava/lang/String;)Lio/vertx/ext/web/Route;
            aload 3 /* iframeHandler */
            invokeinterface io.vertx.ext.web.Route.handler:(Lio/vertx/core/Handler;)Lio/vertx/ext/web/Route;
            pop
         4: .line 120
            aload 0 /* this */
            getfield io.vertx.ext.web.handler.sockjs.impl.SockJSHandlerImpl.router:Lio/vertx/ext/web/Router;
            ldc "\\/iframe-[^\\/]*\\.html"
            invokeinterface io.vertx.ext.web.Router.getWithRegex:(Ljava/lang/String;)Lio/vertx/ext/web/Route;
            aload 3 /* iframeHandler */
            invokeinterface io.vertx.ext.web.Route.handler:(Lio/vertx/core/Handler;)Lio/vertx/ext/web/Route;
            pop
         5: .line 123
            aload 0 /* this */
            getfield io.vertx.ext.web.handler.sockjs.impl.SockJSHandlerImpl.router:Lio/vertx/ext/web/Router;
            ldc "/chunking_test"
            invokeinterface io.vertx.ext.web.Router.post:(Ljava/lang/String;)Lio/vertx/ext/web/Route;
            aload 0 /* this */
            invokevirtual io.vertx.ext.web.handler.sockjs.impl.SockJSHandlerImpl.createChunkingTestHandler:()Lio/vertx/core/Handler;
            invokeinterface io.vertx.ext.web.Route.handler:(Lio/vertx/core/Handler;)Lio/vertx/ext/web/Route;
            pop
         6: .line 124
            aload 0 /* this */
            getfield io.vertx.ext.web.handler.sockjs.impl.SockJSHandlerImpl.router:Lio/vertx/ext/web/Router;
            ldc "/chunking_test"
            invokeinterface io.vertx.ext.web.Router.options:(Ljava/lang/String;)Lio/vertx/ext/web/Route;
            aload 0 /* this */
            getfield io.vertx.ext.web.handler.sockjs.impl.SockJSHandlerImpl.options:Lio/vertx/ext/web/handler/sockjs/SockJSHandlerOptions;
            ldc "OPTIONS, POST"
            invokestatic io.vertx.ext.web.handler.sockjs.impl.BaseTransport.createCORSOptionsHandler:(Lio/vertx/ext/web/handler/sockjs/SockJSHandlerOptions;Ljava/lang/String;)Lio/vertx/core/Handler;
            invokeinterface io.vertx.ext.web.Route.handler:(Lio/vertx/core/Handler;)Lio/vertx/ext/web/Route;
            pop
         7: .line 127
            aload 0 /* this */
            getfield io.vertx.ext.web.handler.sockjs.impl.SockJSHandlerImpl.router:Lio/vertx/ext/web/Router;
            ldc "/info"
            invokeinterface io.vertx.ext.web.Router.get:(Ljava/lang/String;)Lio/vertx/ext/web/Route;
            aload 0 /* this */
            getfield io.vertx.ext.web.handler.sockjs.impl.SockJSHandlerImpl.options:Lio/vertx/ext/web/handler/sockjs/SockJSHandlerOptions;
            invokestatic io.vertx.ext.web.handler.sockjs.impl.BaseTransport.createInfoHandler:(Lio/vertx/ext/web/handler/sockjs/SockJSHandlerOptions;)Lio/vertx/core/Handler;
            invokeinterface io.vertx.ext.web.Route.handler:(Lio/vertx/core/Handler;)Lio/vertx/ext/web/Route;
            pop
         8: .line 128
            aload 0 /* this */
            getfield io.vertx.ext.web.handler.sockjs.impl.SockJSHandlerImpl.router:Lio/vertx/ext/web/Router;
            ldc "/info"
            invokeinterface io.vertx.ext.web.Router.options:(Ljava/lang/String;)Lio/vertx/ext/web/Route;
            aload 0 /* this */
            getfield io.vertx.ext.web.handler.sockjs.impl.SockJSHandlerImpl.options:Lio/vertx/ext/web/handler/sockjs/SockJSHandlerOptions;
            ldc "OPTIONS, GET"
            invokestatic io.vertx.ext.web.handler.sockjs.impl.BaseTransport.createCORSOptionsHandler:(Lio/vertx/ext/web/handler/sockjs/SockJSHandlerOptions;Ljava/lang/String;)Lio/vertx/core/Handler;
            invokeinterface io.vertx.ext.web.Route.handler:(Lio/vertx/core/Handler;)Lio/vertx/ext/web/Route;
            pop
         9: .line 132
            new java.util.HashSet
            dup
            invokespecial java.util.HashSet.<init>:()V
            astore 4 /* enabledTransports */
        start local 4 // java.util.Set enabledTransports
        10: .line 133
            aload 4 /* enabledTransports */
            getstatic io.vertx.ext.web.handler.sockjs.Transport.EVENT_SOURCE:Lio/vertx/ext/web/handler/sockjs/Transport;
            invokevirtual io.vertx.ext.web.handler.sockjs.Transport.toString:()Ljava/lang/String;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        11: .line 134
            aload 4 /* enabledTransports */
            getstatic io.vertx.ext.web.handler.sockjs.Transport.HTML_FILE:Lio/vertx/ext/web/handler/sockjs/Transport;
            invokevirtual io.vertx.ext.web.handler.sockjs.Transport.toString:()Ljava/lang/String;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        12: .line 135
            aload 4 /* enabledTransports */
            getstatic io.vertx.ext.web.handler.sockjs.Transport.JSON_P:Lio/vertx/ext/web/handler/sockjs/Transport;
            invokevirtual io.vertx.ext.web.handler.sockjs.Transport.toString:()Ljava/lang/String;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        13: .line 136
            aload 4 /* enabledTransports */
            getstatic io.vertx.ext.web.handler.sockjs.Transport.WEBSOCKET:Lio/vertx/ext/web/handler/sockjs/Transport;
            invokevirtual io.vertx.ext.web.handler.sockjs.Transport.toString:()Ljava/lang/String;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        14: .line 137
            aload 4 /* enabledTransports */
            getstatic io.vertx.ext.web.handler.sockjs.Transport.XHR:Lio/vertx/ext/web/handler/sockjs/Transport;
            invokevirtual io.vertx.ext.web.handler.sockjs.Transport.toString:()Ljava/lang/String;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        15: .line 138
            aload 0 /* this */
            getfield io.vertx.ext.web.handler.sockjs.impl.SockJSHandlerImpl.options:Lio/vertx/ext/web/handler/sockjs/SockJSHandlerOptions;
            invokevirtual io.vertx.ext.web.handler.sockjs.SockJSHandlerOptions.getDisabledTransports:()Ljava/util/Set;
            astore 5 /* disabledTransports */
        start local 5 // java.util.Set disabledTransports
        16: .line 139
            aload 5 /* disabledTransports */
            ifnonnull 18
        17: .line 140
            new java.util.HashSet
            dup
            invokespecial java.util.HashSet.<init>:()V
            astore 5 /* disabledTransports */
        18: .line 142
      StackMap locals: io.vertx.ext.web.handler.sockjs.impl.SockJSHandlerImpl io.vertx.core.Handler java.lang.String io.vertx.core.Handler java.util.Set java.util.Set
      StackMap stack:
            aload 4 /* enabledTransports */
            aload 5 /* disabledTransports */
            invokeinterface java.util.Set.removeAll:(Ljava/util/Collection;)Z
            pop
        19: .line 144
            aload 4 /* enabledTransports */
            getstatic io.vertx.ext.web.handler.sockjs.Transport.XHR:Lio/vertx/ext/web/handler/sockjs/Transport;
            invokevirtual io.vertx.ext.web.handler.sockjs.Transport.toString:()Ljava/lang/String;
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifeq 21
        20: .line 145
            new io.vertx.ext.web.handler.sockjs.impl.XhrTransport
            aload 0 /* this */
            getfield io.vertx.ext.web.handler.sockjs.impl.SockJSHandlerImpl.vertx:Lio/vertx/core/Vertx;
            aload 0 /* this */
            getfield io.vertx.ext.web.handler.sockjs.impl.SockJSHandlerImpl.router:Lio/vertx/ext/web/Router;
            aload 0 /* this */
            getfield io.vertx.ext.web.handler.sockjs.impl.SockJSHandlerImpl.sessions:Lio/vertx/core/shareddata/LocalMap;
            aload 0 /* this */
            getfield io.vertx.ext.web.handler.sockjs.impl.SockJSHandlerImpl.options:Lio/vertx/ext/web/handler/sockjs/SockJSHandlerOptions;
            aload 1 /* sockHandler */
            invokespecial io.vertx.ext.web.handler.sockjs.impl.XhrTransport.<init>:(Lio/vertx/core/Vertx;Lio/vertx/ext/web/Router;Lio/vertx/core/shareddata/LocalMap;Lio/vertx/ext/web/handler/sockjs/SockJSHandlerOptions;Lio/vertx/core/Handler;)V
        21: .line 147
      StackMap locals:
      StackMap stack:
            aload 4 /* enabledTransports */
            getstatic io.vertx.ext.web.handler.sockjs.Transport.EVENT_SOURCE:Lio/vertx/ext/web/handler/sockjs/Transport;
            invokevirtual io.vertx.ext.web.handler.sockjs.Transport.toString:()Ljava/lang/String;
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifeq 23
        22: .line 148
            new io.vertx.ext.web.handler.sockjs.impl.EventSourceTransport
            aload 0 /* this */
            getfield io.vertx.ext.web.handler.sockjs.impl.SockJSHandlerImpl.vertx:Lio/vertx/core/Vertx;
            aload 0 /* this */
            getfield io.vertx.ext.web.handler.sockjs.impl.SockJSHandlerImpl.router:Lio/vertx/ext/web/Router;
            aload 0 /* this */
            getfield io.vertx.ext.web.handler.sockjs.impl.SockJSHandlerImpl.sessions:Lio/vertx/core/shareddata/LocalMap;
            aload 0 /* this */
            getfield io.vertx.ext.web.handler.sockjs.impl.SockJSHandlerImpl.options:Lio/vertx/ext/web/handler/sockjs/SockJSHandlerOptions;
            aload 1 /* sockHandler */
            invokespecial io.vertx.ext.web.handler.sockjs.impl.EventSourceTransport.<init>:(Lio/vertx/core/Vertx;Lio/vertx/ext/web/Router;Lio/vertx/core/shareddata/LocalMap;Lio/vertx/ext/web/handler/sockjs/SockJSHandlerOptions;Lio/vertx/core/Handler;)V
        23: .line 150
      StackMap locals:
      StackMap stack:
            aload 4 /* enabledTransports */
            getstatic io.vertx.ext.web.handler.sockjs.Transport.HTML_FILE:Lio/vertx/ext/web/handler/sockjs/Transport;
            invokevirtual io.vertx.ext.web.handler.sockjs.Transport.toString:()Ljava/lang/String;
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifeq 25
        24: .line 151
            new io.vertx.ext.web.handler.sockjs.impl.HtmlFileTransport
            aload 0 /* this */
            getfield io.vertx.ext.web.handler.sockjs.impl.SockJSHandlerImpl.vertx:Lio/vertx/core/Vertx;
            aload 0 /* this */
            getfield io.vertx.ext.web.handler.sockjs.impl.SockJSHandlerImpl.router:Lio/vertx/ext/web/Router;
            aload 0 /* this */
            getfield io.vertx.ext.web.handler.sockjs.impl.SockJSHandlerImpl.sessions:Lio/vertx/core/shareddata/LocalMap;
            aload 0 /* this */
            getfield io.vertx.ext.web.handler.sockjs.impl.SockJSHandlerImpl.options:Lio/vertx/ext/web/handler/sockjs/SockJSHandlerOptions;
            aload 1 /* sockHandler */
            invokespecial io.vertx.ext.web.handler.sockjs.impl.HtmlFileTransport.<init>:(Lio/vertx/core/Vertx;Lio/vertx/ext/web/Router;Lio/vertx/core/shareddata/LocalMap;Lio/vertx/ext/web/handler/sockjs/SockJSHandlerOptions;Lio/vertx/core/Handler;)V
        25: .line 153
      StackMap locals:
      StackMap stack:
            aload 4 /* enabledTransports */
            getstatic io.vertx.ext.web.handler.sockjs.Transport.JSON_P:Lio/vertx/ext/web/handler/sockjs/Transport;
            invokevirtual io.vertx.ext.web.handler.sockjs.Transport.toString:()Ljava/lang/String;
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifeq 27
        26: .line 154
            new io.vertx.ext.web.handler.sockjs.impl.JsonPTransport
            aload 0 /* this */
            getfield io.vertx.ext.web.handler.sockjs.impl.SockJSHandlerImpl.vertx:Lio/vertx/core/Vertx;
            aload 0 /* this */
            getfield io.vertx.ext.web.handler.sockjs.impl.SockJSHandlerImpl.router:Lio/vertx/ext/web/Router;
            aload 0 /* this */
            getfield io.vertx.ext.web.handler.sockjs.impl.SockJSHandlerImpl.sessions:Lio/vertx/core/shareddata/LocalMap;
            aload 0 /* this */
            getfield io.vertx.ext.web.handler.sockjs.impl.SockJSHandlerImpl.options:Lio/vertx/ext/web/handler/sockjs/SockJSHandlerOptions;
            aload 1 /* sockHandler */
            invokespecial io.vertx.ext.web.handler.sockjs.impl.JsonPTransport.<init>:(Lio/vertx/core/Vertx;Lio/vertx/ext/web/Router;Lio/vertx/core/shareddata/LocalMap;Lio/vertx/ext/web/handler/sockjs/SockJSHandlerOptions;Lio/vertx/core/Handler;)V
        27: .line 156
      StackMap locals:
      StackMap stack:
            aload 4 /* enabledTransports */
            getstatic io.vertx.ext.web.handler.sockjs.Transport.WEBSOCKET:Lio/vertx/ext/web/handler/sockjs/Transport;
            invokevirtual io.vertx.ext.web.handler.sockjs.Transport.toString:()Ljava/lang/String;
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifeq 30
        28: .line 157
            new io.vertx.ext.web.handler.sockjs.impl.WebSocketTransport
            aload 0 /* this */
            getfield io.vertx.ext.web.handler.sockjs.impl.SockJSHandlerImpl.vertx:Lio/vertx/core/Vertx;
            aload 0 /* this */
            getfield io.vertx.ext.web.handler.sockjs.impl.SockJSHandlerImpl.router:Lio/vertx/ext/web/Router;
            aload 0 /* this */
            getfield io.vertx.ext.web.handler.sockjs.impl.SockJSHandlerImpl.sessions:Lio/vertx/core/shareddata/LocalMap;
            aload 0 /* this */
            getfield io.vertx.ext.web.handler.sockjs.impl.SockJSHandlerImpl.options:Lio/vertx/ext/web/handler/sockjs/SockJSHandlerOptions;
            aload 1 /* sockHandler */
            invokespecial io.vertx.ext.web.handler.sockjs.impl.WebSocketTransport.<init>:(Lio/vertx/core/Vertx;Lio/vertx/ext/web/Router;Lio/vertx/core/shareddata/LocalMap;Lio/vertx/ext/web/handler/sockjs/SockJSHandlerOptions;Lio/vertx/core/Handler;)V
        29: .line 158
            new io.vertx.ext.web.handler.sockjs.impl.RawWebSocketTransport
            aload 0 /* this */
            getfield io.vertx.ext.web.handler.sockjs.impl.SockJSHandlerImpl.vertx:Lio/vertx/core/Vertx;
            aload 0 /* this */
            getfield io.vertx.ext.web.handler.sockjs.impl.SockJSHandlerImpl.router:Lio/vertx/ext/web/Router;
            aload 1 /* sockHandler */
            invokespecial io.vertx.ext.web.handler.sockjs.impl.RawWebSocketTransport.<init>:(Lio/vertx/core/Vertx;Lio/vertx/ext/web/Router;Lio/vertx/core/Handler;)V
        30: .line 161
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            areturn
        end local 5 // java.util.Set disabledTransports
        end local 4 // java.util.Set enabledTransports
        end local 3 // io.vertx.core.Handler iframeHandler
        end local 2 // java.lang.String iframeHTML
        end local 1 // io.vertx.core.Handler sockHandler
        end local 0 // io.vertx.ext.web.handler.sockjs.impl.SockJSHandlerImpl this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   31     0                this  Lio/vertx/ext/web/handler/sockjs/impl/SockJSHandlerImpl;
            0   31     1         sockHandler  Lio/vertx/core/Handler<Lio/vertx/ext/web/handler/sockjs/SockJSSocket;>;
            2   31     2          iframeHTML  Ljava/lang/String;
            3   31     3       iframeHandler  Lio/vertx/core/Handler<Lio/vertx/ext/web/RoutingContext;>;
           10   31     4   enabledTransports  Ljava/util/Set<Ljava/lang/String;>;
           16   31     5  disabledTransports  Ljava/util/Set<Ljava/lang/String;>;
    Signature: (Lio/vertx/core/Handler<Lio/vertx/ext/web/handler/sockjs/SockJSSocket;>;)Lio/vertx/ext/web/handler/sockjs/SockJSHandler;
    MethodParameters:
             Name  Flags
      sockHandler  

  private io.vertx.core.Handler<io.vertx.ext.web.RoutingContext> createChunkingTestHandler();
    descriptor: ()Lio/vertx/core/Handler;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // io.vertx.ext.web.handler.sockjs.impl.SockJSHandlerImpl this
         0: .line 165
            new io.vertx.ext.web.handler.sockjs.impl.SockJSHandlerImpl$1
            dup
            aload 0 /* this */
            invokespecial io.vertx.ext.web.handler.sockjs.impl.SockJSHandlerImpl$1.<init>:(Lio/vertx/ext/web/handler/sockjs/impl/SockJSHandlerImpl;)V
            areturn
        end local 0 // io.vertx.ext.web.handler.sockjs.impl.SockJSHandlerImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/vertx/ext/web/handler/sockjs/impl/SockJSHandlerImpl;
    Signature: ()Lio/vertx/core/Handler<Lio/vertx/ext/web/RoutingContext;>;

  private io.vertx.core.Handler<io.vertx.ext.web.RoutingContext> createIFrameHandler(java.lang.String);
    descriptor: (Ljava/lang/String;)Lio/vertx/core/Handler;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // io.vertx.ext.web.handler.sockjs.impl.SockJSHandlerImpl this
        start local 1 // java.lang.String iframeHTML
         0: .line 230
            aload 1 /* iframeHTML */
            invokestatic io.vertx.ext.web.handler.sockjs.impl.SockJSHandlerImpl.getMD5String:(Ljava/lang/String;)Ljava/lang/String;
            astore 2 /* etag */
        start local 2 // java.lang.String etag
         1: .line 231
            aload 2 /* etag */
            aload 1 /* iframeHTML */
            invokedynamic handle(Ljava/lang/String;Ljava/lang/String;)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/web/handler/sockjs/impl/SockJSHandlerImpl.lambda$1(Ljava/lang/String;Ljava/lang/String;Lio/vertx/ext/web/RoutingContext;)V (6)
                  (Lio/vertx/ext/web/RoutingContext;)V
            areturn
        end local 2 // java.lang.String etag
        end local 1 // java.lang.String iframeHTML
        end local 0 // io.vertx.ext.web.handler.sockjs.impl.SockJSHandlerImpl this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    2     0        this  Lio/vertx/ext/web/handler/sockjs/impl/SockJSHandlerImpl;
            0    2     1  iframeHTML  Ljava/lang/String;
            1    2     2        etag  Ljava/lang/String;
    Signature: (Ljava/lang/String;)Lio/vertx/core/Handler<Lio/vertx/ext/web/RoutingContext;>;
    MethodParameters:
            Name  Flags
      iframeHTML  

  private static java.lang.String getMD5String(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=8, args_size=1
        start local 0 // java.lang.String str
         0: .line 252
            ldc "MD5"
            invokestatic java.security.MessageDigest.getInstance:(Ljava/lang/String;)Ljava/security/MessageDigest;
            astore 1 /* md */
        start local 1 // java.security.MessageDigest md
         1: .line 253
            aload 1 /* md */
            aload 0 /* str */
            getstatic java.nio.charset.StandardCharsets.UTF_8:Ljava/nio/charset/Charset;
            invokevirtual java.lang.String.getBytes:(Ljava/nio/charset/Charset;)[B
            invokevirtual java.security.MessageDigest.digest:([B)[B
            astore 2 /* bytes */
        start local 2 // byte[] bytes
         2: .line 254
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            astore 3 /* sb */
        start local 3 // java.lang.StringBuilder sb
         3: .line 255
            aload 2 /* bytes */
            dup
            astore 7
            arraylength
            istore 6
            iconst_0
            istore 5
            goto 7
      StackMap locals: java.lang.String java.security.MessageDigest byte[] java.lang.StringBuilder top int int byte[]
      StackMap stack:
         4: aload 7
            iload 5
            baload
            istore 4 /* b */
        start local 4 // byte b
         5: .line 256
            aload 3 /* sb */
            iload 4 /* b */
            bipush 127
            iadd
            invokestatic java.lang.Integer.toHexString:(I)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        end local 4 // byte b
         6: .line 255
            iinc 5 1
      StackMap locals:
      StackMap stack:
         7: iload 5
            iload 6
            if_icmplt 4
         8: .line 258
            aload 3 /* sb */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         9: areturn
        end local 3 // java.lang.StringBuilder sb
        end local 2 // byte[] bytes
        end local 1 // java.security.MessageDigest md
        10: .line 260
      StackMap locals: java.lang.String
      StackMap stack: java.lang.Exception
            pop
        11: .line 261
            getstatic io.vertx.ext.web.handler.sockjs.impl.SockJSHandlerImpl.log:Lio/vertx/core/logging/Logger;
            ldc "Failed to generate MD5 for iframe, If-None-Match headers will be ignored"
            invokevirtual io.vertx.core.logging.Logger.error:(Ljava/lang/Object;)V
        12: .line 262
            aconst_null
            areturn
        end local 0 // java.lang.String str
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   13     0    str  Ljava/lang/String;
            1   10     1     md  Ljava/security/MessageDigest;
            2   10     2  bytes  [B
            3   10     3     sb  Ljava/lang/StringBuilder;
            5    6     4      b  B
      Exception table:
        from    to  target  type
           0     9      10  Class java.lang.Exception
    MethodParameters:
      Name  Flags
      str   

  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.ext.web.RoutingContext
            invokevirtual io.vertx.ext.web.handler.sockjs.impl.SockJSHandlerImpl.handle:(Lio/vertx/ext/web/RoutingContext;)V
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private static void lambda$0(io.vertx.ext.web.RoutingContext);
    descriptor: (Lio/vertx/ext/web/RoutingContext;)V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // io.vertx.ext.web.RoutingContext rc
         0: .line 108
            getstatic io.vertx.ext.web.handler.sockjs.impl.SockJSHandlerImpl.log:Lio/vertx/core/logging/Logger;
            invokevirtual io.vertx.core.logging.Logger.isTraceEnabled:()Z
            ifeq 1
            getstatic io.vertx.ext.web.handler.sockjs.impl.SockJSHandlerImpl.log:Lio/vertx/core/logging/Logger;
            ldc "Returning welcome response"
            invokevirtual io.vertx.core.logging.Logger.trace:(Ljava/lang/Object;)V
         1: .line 109
      StackMap locals:
      StackMap stack:
            aload 0 /* rc */
            invokeinterface io.vertx.ext.web.RoutingContext.response:()Lio/vertx/core/http/HttpServerResponse;
            ldc "Content-Type"
            ldc "text/plain; charset=UTF-8"
            invokeinterface io.vertx.core.http.HttpServerResponse.putHeader:(Ljava/lang/String;Ljava/lang/String;)Lio/vertx/core/http/HttpServerResponse;
            ldc "Welcome to SockJS!\n"
            invokeinterface io.vertx.core.http.HttpServerResponse.end:(Ljava/lang/String;)V
         2: .line 110
            return
        end local 0 // io.vertx.ext.web.RoutingContext rc
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0    rc  Lio/vertx/ext/web/RoutingContext;

  private static void lambda$1(java.lang.String, java.lang.String, io.vertx.ext.web.RoutingContext);
    descriptor: (Ljava/lang/String;Ljava/lang/String;Lio/vertx/ext/web/RoutingContext;)V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=7, locals=6, args_size=3
        start local 2 // io.vertx.ext.web.RoutingContext rc
         0: .line 233
            getstatic io.vertx.ext.web.handler.sockjs.impl.SockJSHandlerImpl.log:Lio/vertx/core/logging/Logger;
            invokevirtual io.vertx.core.logging.Logger.isTraceEnabled:()Z
            ifeq 1
            getstatic io.vertx.ext.web.handler.sockjs.impl.SockJSHandlerImpl.log:Lio/vertx/core/logging/Logger;
            ldc "In Iframe handler"
            invokevirtual io.vertx.core.logging.Logger.trace:(Ljava/lang/Object;)V
         1: .line 234
      StackMap locals:
      StackMap stack:
            aload 0
            ifnull 5
            aload 0
            aload 2 /* rc */
            invokeinterface io.vertx.ext.web.RoutingContext.request:()Lio/vertx/core/http/HttpServerRequest;
            ldc "if-none-match"
            invokeinterface io.vertx.core.http.HttpServerRequest.getHeader:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 5
         2: .line 235
            aload 2 /* rc */
            invokeinterface io.vertx.ext.web.RoutingContext.response:()Lio/vertx/core/http/HttpServerResponse;
            sipush 304
            invokeinterface io.vertx.core.http.HttpServerResponse.setStatusCode:(I)Lio/vertx/core/http/HttpServerResponse;
            pop
         3: .line 236
            aload 2 /* rc */
            invokeinterface io.vertx.ext.web.RoutingContext.response:()Lio/vertx/core/http/HttpServerResponse;
            invokeinterface io.vertx.core.http.HttpServerResponse.end:()V
         4: .line 237
            goto 13
         5: .line 238
      StackMap locals:
      StackMap stack:
            ldc 31536000000
            lstore 3 /* oneYear */
        start local 3 // long oneYear
         6: .line 239
            new java.text.SimpleDateFormat
            dup
            ldc "EEE, dd MMM yyyy HH:mm:ss zzz"
            invokespecial java.text.SimpleDateFormat.<init>:(Ljava/lang/String;)V
            new java.util.Date
            dup
            invokestatic java.lang.System.currentTimeMillis:()J
            lload 3 /* oneYear */
            ladd
            invokespecial java.util.Date.<init>:(J)V
            invokevirtual java.text.SimpleDateFormat.format:(Ljava/util/Date;)Ljava/lang/String;
            astore 5 /* expires */
        start local 5 // java.lang.String expires
         7: .line 240
            aload 2 /* rc */
            invokeinterface io.vertx.ext.web.RoutingContext.response:()Lio/vertx/core/http/HttpServerResponse;
            ldc "Content-Type"
            ldc "text/html; charset=UTF-8"
            invokeinterface io.vertx.core.http.HttpServerResponse.putHeader:(Ljava/lang/String;Ljava/lang/String;)Lio/vertx/core/http/HttpServerResponse;
         8: .line 241
            ldc "Cache-Control"
            ldc "public,max-age=31536000"
            invokeinterface io.vertx.core.http.HttpServerResponse.putHeader:(Ljava/lang/String;Ljava/lang/String;)Lio/vertx/core/http/HttpServerResponse;
         9: .line 242
            ldc "Expires"
            aload 5 /* expires */
            invokeinterface io.vertx.core.http.HttpServerResponse.putHeader:(Ljava/lang/String;Ljava/lang/String;)Lio/vertx/core/http/HttpServerResponse;
            ldc "ETag"
            aload 0
            invokeinterface io.vertx.core.http.HttpServerResponse.putHeader:(Ljava/lang/String;Ljava/lang/String;)Lio/vertx/core/http/HttpServerResponse;
            aload 1
            invokeinterface io.vertx.core.http.HttpServerResponse.end:(Ljava/lang/String;)V
        end local 5 // java.lang.String expires
        end local 3 // long oneYear
        10: .line 244
            goto 13
      StackMap locals:
      StackMap stack: java.lang.Exception
        11: astore 3 /* e */
        start local 3 // java.lang.Exception e
        12: .line 245
            getstatic io.vertx.ext.web.handler.sockjs.impl.SockJSHandlerImpl.log:Lio/vertx/core/logging/Logger;
            ldc "Failed to server iframe"
            aload 3 /* e */
            invokevirtual io.vertx.core.logging.Logger.error:(Ljava/lang/Object;Ljava/lang/Throwable;)V
        end local 3 // java.lang.Exception e
        13: .line 247
      StackMap locals:
      StackMap stack:
            return
        end local 2 // io.vertx.ext.web.RoutingContext rc
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   14     2       rc  Lio/vertx/ext/web/RoutingContext;
            6   10     3  oneYear  J
            7   10     5  expires  Ljava/lang/String;
           12   13     3        e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           0    10      11  Class java.lang.Exception
}
Signature: Ljava/lang/Object;Lio/vertx/ext/web/handler/sockjs/SockJSHandler;Lio/vertx/core/Handler<Lio/vertx/ext/web/RoutingContext;>;
SourceFile: "SockJSHandlerImpl.java"
NestMembers:
  io.vertx.ext.web.handler.sockjs.impl.SockJSHandlerImpl$1  io.vertx.ext.web.handler.sockjs.impl.SockJSHandlerImpl$1$TimeoutInfo
InnerClasses:
  io.vertx.ext.web.handler.sockjs.impl.SockJSHandlerImpl$1
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles