public final class io.vertx.junit5.VertxExtension implements org.junit.jupiter.api.extension.ParameterResolver, org.junit.jupiter.api.extension.BeforeTestExecutionCallback, org.junit.jupiter.api.extension.AfterTestExecutionCallback, org.junit.jupiter.api.extension.BeforeEachCallback, org.junit.jupiter.api.extension.AfterEachCallback, org.junit.jupiter.api.extension.BeforeAllCallback, org.junit.jupiter.api.extension.AfterAllCallback
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: io.vertx.junit5.VertxExtension
  super_class: java.lang.Object
{
  public static final int DEFAULT_TIMEOUT_DURATION;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 30

  public static final java.util.concurrent.TimeUnit DEFAULT_TIMEOUT_UNIT;
    descriptor: Ljava/util/concurrent/TimeUnit;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

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

  private static final java.lang.String TEST_CONTEXT_KEY;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "VertxTestContext"

  private final java.util.HashMap<java.lang.Class<?>, io.vertx.junit5.VertxExtensionParameterProvider<?>> parameterProviders;
    descriptor: Ljava/util/HashMap;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/HashMap<Ljava/lang/Class<*>;Lio/vertx/junit5/VertxExtensionParameterProvider<*>;>;

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 57
            getstatic java.util.concurrent.TimeUnit.SECONDS:Ljava/util/concurrent/TimeUnit;
            putstatic io.vertx.junit5.VertxExtension.DEFAULT_TIMEOUT_UNIT:Ljava/util/concurrent/TimeUnit;
         1: .line 64
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=1
        start local 0 // io.vertx.junit5.VertxExtension this
         0: .line 75
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 73
            aload 0 /* this */
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            putfield io.vertx.junit5.VertxExtension.parameterProviders:Ljava/util/HashMap;
         2: .line 76
            ldc Lio/vertx/junit5/VertxExtensionParameterProvider;
            invokestatic java.util.ServiceLoader.load:(Ljava/lang/Class;)Ljava/util/ServiceLoader;
            invokevirtual java.util.ServiceLoader.iterator:()Ljava/util/Iterator;
            astore 2
            goto 5
      StackMap locals: io.vertx.junit5.VertxExtension top java.util.Iterator
      StackMap stack:
         3: aload 2
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast io.vertx.junit5.VertxExtensionParameterProvider
            astore 1 /* parameterProvider */
        start local 1 // io.vertx.junit5.VertxExtensionParameterProvider parameterProvider
         4: .line 77
            aload 0 /* this */
            getfield io.vertx.junit5.VertxExtension.parameterProviders:Ljava/util/HashMap;
            aload 1 /* parameterProvider */
            invokeinterface io.vertx.junit5.VertxExtensionParameterProvider.type:()Ljava/lang/Class;
            aload 1 /* parameterProvider */
            invokevirtual java.util.HashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 1 // io.vertx.junit5.VertxExtensionParameterProvider parameterProvider
         5: .line 76
      StackMap locals:
      StackMap stack:
            aload 2
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 3
         6: .line 79
            return
        end local 0 // io.vertx.junit5.VertxExtension this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    7     0               this  Lio/vertx/junit5/VertxExtension;
            4    5     1  parameterProvider  Lio/vertx/junit5/VertxExtensionParameterProvider<*>;

  public boolean supportsParameter(org.junit.jupiter.api.extension.ParameterContext, org.junit.jupiter.api.extension.ExtensionContext);
    descriptor: (Lorg/junit/jupiter/api/extension/ParameterContext;Lorg/junit/jupiter/api/extension/ExtensionContext;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // io.vertx.junit5.VertxExtension this
        start local 1 // org.junit.jupiter.api.extension.ParameterContext parameterContext
        start local 2 // org.junit.jupiter.api.extension.ExtensionContext extensionContext
         0: .line 83
            aload 0 /* this */
            getfield io.vertx.junit5.VertxExtension.parameterProviders:Ljava/util/HashMap;
            invokevirtual java.util.HashMap.keySet:()Ljava/util/Set;
            aload 0 /* this */
            aload 1 /* parameterContext */
            invokevirtual io.vertx.junit5.VertxExtension.parameterType:(Lorg/junit/jupiter/api/extension/ParameterContext;)Ljava/lang/Class;
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ireturn
        end local 2 // org.junit.jupiter.api.extension.ExtensionContext extensionContext
        end local 1 // org.junit.jupiter.api.extension.ParameterContext parameterContext
        end local 0 // io.vertx.junit5.VertxExtension this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    1     0              this  Lio/vertx/junit5/VertxExtension;
            0    1     1  parameterContext  Lorg/junit/jupiter/api/extension/ParameterContext;
            0    1     2  extensionContext  Lorg/junit/jupiter/api/extension/ExtensionContext;
    Exceptions:
      throws org.junit.jupiter.api.extension.ParameterResolutionException
    MethodParameters:
                  Name  Flags
      parameterContext  
      extensionContext  

  private java.lang.Class<?> parameterType(org.junit.jupiter.api.extension.ParameterContext);
    descriptor: (Lorg/junit/jupiter/api/extension/ParameterContext;)Ljava/lang/Class;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // io.vertx.junit5.VertxExtension this
        start local 1 // org.junit.jupiter.api.extension.ParameterContext parameterContext
         0: .line 87
            aload 1 /* parameterContext */
            invokeinterface org.junit.jupiter.api.extension.ParameterContext.getParameter:()Ljava/lang/reflect/Parameter;
            invokevirtual java.lang.reflect.Parameter.getType:()Ljava/lang/Class;
            areturn
        end local 1 // org.junit.jupiter.api.extension.ParameterContext parameterContext
        end local 0 // io.vertx.junit5.VertxExtension this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    1     0              this  Lio/vertx/junit5/VertxExtension;
            0    1     1  parameterContext  Lorg/junit/jupiter/api/extension/ParameterContext;
    Signature: (Lorg/junit/jupiter/api/extension/ParameterContext;)Ljava/lang/Class<*>;
    MethodParameters:
                  Name  Flags
      parameterContext  

  public java.lang.Object resolveParameter(org.junit.jupiter.api.extension.ParameterContext, org.junit.jupiter.api.extension.ExtensionContext);
    descriptor: (Lorg/junit/jupiter/api/extension/ParameterContext;Lorg/junit/jupiter/api/extension/ExtensionContext;)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=6, args_size=3
        start local 0 // io.vertx.junit5.VertxExtension this
        start local 1 // org.junit.jupiter.api.extension.ParameterContext parameterContext
        start local 2 // org.junit.jupiter.api.extension.ExtensionContext extensionContext
         0: .line 92
            aload 0 /* this */
            aload 1 /* parameterContext */
            invokevirtual io.vertx.junit5.VertxExtension.parameterType:(Lorg/junit/jupiter/api/extension/ParameterContext;)Ljava/lang/Class;
            astore 3 /* type */
        start local 3 // java.lang.Class type
         1: .line 93
            aload 0 /* this */
            getfield io.vertx.junit5.VertxExtension.parameterProviders:Ljava/util/HashMap;
            aload 3 /* type */
            invokevirtual java.util.HashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast io.vertx.junit5.VertxExtensionParameterProvider
            astore 4 /* parameterProvider */
        start local 4 // io.vertx.junit5.VertxExtensionParameterProvider parameterProvider
         2: .line 95
            aload 3 /* type */
            ldc Lio/vertx/junit5/VertxTestContext;
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 4
         3: .line 96
            aload 0 /* this */
            aload 2 /* extensionContext */
            invokevirtual io.vertx.junit5.VertxExtension.newTestContext:(Lorg/junit/jupiter/api/extension/ExtensionContext;)Lio/vertx/junit5/VertxTestContext;
            areturn
         4: .line 99
      StackMap locals: java.lang.Class io.vertx.junit5.VertxExtensionParameterProvider
      StackMap stack:
            aload 2 /* extensionContext */
            invokeinterface org.junit.jupiter.api.extension.ExtensionContext.getParent:()Ljava/util/Optional;
            invokevirtual java.util.Optional.isPresent:()Z
            ifeq 8
         5: .line 100
            aload 0 /* this */
            aload 2 /* extensionContext */
            invokeinterface org.junit.jupiter.api.extension.ExtensionContext.getParent:()Ljava/util/Optional;
            invokevirtual java.util.Optional.get:()Ljava/lang/Object;
            checkcast org.junit.jupiter.api.extension.ExtensionContext
            invokevirtual io.vertx.junit5.VertxExtension.store:(Lorg/junit/jupiter/api/extension/ExtensionContext;)Lorg/junit/jupiter/api/extension/ExtensionContext$Store;
            astore 5 /* parentStore */
        start local 5 // org.junit.jupiter.api.extension.ExtensionContext$Store parentStore
         6: .line 101
            aload 5 /* parentStore */
            aload 4 /* parameterProvider */
            invokeinterface io.vertx.junit5.VertxExtensionParameterProvider.key:()Ljava/lang/String;
            invokeinterface org.junit.jupiter.api.extension.ExtensionContext$Store.get:(Ljava/lang/Object;)Ljava/lang/Object;
            ifnull 8
         7: .line 102
            aload 5 /* parentStore */
            aload 4 /* parameterProvider */
            invokeinterface io.vertx.junit5.VertxExtensionParameterProvider.key:()Ljava/lang/String;
            invokeinterface org.junit.jupiter.api.extension.ExtensionContext$Store.get:(Ljava/lang/Object;)Ljava/lang/Object;
            invokestatic io.vertx.junit5.VertxExtension.unpack:(Ljava/lang/Object;)Ljava/lang/Object;
            areturn
        end local 5 // org.junit.jupiter.api.extension.ExtensionContext$Store parentStore
         8: .line 106
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* extensionContext */
            invokevirtual io.vertx.junit5.VertxExtension.store:(Lorg/junit/jupiter/api/extension/ExtensionContext;)Lorg/junit/jupiter/api/extension/ExtensionContext$Store;
            astore 5 /* store */
        start local 5 // org.junit.jupiter.api.extension.ExtensionContext$Store store
         9: .line 107
            aload 5 /* store */
            aload 4 /* parameterProvider */
            invokeinterface io.vertx.junit5.VertxExtensionParameterProvider.key:()Ljava/lang/String;
            aload 4 /* parameterProvider */
            aload 2 /* extensionContext */
            aload 1 /* parameterContext */
            invokedynamic apply(Lio/vertx/junit5/VertxExtensionParameterProvider;Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/api/extension/ParameterContext;)Ljava/util/function/Function;
              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;)Ljava/lang/Object;
                  io/vertx/junit5/VertxExtension.lambda$0(Lio/vertx/junit5/VertxExtensionParameterProvider;Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/api/extension/ParameterContext;Ljava/lang/String;)Lio/vertx/junit5/ScopedObject; (6)
                  (Ljava/lang/String;)Lio/vertx/junit5/ScopedObject;
            invokeinterface org.junit.jupiter.api.extension.ExtensionContext$Store.getOrComputeIfAbsent:(Ljava/lang/Object;Ljava/util/function/Function;)Ljava/lang/Object;
            invokestatic io.vertx.junit5.VertxExtension.unpack:(Ljava/lang/Object;)Ljava/lang/Object;
            areturn
        end local 5 // org.junit.jupiter.api.extension.ExtensionContext$Store store
        end local 4 // io.vertx.junit5.VertxExtensionParameterProvider parameterProvider
        end local 3 // java.lang.Class type
        end local 2 // org.junit.jupiter.api.extension.ExtensionContext extensionContext
        end local 1 // org.junit.jupiter.api.extension.ParameterContext parameterContext
        end local 0 // io.vertx.junit5.VertxExtension this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   10     0               this  Lio/vertx/junit5/VertxExtension;
            0   10     1   parameterContext  Lorg/junit/jupiter/api/extension/ParameterContext;
            0   10     2   extensionContext  Lorg/junit/jupiter/api/extension/ExtensionContext;
            1   10     3               type  Ljava/lang/Class<*>;
            2   10     4  parameterProvider  Lio/vertx/junit5/VertxExtensionParameterProvider<*>;
            6    8     5        parentStore  Lorg/junit/jupiter/api/extension/ExtensionContext$Store;
            9   10     5              store  Lorg/junit/jupiter/api/extension/ExtensionContext$Store;
    Exceptions:
      throws org.junit.jupiter.api.extension.ParameterResolutionException
    MethodParameters:
                  Name  Flags
      parameterContext  
      extensionContext  

  private static java.lang.Object unpack(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.lang.Object object
         0: .line 113
            aload 0 /* object */
            instanceof java.util.function.Supplier
            ifeq 2
         1: .line 114
            aload 0 /* object */
            checkcast java.util.function.Supplier
            invokeinterface java.util.function.Supplier.get:()Ljava/lang/Object;
            areturn
         2: .line 116
      StackMap locals:
      StackMap stack:
            aload 0 /* object */
            areturn
        end local 0 // java.lang.Object object
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0  object  Ljava/lang/Object;
    MethodParameters:
        Name  Flags
      object  

  private io.vertx.junit5.VertxTestContext newTestContext(org.junit.jupiter.api.extension.ExtensionContext);
    descriptor: (Lorg/junit/jupiter/api/extension/ExtensionContext;)Lio/vertx/junit5/VertxTestContext;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=5, args_size=2
        start local 0 // io.vertx.junit5.VertxExtension this
        start local 1 // org.junit.jupiter.api.extension.ExtensionContext extensionContext
         0: .line 120
            aload 0 /* this */
            aload 1 /* extensionContext */
            invokevirtual io.vertx.junit5.VertxExtension.store:(Lorg/junit/jupiter/api/extension/ExtensionContext;)Lorg/junit/jupiter/api/extension/ExtensionContext$Store;
            astore 2 /* store */
        start local 2 // org.junit.jupiter.api.extension.ExtensionContext$Store store
         1: .line 121
            aload 2 /* store */
            ldc "VertxTestContext"
            invokedynamic apply()Ljava/util/function/Function;
              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;)Ljava/lang/Object;
                  io/vertx/junit5/VertxExtension.lambda$1(Ljava/lang/String;)Lio/vertx/junit5/VertxExtension$ContextList; (6)
                  (Ljava/lang/String;)Lio/vertx/junit5/VertxExtension$ContextList;
            invokeinterface org.junit.jupiter.api.extension.ExtensionContext$Store.getOrComputeIfAbsent:(Ljava/lang/Object;Ljava/util/function/Function;)Ljava/lang/Object;
            checkcast io.vertx.junit5.VertxExtension$ContextList
            astore 3 /* contexts */
        start local 3 // io.vertx.junit5.VertxExtension$ContextList contexts
         2: .line 122
            new io.vertx.junit5.VertxTestContext
            dup
            invokespecial io.vertx.junit5.VertxTestContext.<init>:()V
            astore 4 /* newTestContext */
        start local 4 // io.vertx.junit5.VertxTestContext newTestContext
         3: .line 123
            aload 3 /* contexts */
            aload 4 /* newTestContext */
            invokevirtual io.vertx.junit5.VertxExtension$ContextList.add:(Ljava/lang/Object;)Z
            pop
         4: .line 124
            aload 4 /* newTestContext */
            areturn
        end local 4 // io.vertx.junit5.VertxTestContext newTestContext
        end local 3 // io.vertx.junit5.VertxExtension$ContextList contexts
        end local 2 // org.junit.jupiter.api.extension.ExtensionContext$Store store
        end local 1 // org.junit.jupiter.api.extension.ExtensionContext extensionContext
        end local 0 // io.vertx.junit5.VertxExtension this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    5     0              this  Lio/vertx/junit5/VertxExtension;
            0    5     1  extensionContext  Lorg/junit/jupiter/api/extension/ExtensionContext;
            1    5     2             store  Lorg/junit/jupiter/api/extension/ExtensionContext$Store;
            2    5     3          contexts  Lio/vertx/junit5/VertxExtension$ContextList;
            3    5     4    newTestContext  Lio/vertx/junit5/VertxTestContext;
    MethodParameters:
                  Name  Flags
      extensionContext  

  private org.junit.jupiter.api.extension.ExtensionContext$Store store(org.junit.jupiter.api.extension.ExtensionContext);
    descriptor: (Lorg/junit/jupiter/api/extension/ExtensionContext;)Lorg/junit/jupiter/api/extension/ExtensionContext$Store;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // io.vertx.junit5.VertxExtension this
        start local 1 // org.junit.jupiter.api.extension.ExtensionContext extensionContext
         0: .line 128
            aload 1 /* extensionContext */
            getstatic org.junit.jupiter.api.extension.ExtensionContext$Namespace.GLOBAL:Lorg/junit/jupiter/api/extension/ExtensionContext$Namespace;
            invokeinterface org.junit.jupiter.api.extension.ExtensionContext.getStore:(Lorg/junit/jupiter/api/extension/ExtensionContext$Namespace;)Lorg/junit/jupiter/api/extension/ExtensionContext$Store;
            areturn
        end local 1 // org.junit.jupiter.api.extension.ExtensionContext extensionContext
        end local 0 // io.vertx.junit5.VertxExtension this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    1     0              this  Lio/vertx/junit5/VertxExtension;
            0    1     1  extensionContext  Lorg/junit/jupiter/api/extension/ExtensionContext;
    MethodParameters:
                  Name  Flags
      extensionContext  

  public void beforeAll(org.junit.jupiter.api.extension.ExtensionContext);
    descriptor: (Lorg/junit/jupiter/api/extension/ExtensionContext;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=0, locals=2, args_size=2
        start local 0 // io.vertx.junit5.VertxExtension this
        start local 1 // org.junit.jupiter.api.extension.ExtensionContext context
         0: .line 134
            return
        end local 1 // org.junit.jupiter.api.extension.ExtensionContext context
        end local 0 // io.vertx.junit5.VertxExtension this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lio/vertx/junit5/VertxExtension;
            0    1     1  context  Lorg/junit/jupiter/api/extension/ExtensionContext;
    Exceptions:
      throws java.lang.Exception
    MethodParameters:
         Name  Flags
      context  

  public void afterAll(org.junit.jupiter.api.extension.ExtensionContext);
    descriptor: (Lorg/junit/jupiter/api/extension/ExtensionContext;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // io.vertx.junit5.VertxExtension this
        start local 1 // org.junit.jupiter.api.extension.ExtensionContext context
         0: .line 139
            aload 0 /* this */
            aload 1 /* context */
            invokevirtual io.vertx.junit5.VertxExtension.joinActiveTestContexts:(Lorg/junit/jupiter/api/extension/ExtensionContext;)V
         1: .line 140
            return
        end local 1 // org.junit.jupiter.api.extension.ExtensionContext context
        end local 0 // io.vertx.junit5.VertxExtension this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Lio/vertx/junit5/VertxExtension;
            0    2     1  context  Lorg/junit/jupiter/api/extension/ExtensionContext;
    Exceptions:
      throws java.lang.Exception
    MethodParameters:
         Name  Flags
      context  

  public void beforeEach(org.junit.jupiter.api.extension.ExtensionContext);
    descriptor: (Lorg/junit/jupiter/api/extension/ExtensionContext;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // io.vertx.junit5.VertxExtension this
        start local 1 // org.junit.jupiter.api.extension.ExtensionContext context
         0: .line 145
            aload 0 /* this */
            aload 1 /* context */
            invokevirtual io.vertx.junit5.VertxExtension.joinActiveTestContexts:(Lorg/junit/jupiter/api/extension/ExtensionContext;)V
         1: .line 146
            return
        end local 1 // org.junit.jupiter.api.extension.ExtensionContext context
        end local 0 // io.vertx.junit5.VertxExtension this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Lio/vertx/junit5/VertxExtension;
            0    2     1  context  Lorg/junit/jupiter/api/extension/ExtensionContext;
    Exceptions:
      throws java.lang.Exception
    MethodParameters:
         Name  Flags
      context  

  public void afterEach(org.junit.jupiter.api.extension.ExtensionContext);
    descriptor: (Lorg/junit/jupiter/api/extension/ExtensionContext;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // io.vertx.junit5.VertxExtension this
        start local 1 // org.junit.jupiter.api.extension.ExtensionContext context
         0: .line 151
            aload 0 /* this */
            aload 1 /* context */
            invokevirtual io.vertx.junit5.VertxExtension.joinActiveTestContexts:(Lorg/junit/jupiter/api/extension/ExtensionContext;)V
         1: .line 152
            return
        end local 1 // org.junit.jupiter.api.extension.ExtensionContext context
        end local 0 // io.vertx.junit5.VertxExtension this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Lio/vertx/junit5/VertxExtension;
            0    2     1  context  Lorg/junit/jupiter/api/extension/ExtensionContext;
    Exceptions:
      throws java.lang.Exception
    MethodParameters:
         Name  Flags
      context  

  public void beforeTestExecution(org.junit.jupiter.api.extension.ExtensionContext);
    descriptor: (Lorg/junit/jupiter/api/extension/ExtensionContext;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // io.vertx.junit5.VertxExtension this
        start local 1 // org.junit.jupiter.api.extension.ExtensionContext context
         0: .line 157
            aload 0 /* this */
            aload 1 /* context */
            invokevirtual io.vertx.junit5.VertxExtension.joinActiveTestContexts:(Lorg/junit/jupiter/api/extension/ExtensionContext;)V
         1: .line 158
            return
        end local 1 // org.junit.jupiter.api.extension.ExtensionContext context
        end local 0 // io.vertx.junit5.VertxExtension this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Lio/vertx/junit5/VertxExtension;
            0    2     1  context  Lorg/junit/jupiter/api/extension/ExtensionContext;
    Exceptions:
      throws java.lang.Exception
    MethodParameters:
         Name  Flags
      context  

  public void afterTestExecution(org.junit.jupiter.api.extension.ExtensionContext);
    descriptor: (Lorg/junit/jupiter/api/extension/ExtensionContext;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // io.vertx.junit5.VertxExtension this
        start local 1 // org.junit.jupiter.api.extension.ExtensionContext context
         0: .line 163
            aload 0 /* this */
            aload 1 /* context */
            invokevirtual io.vertx.junit5.VertxExtension.joinActiveTestContexts:(Lorg/junit/jupiter/api/extension/ExtensionContext;)V
         1: .line 164
            return
        end local 1 // org.junit.jupiter.api.extension.ExtensionContext context
        end local 0 // io.vertx.junit5.VertxExtension this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Lio/vertx/junit5/VertxExtension;
            0    2     1  context  Lorg/junit/jupiter/api/extension/ExtensionContext;
    Exceptions:
      throws java.lang.Exception
    MethodParameters:
         Name  Flags
      context  

  private void joinActiveTestContexts(org.junit.jupiter.api.extension.ExtensionContext);
    descriptor: (Lorg/junit/jupiter/api/extension/ExtensionContext;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=10, args_size=2
        start local 0 // io.vertx.junit5.VertxExtension this
        start local 1 // org.junit.jupiter.api.extension.ExtensionContext extensionContext
         0: .line 167
            aload 1 /* extensionContext */
            invokeinterface org.junit.jupiter.api.extension.ExtensionContext.getExecutionException:()Ljava/util/Optional;
            invokevirtual java.util.Optional.isPresent:()Z
            ifeq 2
         1: .line 168
            return
         2: .line 171
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* extensionContext */
            invokevirtual io.vertx.junit5.VertxExtension.store:(Lorg/junit/jupiter/api/extension/ExtensionContext;)Lorg/junit/jupiter/api/extension/ExtensionContext$Store;
            ldc "VertxTestContext"
            ldc Lio/vertx/junit5/VertxExtension$ContextList;
            invokeinterface org.junit.jupiter.api.extension.ExtensionContext$Store.remove:(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;
            checkcast io.vertx.junit5.VertxExtension$ContextList
            astore 2 /* currentContexts */
        start local 2 // io.vertx.junit5.VertxExtension$ContextList currentContexts
         3: .line 172
            aload 2 /* currentContexts */
            ifnull 33
         4: .line 173
            aload 2 /* currentContexts */
            invokevirtual io.vertx.junit5.VertxExtension$ContextList.iterator:()Ljava/util/Iterator;
            astore 4
            goto 32
      StackMap locals: io.vertx.junit5.VertxExtension org.junit.jupiter.api.extension.ExtensionContext io.vertx.junit5.VertxExtension$ContextList top java.util.Iterator
      StackMap stack:
         5: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast io.vertx.junit5.VertxTestContext
            astore 3 /* context */
        start local 3 // io.vertx.junit5.VertxTestContext context
         6: .line 174
            bipush 30
            istore 5 /* timeoutDuration */
        start local 5 // int timeoutDuration
         7: .line 175
            getstatic io.vertx.junit5.VertxExtension.DEFAULT_TIMEOUT_UNIT:Ljava/util/concurrent/TimeUnit;
            astore 6 /* timeoutUnit */
        start local 6 // java.util.concurrent.TimeUnit timeoutUnit
         8: .line 176
            aload 1 /* extensionContext */
            invokeinterface org.junit.jupiter.api.extension.ExtensionContext.getTestMethod:()Ljava/util/Optional;
            astore 7 /* testMethod */
        start local 7 // java.util.Optional testMethod
         9: .line 177
            aload 7 /* testMethod */
            invokevirtual java.util.Optional.isPresent:()Z
            ifeq 14
            aload 7 /* testMethod */
            invokevirtual java.util.Optional.get:()Ljava/lang/Object;
            checkcast java.lang.reflect.Method
            ldc Lio/vertx/junit5/Timeout;
            invokevirtual java.lang.reflect.Method.isAnnotationPresent:(Ljava/lang/Class;)Z
            ifeq 14
        10: .line 178
            aload 1 /* extensionContext */
            invokeinterface org.junit.jupiter.api.extension.ExtensionContext.getRequiredTestMethod:()Ljava/lang/reflect/Method;
            ldc Lio/vertx/junit5/Timeout;
            invokevirtual java.lang.reflect.Method.getAnnotation:(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
            checkcast io.vertx.junit5.Timeout
            astore 8 /* annotation */
        start local 8 // io.vertx.junit5.Timeout annotation
        11: .line 179
            aload 8 /* annotation */
            invokeinterface io.vertx.junit5.Timeout.value:()I
            istore 5 /* timeoutDuration */
        12: .line 180
            aload 8 /* annotation */
            invokeinterface io.vertx.junit5.Timeout.timeUnit:()Ljava/util/concurrent/TimeUnit;
            astore 6 /* timeoutUnit */
        end local 8 // io.vertx.junit5.Timeout annotation
        13: .line 181
            goto 18
      StackMap locals: io.vertx.junit5.VertxExtension org.junit.jupiter.api.extension.ExtensionContext io.vertx.junit5.VertxExtension$ContextList io.vertx.junit5.VertxTestContext java.util.Iterator int java.util.concurrent.TimeUnit java.util.Optional
      StackMap stack:
        14: aload 1 /* extensionContext */
            invokeinterface org.junit.jupiter.api.extension.ExtensionContext.getRequiredTestClass:()Ljava/lang/Class;
            ldc Lio/vertx/junit5/Timeout;
            invokevirtual java.lang.Class.isAnnotationPresent:(Ljava/lang/Class;)Z
            ifeq 18
        15: .line 182
            aload 1 /* extensionContext */
            invokeinterface org.junit.jupiter.api.extension.ExtensionContext.getRequiredTestClass:()Ljava/lang/Class;
            ldc Lio/vertx/junit5/Timeout;
            invokevirtual java.lang.Class.getAnnotation:(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
            checkcast io.vertx.junit5.Timeout
            astore 8 /* annotation */
        start local 8 // io.vertx.junit5.Timeout annotation
        16: .line 183
            aload 8 /* annotation */
            invokeinterface io.vertx.junit5.Timeout.value:()I
            istore 5 /* timeoutDuration */
        17: .line 184
            aload 8 /* annotation */
            invokeinterface io.vertx.junit5.Timeout.timeUnit:()Ljava/util/concurrent/TimeUnit;
            astore 6 /* timeoutUnit */
        end local 8 // io.vertx.junit5.Timeout annotation
        18: .line 186
      StackMap locals:
      StackMap stack:
            aload 3 /* context */
            iload 5 /* timeoutDuration */
            i2l
            aload 6 /* timeoutUnit */
            invokevirtual io.vertx.junit5.VertxTestContext.awaitCompletion:(JLjava/util/concurrent/TimeUnit;)Z
            ifeq 24
        19: .line 187
            aload 3 /* context */
            invokevirtual io.vertx.junit5.VertxTestContext.failed:()Z
            ifeq 32
        20: .line 188
            aload 3 /* context */
            invokevirtual io.vertx.junit5.VertxTestContext.causeOfFailure:()Ljava/lang/Throwable;
            astore 8 /* throwable */
        start local 8 // java.lang.Throwable throwable
        21: .line 189
            aload 8 /* throwable */
            instanceof java.lang.Exception
            ifeq 23
        22: .line 190
            aload 8 /* throwable */
            checkcast java.lang.Exception
            athrow
        23: .line 192
      StackMap locals: java.lang.Throwable
      StackMap stack:
            new java.lang.AssertionError
            dup
            aload 8 /* throwable */
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
        end local 8 // java.lang.Throwable throwable
        24: .line 196
      StackMap locals:
      StackMap stack:
            ldc "The test execution timed out. Make sure your asynchronous code includes calls to either VertxTestContext#completeNow(), VertxTestContext#failNow() or Checkpoint#flag()"
            astore 8 /* message */
        start local 8 // java.lang.String message
        25: .line 199
            aload 3 /* context */
            invokevirtual io.vertx.junit5.VertxTestContext.unsatisfiedCheckpointCallSites:()Ljava/util/Set;
        26: .line 200
            invokeinterface java.util.Set.stream:()Ljava/util/stream/Stream;
        27: .line 201
            invokedynamic apply()Ljava/util/function/Function;
              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;)Ljava/lang/Object;
                  io/vertx/junit5/VertxExtension.lambda$2(Ljava/lang/StackTraceElement;)Ljava/lang/String; (6)
                  (Ljava/lang/StackTraceElement;)Ljava/lang/String;
            invokeinterface java.util.stream.Stream.map:(Ljava/util/function/Function;)Ljava/util/stream/Stream;
        28: .line 202
            ldc "\n"
            invokestatic java.util.stream.Collectors.joining:(Ljava/lang/CharSequence;)Ljava/util/stream/Collector;
            invokeinterface java.util.stream.Stream.collect:(Ljava/util/stream/Collector;)Ljava/lang/Object;
            checkcast java.lang.String
        29: .line 199
            astore 9 /* unsatisfiedCheckpointsDiagnosis */
        start local 9 // java.lang.String unsatisfiedCheckpointsDiagnosis
        30: .line 203
            new java.lang.StringBuilder
            dup
            aload 8 /* message */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "\n\nUnsatisfied checkpoints diagnostics:\n"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 9 /* unsatisfiedCheckpointsDiagnosis */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 8 /* message */
        31: .line 204
            new java.util.concurrent.TimeoutException
            dup
            aload 8 /* message */
            invokespecial java.util.concurrent.TimeoutException.<init>:(Ljava/lang/String;)V
            athrow
        end local 9 // java.lang.String unsatisfiedCheckpointsDiagnosis
        end local 8 // java.lang.String message
        end local 7 // java.util.Optional testMethod
        end local 6 // java.util.concurrent.TimeUnit timeoutUnit
        end local 5 // int timeoutDuration
        end local 3 // io.vertx.junit5.VertxTestContext context
        32: .line 173
      StackMap locals: io.vertx.junit5.VertxExtension org.junit.jupiter.api.extension.ExtensionContext io.vertx.junit5.VertxExtension$ContextList top java.util.Iterator
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 5
        33: .line 209
      StackMap locals: io.vertx.junit5.VertxExtension org.junit.jupiter.api.extension.ExtensionContext io.vertx.junit5.VertxExtension$ContextList
      StackMap stack:
            aload 1 /* extensionContext */
            invokeinterface org.junit.jupiter.api.extension.ExtensionContext.getParent:()Ljava/util/Optional;
            invokevirtual java.util.Optional.isPresent:()Z
            ifeq 35
        34: .line 210
            aload 0 /* this */
            aload 1 /* extensionContext */
            invokeinterface org.junit.jupiter.api.extension.ExtensionContext.getParent:()Ljava/util/Optional;
            invokevirtual java.util.Optional.get:()Ljava/lang/Object;
            checkcast org.junit.jupiter.api.extension.ExtensionContext
            invokevirtual io.vertx.junit5.VertxExtension.joinActiveTestContexts:(Lorg/junit/jupiter/api/extension/ExtensionContext;)V
        35: .line 212
      StackMap locals:
      StackMap stack:
            return
        end local 2 // io.vertx.junit5.VertxExtension$ContextList currentContexts
        end local 1 // org.junit.jupiter.api.extension.ExtensionContext extensionContext
        end local 0 // io.vertx.junit5.VertxExtension this
      LocalVariableTable:
        Start  End  Slot                             Name  Signature
            0   36     0                             this  Lio/vertx/junit5/VertxExtension;
            0   36     1                 extensionContext  Lorg/junit/jupiter/api/extension/ExtensionContext;
            3   36     2                  currentContexts  Lio/vertx/junit5/VertxExtension$ContextList;
            6   32     3                          context  Lio/vertx/junit5/VertxTestContext;
            7   32     5                  timeoutDuration  I
            8   32     6                      timeoutUnit  Ljava/util/concurrent/TimeUnit;
            9   32     7                       testMethod  Ljava/util/Optional<Ljava/lang/reflect/Method;>;
           11   13     8                       annotation  Lio/vertx/junit5/Timeout;
           16   18     8                       annotation  Lio/vertx/junit5/Timeout;
           21   24     8                        throwable  Ljava/lang/Throwable;
           25   32     8                          message  Ljava/lang/String;
           30   32     9  unsatisfiedCheckpointsDiagnosis  Ljava/lang/String;
    Exceptions:
      throws java.lang.Exception
    MethodParameters:
                  Name  Flags
      extensionContext  

  private static io.vertx.junit5.ScopedObject lambda$0(io.vertx.junit5.VertxExtensionParameterProvider, org.junit.jupiter.api.extension.ExtensionContext, org.junit.jupiter.api.extension.ParameterContext, java.lang.String);
    descriptor: (Lio/vertx/junit5/VertxExtensionParameterProvider;Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/api/extension/ParameterContext;Ljava/lang/String;)Lio/vertx/junit5/ScopedObject;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=5, locals=4, args_size=4
        start local 3 // java.lang.String key
         0: .line 107
            new io.vertx.junit5.ScopedObject
            dup
         1: .line 108
            aload 0
            aload 1
            aload 2
            invokeinterface io.vertx.junit5.VertxExtensionParameterProvider.newInstance:(Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/api/extension/ParameterContext;)Ljava/lang/Object;
         2: .line 109
            aload 0
            invokeinterface io.vertx.junit5.VertxExtensionParameterProvider.parameterClosingConsumer:()Lio/vertx/junit5/ParameterClosingConsumer;
         3: .line 107
            invokespecial io.vertx.junit5.ScopedObject.<init>:(Ljava/lang/Object;Lio/vertx/junit5/ParameterClosingConsumer;)V
         4: .line 109
            areturn
        end local 3 // java.lang.String key
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     3   key  Ljava/lang/String;

  private static io.vertx.junit5.VertxExtension$ContextList lambda$1(java.lang.String);
    descriptor: (Ljava/lang/String;)Lio/vertx/junit5/VertxExtension$ContextList;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.String key
         0: .line 121
            new io.vertx.junit5.VertxExtension$ContextList
            dup
            invokespecial io.vertx.junit5.VertxExtension$ContextList.<init>:()V
            areturn
        end local 0 // java.lang.String key
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0   key  Ljava/lang/String;

  private static java.lang.String lambda$2(java.lang.StackTraceElement);
    descriptor: (Ljava/lang/StackTraceElement;)Ljava/lang/String;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.lang.StackTraceElement element
         0: .line 201
            new java.lang.StringBuilder
            dup
            ldc "-> checkpoint in file "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* element */
            invokevirtual java.lang.StackTraceElement.getFileName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " line "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* element */
            invokevirtual java.lang.StackTraceElement.getLineNumber:()I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 0 // java.lang.StackTraceElement element
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0  element  Ljava/lang/StackTraceElement;
}
SourceFile: "VertxExtension.java"
NestMembers:
  io.vertx.junit5.VertxExtension$ContextList
InnerClasses:
  private ContextList = io.vertx.junit5.VertxExtension$ContextList of io.vertx.junit5.VertxExtension
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
  public Namespace = org.junit.jupiter.api.extension.ExtensionContext$Namespace of org.junit.jupiter.api.extension.ExtensionContext
  public abstract Store = org.junit.jupiter.api.extension.ExtensionContext$Store of org.junit.jupiter.api.extension.ExtensionContext