public class org.junit.jupiter.engine.extension.ExtensionRegistry
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.junit.jupiter.engine.extension.ExtensionRegistry
  super_class: java.lang.Object
{
  private static final org.junit.platform.commons.logging.Logger logger;
    descriptor: Lorg/junit/platform/commons/logging/Logger;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.util.List<org.junit.jupiter.api.extension.Extension> DEFAULT_EXTENSIONS;
    descriptor: Ljava/util/List;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/List<Lorg/junit/jupiter/api/extension/Extension;>;

  private final org.junit.jupiter.engine.extension.ExtensionRegistry parent;
    descriptor: Lorg/junit/jupiter/engine/extension/ExtensionRegistry;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.util.Set<java.lang.Class<? extends org.junit.jupiter.api.extension.Extension>> registeredExtensionTypes;
    descriptor: Ljava/util/Set;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Set<Ljava/lang/Class<+Lorg/junit/jupiter/api/extension/Extension;>;>;

  private final java.util.List<org.junit.jupiter.api.extension.Extension> registeredExtensions;
    descriptor: Ljava/util/List;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/List<Lorg/junit/jupiter/api/extension/Extension;>;

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=5, locals=0, args_size=0
         0: .line 51
            ldc Lorg/junit/jupiter/engine/extension/ExtensionRegistry;
            invokestatic org.junit.platform.commons.logging.LoggerFactory.getLogger:(Ljava/lang/Class;)Lorg/junit/platform/commons/logging/Logger;
            putstatic org.junit.jupiter.engine.extension.ExtensionRegistry.logger:Lorg/junit/platform/commons/logging/Logger;
         1: .line 53
            bipush 6
            anewarray org.junit.jupiter.api.extension.Extension
            dup
            iconst_0
         2: .line 54
            new org.junit.jupiter.engine.extension.DisabledCondition
            dup
            invokespecial org.junit.jupiter.engine.extension.DisabledCondition.<init>:()V
            aastore
            dup
            iconst_1
         3: .line 55
            new org.junit.jupiter.engine.extension.ScriptExecutionCondition
            dup
            invokespecial org.junit.jupiter.engine.extension.ScriptExecutionCondition.<init>:()V
            aastore
            dup
            iconst_2
         4: .line 56
            new org.junit.jupiter.engine.extension.TempDirectory
            dup
            invokespecial org.junit.jupiter.engine.extension.TempDirectory.<init>:()V
            aastore
            dup
            iconst_3
         5: .line 57
            new org.junit.jupiter.engine.extension.RepeatedTestExtension
            dup
            invokespecial org.junit.jupiter.engine.extension.RepeatedTestExtension.<init>:()V
            aastore
            dup
            iconst_4
         6: .line 58
            new org.junit.jupiter.engine.extension.TestInfoParameterResolver
            dup
            invokespecial org.junit.jupiter.engine.extension.TestInfoParameterResolver.<init>:()V
            aastore
            dup
            iconst_5
         7: .line 59
            new org.junit.jupiter.engine.extension.TestReporterParameterResolver
            dup
            invokespecial org.junit.jupiter.engine.extension.TestReporterParameterResolver.<init>:()V
            aastore
         8: .line 53
            invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
            invokestatic java.util.Collections.unmodifiableList:(Ljava/util/List;)Ljava/util/List;
            putstatic org.junit.jupiter.engine.extension.ExtensionRegistry.DEFAULT_EXTENSIONS:Ljava/util/List;
         9: .line 59
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public static org.junit.jupiter.engine.extension.ExtensionRegistry createRegistryWithDefaultExtensions(org.junit.jupiter.engine.config.JupiterConfiguration);
    descriptor: (Lorg/junit/jupiter/engine/config/JupiterConfiguration;)Lorg/junit/jupiter/engine/extension/ExtensionRegistry;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // org.junit.jupiter.engine.config.JupiterConfiguration configuration
         0: .line 75
            new org.junit.jupiter.engine.extension.ExtensionRegistry
            dup
            aconst_null
            invokespecial org.junit.jupiter.engine.extension.ExtensionRegistry.<init>:(Lorg/junit/jupiter/engine/extension/ExtensionRegistry;)V
            astore 1 /* extensionRegistry */
        start local 1 // org.junit.jupiter.engine.extension.ExtensionRegistry extensionRegistry
         1: .line 78
            getstatic org.junit.jupiter.engine.extension.ExtensionRegistry.logger:Lorg/junit/platform/commons/logging/Logger;
            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;
                  org/junit/jupiter/engine/extension/ExtensionRegistry.lambda$0()Ljava/lang/String; (6)
                  ()Ljava/lang/String;
            invokeinterface org.junit.platform.commons.logging.Logger.trace:(Ljava/util/function/Supplier;)V
         2: .line 83
            getstatic org.junit.jupiter.engine.extension.ExtensionRegistry.DEFAULT_EXTENSIONS:Ljava/util/List;
            aload 1 /* extensionRegistry */
            dup
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            pop
            invokedynamic accept(Lorg/junit/jupiter/engine/extension/ExtensionRegistry;)Ljava/util/function/Consumer;
              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
                  org/junit/jupiter/engine/extension/ExtensionRegistry.registerDefaultExtension(Lorg/junit/jupiter/api/extension/Extension;)V (7)
                  (Lorg/junit/jupiter/api/extension/Extension;)V
            invokeinterface java.util.List.forEach:(Ljava/util/function/Consumer;)V
         3: .line 85
            aload 0 /* configuration */
            invokeinterface org.junit.jupiter.engine.config.JupiterConfiguration.isExtensionAutoDetectionEnabled:()Z
            ifeq 5
         4: .line 86
            aload 1 /* extensionRegistry */
            invokestatic org.junit.jupiter.engine.extension.ExtensionRegistry.registerAutoDetectedExtensions:(Lorg/junit/jupiter/engine/extension/ExtensionRegistry;)V
         5: .line 89
      StackMap locals: org.junit.jupiter.engine.extension.ExtensionRegistry
      StackMap stack:
            aload 1 /* extensionRegistry */
            areturn
        end local 1 // org.junit.jupiter.engine.extension.ExtensionRegistry extensionRegistry
        end local 0 // org.junit.jupiter.engine.config.JupiterConfiguration configuration
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    6     0      configuration  Lorg/junit/jupiter/engine/config/JupiterConfiguration;
            1    6     1  extensionRegistry  Lorg/junit/jupiter/engine/extension/ExtensionRegistry;
    MethodParameters:
               Name  Flags
      configuration  

  private static void registerAutoDetectedExtensions(org.junit.jupiter.engine.extension.ExtensionRegistry);
    descriptor: (Lorg/junit/jupiter/engine/extension/ExtensionRegistry;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // org.junit.jupiter.engine.extension.ExtensionRegistry extensionRegistry
         0: .line 93
            ldc Lorg/junit/jupiter/api/extension/Extension;
            invokestatic org.junit.platform.commons.util.ClassLoaderUtils.getDefaultClassLoader:()Ljava/lang/ClassLoader;
            invokestatic java.util.ServiceLoader.load:(Ljava/lang/Class;Ljava/lang/ClassLoader;)Ljava/util/ServiceLoader;
            astore 1 /* extensions */
        start local 1 // java.lang.Iterable extensions
         1: .line 96
            getstatic org.junit.jupiter.engine.extension.ExtensionRegistry.logger:Lorg/junit/platform/commons/logging/Logger;
            aload 1 /* extensions */
            invokedynamic get(Ljava/lang/Iterable;)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;
                  org/junit/jupiter/engine/extension/ExtensionRegistry.lambda$3(Ljava/lang/Iterable;)Ljava/lang/String; (6)
                  ()Ljava/lang/String;
            invokeinterface org.junit.platform.commons.logging.Logger.config:(Ljava/util/function/Supplier;)V
         2: .line 102
            aload 1 /* extensions */
            aload 0 /* extensionRegistry */
            dup
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            pop
            invokedynamic accept(Lorg/junit/jupiter/engine/extension/ExtensionRegistry;)Ljava/util/function/Consumer;
              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
                  org/junit/jupiter/engine/extension/ExtensionRegistry.registerDefaultExtension(Lorg/junit/jupiter/api/extension/Extension;)V (7)
                  (Lorg/junit/jupiter/api/extension/Extension;)V
            invokeinterface java.lang.Iterable.forEach:(Ljava/util/function/Consumer;)V
         3: .line 103
            return
        end local 1 // java.lang.Iterable extensions
        end local 0 // org.junit.jupiter.engine.extension.ExtensionRegistry extensionRegistry
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    4     0  extensionRegistry  Lorg/junit/jupiter/engine/extension/ExtensionRegistry;
            1    4     1         extensions  Ljava/lang/Iterable<Lorg/junit/jupiter/api/extension/Extension;>;
    MethodParameters:
                   Name  Flags
      extensionRegistry  

  public static org.junit.jupiter.engine.extension.ExtensionRegistry createRegistryFrom(org.junit.jupiter.engine.extension.ExtensionRegistry, java.util.List<java.lang.Class<? extends org.junit.jupiter.api.extension.Extension>>);
    descriptor: (Lorg/junit/jupiter/engine/extension/ExtensionRegistry;Ljava/util/List;)Lorg/junit/jupiter/engine/extension/ExtensionRegistry;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // org.junit.jupiter.engine.extension.ExtensionRegistry parentRegistry
        start local 1 // java.util.List extensionTypes
         0: .line 117
            aload 0 /* parentRegistry */
            ldc "parentRegistry must not be null"
            invokestatic org.junit.platform.commons.util.Preconditions.notNull:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
            pop
         1: .line 119
            new org.junit.jupiter.engine.extension.ExtensionRegistry
            dup
            aload 0 /* parentRegistry */
            invokespecial org.junit.jupiter.engine.extension.ExtensionRegistry.<init>:(Lorg/junit/jupiter/engine/extension/ExtensionRegistry;)V
            astore 2 /* registry */
        start local 2 // org.junit.jupiter.engine.extension.ExtensionRegistry registry
         2: .line 120
            aload 1 /* extensionTypes */
            aload 2 /* registry */
            dup
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            pop
            invokedynamic accept(Lorg/junit/jupiter/engine/extension/ExtensionRegistry;)Ljava/util/function/Consumer;
              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
                  org/junit/jupiter/engine/extension/ExtensionRegistry.registerExtension(Ljava/lang/Class;)V (5)
                  (Ljava/lang/Class;)V
            invokeinterface java.util.List.forEach:(Ljava/util/function/Consumer;)V
         3: .line 121
            aload 2 /* registry */
            areturn
        end local 2 // org.junit.jupiter.engine.extension.ExtensionRegistry registry
        end local 1 // java.util.List extensionTypes
        end local 0 // org.junit.jupiter.engine.extension.ExtensionRegistry parentRegistry
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    4     0  parentRegistry  Lorg/junit/jupiter/engine/extension/ExtensionRegistry;
            0    4     1  extensionTypes  Ljava/util/List<Ljava/lang/Class<+Lorg/junit/jupiter/api/extension/Extension;>;>;
            2    4     2        registry  Lorg/junit/jupiter/engine/extension/ExtensionRegistry;
    Signature: (Lorg/junit/jupiter/engine/extension/ExtensionRegistry;Ljava/util/List<Ljava/lang/Class<+Lorg/junit/jupiter/api/extension/Extension;>;>;)Lorg/junit/jupiter/engine/extension/ExtensionRegistry;
    MethodParameters:
                Name  Flags
      parentRegistry  
      extensionTypes  

  private void <init>(org.junit.jupiter.engine.extension.ExtensionRegistry);
    descriptor: (Lorg/junit/jupiter/engine/extension/ExtensionRegistry;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.junit.jupiter.engine.extension.ExtensionRegistry this
        start local 1 // org.junit.jupiter.engine.extension.ExtensionRegistry parent
         0: .line 130
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 126
            aload 0 /* this */
            new java.util.LinkedHashSet
            dup
            invokespecial java.util.LinkedHashSet.<init>:()V
            putfield org.junit.jupiter.engine.extension.ExtensionRegistry.registeredExtensionTypes:Ljava/util/Set;
         2: .line 128
            aload 0 /* this */
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            putfield org.junit.jupiter.engine.extension.ExtensionRegistry.registeredExtensions:Ljava/util/List;
         3: .line 131
            aload 0 /* this */
            aload 1 /* parent */
            putfield org.junit.jupiter.engine.extension.ExtensionRegistry.parent:Lorg/junit/jupiter/engine/extension/ExtensionRegistry;
         4: .line 132
            return
        end local 1 // org.junit.jupiter.engine.extension.ExtensionRegistry parent
        end local 0 // org.junit.jupiter.engine.extension.ExtensionRegistry this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    5     0    this  Lorg/junit/jupiter/engine/extension/ExtensionRegistry;
            0    5     1  parent  Lorg/junit/jupiter/engine/extension/ExtensionRegistry;
    MethodParameters:
        Name  Flags
      parent  

  public <E extends org.junit.jupiter.api.extension.Extension> java.util.stream.Stream<E> stream(java.lang.Class<E>);
    descriptor: (Ljava/lang/Class;)Ljava/util/stream/Stream;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.junit.jupiter.engine.extension.ExtensionRegistry this
        start local 1 // java.lang.Class extensionType
         0: .line 143
            aload 0 /* this */
            getfield org.junit.jupiter.engine.extension.ExtensionRegistry.parent:Lorg/junit/jupiter/engine/extension/ExtensionRegistry;
            ifnonnull 2
         1: .line 144
            aload 0 /* this */
            aload 1 /* extensionType */
            invokevirtual org.junit.jupiter.engine.extension.ExtensionRegistry.streamLocal:(Ljava/lang/Class;)Ljava/util/stream/Stream;
            areturn
         2: .line 146
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.junit.jupiter.engine.extension.ExtensionRegistry.parent:Lorg/junit/jupiter/engine/extension/ExtensionRegistry;
            aload 1 /* extensionType */
            invokevirtual org.junit.jupiter.engine.extension.ExtensionRegistry.stream:(Ljava/lang/Class;)Ljava/util/stream/Stream;
            aload 0 /* this */
            aload 1 /* extensionType */
            invokevirtual org.junit.jupiter.engine.extension.ExtensionRegistry.streamLocal:(Ljava/lang/Class;)Ljava/util/stream/Stream;
            invokestatic java.util.stream.Stream.concat:(Ljava/util/stream/Stream;Ljava/util/stream/Stream;)Ljava/util/stream/Stream;
            areturn
        end local 1 // java.lang.Class extensionType
        end local 0 // org.junit.jupiter.engine.extension.ExtensionRegistry this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    3     0           this  Lorg/junit/jupiter/engine/extension/ExtensionRegistry;
            0    3     1  extensionType  Ljava/lang/Class<TE;>;
    Signature: <E::Lorg/junit/jupiter/api/extension/Extension;>(Ljava/lang/Class<TE;>;)Ljava/util/stream/Stream<TE;>;
    MethodParameters:
               Name  Flags
      extensionType  

  private <E extends org.junit.jupiter.api.extension.Extension> java.util.stream.Stream<E> streamLocal(java.lang.Class<E>);
    descriptor: (Ljava/lang/Class;)Ljava/util/stream/Stream;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.junit.jupiter.engine.extension.ExtensionRegistry this
        start local 1 // java.lang.Class extensionType
         0: .line 160
            aload 0 /* this */
            getfield org.junit.jupiter.engine.extension.ExtensionRegistry.registeredExtensions:Ljava/util/List;
            invokeinterface java.util.List.stream:()Ljava/util/stream/Stream;
         1: .line 161
            aload 1 /* extensionType */
            dup
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            pop
            invokedynamic test(Ljava/lang/Class;)Ljava/util/function/Predicate;
              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;)Z
                  java/lang/Class.isInstance(Ljava/lang/Object;)Z (5)
                  (Lorg/junit/jupiter/api/extension/Extension;)Z
            invokeinterface java.util.stream.Stream.filter:(Ljava/util/function/Predicate;)Ljava/util/stream/Stream;
         2: .line 162
            aload 1 /* extensionType */
            dup
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            pop
            invokedynamic apply(Ljava/lang/Class;)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/lang/Class.cast(Ljava/lang/Object;)Ljava/lang/Object; (5)
                  (Lorg/junit/jupiter/api/extension/Extension;)Lorg/junit/jupiter/api/extension/Extension;
            invokeinterface java.util.stream.Stream.map:(Ljava/util/function/Function;)Ljava/util/stream/Stream;
         3: .line 160
            areturn
        end local 1 // java.lang.Class extensionType
        end local 0 // org.junit.jupiter.engine.extension.ExtensionRegistry this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    4     0           this  Lorg/junit/jupiter/engine/extension/ExtensionRegistry;
            0    4     1  extensionType  Ljava/lang/Class<TE;>;
    Signature: <E::Lorg/junit/jupiter/api/extension/Extension;>(Ljava/lang/Class<TE;>;)Ljava/util/stream/Stream<TE;>;
    MethodParameters:
               Name  Flags
      extensionType  

  public <E extends org.junit.jupiter.api.extension.Extension> java.util.List<E> getExtensions(java.lang.Class<E>);
    descriptor: (Ljava/lang/Class;)Ljava/util/List;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.junit.jupiter.engine.extension.ExtensionRegistry this
        start local 1 // java.lang.Class extensionType
         0: .line 175
            aload 0 /* this */
            aload 1 /* extensionType */
            invokevirtual org.junit.jupiter.engine.extension.ExtensionRegistry.stream:(Ljava/lang/Class;)Ljava/util/stream/Stream;
            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/ArrayList.<init>()V (8)
                  ()Ljava/util/ArrayList;
            invokestatic java.util.stream.Collectors.toCollection:(Ljava/util/function/Supplier;)Ljava/util/stream/Collector;
            invokeinterface java.util.stream.Stream.collect:(Ljava/util/stream/Collector;)Ljava/lang/Object;
            checkcast java.util.List
            areturn
        end local 1 // java.lang.Class extensionType
        end local 0 // org.junit.jupiter.engine.extension.ExtensionRegistry this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    1     0           this  Lorg/junit/jupiter/engine/extension/ExtensionRegistry;
            0    1     1  extensionType  Ljava/lang/Class<TE;>;
    Signature: <E::Lorg/junit/jupiter/api/extension/Extension;>(Ljava/lang/Class<TE;>;)Ljava/util/List<TE;>;
    MethodParameters:
               Name  Flags
      extensionType  

  public <E extends org.junit.jupiter.api.extension.Extension> java.util.List<E> getReversedExtensions(java.lang.Class<E>);
    descriptor: (Ljava/lang/Class;)Ljava/util/List;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // org.junit.jupiter.engine.extension.ExtensionRegistry this
        start local 1 // java.lang.Class extensionType
         0: .line 187
            aload 0 /* this */
            aload 1 /* extensionType */
            invokevirtual org.junit.jupiter.engine.extension.ExtensionRegistry.getExtensions:(Ljava/lang/Class;)Ljava/util/List;
            astore 2 /* extensions */
        start local 2 // java.util.List extensions
         1: .line 188
            aload 2 /* extensions */
            invokestatic java.util.Collections.reverse:(Ljava/util/List;)V
         2: .line 189
            aload 2 /* extensions */
            areturn
        end local 2 // java.util.List extensions
        end local 1 // java.lang.Class extensionType
        end local 0 // org.junit.jupiter.engine.extension.ExtensionRegistry this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    3     0           this  Lorg/junit/jupiter/engine/extension/ExtensionRegistry;
            0    3     1  extensionType  Ljava/lang/Class<TE;>;
            1    3     2     extensions  Ljava/util/List<TE;>;
    Signature: <E::Lorg/junit/jupiter/api/extension/Extension;>(Ljava/lang/Class<TE;>;)Ljava/util/List<TE;>;
    MethodParameters:
               Name  Flags
      extensionType  

  private boolean isAlreadyRegistered(java.lang.Class<? extends org.junit.jupiter.api.extension.Extension>);
    descriptor: (Ljava/lang/Class;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.junit.jupiter.engine.extension.ExtensionRegistry this
        start local 1 // java.lang.Class extensionType
         0: .line 197
            aload 0 /* this */
            getfield org.junit.jupiter.engine.extension.ExtensionRegistry.registeredExtensionTypes:Ljava/util/Set;
            aload 1 /* extensionType */
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifne 3
         1: .line 198
            aload 0 /* this */
            getfield org.junit.jupiter.engine.extension.ExtensionRegistry.parent:Lorg/junit/jupiter/engine/extension/ExtensionRegistry;
            ifnull 2
            aload 0 /* this */
            getfield org.junit.jupiter.engine.extension.ExtensionRegistry.parent:Lorg/junit/jupiter/engine/extension/ExtensionRegistry;
            aload 1 /* extensionType */
            invokevirtual org.junit.jupiter.engine.extension.ExtensionRegistry.isAlreadyRegistered:(Ljava/lang/Class;)Z
            ifne 3
         2: .line 197
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
      StackMap locals:
      StackMap stack:
         3: iconst_1
            ireturn
        end local 1 // java.lang.Class extensionType
        end local 0 // org.junit.jupiter.engine.extension.ExtensionRegistry this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    4     0           this  Lorg/junit/jupiter/engine/extension/ExtensionRegistry;
            0    4     1  extensionType  Ljava/lang/Class<+Lorg/junit/jupiter/api/extension/Extension;>;
    Signature: (Ljava/lang/Class<+Lorg/junit/jupiter/api/extension/Extension;>;)Z
    MethodParameters:
               Name  Flags
      extensionType  

  void registerExtension(java.lang.Class<? extends org.junit.jupiter.api.extension.Extension>);
    descriptor: (Ljava/lang/Class;)V
    flags: (0x0000) 
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.junit.jupiter.engine.extension.ExtensionRegistry this
        start local 1 // java.lang.Class extensionType
         0: .line 211
            aload 0 /* this */
            aload 1 /* extensionType */
            invokevirtual org.junit.jupiter.engine.extension.ExtensionRegistry.isAlreadyRegistered:(Ljava/lang/Class;)Z
            ifne 3
         1: .line 212
            aload 0 /* this */
            aload 1 /* extensionType */
            iconst_0
            anewarray java.lang.Object
            invokestatic org.junit.platform.commons.util.ReflectionUtils.newInstance:(Ljava/lang/Class;[Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.junit.jupiter.api.extension.Extension
            invokevirtual org.junit.jupiter.engine.extension.ExtensionRegistry.registerExtension:(Lorg/junit/jupiter/api/extension/Extension;)V
         2: .line 213
            aload 0 /* this */
            getfield org.junit.jupiter.engine.extension.ExtensionRegistry.registeredExtensionTypes:Ljava/util/Set;
            aload 1 /* extensionType */
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
         3: .line 215
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.lang.Class extensionType
        end local 0 // org.junit.jupiter.engine.extension.ExtensionRegistry this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    4     0           this  Lorg/junit/jupiter/engine/extension/ExtensionRegistry;
            0    4     1  extensionType  Ljava/lang/Class<+Lorg/junit/jupiter/api/extension/Extension;>;
    Signature: (Ljava/lang/Class<+Lorg/junit/jupiter/api/extension/Extension;>;)V
    MethodParameters:
               Name  Flags
      extensionType  

  private void registerDefaultExtension(org.junit.jupiter.api.extension.Extension);
    descriptor: (Lorg/junit/jupiter/api/extension/Extension;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.junit.jupiter.engine.extension.ExtensionRegistry this
        start local 1 // org.junit.jupiter.api.extension.Extension extension
         0: .line 218
            aload 0 /* this */
            getfield org.junit.jupiter.engine.extension.ExtensionRegistry.registeredExtensions:Ljava/util/List;
            aload 1 /* extension */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         1: .line 219
            aload 0 /* this */
            getfield org.junit.jupiter.engine.extension.ExtensionRegistry.registeredExtensionTypes:Ljava/util/Set;
            aload 1 /* extension */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
         2: .line 220
            return
        end local 1 // org.junit.jupiter.api.extension.Extension extension
        end local 0 // org.junit.jupiter.engine.extension.ExtensionRegistry this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    3     0       this  Lorg/junit/jupiter/engine/extension/ExtensionRegistry;
            0    3     1  extension  Lorg/junit/jupiter/api/extension/Extension;
    MethodParameters:
           Name  Flags
      extension  

  private void registerExtension(org.junit.jupiter.api.extension.Extension);
    descriptor: (Lorg/junit/jupiter/api/extension/Extension;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.junit.jupiter.engine.extension.ExtensionRegistry this
        start local 1 // org.junit.jupiter.api.extension.Extension extension
         0: .line 223
            aload 0 /* this */
            aload 1 /* extension */
            aload 1 /* extension */
            invokevirtual org.junit.jupiter.engine.extension.ExtensionRegistry.registerExtension:(Lorg/junit/jupiter/api/extension/Extension;Ljava/lang/Object;)V
         1: .line 224
            return
        end local 1 // org.junit.jupiter.api.extension.Extension extension
        end local 0 // org.junit.jupiter.engine.extension.ExtensionRegistry this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    2     0       this  Lorg/junit/jupiter/engine/extension/ExtensionRegistry;
            0    2     1  extension  Lorg/junit/jupiter/api/extension/Extension;
    MethodParameters:
           Name  Flags
      extension  

  public void registerExtension(org.junit.jupiter.api.extension.Extension, java.lang.Object);
    descriptor: (Lorg/junit/jupiter/api/extension/Extension;Ljava/lang/Object;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // org.junit.jupiter.engine.extension.ExtensionRegistry this
        start local 1 // org.junit.jupiter.api.extension.Extension extension
        start local 2 // java.lang.Object source
         0: .line 247
            aload 1 /* extension */
            ldc "Extension must not be null"
            invokestatic org.junit.platform.commons.util.Preconditions.notNull:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
            pop
         1: .line 248
            aload 2 /* source */
            ldc "source must not be null"
            invokestatic org.junit.platform.commons.util.Preconditions.notNull:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
            pop
         2: .line 250
            getstatic org.junit.jupiter.engine.extension.ExtensionRegistry.logger:Lorg/junit/platform/commons/logging/Logger;
            aload 1 /* extension */
            aload 2 /* source */
            invokedynamic get(Lorg/junit/jupiter/api/extension/Extension;Ljava/lang/Object;)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;
                  org/junit/jupiter/engine/extension/ExtensionRegistry.lambda$10(Lorg/junit/jupiter/api/extension/Extension;Ljava/lang/Object;)Ljava/lang/String; (6)
                  ()Ljava/lang/String;
            invokeinterface org.junit.platform.commons.logging.Logger.trace:(Ljava/util/function/Supplier;)V
         3: .line 252
            aload 0 /* this */
            getfield org.junit.jupiter.engine.extension.ExtensionRegistry.registeredExtensions:Ljava/util/List;
            aload 1 /* extension */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         4: .line 253
            return
        end local 2 // java.lang.Object source
        end local 1 // org.junit.jupiter.api.extension.Extension extension
        end local 0 // org.junit.jupiter.engine.extension.ExtensionRegistry this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    5     0       this  Lorg/junit/jupiter/engine/extension/ExtensionRegistry;
            0    5     1  extension  Lorg/junit/jupiter/api/extension/Extension;
            0    5     2     source  Ljava/lang/Object;
    MethodParameters:
           Name  Flags
      extension  
      source     

  private static java.lang.String lambda$0();
    descriptor: ()Ljava/lang/String;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=0, args_size=0
         0: .line 78
            new java.lang.StringBuilder
            dup
            ldc "Registering default extensions: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            getstatic org.junit.jupiter.engine.extension.ExtensionRegistry.DEFAULT_EXTENSIONS:Ljava/util/List;
            invokeinterface java.util.List.stream:()Ljava/util/stream/Stream;
         1: .line 79
            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/jupiter/engine/extension/ExtensionRegistry.lambda$1(Lorg/junit/jupiter/api/extension/Extension;)Ljava/lang/String; (6)
                  (Lorg/junit/jupiter/api/extension/Extension;)Ljava/lang/String;
            invokeinterface java.util.stream.Stream.map:(Ljava/util/function/Function;)Ljava/util/stream/Stream;
         2: .line 80
            invokestatic java.util.stream.Collectors.toList:()Ljava/util/stream/Collector;
            invokeinterface java.util.stream.Stream.collect:(Ljava/util/stream/Collector;)Ljava/lang/Object;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
         3: .line 78
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         4: .line 80
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private static java.lang.String lambda$3(java.lang.Iterable);
    descriptor: (Ljava/lang/Iterable;)Ljava/lang/String;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=1, args_size=1
         0: .line 96
            new java.lang.StringBuilder
            dup
            ldc "Registering auto-detected extensions: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         1: .line 97
            aload 0
            invokeinterface java.lang.Iterable.spliterator:()Ljava/util/Spliterator;
            iconst_0
            invokestatic java.util.stream.StreamSupport.stream:(Ljava/util/Spliterator;Z)Ljava/util/stream/Stream;
         2: .line 98
            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/jupiter/engine/extension/ExtensionRegistry.lambda$4(Lorg/junit/jupiter/api/extension/Extension;)Ljava/lang/String; (6)
                  (Lorg/junit/jupiter/api/extension/Extension;)Ljava/lang/String;
            invokeinterface java.util.stream.Stream.map:(Ljava/util/function/Function;)Ljava/util/stream/Stream;
         3: .line 99
            invokestatic java.util.stream.Collectors.toList:()Ljava/util/stream/Collector;
            invokeinterface java.util.stream.Stream.collect:(Ljava/util/stream/Collector;)Ljava/lang/Object;
         4: .line 97
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
         5: .line 96
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         6: .line 99
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private static java.lang.String lambda$10(org.junit.jupiter.api.extension.Extension, java.lang.Object);
    descriptor: (Lorg/junit/jupiter/api/extension/Extension;Ljava/lang/Object;)Ljava/lang/String;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=5, locals=2, args_size=2
         0: .line 250
            ldc "Registering extension [%s] from source [%s]."
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0
            aastore
            dup
            iconst_1
            aload 1
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private static java.lang.String lambda$1(org.junit.jupiter.api.extension.Extension);
    descriptor: (Lorg/junit/jupiter/api/extension/Extension;)Ljava/lang/String;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.junit.jupiter.api.extension.Extension extension
         0: .line 79
            aload 0 /* extension */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            areturn
        end local 0 // org.junit.jupiter.api.extension.Extension extension
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    1     0  extension  Lorg/junit/jupiter/api/extension/Extension;

  private static java.lang.String lambda$4(org.junit.jupiter.api.extension.Extension);
    descriptor: (Lorg/junit/jupiter/api/extension/Extension;)Ljava/lang/String;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.junit.jupiter.api.extension.Extension extension
         0: .line 98
            aload 0 /* extension */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            areturn
        end local 0 // org.junit.jupiter.api.extension.Extension extension
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    1     0  extension  Lorg/junit/jupiter/api/extension/Extension;
}
SourceFile: "ExtensionRegistry.java"
InnerClasses:
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
  public final Status = org.apiguardian.api.API$Status of org.apiguardian.api.API
    RuntimeVisibleAnnotations: 
      org.apiguardian.api.API(status = org.apiguardian.api.API$Status.INTERNAL:Lorg/apiguardian/api/API$Status;, since = "5.0")