public class io.vertx.ext.web.handler.impl.MultiTenantHandlerImpl implements io.vertx.ext.web.handler.MultiTenantHandler
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: io.vertx.ext.web.handler.impl.MultiTenantHandlerImpl
  super_class: java.lang.Object
{
  private final java.util.Map<java.lang.String, io.vertx.core.Handler<io.vertx.ext.web.RoutingContext>> handlerMap;
    descriptor: Ljava/util/Map;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Map<Ljava/lang/String;Lio/vertx/core/Handler<Lio/vertx/ext/web/RoutingContext;>;>;

  private final java.util.function.Function<io.vertx.ext.web.RoutingContext, java.lang.String> tenantExtractor;
    descriptor: Ljava/util/function/Function;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/function/Function<Lio/vertx/ext/web/RoutingContext;Ljava/lang/String;>;

  private final java.lang.String contextKey;
    descriptor: Ljava/lang/String;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private io.vertx.core.Handler<io.vertx.ext.web.RoutingContext> defaultHandler;
    descriptor: Lio/vertx/core/Handler;
    flags: (0x0002) ACC_PRIVATE
    Signature: Lio/vertx/core/Handler<Lio/vertx/ext/web/RoutingContext;>;

  public void <init>(java.util.function.Function<io.vertx.ext.web.RoutingContext, java.lang.String>, java.lang.String);
    descriptor: (Ljava/util/function/Function;Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // io.vertx.ext.web.handler.impl.MultiTenantHandlerImpl this
        start local 1 // java.util.function.Function tenantExtractor
        start local 2 // java.lang.String contextKey
         0: .line 39
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 32
            aload 0 /* this */
            new java.util.concurrent.ConcurrentHashMap
            dup
            invokespecial java.util.concurrent.ConcurrentHashMap.<init>:()V
            putfield io.vertx.ext.web.handler.impl.MultiTenantHandlerImpl.handlerMap:Ljava/util/Map;
         2: .line 40
            aload 0 /* this */
            aload 1 /* tenantExtractor */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.util.function.Function
            putfield io.vertx.ext.web.handler.impl.MultiTenantHandlerImpl.tenantExtractor:Ljava/util/function/Function;
         3: .line 41
            aload 0 /* this */
            aload 2 /* contextKey */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String
            putfield io.vertx.ext.web.handler.impl.MultiTenantHandlerImpl.contextKey:Ljava/lang/String;
         4: .line 42
            return
        end local 2 // java.lang.String contextKey
        end local 1 // java.util.function.Function tenantExtractor
        end local 0 // io.vertx.ext.web.handler.impl.MultiTenantHandlerImpl this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    5     0             this  Lio/vertx/ext/web/handler/impl/MultiTenantHandlerImpl;
            0    5     1  tenantExtractor  Ljava/util/function/Function<Lio/vertx/ext/web/RoutingContext;Ljava/lang/String;>;
            0    5     2       contextKey  Ljava/lang/String;
    Signature: (Ljava/util/function/Function<Lio/vertx/ext/web/RoutingContext;Ljava/lang/String;>;Ljava/lang/String;)V
    MethodParameters:
                 Name  Flags
      tenantExtractor  
      contextKey       

  public io.vertx.ext.web.handler.MultiTenantHandler addTenantHandler(java.lang.String, io.vertx.core.Handler<io.vertx.ext.web.RoutingContext>);
    descriptor: (Ljava/lang/String;Lio/vertx/core/Handler;)Lio/vertx/ext/web/handler/MultiTenantHandler;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=3, args_size=3
        start local 0 // io.vertx.ext.web.handler.impl.MultiTenantHandlerImpl this
        start local 1 // java.lang.String tenant
        start local 2 // io.vertx.core.Handler handler
         0: .line 46
            aload 1 /* tenant */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 47
            aload 2 /* handler */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 49
            aload 0 /* this */
            getfield io.vertx.ext.web.handler.impl.MultiTenantHandlerImpl.handlerMap:Ljava/util/Map;
            aload 1 /* tenant */
            aload 2 /* handler */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            ifnull 4
         3: .line 50
            new java.lang.IllegalStateException
            dup
            new java.lang.StringBuilder
            dup
            ldc "tenant '"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* tenant */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "' already present"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 52
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            areturn
        end local 2 // io.vertx.core.Handler handler
        end local 1 // java.lang.String tenant
        end local 0 // io.vertx.ext.web.handler.impl.MultiTenantHandlerImpl this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    5     0     this  Lio/vertx/ext/web/handler/impl/MultiTenantHandlerImpl;
            0    5     1   tenant  Ljava/lang/String;
            0    5     2  handler  Lio/vertx/core/Handler<Lio/vertx/ext/web/RoutingContext;>;
    Signature: (Ljava/lang/String;Lio/vertx/core/Handler<Lio/vertx/ext/web/RoutingContext;>;)Lio/vertx/ext/web/handler/MultiTenantHandler;
    MethodParameters:
         Name  Flags
      tenant   
      handler  

  public io.vertx.ext.web.handler.MultiTenantHandler removeTenant(java.lang.String);
    descriptor: (Ljava/lang/String;)Lio/vertx/ext/web/handler/MultiTenantHandler;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // io.vertx.ext.web.handler.impl.MultiTenantHandlerImpl this
        start local 1 // java.lang.String tenant
         0: .line 57
            aload 1 /* tenant */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 59
            aload 0 /* this */
            getfield io.vertx.ext.web.handler.impl.MultiTenantHandlerImpl.handlerMap:Ljava/util/Map;
            aload 1 /* tenant */
            invokeinterface java.util.Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 60
            aload 0 /* this */
            areturn
        end local 1 // java.lang.String tenant
        end local 0 // io.vertx.ext.web.handler.impl.MultiTenantHandlerImpl this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0    this  Lio/vertx/ext/web/handler/impl/MultiTenantHandlerImpl;
            0    3     1  tenant  Ljava/lang/String;
    MethodParameters:
        Name  Flags
      tenant  

  public io.vertx.ext.web.handler.MultiTenantHandler addDefaultHandler(io.vertx.core.Handler<io.vertx.ext.web.RoutingContext>);
    descriptor: (Lio/vertx/core/Handler;)Lio/vertx/ext/web/handler/MultiTenantHandler;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // io.vertx.ext.web.handler.impl.MultiTenantHandlerImpl this
        start local 1 // io.vertx.core.Handler handler
         0: .line 65
            aload 1 /* handler */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 66
            aload 0 /* this */
            aload 1 /* handler */
            putfield io.vertx.ext.web.handler.impl.MultiTenantHandlerImpl.defaultHandler:Lio/vertx/core/Handler;
         2: .line 67
            aload 0 /* this */
            areturn
        end local 1 // io.vertx.core.Handler handler
        end local 0 // io.vertx.ext.web.handler.impl.MultiTenantHandlerImpl this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    3     0     this  Lio/vertx/ext/web/handler/impl/MultiTenantHandlerImpl;
            0    3     1  handler  Lio/vertx/core/Handler<Lio/vertx/ext/web/RoutingContext;>;
    Signature: (Lio/vertx/core/Handler<Lio/vertx/ext/web/RoutingContext;>;)Lio/vertx/ext/web/handler/MultiTenantHandler;
    MethodParameters:
         Name  Flags
      handler  

  public void handle(io.vertx.ext.web.RoutingContext);
    descriptor: (Lio/vertx/ext/web/RoutingContext;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // io.vertx.ext.web.handler.impl.MultiTenantHandlerImpl this
        start local 1 // io.vertx.ext.web.RoutingContext ctx
         0: .line 72
            aload 0 /* this */
            getfield io.vertx.ext.web.handler.impl.MultiTenantHandlerImpl.tenantExtractor:Ljava/util/function/Function;
            aload 1 /* ctx */
            invokeinterface java.util.function.Function.apply:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String
            astore 2 /* tenant */
        start local 2 // java.lang.String tenant
         1: .line 74
            aload 2 /* tenant */
            ifnonnull 3
         2: .line 75
            aload 0 /* this */
            getfield io.vertx.ext.web.handler.impl.MultiTenantHandlerImpl.defaultHandler:Lio/vertx/core/Handler;
            goto 4
         3: .line 76
      StackMap locals: java.lang.String
      StackMap stack:
            aload 0 /* this */
            getfield io.vertx.ext.web.handler.impl.MultiTenantHandlerImpl.handlerMap:Ljava/util/Map;
            aload 2 /* tenant */
            aload 0 /* this */
            getfield io.vertx.ext.web.handler.impl.MultiTenantHandlerImpl.defaultHandler:Lio/vertx/core/Handler;
            invokeinterface java.util.Map.getOrDefault:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            checkcast io.vertx.core.Handler
         4: .line 73
      StackMap locals:
      StackMap stack: io.vertx.core.Handler
            astore 3 /* handler */
        start local 3 // io.vertx.core.Handler handler
         5: .line 78
            aload 3 /* handler */
            ifnull 11
         6: .line 81
            aload 1 /* ctx */
            aload 0 /* this */
            getfield io.vertx.ext.web.handler.impl.MultiTenantHandlerImpl.contextKey:Ljava/lang/String;
            aload 3 /* handler */
            aload 0 /* this */
            getfield io.vertx.ext.web.handler.impl.MultiTenantHandlerImpl.defaultHandler:Lio/vertx/core/Handler;
            if_acmpne 7
            ldc "default"
            goto 8
      StackMap locals: io.vertx.ext.web.handler.impl.MultiTenantHandlerImpl io.vertx.ext.web.RoutingContext java.lang.String io.vertx.core.Handler
      StackMap stack: io.vertx.ext.web.RoutingContext java.lang.String
         7: aload 2 /* tenant */
      StackMap locals: io.vertx.ext.web.handler.impl.MultiTenantHandlerImpl io.vertx.ext.web.RoutingContext java.lang.String io.vertx.core.Handler
      StackMap stack: io.vertx.ext.web.RoutingContext java.lang.String java.lang.String
         8: invokeinterface io.vertx.ext.web.RoutingContext.put:(Ljava/lang/String;Ljava/lang/Object;)Lio/vertx/ext/web/RoutingContext;
            pop
         9: .line 83
            aload 3 /* handler */
            aload 1 /* ctx */
            invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
        10: .line 84
            goto 12
        11: .line 87
      StackMap locals:
      StackMap stack:
            aload 1 /* ctx */
            invokeinterface io.vertx.ext.web.RoutingContext.next:()V
        12: .line 89
      StackMap locals:
      StackMap stack:
            return
        end local 3 // io.vertx.core.Handler handler
        end local 2 // java.lang.String tenant
        end local 1 // io.vertx.ext.web.RoutingContext ctx
        end local 0 // io.vertx.ext.web.handler.impl.MultiTenantHandlerImpl this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   13     0     this  Lio/vertx/ext/web/handler/impl/MultiTenantHandlerImpl;
            0   13     1      ctx  Lio/vertx/ext/web/RoutingContext;
            1   13     2   tenant  Ljava/lang/String;
            5   13     3  handler  Lio/vertx/core/Handler<Lio/vertx/ext/web/RoutingContext;>;
    MethodParameters:
      Name  Flags
      ctx   

  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.impl.MultiTenantHandlerImpl.handle:(Lio/vertx/ext/web/RoutingContext;)V
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
SourceFile: "MultiTenantHandlerImpl.java"