public class examples.SomeDatabaseServiceVertxProxyHandler extends io.vertx.serviceproxy.ProxyHandler
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: examples.SomeDatabaseServiceVertxProxyHandler
  super_class: io.vertx.serviceproxy.ProxyHandler
{
  public static final long DEFAULT_CONNECTION_TIMEOUT;
    descriptor: J
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 300

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

  private final examples.SomeDatabaseService service;
    descriptor: Lexamples/SomeDatabaseService;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final long timerID;
    descriptor: J
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private long lastAccessed;
    descriptor: J
    flags: (0x0002) ACC_PRIVATE

  private final long timeoutSeconds;
    descriptor: J
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  public void <init>(io.vertx.core.Vertx, examples.SomeDatabaseService);
    descriptor: (Lio/vertx/core/Vertx;Lexamples/SomeDatabaseService;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=3, args_size=3
        start local 0 // examples.SomeDatabaseServiceVertxProxyHandler this
        start local 1 // io.vertx.core.Vertx vertx
        start local 2 // examples.SomeDatabaseService service
         0: .line 65
            aload 0 /* this */
            aload 1 /* vertx */
            aload 2 /* service */
            ldc 300
            invokespecial examples.SomeDatabaseServiceVertxProxyHandler.<init>:(Lio/vertx/core/Vertx;Lexamples/SomeDatabaseService;J)V
         1: .line 66
            return
        end local 2 // examples.SomeDatabaseService service
        end local 1 // io.vertx.core.Vertx vertx
        end local 0 // examples.SomeDatabaseServiceVertxProxyHandler this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Lexamples/SomeDatabaseServiceVertxProxyHandler;
            0    2     1    vertx  Lio/vertx/core/Vertx;
            0    2     2  service  Lexamples/SomeDatabaseService;
    MethodParameters:
         Name  Flags
      vertx    
      service  

  public void <init>(io.vertx.core.Vertx, examples.SomeDatabaseService, long);
    descriptor: (Lio/vertx/core/Vertx;Lexamples/SomeDatabaseService;J)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=5, args_size=4
        start local 0 // examples.SomeDatabaseServiceVertxProxyHandler this
        start local 1 // io.vertx.core.Vertx vertx
        start local 2 // examples.SomeDatabaseService service
        start local 3 // long timeoutInSecond
         0: .line 69
            aload 0 /* this */
            aload 1 /* vertx */
            aload 2 /* service */
            iconst_1
            lload 3 /* timeoutInSecond */
            invokespecial examples.SomeDatabaseServiceVertxProxyHandler.<init>:(Lio/vertx/core/Vertx;Lexamples/SomeDatabaseService;ZJ)V
         1: .line 70
            return
        end local 3 // long timeoutInSecond
        end local 2 // examples.SomeDatabaseService service
        end local 1 // io.vertx.core.Vertx vertx
        end local 0 // examples.SomeDatabaseServiceVertxProxyHandler this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    2     0             this  Lexamples/SomeDatabaseServiceVertxProxyHandler;
            0    2     1            vertx  Lio/vertx/core/Vertx;
            0    2     2          service  Lexamples/SomeDatabaseService;
            0    2     3  timeoutInSecond  J
    MethodParameters:
                 Name  Flags
      vertx            
      service          
      timeoutInSecond  

  public void <init>(io.vertx.core.Vertx, examples.SomeDatabaseService, boolean, long);
    descriptor: (Lio/vertx/core/Vertx;Lexamples/SomeDatabaseService;ZJ)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=8, args_size=5
        start local 0 // examples.SomeDatabaseServiceVertxProxyHandler this
        start local 1 // io.vertx.core.Vertx vertx
        start local 2 // examples.SomeDatabaseService service
        start local 3 // boolean topLevel
        start local 4 // long timeoutSeconds
         0: .line 72
            aload 0 /* this */
            invokespecial io.vertx.serviceproxy.ProxyHandler.<init>:()V
         1: .line 73
            aload 0 /* this */
            aload 1 /* vertx */
            putfield examples.SomeDatabaseServiceVertxProxyHandler.vertx:Lio/vertx/core/Vertx;
         2: .line 74
            aload 0 /* this */
            aload 2 /* service */
            putfield examples.SomeDatabaseServiceVertxProxyHandler.service:Lexamples/SomeDatabaseService;
         3: .line 75
            aload 0 /* this */
            lload 4 /* timeoutSeconds */
            putfield examples.SomeDatabaseServiceVertxProxyHandler.timeoutSeconds:J
         4: .line 77
            aload 0 /* this */
            getfield examples.SomeDatabaseServiceVertxProxyHandler.vertx:Lio/vertx/core/Vertx;
            invokeinterface io.vertx.core.Vertx.eventBus:()Lio/vertx/core/eventbus/EventBus;
            ldc Lio/vertx/serviceproxy/ServiceException;
         5: .line 78
            new io.vertx.serviceproxy.ServiceExceptionMessageCodec
            dup
            invokespecial io.vertx.serviceproxy.ServiceExceptionMessageCodec.<init>:()V
         6: .line 77
            invokeinterface io.vertx.core.eventbus.EventBus.registerDefaultCodec:(Ljava/lang/Class;Lio/vertx/core/eventbus/MessageCodec;)Lio/vertx/core/eventbus/EventBus;
            pop
         7: .line 79
            goto 9
      StackMap locals: examples.SomeDatabaseServiceVertxProxyHandler io.vertx.core.Vertx examples.SomeDatabaseService int long
      StackMap stack: java.lang.IllegalStateException
         8: pop
         9: .line 80
      StackMap locals:
      StackMap stack:
            lload 4 /* timeoutSeconds */
            ldc -1
            lcmp
            ifeq 15
            iload 3 /* topLevel */
            ifne 15
        10: .line 81
            lload 4 /* timeoutSeconds */
            ldc 1000
            lmul
            ldc 2
            ldiv
            lstore 6 /* period */
        start local 6 // long period
        11: .line 82
            lload 6 /* period */
            ldc 10000
            lcmp
            ifle 13
        12: .line 83
            ldc 10000
            lstore 6 /* period */
        13: .line 85
      StackMap locals: long
      StackMap stack:
            aload 0 /* this */
            aload 1 /* vertx */
            lload 6 /* period */
            aload 0 /* this */
            invokedynamic handle(Lexamples/SomeDatabaseServiceVertxProxyHandler;)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
                  examples/SomeDatabaseServiceVertxProxyHandler.checkTimedOut(J)V (7)
                  (Ljava/lang/Long;)V
            invokeinterface io.vertx.core.Vertx.setPeriodic:(JLio/vertx/core/Handler;)J
            putfield examples.SomeDatabaseServiceVertxProxyHandler.timerID:J
        end local 6 // long period
        14: .line 86
            goto 16
        15: .line 87
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            ldc -1
            putfield examples.SomeDatabaseServiceVertxProxyHandler.timerID:J
        16: .line 89
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual examples.SomeDatabaseServiceVertxProxyHandler.accessed:()V
        17: .line 90
            return
        end local 4 // long timeoutSeconds
        end local 3 // boolean topLevel
        end local 2 // examples.SomeDatabaseService service
        end local 1 // io.vertx.core.Vertx vertx
        end local 0 // examples.SomeDatabaseServiceVertxProxyHandler this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   18     0            this  Lexamples/SomeDatabaseServiceVertxProxyHandler;
            0   18     1           vertx  Lio/vertx/core/Vertx;
            0   18     2         service  Lexamples/SomeDatabaseService;
            0   18     3        topLevel  Z
            0   18     4  timeoutSeconds  J
           11   14     6          period  J
      Exception table:
        from    to  target  type
           4     7       8  Class java.lang.IllegalStateException
    MethodParameters:
                Name  Flags
      vertx           
      service         
      topLevel        
      timeoutSeconds  

  private void checkTimedOut(long);
    descriptor: (J)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=5, args_size=2
        start local 0 // examples.SomeDatabaseServiceVertxProxyHandler this
        start local 1 // long id
         0: .line 94
            invokestatic java.lang.System.nanoTime:()J
            lstore 3 /* now */
        start local 3 // long now
         1: .line 95
            lload 3 /* now */
            aload 0 /* this */
            getfield examples.SomeDatabaseServiceVertxProxyHandler.lastAccessed:J
            lsub
            aload 0 /* this */
            getfield examples.SomeDatabaseServiceVertxProxyHandler.timeoutSeconds:J
            ldc 1000000000
            lmul
            lcmp
            ifle 3
         2: .line 96
            aload 0 /* this */
            invokevirtual examples.SomeDatabaseServiceVertxProxyHandler.close:()V
         3: .line 98
      StackMap locals: long
      StackMap stack:
            return
        end local 3 // long now
        end local 1 // long id
        end local 0 // examples.SomeDatabaseServiceVertxProxyHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lexamples/SomeDatabaseServiceVertxProxyHandler;
            0    4     1    id  J
            1    4     3   now  J
    MethodParameters:
      Name  Flags
      id    

  public void close();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // examples.SomeDatabaseServiceVertxProxyHandler this
         0: .line 102
            aload 0 /* this */
            getfield examples.SomeDatabaseServiceVertxProxyHandler.timerID:J
            ldc -1
            lcmp
            ifeq 2
         1: .line 103
            aload 0 /* this */
            getfield examples.SomeDatabaseServiceVertxProxyHandler.vertx:Lio/vertx/core/Vertx;
            aload 0 /* this */
            getfield examples.SomeDatabaseServiceVertxProxyHandler.timerID:J
            invokeinterface io.vertx.core.Vertx.cancelTimer:(J)Z
            pop
         2: .line 105
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokespecial io.vertx.serviceproxy.ProxyHandler.close:()V
         3: .line 106
            return
        end local 0 // examples.SomeDatabaseServiceVertxProxyHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lexamples/SomeDatabaseServiceVertxProxyHandler;

  private void accessed();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // examples.SomeDatabaseServiceVertxProxyHandler this
         0: .line 109
            aload 0 /* this */
            invokestatic java.lang.System.nanoTime:()J
            putfield examples.SomeDatabaseServiceVertxProxyHandler.lastAccessed:J
         1: .line 110
            return
        end local 0 // examples.SomeDatabaseServiceVertxProxyHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lexamples/SomeDatabaseServiceVertxProxyHandler;

  public void handle(io.vertx.core.eventbus.Message<io.vertx.core.json.JsonObject>);
    descriptor: (Lio/vertx/core/eventbus/Message;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=5, args_size=2
        start local 0 // examples.SomeDatabaseServiceVertxProxyHandler this
        start local 1 // io.vertx.core.eventbus.Message msg
         0: .line 114
            aload 1 /* msg */
            invokeinterface io.vertx.core.eventbus.Message.body:()Ljava/lang/Object;
            checkcast io.vertx.core.json.JsonObject
            astore 2 /* json */
        start local 2 // io.vertx.core.json.JsonObject json
         1: .line 115
            aload 1 /* msg */
            invokeinterface io.vertx.core.eventbus.Message.headers:()Lio/vertx/core/MultiMap;
            ldc "action"
            invokeinterface io.vertx.core.MultiMap.get:(Ljava/lang/String;)Ljava/lang/String;
            astore 3 /* action */
        start local 3 // java.lang.String action
         2: .line 116
            aload 3 /* action */
            ifnonnull 3
            new java.lang.IllegalStateException
            dup
            ldc "action not specified"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         3: .line 117
      StackMap locals: io.vertx.core.json.JsonObject java.lang.String
      StackMap stack:
            aload 0 /* this */
            invokevirtual examples.SomeDatabaseServiceVertxProxyHandler.accessed:()V
         4: .line 118
            aload 3 /* action */
            dup
            astore 4
            invokevirtual java.lang.String.hashCode:()I
            lookupswitch { // 2
               101574: 5
              3522941: 6
              default: 17
          }
      StackMap locals: java.lang.String
      StackMap stack:
         5: aload 4
            ldc "foo"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 12
            goto 17
      StackMap locals:
      StackMap stack:
         6: aload 4
            ldc "save"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 7
            goto 17
         7: .line 120
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield examples.SomeDatabaseServiceVertxProxyHandler.service:Lexamples/SomeDatabaseService;
            aload 2 /* json */
            ldc "collection"
            invokevirtual io.vertx.core.json.JsonObject.getValue:(Ljava/lang/String;)Ljava/lang/Object;
            checkcast java.lang.String
         8: .line 121
            aload 2 /* json */
            ldc "document"
            invokevirtual io.vertx.core.json.JsonObject.getValue:(Ljava/lang/String;)Ljava/lang/Object;
            checkcast io.vertx.core.json.JsonObject
         9: .line 122
            aload 1 /* msg */
            invokestatic io.vertx.serviceproxy.HelperUtils.createHandler:(Lio/vertx/core/eventbus/Message;)Lio/vertx/core/Handler;
        10: .line 120
            invokeinterface examples.SomeDatabaseService.save:(Ljava/lang/String;Lio/vertx/core/json/JsonObject;Lio/vertx/core/Handler;)V
        11: .line 123
            goto 21
        12: .line 126
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield examples.SomeDatabaseServiceVertxProxyHandler.service:Lexamples/SomeDatabaseService;
            aload 2 /* json */
            ldc "collection"
            invokevirtual io.vertx.core.json.JsonObject.getValue:(Ljava/lang/String;)Ljava/lang/Object;
            checkcast java.lang.String
        13: .line 127
            aload 2 /* json */
            ldc "document"
            invokevirtual io.vertx.core.json.JsonObject.getValue:(Ljava/lang/String;)Ljava/lang/Object;
            checkcast io.vertx.core.json.JsonObject
        14: .line 128
            aload 1 /* msg */
            invokestatic io.vertx.serviceproxy.HelperUtils.createHandler:(Lio/vertx/core/eventbus/Message;)Lio/vertx/core/Handler;
        15: .line 126
            invokeinterface examples.SomeDatabaseService.foo:(Ljava/lang/String;Lio/vertx/core/json/JsonObject;Lio/vertx/core/Handler;)Lexamples/SomeDatabaseService;
            pop
        16: .line 129
            goto 21
        17: .line 131
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalStateException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Invalid action: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* action */
            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
        end local 3 // java.lang.String action
        end local 2 // io.vertx.core.json.JsonObject json
        18: .line 133
      StackMap locals: examples.SomeDatabaseServiceVertxProxyHandler io.vertx.core.eventbus.Message
      StackMap stack: java.lang.Throwable
            astore 2 /* t */
        start local 2 // java.lang.Throwable t
        19: .line 134
            aload 1 /* msg */
            new io.vertx.serviceproxy.ServiceException
            dup
            sipush 500
            aload 2 /* t */
            invokevirtual java.lang.Throwable.getMessage:()Ljava/lang/String;
            invokespecial io.vertx.serviceproxy.ServiceException.<init>:(ILjava/lang/String;)V
            invokeinterface io.vertx.core.eventbus.Message.reply:(Ljava/lang/Object;)V
        20: .line 135
            aload 2 /* t */
            athrow
        end local 2 // java.lang.Throwable t
        21: .line 137
      StackMap locals:
      StackMap stack:
            return
        end local 1 // io.vertx.core.eventbus.Message msg
        end local 0 // examples.SomeDatabaseServiceVertxProxyHandler this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   22     0    this  Lexamples/SomeDatabaseServiceVertxProxyHandler;
            0   22     1     msg  Lio/vertx/core/eventbus/Message<Lio/vertx/core/json/JsonObject;>;
            1   18     2    json  Lio/vertx/core/json/JsonObject;
            2   18     3  action  Ljava/lang/String;
           19   21     2       t  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           0    18      18  Class java.lang.Throwable
    Signature: (Lio/vertx/core/eventbus/Message<Lio/vertx/core/json/JsonObject;>;)V
    MethodParameters:
      Name  Flags
      msg   

  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.eventbus.Message
            invokevirtual examples.SomeDatabaseServiceVertxProxyHandler.handle:(Lio/vertx/core/eventbus/Message;)V
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
SourceFile: "SomeDatabaseServiceVertxProxyHandler.java"
InnerClasses:
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles