abstract class org.junit.jupiter.engine.descriptor.AbstractExtensionContext<T extends org.junit.platform.engine.TestDescriptor> implements org.junit.jupiter.api.extension.ExtensionContext, java.lang.AutoCloseable
  minor version: 0
  major version: 59
  flags: flags: (0x0420) ACC_SUPER, ACC_ABSTRACT
  this_class: org.junit.jupiter.engine.descriptor.AbstractExtensionContext
  super_class: java.lang.Object
{
  private final org.junit.jupiter.api.extension.ExtensionContext parent;
    descriptor: Lorg/junit/jupiter/api/extension/ExtensionContext;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.junit.platform.engine.EngineExecutionListener engineExecutionListener;
    descriptor: Lorg/junit/platform/engine/EngineExecutionListener;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final T testDescriptor;
    descriptor: Lorg/junit/platform/engine/TestDescriptor;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: TT;

  private final java.util.Set<java.lang.String> tags;
    descriptor: Ljava/util/Set;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Set<Ljava/lang/String;>;

  private final org.junit.jupiter.engine.config.JupiterConfiguration configuration;
    descriptor: Lorg/junit/jupiter/engine/config/JupiterConfiguration;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.junit.jupiter.engine.execution.ExtensionValuesStore valuesStore;
    descriptor: Lorg/junit/jupiter/engine/execution/ExtensionValuesStore;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  void <init>(org.junit.jupiter.api.extension.ExtensionContext, org.junit.platform.engine.EngineExecutionListener, T, org.junit.jupiter.engine.config.JupiterConfiguration);
    descriptor: (Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/platform/engine/EngineExecutionListener;Lorg/junit/platform/engine/TestDescriptor;Lorg/junit/jupiter/engine/config/JupiterConfiguration;)V
    flags: (0x0000) 
    Code:
      stack=4, locals=5, args_size=5
        start local 0 // org.junit.jupiter.engine.descriptor.AbstractExtensionContext this
        start local 1 // org.junit.jupiter.api.extension.ExtensionContext parent
        start local 2 // org.junit.platform.engine.EngineExecutionListener engineExecutionListener
        start local 3 // org.junit.platform.engine.TestDescriptor testDescriptor
        start local 4 // org.junit.jupiter.engine.config.JupiterConfiguration configuration
         0: .line 44
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 47
            aload 3 /* testDescriptor */
            ldc "TestDescriptor must not be null"
            invokestatic org.junit.platform.commons.util.Preconditions.notNull:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
            pop
         2: .line 48
            aload 4 /* configuration */
            ldc "JupiterConfiguration must not be null"
            invokestatic org.junit.platform.commons.util.Preconditions.notNull:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
            pop
         3: .line 50
            aload 0 /* this */
            aload 1 /* parent */
            putfield org.junit.jupiter.engine.descriptor.AbstractExtensionContext.parent:Lorg/junit/jupiter/api/extension/ExtensionContext;
         4: .line 51
            aload 0 /* this */
            aload 2 /* engineExecutionListener */
            putfield org.junit.jupiter.engine.descriptor.AbstractExtensionContext.engineExecutionListener:Lorg/junit/platform/engine/EngineExecutionListener;
         5: .line 52
            aload 0 /* this */
            aload 3 /* testDescriptor */
            putfield org.junit.jupiter.engine.descriptor.AbstractExtensionContext.testDescriptor:Lorg/junit/platform/engine/TestDescriptor;
         6: .line 53
            aload 0 /* this */
            aload 4 /* configuration */
            putfield org.junit.jupiter.engine.descriptor.AbstractExtensionContext.configuration:Lorg/junit/jupiter/engine/config/JupiterConfiguration;
         7: .line 54
            aload 0 /* this */
            aload 0 /* this */
            aload 1 /* parent */
            invokevirtual org.junit.jupiter.engine.descriptor.AbstractExtensionContext.createStore:(Lorg/junit/jupiter/api/extension/ExtensionContext;)Lorg/junit/jupiter/engine/execution/ExtensionValuesStore;
            putfield org.junit.jupiter.engine.descriptor.AbstractExtensionContext.valuesStore:Lorg/junit/jupiter/engine/execution/ExtensionValuesStore;
         8: .line 57
            aload 0 /* this */
            aload 3 /* testDescriptor */
            invokeinterface org.junit.platform.engine.TestDescriptor.getTags:()Ljava/util/Set;
            invokeinterface java.util.Set.stream:()Ljava/util/stream/Stream;
         9: .line 58
            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;
                  org/junit/platform/engine/TestTag.getName()Ljava/lang/String; (5)
                  (Lorg/junit/platform/engine/TestTag;)Ljava/lang/String;
            invokeinterface java.util.stream.Stream.map:(Ljava/util/function/Function;)Ljava/util/stream/Stream;
        10: .line 59
            invokedynamic get()Ljava/util/function/Supplier;
              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;
                  java/util/LinkedHashSet.<init>()V (8)
                  ()Ljava/util/LinkedHashSet;
            invokestatic java.util.stream.Collectors.toCollection:(Ljava/util/function/Supplier;)Ljava/util/stream/Collector;
            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;
                  java/util/Collections.unmodifiableSet(Ljava/util/Set;)Ljava/util/Set; (6)
                  (Ljava/util/LinkedHashSet;)Ljava/util/Set;
            invokestatic java.util.stream.Collectors.collectingAndThen:(Ljava/util/stream/Collector;Ljava/util/function/Function;)Ljava/util/stream/Collector;
            invokeinterface java.util.stream.Stream.collect:(Ljava/util/stream/Collector;)Ljava/lang/Object;
            checkcast java.util.Set
        11: .line 57
            putfield org.junit.jupiter.engine.descriptor.AbstractExtensionContext.tags:Ljava/util/Set;
        12: .line 61
            return
        end local 4 // org.junit.jupiter.engine.config.JupiterConfiguration configuration
        end local 3 // org.junit.platform.engine.TestDescriptor testDescriptor
        end local 2 // org.junit.platform.engine.EngineExecutionListener engineExecutionListener
        end local 1 // org.junit.jupiter.api.extension.ExtensionContext parent
        end local 0 // org.junit.jupiter.engine.descriptor.AbstractExtensionContext this
      LocalVariableTable:
        Start  End  Slot                     Name  Signature
            0   13     0                     this  Lorg/junit/jupiter/engine/descriptor/AbstractExtensionContext<TT;>;
            0   13     1                   parent  Lorg/junit/jupiter/api/extension/ExtensionContext;
            0   13     2  engineExecutionListener  Lorg/junit/platform/engine/EngineExecutionListener;
            0   13     3           testDescriptor  TT;
            0   13     4            configuration  Lorg/junit/jupiter/engine/config/JupiterConfiguration;
    Signature: (Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/platform/engine/EngineExecutionListener;TT;Lorg/junit/jupiter/engine/config/JupiterConfiguration;)V
    MethodParameters:
                         Name  Flags
      parent                   
      engineExecutionListener  
      testDescriptor           
      configuration            

  private org.junit.jupiter.engine.execution.ExtensionValuesStore createStore(org.junit.jupiter.api.extension.ExtensionContext);
    descriptor: (Lorg/junit/jupiter/api/extension/ExtensionContext;)Lorg/junit/jupiter/engine/execution/ExtensionValuesStore;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // org.junit.jupiter.engine.descriptor.AbstractExtensionContext this
        start local 1 // org.junit.jupiter.api.extension.ExtensionContext parent
         0: .line 64
            aconst_null
            astore 2 /* parentStore */
        start local 2 // org.junit.jupiter.engine.execution.ExtensionValuesStore parentStore
         1: .line 65
            aload 1 /* parent */
            ifnull 3
         2: .line 66
            aload 1 /* parent */
            checkcast org.junit.jupiter.engine.descriptor.AbstractExtensionContext
            getfield org.junit.jupiter.engine.descriptor.AbstractExtensionContext.valuesStore:Lorg/junit/jupiter/engine/execution/ExtensionValuesStore;
            astore 2 /* parentStore */
         3: .line 68
      StackMap locals: org.junit.jupiter.engine.execution.ExtensionValuesStore
      StackMap stack:
            new org.junit.jupiter.engine.execution.ExtensionValuesStore
            dup
            aload 2 /* parentStore */
            invokespecial org.junit.jupiter.engine.execution.ExtensionValuesStore.<init>:(Lorg/junit/jupiter/engine/execution/ExtensionValuesStore;)V
            areturn
        end local 2 // org.junit.jupiter.engine.execution.ExtensionValuesStore parentStore
        end local 1 // org.junit.jupiter.api.extension.ExtensionContext parent
        end local 0 // org.junit.jupiter.engine.descriptor.AbstractExtensionContext this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    4     0         this  Lorg/junit/jupiter/engine/descriptor/AbstractExtensionContext<TT;>;
            0    4     1       parent  Lorg/junit/jupiter/api/extension/ExtensionContext;
            1    4     2  parentStore  Lorg/junit/jupiter/engine/execution/ExtensionValuesStore;
    MethodParameters:
        Name  Flags
      parent  

  public void close();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.junit.jupiter.engine.descriptor.AbstractExtensionContext this
         0: .line 73
            aload 0 /* this */
            getfield org.junit.jupiter.engine.descriptor.AbstractExtensionContext.valuesStore:Lorg/junit/jupiter/engine/execution/ExtensionValuesStore;
            invokevirtual org.junit.jupiter.engine.execution.ExtensionValuesStore.closeAllStoredCloseableValues:()V
         1: .line 74
            return
        end local 0 // org.junit.jupiter.engine.descriptor.AbstractExtensionContext this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/junit/jupiter/engine/descriptor/AbstractExtensionContext<TT;>;

  public java.lang.String getUniqueId();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.junit.jupiter.engine.descriptor.AbstractExtensionContext this
         0: .line 78
            aload 0 /* this */
            invokevirtual org.junit.jupiter.engine.descriptor.AbstractExtensionContext.getTestDescriptor:()Lorg/junit/platform/engine/TestDescriptor;
            invokeinterface org.junit.platform.engine.TestDescriptor.getUniqueId:()Lorg/junit/platform/engine/UniqueId;
            invokevirtual org.junit.platform.engine.UniqueId.toString:()Ljava/lang/String;
            areturn
        end local 0 // org.junit.jupiter.engine.descriptor.AbstractExtensionContext this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/junit/jupiter/engine/descriptor/AbstractExtensionContext<TT;>;

  public java.lang.String getDisplayName();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.junit.jupiter.engine.descriptor.AbstractExtensionContext this
         0: .line 83
            aload 0 /* this */
            invokevirtual org.junit.jupiter.engine.descriptor.AbstractExtensionContext.getTestDescriptor:()Lorg/junit/platform/engine/TestDescriptor;
            invokeinterface org.junit.platform.engine.TestDescriptor.getDisplayName:()Ljava/lang/String;
            areturn
        end local 0 // org.junit.jupiter.engine.descriptor.AbstractExtensionContext this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/junit/jupiter/engine/descriptor/AbstractExtensionContext<TT;>;

  public void publishReportEntry(java.util.Map<java.lang.String, java.lang.String>);
    descriptor: (Ljava/util/Map;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.junit.jupiter.engine.descriptor.AbstractExtensionContext this
        start local 1 // java.util.Map values
         0: .line 88
            aload 0 /* this */
            getfield org.junit.jupiter.engine.descriptor.AbstractExtensionContext.engineExecutionListener:Lorg/junit/platform/engine/EngineExecutionListener;
            aload 0 /* this */
            getfield org.junit.jupiter.engine.descriptor.AbstractExtensionContext.testDescriptor:Lorg/junit/platform/engine/TestDescriptor;
            aload 1 /* values */
            invokestatic org.junit.platform.engine.reporting.ReportEntry.from:(Ljava/util/Map;)Lorg/junit/platform/engine/reporting/ReportEntry;
            invokeinterface org.junit.platform.engine.EngineExecutionListener.reportingEntryPublished:(Lorg/junit/platform/engine/TestDescriptor;Lorg/junit/platform/engine/reporting/ReportEntry;)V
         1: .line 89
            return
        end local 1 // java.util.Map values
        end local 0 // org.junit.jupiter.engine.descriptor.AbstractExtensionContext this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    this  Lorg/junit/jupiter/engine/descriptor/AbstractExtensionContext<TT;>;
            0    2     1  values  Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;
    Signature: (Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;)V
    MethodParameters:
        Name  Flags
      values  

  public java.util.Optional<org.junit.jupiter.api.extension.ExtensionContext> getParent();
    descriptor: ()Ljava/util/Optional;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.junit.jupiter.engine.descriptor.AbstractExtensionContext this
         0: .line 93
            aload 0 /* this */
            getfield org.junit.jupiter.engine.descriptor.AbstractExtensionContext.parent:Lorg/junit/jupiter/api/extension/ExtensionContext;
            invokestatic java.util.Optional.ofNullable:(Ljava/lang/Object;)Ljava/util/Optional;
            areturn
        end local 0 // org.junit.jupiter.engine.descriptor.AbstractExtensionContext this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/junit/jupiter/engine/descriptor/AbstractExtensionContext<TT;>;
    Signature: ()Ljava/util/Optional<Lorg/junit/jupiter/api/extension/ExtensionContext;>;

  public org.junit.jupiter.api.extension.ExtensionContext getRoot();
    descriptor: ()Lorg/junit/jupiter/api/extension/ExtensionContext;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.junit.jupiter.engine.descriptor.AbstractExtensionContext this
         0: .line 98
            aload 0 /* this */
            getfield org.junit.jupiter.engine.descriptor.AbstractExtensionContext.parent:Lorg/junit/jupiter/api/extension/ExtensionContext;
            ifnull 2
         1: .line 99
            aload 0 /* this */
            getfield org.junit.jupiter.engine.descriptor.AbstractExtensionContext.parent:Lorg/junit/jupiter/api/extension/ExtensionContext;
            invokeinterface org.junit.jupiter.api.extension.ExtensionContext.getRoot:()Lorg/junit/jupiter/api/extension/ExtensionContext;
            areturn
         2: .line 101
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            areturn
        end local 0 // org.junit.jupiter.engine.descriptor.AbstractExtensionContext this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/junit/jupiter/engine/descriptor/AbstractExtensionContext<TT;>;

  protected T getTestDescriptor();
    descriptor: ()Lorg/junit/platform/engine/TestDescriptor;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.junit.jupiter.engine.descriptor.AbstractExtensionContext this
         0: .line 105
            aload 0 /* this */
            getfield org.junit.jupiter.engine.descriptor.AbstractExtensionContext.testDescriptor:Lorg/junit/platform/engine/TestDescriptor;
            areturn
        end local 0 // org.junit.jupiter.engine.descriptor.AbstractExtensionContext this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/junit/jupiter/engine/descriptor/AbstractExtensionContext<TT;>;
    Signature: ()TT;

  public org.junit.jupiter.api.extension.ExtensionContext$Store getStore(org.junit.jupiter.api.extension.ExtensionContext$Namespace);
    descriptor: (Lorg/junit/jupiter/api/extension/ExtensionContext$Namespace;)Lorg/junit/jupiter/api/extension/ExtensionContext$Store;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // org.junit.jupiter.engine.descriptor.AbstractExtensionContext this
        start local 1 // org.junit.jupiter.api.extension.ExtensionContext$Namespace namespace
         0: .line 110
            aload 1 /* namespace */
            ldc "Namespace must not be null"
            invokestatic org.junit.platform.commons.util.Preconditions.notNull:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
            pop
         1: .line 111
            new org.junit.jupiter.engine.execution.NamespaceAwareStore
            dup
            aload 0 /* this */
            getfield org.junit.jupiter.engine.descriptor.AbstractExtensionContext.valuesStore:Lorg/junit/jupiter/engine/execution/ExtensionValuesStore;
            aload 1 /* namespace */
            invokespecial org.junit.jupiter.engine.execution.NamespaceAwareStore.<init>:(Lorg/junit/jupiter/engine/execution/ExtensionValuesStore;Lorg/junit/jupiter/api/extension/ExtensionContext$Namespace;)V
            areturn
        end local 1 // org.junit.jupiter.api.extension.ExtensionContext$Namespace namespace
        end local 0 // org.junit.jupiter.engine.descriptor.AbstractExtensionContext this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    2     0       this  Lorg/junit/jupiter/engine/descriptor/AbstractExtensionContext<TT;>;
            0    2     1  namespace  Lorg/junit/jupiter/api/extension/ExtensionContext$Namespace;
    MethodParameters:
           Name  Flags
      namespace  

  public java.util.Set<java.lang.String> getTags();
    descriptor: ()Ljava/util/Set;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.junit.jupiter.engine.descriptor.AbstractExtensionContext this
         0: .line 117
            new java.util.LinkedHashSet
            dup
            aload 0 /* this */
            getfield org.junit.jupiter.engine.descriptor.AbstractExtensionContext.tags:Ljava/util/Set;
            invokespecial java.util.LinkedHashSet.<init>:(Ljava/util/Collection;)V
            areturn
        end local 0 // org.junit.jupiter.engine.descriptor.AbstractExtensionContext this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/junit/jupiter/engine/descriptor/AbstractExtensionContext<TT;>;
    Signature: ()Ljava/util/Set<Ljava/lang/String;>;

  public java.util.Optional<java.lang.String> getConfigurationParameter(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/util/Optional;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.junit.jupiter.engine.descriptor.AbstractExtensionContext this
        start local 1 // java.lang.String key
         0: .line 122
            aload 0 /* this */
            getfield org.junit.jupiter.engine.descriptor.AbstractExtensionContext.configuration:Lorg/junit/jupiter/engine/config/JupiterConfiguration;
            aload 1 /* key */
            invokeinterface org.junit.jupiter.engine.config.JupiterConfiguration.getRawConfigurationParameter:(Ljava/lang/String;)Ljava/util/Optional;
            areturn
        end local 1 // java.lang.String key
        end local 0 // org.junit.jupiter.engine.descriptor.AbstractExtensionContext this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/junit/jupiter/engine/descriptor/AbstractExtensionContext<TT;>;
            0    1     1   key  Ljava/lang/String;
    Signature: (Ljava/lang/String;)Ljava/util/Optional<Ljava/lang/String;>;
    MethodParameters:
      Name  Flags
      key   
}
Signature: <T::Lorg/junit/platform/engine/TestDescriptor;>Ljava/lang/Object;Lorg/junit/jupiter/api/extension/ExtensionContext;Ljava/lang/AutoCloseable;
SourceFile: "AbstractExtensionContext.java"
InnerClasses:
  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