public class org.junit.runners.BlockJUnit4ClassRunner extends org.junit.runners.ParentRunner<org.junit.runners.model.FrameworkMethod>
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.junit.runners.BlockJUnit4ClassRunner
  super_class: org.junit.runners.ParentRunner
{
  private static org.junit.validator.TestClassValidator PUBLIC_CLASS_VALIDATOR;
    descriptor: Lorg/junit/validator/TestClassValidator;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  private final java.util.concurrent.ConcurrentMap<org.junit.runners.model.FrameworkMethod, org.junit.runner.Description> methodDescriptions;
    descriptor: Ljava/util/concurrent/ConcurrentMap;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/concurrent/ConcurrentMap<Lorg/junit/runners/model/FrameworkMethod;Lorg/junit/runner/Description;>;

  private static final java.lang.ThreadLocal<org.junit.runners.RuleContainer> CURRENT_RULE_CONTAINER;
    descriptor: Ljava/lang/ThreadLocal;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/lang/ThreadLocal<Lorg/junit/runners/RuleContainer;>;

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 64
            new org.junit.validator.PublicClassValidator
            dup
            invokespecial org.junit.validator.PublicClassValidator.<init>:()V
            putstatic org.junit.runners.BlockJUnit4ClassRunner.PUBLIC_CLASS_VALIDATOR:Lorg/junit/validator/TestClassValidator;
         1: .line 457
            new java.lang.ThreadLocal
            dup
            invokespecial java.lang.ThreadLocal.<init>:()V
         2: .line 456
            putstatic org.junit.runners.BlockJUnit4ClassRunner.CURRENT_RULE_CONTAINER:Ljava/lang/ThreadLocal;
         3: .line 457
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.junit.runners.BlockJUnit4ClassRunner this
        start local 1 // java.lang.Class testClass
         0: .line 74
            aload 0 /* this */
            aload 1 /* testClass */
            invokespecial org.junit.runners.ParentRunner.<init>:(Ljava/lang/Class;)V
         1: .line 66
            aload 0 /* this */
            new java.util.concurrent.ConcurrentHashMap
            dup
            invokespecial java.util.concurrent.ConcurrentHashMap.<init>:()V
            putfield org.junit.runners.BlockJUnit4ClassRunner.methodDescriptions:Ljava/util/concurrent/ConcurrentMap;
         2: .line 75
            return
        end local 1 // java.lang.Class testClass
        end local 0 // org.junit.runners.BlockJUnit4ClassRunner this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    3     0       this  Lorg/junit/runners/BlockJUnit4ClassRunner;
            0    3     1  testClass  Ljava/lang/Class<*>;
    Exceptions:
      throws org.junit.runners.model.InitializationError
    Signature: (Ljava/lang/Class<*>;)V
    MethodParameters:
           Name  Flags
      testClass  

  protected void <init>(org.junit.runners.model.TestClass);
    descriptor: (Lorg/junit/runners/model/TestClass;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.junit.runners.BlockJUnit4ClassRunner this
        start local 1 // org.junit.runners.model.TestClass testClass
         0: .line 84
            aload 0 /* this */
            aload 1 /* testClass */
            invokespecial org.junit.runners.ParentRunner.<init>:(Lorg/junit/runners/model/TestClass;)V
         1: .line 66
            aload 0 /* this */
            new java.util.concurrent.ConcurrentHashMap
            dup
            invokespecial java.util.concurrent.ConcurrentHashMap.<init>:()V
            putfield org.junit.runners.BlockJUnit4ClassRunner.methodDescriptions:Ljava/util/concurrent/ConcurrentMap;
         2: .line 85
            return
        end local 1 // org.junit.runners.model.TestClass testClass
        end local 0 // org.junit.runners.BlockJUnit4ClassRunner this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    3     0       this  Lorg/junit/runners/BlockJUnit4ClassRunner;
            0    3     1  testClass  Lorg/junit/runners/model/TestClass;
    Exceptions:
      throws org.junit.runners.model.InitializationError
    MethodParameters:
           Name  Flags
      testClass  

  protected void runChild(org.junit.runners.model.FrameworkMethod, org.junit.runner.notification.RunNotifier);
    descriptor: (Lorg/junit/runners/model/FrameworkMethod;Lorg/junit/runner/notification/RunNotifier;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=5, args_size=3
        start local 0 // org.junit.runners.BlockJUnit4ClassRunner this
        start local 1 // org.junit.runners.model.FrameworkMethod method
        start local 2 // org.junit.runner.notification.RunNotifier notifier
         0: .line 93
            aload 0 /* this */
            aload 1 /* method */
            invokevirtual org.junit.runners.BlockJUnit4ClassRunner.describeChild:(Lorg/junit/runners/model/FrameworkMethod;)Lorg/junit/runner/Description;
            astore 3 /* description */
        start local 3 // org.junit.runner.Description description
         1: .line 94
            aload 0 /* this */
            aload 1 /* method */
            invokevirtual org.junit.runners.BlockJUnit4ClassRunner.isIgnored:(Lorg/junit/runners/model/FrameworkMethod;)Z
            ifeq 4
         2: .line 95
            aload 2 /* notifier */
            aload 3 /* description */
            invokevirtual org.junit.runner.notification.RunNotifier.fireTestIgnored:(Lorg/junit/runner/Description;)V
         3: .line 96
            goto 6
         4: .line 97
      StackMap locals: org.junit.runner.Description
      StackMap stack:
            new org.junit.runners.BlockJUnit4ClassRunner$1
            dup
            aload 0 /* this */
            aload 1 /* method */
            invokespecial org.junit.runners.BlockJUnit4ClassRunner$1.<init>:(Lorg/junit/runners/BlockJUnit4ClassRunner;Lorg/junit/runners/model/FrameworkMethod;)V
            astore 4 /* statement */
        start local 4 // org.junit.runners.model.Statement statement
         5: .line 103
            aload 0 /* this */
            aload 4 /* statement */
            aload 3 /* description */
            aload 2 /* notifier */
            invokevirtual org.junit.runners.BlockJUnit4ClassRunner.runLeaf:(Lorg/junit/runners/model/Statement;Lorg/junit/runner/Description;Lorg/junit/runner/notification/RunNotifier;)V
        end local 4 // org.junit.runners.model.Statement statement
         6: .line 105
      StackMap locals:
      StackMap stack:
            return
        end local 3 // org.junit.runner.Description description
        end local 2 // org.junit.runner.notification.RunNotifier notifier
        end local 1 // org.junit.runners.model.FrameworkMethod method
        end local 0 // org.junit.runners.BlockJUnit4ClassRunner this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    7     0         this  Lorg/junit/runners/BlockJUnit4ClassRunner;
            0    7     1       method  Lorg/junit/runners/model/FrameworkMethod;
            0    7     2     notifier  Lorg/junit/runner/notification/RunNotifier;
            1    7     3  description  Lorg/junit/runner/Description;
            5    6     4    statement  Lorg/junit/runners/model/Statement;
    MethodParameters:
          Name  Flags
      method    final
      notifier  

  protected boolean isIgnored(org.junit.runners.model.FrameworkMethod);
    descriptor: (Lorg/junit/runners/model/FrameworkMethod;)Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.junit.runners.BlockJUnit4ClassRunner this
        start local 1 // org.junit.runners.model.FrameworkMethod child
         0: .line 113
            aload 1 /* child */
            ldc Lorg/junit/Ignore;
            invokevirtual org.junit.runners.model.FrameworkMethod.getAnnotation:(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
            ifnull 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 1 // org.junit.runners.model.FrameworkMethod child
        end local 0 // org.junit.runners.BlockJUnit4ClassRunner this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    2     0   this  Lorg/junit/runners/BlockJUnit4ClassRunner;
            0    2     1  child  Lorg/junit/runners/model/FrameworkMethod;
    MethodParameters:
       Name  Flags
      child  

  protected org.junit.runner.Description describeChild(org.junit.runners.model.FrameworkMethod);
    descriptor: (Lorg/junit/runners/model/FrameworkMethod;)Lorg/junit/runner/Description;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // org.junit.runners.BlockJUnit4ClassRunner this
        start local 1 // org.junit.runners.model.FrameworkMethod method
         0: .line 118
            aload 0 /* this */
            getfield org.junit.runners.BlockJUnit4ClassRunner.methodDescriptions:Ljava/util/concurrent/ConcurrentMap;
            aload 1 /* method */
            invokeinterface java.util.concurrent.ConcurrentMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.junit.runner.Description
            astore 2 /* description */
        start local 2 // org.junit.runner.Description description
         1: .line 120
            aload 2 /* description */
            ifnonnull 6
         2: .line 121
            aload 0 /* this */
            invokevirtual org.junit.runners.BlockJUnit4ClassRunner.getTestClass:()Lorg/junit/runners/model/TestClass;
            invokevirtual org.junit.runners.model.TestClass.getJavaClass:()Ljava/lang/Class;
         3: .line 122
            aload 0 /* this */
            aload 1 /* method */
            invokevirtual org.junit.runners.BlockJUnit4ClassRunner.testName:(Lorg/junit/runners/model/FrameworkMethod;)Ljava/lang/String;
            aload 1 /* method */
            invokevirtual org.junit.runners.model.FrameworkMethod.getAnnotations:()[Ljava/lang/annotation/Annotation;
         4: .line 121
            invokestatic org.junit.runner.Description.createTestDescription:(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/annotation/Annotation;)Lorg/junit/runner/Description;
            astore 2 /* description */
         5: .line 123
            aload 0 /* this */
            getfield org.junit.runners.BlockJUnit4ClassRunner.methodDescriptions:Ljava/util/concurrent/ConcurrentMap;
            aload 1 /* method */
            aload 2 /* description */
            invokeinterface java.util.concurrent.ConcurrentMap.putIfAbsent:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         6: .line 126
      StackMap locals: org.junit.runner.Description
      StackMap stack:
            aload 2 /* description */
            areturn
        end local 2 // org.junit.runner.Description description
        end local 1 // org.junit.runners.model.FrameworkMethod method
        end local 0 // org.junit.runners.BlockJUnit4ClassRunner this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    7     0         this  Lorg/junit/runners/BlockJUnit4ClassRunner;
            0    7     1       method  Lorg/junit/runners/model/FrameworkMethod;
            1    7     2  description  Lorg/junit/runner/Description;
    MethodParameters:
        Name  Flags
      method  

  protected java.util.List<org.junit.runners.model.FrameworkMethod> getChildren();
    descriptor: ()Ljava/util/List;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.junit.runners.BlockJUnit4ClassRunner this
         0: .line 131
            aload 0 /* this */
            invokevirtual org.junit.runners.BlockJUnit4ClassRunner.computeTestMethods:()Ljava/util/List;
            areturn
        end local 0 // org.junit.runners.BlockJUnit4ClassRunner this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/junit/runners/BlockJUnit4ClassRunner;
    Signature: ()Ljava/util/List<Lorg/junit/runners/model/FrameworkMethod;>;

  protected java.util.List<org.junit.runners.model.FrameworkMethod> computeTestMethods();
    descriptor: ()Ljava/util/List;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.junit.runners.BlockJUnit4ClassRunner this
         0: .line 144
            aload 0 /* this */
            invokevirtual org.junit.runners.BlockJUnit4ClassRunner.getTestClass:()Lorg/junit/runners/model/TestClass;
            ldc Lorg/junit/Test;
            invokevirtual org.junit.runners.model.TestClass.getAnnotatedMethods:(Ljava/lang/Class;)Ljava/util/List;
            areturn
        end local 0 // org.junit.runners.BlockJUnit4ClassRunner this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/junit/runners/BlockJUnit4ClassRunner;
    Signature: ()Ljava/util/List<Lorg/junit/runners/model/FrameworkMethod;>;

  protected void collectInitializationErrors(java.util.List<java.lang.Throwable>);
    descriptor: (Ljava/util/List;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.junit.runners.BlockJUnit4ClassRunner this
        start local 1 // java.util.List errors
         0: .line 149
            aload 0 /* this */
            aload 1 /* errors */
            invokespecial org.junit.runners.ParentRunner.collectInitializationErrors:(Ljava/util/List;)V
         1: .line 151
            aload 0 /* this */
            aload 1 /* errors */
            invokevirtual org.junit.runners.BlockJUnit4ClassRunner.validatePublicConstructor:(Ljava/util/List;)V
         2: .line 152
            aload 0 /* this */
            aload 1 /* errors */
            invokevirtual org.junit.runners.BlockJUnit4ClassRunner.validateNoNonStaticInnerClass:(Ljava/util/List;)V
         3: .line 153
            aload 0 /* this */
            aload 1 /* errors */
            invokevirtual org.junit.runners.BlockJUnit4ClassRunner.validateConstructor:(Ljava/util/List;)V
         4: .line 154
            aload 0 /* this */
            aload 1 /* errors */
            invokevirtual org.junit.runners.BlockJUnit4ClassRunner.validateInstanceMethods:(Ljava/util/List;)V
         5: .line 155
            aload 0 /* this */
            aload 1 /* errors */
            invokevirtual org.junit.runners.BlockJUnit4ClassRunner.validateFields:(Ljava/util/List;)V
         6: .line 156
            aload 0 /* this */
            aload 1 /* errors */
            invokevirtual org.junit.runners.BlockJUnit4ClassRunner.validateMethods:(Ljava/util/List;)V
         7: .line 157
            return
        end local 1 // java.util.List errors
        end local 0 // org.junit.runners.BlockJUnit4ClassRunner this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    8     0    this  Lorg/junit/runners/BlockJUnit4ClassRunner;
            0    8     1  errors  Ljava/util/List<Ljava/lang/Throwable;>;
    Signature: (Ljava/util/List<Ljava/lang/Throwable;>;)V
    MethodParameters:
        Name  Flags
      errors  

  private void validatePublicConstructor(java.util.List<java.lang.Throwable>);
    descriptor: (Ljava/util/List;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.junit.runners.BlockJUnit4ClassRunner this
        start local 1 // java.util.List errors
         0: .line 160
            aload 0 /* this */
            invokevirtual org.junit.runners.BlockJUnit4ClassRunner.getTestClass:()Lorg/junit/runners/model/TestClass;
            invokevirtual org.junit.runners.model.TestClass.getJavaClass:()Ljava/lang/Class;
            ifnull 2
         1: .line 161
            aload 1 /* errors */
            getstatic org.junit.runners.BlockJUnit4ClassRunner.PUBLIC_CLASS_VALIDATOR:Lorg/junit/validator/TestClassValidator;
            aload 0 /* this */
            invokevirtual org.junit.runners.BlockJUnit4ClassRunner.getTestClass:()Lorg/junit/runners/model/TestClass;
            invokeinterface org.junit.validator.TestClassValidator.validateTestClass:(Lorg/junit/runners/model/TestClass;)Ljava/util/List;
            invokeinterface java.util.List.addAll:(Ljava/util/Collection;)Z
            pop
         2: .line 163
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.util.List errors
        end local 0 // org.junit.runners.BlockJUnit4ClassRunner this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0    this  Lorg/junit/runners/BlockJUnit4ClassRunner;
            0    3     1  errors  Ljava/util/List<Ljava/lang/Throwable;>;
    Signature: (Ljava/util/List<Ljava/lang/Throwable;>;)V
    MethodParameters:
        Name  Flags
      errors  

  protected void validateNoNonStaticInnerClass(java.util.List<java.lang.Throwable>);
    descriptor: (Ljava/util/List;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // org.junit.runners.BlockJUnit4ClassRunner this
        start local 1 // java.util.List errors
         0: .line 166
            aload 0 /* this */
            invokevirtual org.junit.runners.BlockJUnit4ClassRunner.getTestClass:()Lorg/junit/runners/model/TestClass;
            invokevirtual org.junit.runners.model.TestClass.isANonStaticInnerClass:()Z
            ifeq 5
         1: .line 167
            new java.lang.StringBuilder
            dup
            ldc "The inner class "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            invokevirtual org.junit.runners.BlockJUnit4ClassRunner.getTestClass:()Lorg/junit/runners/model/TestClass;
            invokevirtual org.junit.runners.model.TestClass.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         2: .line 168
            ldc " is not static."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         3: .line 167
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 2 /* gripe */
        start local 2 // java.lang.String gripe
         4: .line 169
            aload 1 /* errors */
            new java.lang.Exception
            dup
            aload 2 /* gripe */
            invokespecial java.lang.Exception.<init>:(Ljava/lang/String;)V
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 2 // java.lang.String gripe
         5: .line 171
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.util.List errors
        end local 0 // org.junit.runners.BlockJUnit4ClassRunner this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    6     0    this  Lorg/junit/runners/BlockJUnit4ClassRunner;
            0    6     1  errors  Ljava/util/List<Ljava/lang/Throwable;>;
            4    5     2   gripe  Ljava/lang/String;
    Signature: (Ljava/util/List<Ljava/lang/Throwable;>;)V
    MethodParameters:
        Name  Flags
      errors  

  protected void validateConstructor(java.util.List<java.lang.Throwable>);
    descriptor: (Ljava/util/List;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.junit.runners.BlockJUnit4ClassRunner this
        start local 1 // java.util.List errors
         0: .line 179
            aload 0 /* this */
            aload 1 /* errors */
            invokevirtual org.junit.runners.BlockJUnit4ClassRunner.validateOnlyOneConstructor:(Ljava/util/List;)V
         1: .line 180
            aload 0 /* this */
            aload 1 /* errors */
            invokevirtual org.junit.runners.BlockJUnit4ClassRunner.validateZeroArgConstructor:(Ljava/util/List;)V
         2: .line 181
            return
        end local 1 // java.util.List errors
        end local 0 // org.junit.runners.BlockJUnit4ClassRunner this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0    this  Lorg/junit/runners/BlockJUnit4ClassRunner;
            0    3     1  errors  Ljava/util/List<Ljava/lang/Throwable;>;
    Signature: (Ljava/util/List<Ljava/lang/Throwable;>;)V
    MethodParameters:
        Name  Flags
      errors  

  protected void validateOnlyOneConstructor(java.util.List<java.lang.Throwable>);
    descriptor: (Ljava/util/List;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // org.junit.runners.BlockJUnit4ClassRunner this
        start local 1 // java.util.List errors
         0: .line 188
            aload 0 /* this */
            invokevirtual org.junit.runners.BlockJUnit4ClassRunner.hasOneConstructor:()Z
            ifne 3
         1: .line 189
            ldc "Test class should have exactly one public constructor"
            astore 2 /* gripe */
        start local 2 // java.lang.String gripe
         2: .line 190
            aload 1 /* errors */
            new java.lang.Exception
            dup
            aload 2 /* gripe */
            invokespecial java.lang.Exception.<init>:(Ljava/lang/String;)V
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 2 // java.lang.String gripe
         3: .line 192
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.util.List errors
        end local 0 // org.junit.runners.BlockJUnit4ClassRunner this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    4     0    this  Lorg/junit/runners/BlockJUnit4ClassRunner;
            0    4     1  errors  Ljava/util/List<Ljava/lang/Throwable;>;
            2    3     2   gripe  Ljava/lang/String;
    Signature: (Ljava/util/List<Ljava/lang/Throwable;>;)V
    MethodParameters:
        Name  Flags
      errors  

  protected void validateZeroArgConstructor(java.util.List<java.lang.Throwable>);
    descriptor: (Ljava/util/List;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // org.junit.runners.BlockJUnit4ClassRunner this
        start local 1 // java.util.List errors
         0: .line 199
            aload 0 /* this */
            invokevirtual org.junit.runners.BlockJUnit4ClassRunner.getTestClass:()Lorg/junit/runners/model/TestClass;
            invokevirtual org.junit.runners.model.TestClass.isANonStaticInnerClass:()Z
            ifne 5
         1: .line 200
            aload 0 /* this */
            invokevirtual org.junit.runners.BlockJUnit4ClassRunner.hasOneConstructor:()Z
            ifeq 5
         2: .line 201
            aload 0 /* this */
            invokevirtual org.junit.runners.BlockJUnit4ClassRunner.getTestClass:()Lorg/junit/runners/model/TestClass;
            invokevirtual org.junit.runners.model.TestClass.getOnlyConstructor:()Ljava/lang/reflect/Constructor;
            invokevirtual java.lang.reflect.Constructor.getParameterTypes:()[Ljava/lang/Class;
            arraylength
            ifeq 5
         3: .line 202
            ldc "Test class should have exactly one public zero-argument constructor"
            astore 2 /* gripe */
        start local 2 // java.lang.String gripe
         4: .line 203
            aload 1 /* errors */
            new java.lang.Exception
            dup
            aload 2 /* gripe */
            invokespecial java.lang.Exception.<init>:(Ljava/lang/String;)V
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 2 // java.lang.String gripe
         5: .line 205
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.util.List errors
        end local 0 // org.junit.runners.BlockJUnit4ClassRunner this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    6     0    this  Lorg/junit/runners/BlockJUnit4ClassRunner;
            0    6     1  errors  Ljava/util/List<Ljava/lang/Throwable;>;
            4    5     2   gripe  Ljava/lang/String;
    Signature: (Ljava/util/List<Ljava/lang/Throwable;>;)V
    MethodParameters:
        Name  Flags
      errors  

  private boolean hasOneConstructor();
    descriptor: ()Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.junit.runners.BlockJUnit4ClassRunner this
         0: .line 208
            aload 0 /* this */
            invokevirtual org.junit.runners.BlockJUnit4ClassRunner.getTestClass:()Lorg/junit/runners/model/TestClass;
            invokevirtual org.junit.runners.model.TestClass.getJavaClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getConstructors:()[Ljava/lang/reflect/Constructor;
            arraylength
            iconst_1
            if_icmpne 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 0 // org.junit.runners.BlockJUnit4ClassRunner this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/junit/runners/BlockJUnit4ClassRunner;

  protected void validateInstanceMethods(java.util.List<java.lang.Throwable>);
    descriptor: (Ljava/util/List;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // org.junit.runners.BlockJUnit4ClassRunner this
        start local 1 // java.util.List errors
         0: .line 219
            aload 0 /* this */
            ldc Lorg/junit/After;
            iconst_0
            aload 1 /* errors */
            invokevirtual org.junit.runners.BlockJUnit4ClassRunner.validatePublicVoidNoArgMethods:(Ljava/lang/Class;ZLjava/util/List;)V
         1: .line 220
            aload 0 /* this */
            ldc Lorg/junit/Before;
            iconst_0
            aload 1 /* errors */
            invokevirtual org.junit.runners.BlockJUnit4ClassRunner.validatePublicVoidNoArgMethods:(Ljava/lang/Class;ZLjava/util/List;)V
         2: .line 221
            aload 0 /* this */
            aload 1 /* errors */
            invokevirtual org.junit.runners.BlockJUnit4ClassRunner.validateTestMethods:(Ljava/util/List;)V
         3: .line 223
            aload 0 /* this */
            invokevirtual org.junit.runners.BlockJUnit4ClassRunner.computeTestMethods:()Ljava/util/List;
            invokeinterface java.util.List.isEmpty:()Z
            ifeq 5
         4: .line 224
            aload 1 /* errors */
            new java.lang.Exception
            dup
            ldc "No runnable methods"
            invokespecial java.lang.Exception.<init>:(Ljava/lang/String;)V
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         5: .line 226
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.util.List errors
        end local 0 // org.junit.runners.BlockJUnit4ClassRunner this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    6     0    this  Lorg/junit/runners/BlockJUnit4ClassRunner;
            0    6     1  errors  Ljava/util/List<Ljava/lang/Throwable;>;
    Signature: (Ljava/util/List<Ljava/lang/Throwable;>;)V
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    MethodParameters:
        Name  Flags
      errors  

  protected void validateFields(java.util.List<java.lang.Throwable>);
    descriptor: (Ljava/util/List;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.junit.runners.BlockJUnit4ClassRunner this
        start local 1 // java.util.List errors
         0: .line 229
            getstatic org.junit.internal.runners.rules.RuleMemberValidator.RULE_VALIDATOR:Lorg/junit/internal/runners/rules/RuleMemberValidator;
            aload 0 /* this */
            invokevirtual org.junit.runners.BlockJUnit4ClassRunner.getTestClass:()Lorg/junit/runners/model/TestClass;
            aload 1 /* errors */
            invokevirtual org.junit.internal.runners.rules.RuleMemberValidator.validate:(Lorg/junit/runners/model/TestClass;Ljava/util/List;)V
         1: .line 230
            return
        end local 1 // java.util.List errors
        end local 0 // org.junit.runners.BlockJUnit4ClassRunner this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    this  Lorg/junit/runners/BlockJUnit4ClassRunner;
            0    2     1  errors  Ljava/util/List<Ljava/lang/Throwable;>;
    Signature: (Ljava/util/List<Ljava/lang/Throwable;>;)V
    MethodParameters:
        Name  Flags
      errors  

  private void validateMethods(java.util.List<java.lang.Throwable>);
    descriptor: (Ljava/util/List;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.junit.runners.BlockJUnit4ClassRunner this
        start local 1 // java.util.List errors
         0: .line 233
            getstatic org.junit.internal.runners.rules.RuleMemberValidator.RULE_METHOD_VALIDATOR:Lorg/junit/internal/runners/rules/RuleMemberValidator;
            aload 0 /* this */
            invokevirtual org.junit.runners.BlockJUnit4ClassRunner.getTestClass:()Lorg/junit/runners/model/TestClass;
            aload 1 /* errors */
            invokevirtual org.junit.internal.runners.rules.RuleMemberValidator.validate:(Lorg/junit/runners/model/TestClass;Ljava/util/List;)V
         1: .line 234
            return
        end local 1 // java.util.List errors
        end local 0 // org.junit.runners.BlockJUnit4ClassRunner this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    this  Lorg/junit/runners/BlockJUnit4ClassRunner;
            0    2     1  errors  Ljava/util/List<Ljava/lang/Throwable;>;
    Signature: (Ljava/util/List<Ljava/lang/Throwable;>;)V
    MethodParameters:
        Name  Flags
      errors  

  protected void validateTestMethods(java.util.List<java.lang.Throwable>);
    descriptor: (Ljava/util/List;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // org.junit.runners.BlockJUnit4ClassRunner this
        start local 1 // java.util.List errors
         0: .line 241
            aload 0 /* this */
            ldc Lorg/junit/Test;
            iconst_0
            aload 1 /* errors */
            invokevirtual org.junit.runners.BlockJUnit4ClassRunner.validatePublicVoidNoArgMethods:(Ljava/lang/Class;ZLjava/util/List;)V
         1: .line 242
            return
        end local 1 // java.util.List errors
        end local 0 // org.junit.runners.BlockJUnit4ClassRunner this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    this  Lorg/junit/runners/BlockJUnit4ClassRunner;
            0    2     1  errors  Ljava/util/List<Ljava/lang/Throwable;>;
    Signature: (Ljava/util/List<Ljava/lang/Throwable;>;)V
    MethodParameters:
        Name  Flags
      errors  

  protected java.lang.Object createTest();
    descriptor: ()Ljava/lang/Object;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.junit.runners.BlockJUnit4ClassRunner this
         0: .line 250
            aload 0 /* this */
            invokevirtual org.junit.runners.BlockJUnit4ClassRunner.getTestClass:()Lorg/junit/runners/model/TestClass;
            invokevirtual org.junit.runners.model.TestClass.getOnlyConstructor:()Ljava/lang/reflect/Constructor;
            iconst_0
            anewarray java.lang.Object
            invokevirtual java.lang.reflect.Constructor.newInstance:([Ljava/lang/Object;)Ljava/lang/Object;
            areturn
        end local 0 // org.junit.runners.BlockJUnit4ClassRunner this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/junit/runners/BlockJUnit4ClassRunner;
    Exceptions:
      throws java.lang.Exception

  protected java.lang.Object createTest(org.junit.runners.model.FrameworkMethod);
    descriptor: (Lorg/junit/runners/model/FrameworkMethod;)Ljava/lang/Object;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // org.junit.runners.BlockJUnit4ClassRunner this
        start local 1 // org.junit.runners.model.FrameworkMethod method
         0: .line 260
            aload 0 /* this */
            invokevirtual org.junit.runners.BlockJUnit4ClassRunner.createTest:()Ljava/lang/Object;
            areturn
        end local 1 // org.junit.runners.model.FrameworkMethod method
        end local 0 // org.junit.runners.BlockJUnit4ClassRunner this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Lorg/junit/runners/BlockJUnit4ClassRunner;
            0    1     1  method  Lorg/junit/runners/model/FrameworkMethod;
    Exceptions:
      throws java.lang.Exception
    MethodParameters:
        Name  Flags
      method  

  protected java.lang.String testName(org.junit.runners.model.FrameworkMethod);
    descriptor: (Lorg/junit/runners/model/FrameworkMethod;)Ljava/lang/String;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // org.junit.runners.BlockJUnit4ClassRunner this
        start local 1 // org.junit.runners.model.FrameworkMethod method
         0: .line 268
            aload 1 /* method */
            invokevirtual org.junit.runners.model.FrameworkMethod.getName:()Ljava/lang/String;
            areturn
        end local 1 // org.junit.runners.model.FrameworkMethod method
        end local 0 // org.junit.runners.BlockJUnit4ClassRunner this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Lorg/junit/runners/BlockJUnit4ClassRunner;
            0    1     1  method  Lorg/junit/runners/model/FrameworkMethod;
    MethodParameters:
        Name  Flags
      method  

  protected org.junit.runners.model.Statement methodBlock(org.junit.runners.model.FrameworkMethod);
    descriptor: (Lorg/junit/runners/model/FrameworkMethod;)Lorg/junit/runners/model/Statement;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // org.junit.runners.BlockJUnit4ClassRunner this
        start local 1 // org.junit.runners.model.FrameworkMethod method
         0: .line 306
            new org.junit.runners.BlockJUnit4ClassRunner$2
            dup
            aload 0 /* this */
            aload 1 /* method */
            invokespecial org.junit.runners.BlockJUnit4ClassRunner$2.<init>:(Lorg/junit/runners/BlockJUnit4ClassRunner;Lorg/junit/runners/model/FrameworkMethod;)V
         1: .line 311
            invokevirtual org.junit.runners.BlockJUnit4ClassRunner$2.run:()Ljava/lang/Object;
         2: .line 306
            astore 2 /* test */
        start local 2 // java.lang.Object test
         3: .line 312
            goto 6
        end local 2 // java.lang.Object test
      StackMap locals:
      StackMap stack: java.lang.Throwable
         4: astore 3 /* e */
        start local 3 // java.lang.Throwable e
         5: .line 313
            new org.junit.internal.runners.statements.Fail
            dup
            aload 3 /* e */
            invokespecial org.junit.internal.runners.statements.Fail.<init>:(Ljava/lang/Throwable;)V
            areturn
        end local 3 // java.lang.Throwable e
        start local 2 // java.lang.Object test
         6: .line 316
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 0 /* this */
            aload 1 /* method */
            aload 2 /* test */
            invokevirtual org.junit.runners.BlockJUnit4ClassRunner.methodInvoker:(Lorg/junit/runners/model/FrameworkMethod;Ljava/lang/Object;)Lorg/junit/runners/model/Statement;
            astore 3 /* statement */
        start local 3 // org.junit.runners.model.Statement statement
         7: .line 317
            aload 0 /* this */
            aload 1 /* method */
            aload 2 /* test */
            aload 3 /* statement */
            invokevirtual org.junit.runners.BlockJUnit4ClassRunner.possiblyExpectingExceptions:(Lorg/junit/runners/model/FrameworkMethod;Ljava/lang/Object;Lorg/junit/runners/model/Statement;)Lorg/junit/runners/model/Statement;
            astore 3 /* statement */
         8: .line 318
            aload 0 /* this */
            aload 1 /* method */
            aload 2 /* test */
            aload 3 /* statement */
            invokevirtual org.junit.runners.BlockJUnit4ClassRunner.withPotentialTimeout:(Lorg/junit/runners/model/FrameworkMethod;Ljava/lang/Object;Lorg/junit/runners/model/Statement;)Lorg/junit/runners/model/Statement;
            astore 3 /* statement */
         9: .line 319
            aload 0 /* this */
            aload 1 /* method */
            aload 2 /* test */
            aload 3 /* statement */
            invokevirtual org.junit.runners.BlockJUnit4ClassRunner.withBefores:(Lorg/junit/runners/model/FrameworkMethod;Ljava/lang/Object;Lorg/junit/runners/model/Statement;)Lorg/junit/runners/model/Statement;
            astore 3 /* statement */
        10: .line 320
            aload 0 /* this */
            aload 1 /* method */
            aload 2 /* test */
            aload 3 /* statement */
            invokevirtual org.junit.runners.BlockJUnit4ClassRunner.withAfters:(Lorg/junit/runners/model/FrameworkMethod;Ljava/lang/Object;Lorg/junit/runners/model/Statement;)Lorg/junit/runners/model/Statement;
            astore 3 /* statement */
        11: .line 321
            aload 0 /* this */
            aload 1 /* method */
            aload 2 /* test */
            aload 3 /* statement */
            invokevirtual org.junit.runners.BlockJUnit4ClassRunner.withRules:(Lorg/junit/runners/model/FrameworkMethod;Ljava/lang/Object;Lorg/junit/runners/model/Statement;)Lorg/junit/runners/model/Statement;
            astore 3 /* statement */
        12: .line 322
            aload 0 /* this */
            aload 3 /* statement */
            invokevirtual org.junit.runners.BlockJUnit4ClassRunner.withInterruptIsolation:(Lorg/junit/runners/model/Statement;)Lorg/junit/runners/model/Statement;
            astore 3 /* statement */
        13: .line 323
            aload 3 /* statement */
            areturn
        end local 3 // org.junit.runners.model.Statement statement
        end local 2 // java.lang.Object test
        end local 1 // org.junit.runners.model.FrameworkMethod method
        end local 0 // org.junit.runners.BlockJUnit4ClassRunner this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   14     0       this  Lorg/junit/runners/BlockJUnit4ClassRunner;
            0   14     1     method  Lorg/junit/runners/model/FrameworkMethod;
            3    4     2       test  Ljava/lang/Object;
            6   14     2       test  Ljava/lang/Object;
            5    6     3          e  Ljava/lang/Throwable;
            7   14     3  statement  Lorg/junit/runners/model/Statement;
      Exception table:
        from    to  target  type
           0     3       4  Class java.lang.Throwable
    MethodParameters:
        Name  Flags
      method  final

  protected org.junit.runners.model.Statement methodInvoker(org.junit.runners.model.FrameworkMethod, java.lang.Object);
    descriptor: (Lorg/junit/runners/model/FrameworkMethod;Ljava/lang/Object;)Lorg/junit/runners/model/Statement;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // org.junit.runners.BlockJUnit4ClassRunner this
        start local 1 // org.junit.runners.model.FrameworkMethod method
        start local 2 // java.lang.Object test
         0: .line 334
            new org.junit.internal.runners.statements.InvokeMethod
            dup
            aload 1 /* method */
            aload 2 /* test */
            invokespecial org.junit.internal.runners.statements.InvokeMethod.<init>:(Lorg/junit/runners/model/FrameworkMethod;Ljava/lang/Object;)V
            areturn
        end local 2 // java.lang.Object test
        end local 1 // org.junit.runners.model.FrameworkMethod method
        end local 0 // org.junit.runners.BlockJUnit4ClassRunner this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Lorg/junit/runners/BlockJUnit4ClassRunner;
            0    1     1  method  Lorg/junit/runners/model/FrameworkMethod;
            0    1     2    test  Ljava/lang/Object;
    MethodParameters:
        Name  Flags
      method  
      test    

  protected org.junit.runners.model.Statement possiblyExpectingExceptions(org.junit.runners.model.FrameworkMethod, java.lang.Object, org.junit.runners.model.Statement);
    descriptor: (Lorg/junit/runners/model/FrameworkMethod;Ljava/lang/Object;Lorg/junit/runners/model/Statement;)Lorg/junit/runners/model/Statement;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=6, args_size=4
        start local 0 // org.junit.runners.BlockJUnit4ClassRunner this
        start local 1 // org.junit.runners.model.FrameworkMethod method
        start local 2 // java.lang.Object test
        start local 3 // org.junit.runners.model.Statement next
         0: .line 345
            aload 1 /* method */
            ldc Lorg/junit/Test;
            invokevirtual org.junit.runners.model.FrameworkMethod.getAnnotation:(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
            checkcast org.junit.Test
            astore 4 /* annotation */
        start local 4 // org.junit.Test annotation
         1: .line 346
            aload 0 /* this */
            aload 4 /* annotation */
            invokevirtual org.junit.runners.BlockJUnit4ClassRunner.getExpectedException:(Lorg/junit/Test;)Ljava/lang/Class;
            astore 5 /* expectedExceptionClass */
        start local 5 // java.lang.Class expectedExceptionClass
         2: .line 347
            aload 5 /* expectedExceptionClass */
            ifnull 3
            new org.junit.internal.runners.statements.ExpectException
            dup
            aload 3 /* next */
            aload 5 /* expectedExceptionClass */
            invokespecial org.junit.internal.runners.statements.ExpectException.<init>:(Lorg/junit/runners/model/Statement;Ljava/lang/Class;)V
            goto 4
      StackMap locals: org.junit.Test java.lang.Class
      StackMap stack:
         3: aload 3 /* next */
      StackMap locals:
      StackMap stack: org.junit.runners.model.Statement
         4: areturn
        end local 5 // java.lang.Class expectedExceptionClass
        end local 4 // org.junit.Test annotation
        end local 3 // org.junit.runners.model.Statement next
        end local 2 // java.lang.Object test
        end local 1 // org.junit.runners.model.FrameworkMethod method
        end local 0 // org.junit.runners.BlockJUnit4ClassRunner this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0    5     0                    this  Lorg/junit/runners/BlockJUnit4ClassRunner;
            0    5     1                  method  Lorg/junit/runners/model/FrameworkMethod;
            0    5     2                    test  Ljava/lang/Object;
            0    5     3                    next  Lorg/junit/runners/model/Statement;
            1    5     4              annotation  Lorg/junit/Test;
            2    5     5  expectedExceptionClass  Ljava/lang/Class<+Ljava/lang/Throwable;>;
    MethodParameters:
        Name  Flags
      method  
      test    
      next    

  protected org.junit.runners.model.Statement withPotentialTimeout(org.junit.runners.model.FrameworkMethod, java.lang.Object, org.junit.runners.model.Statement);
    descriptor: (Lorg/junit/runners/model/FrameworkMethod;Ljava/lang/Object;Lorg/junit/runners/model/Statement;)Lorg/junit/runners/model/Statement;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=6, args_size=4
        start local 0 // org.junit.runners.BlockJUnit4ClassRunner this
        start local 1 // org.junit.runners.model.FrameworkMethod method
        start local 2 // java.lang.Object test
        start local 3 // org.junit.runners.model.Statement next
         0: .line 359
            aload 0 /* this */
            aload 1 /* method */
            ldc Lorg/junit/Test;
            invokevirtual org.junit.runners.model.FrameworkMethod.getAnnotation:(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
            checkcast org.junit.Test
            invokevirtual org.junit.runners.BlockJUnit4ClassRunner.getTimeout:(Lorg/junit/Test;)J
            lstore 4 /* timeout */
        start local 4 // long timeout
         1: .line 360
            lload 4 /* timeout */
            lconst_0
            lcmp
            ifgt 3
         2: .line 361
            aload 3 /* next */
            areturn
         3: .line 363
      StackMap locals: long
      StackMap stack:
            invokestatic org.junit.internal.runners.statements.FailOnTimeout.builder:()Lorg/junit/internal/runners/statements/FailOnTimeout$Builder;
         4: .line 364
            lload 4 /* timeout */
            getstatic java.util.concurrent.TimeUnit.MILLISECONDS:Ljava/util/concurrent/TimeUnit;
            invokevirtual org.junit.internal.runners.statements.FailOnTimeout$Builder.withTimeout:(JLjava/util/concurrent/TimeUnit;)Lorg/junit/internal/runners/statements/FailOnTimeout$Builder;
         5: .line 365
            aload 3 /* next */
            invokevirtual org.junit.internal.runners.statements.FailOnTimeout$Builder.build:(Lorg/junit/runners/model/Statement;)Lorg/junit/internal/runners/statements/FailOnTimeout;
         6: .line 363
            areturn
        end local 4 // long timeout
        end local 3 // org.junit.runners.model.Statement next
        end local 2 // java.lang.Object test
        end local 1 // org.junit.runners.model.FrameworkMethod method
        end local 0 // org.junit.runners.BlockJUnit4ClassRunner this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    7     0     this  Lorg/junit/runners/BlockJUnit4ClassRunner;
            0    7     1   method  Lorg/junit/runners/model/FrameworkMethod;
            0    7     2     test  Ljava/lang/Object;
            0    7     3     next  Lorg/junit/runners/model/Statement;
            1    7     4  timeout  J
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    MethodParameters:
        Name  Flags
      method  
      test    
      next    

  protected org.junit.runners.model.Statement withBefores(org.junit.runners.model.FrameworkMethod, java.lang.Object, org.junit.runners.model.Statement);
    descriptor: (Lorg/junit/runners/model/FrameworkMethod;Ljava/lang/Object;Lorg/junit/runners/model/Statement;)Lorg/junit/runners/model/Statement;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=5, args_size=4
        start local 0 // org.junit.runners.BlockJUnit4ClassRunner this
        start local 1 // org.junit.runners.model.FrameworkMethod method
        start local 2 // java.lang.Object target
        start local 3 // org.junit.runners.model.Statement statement
         0: .line 375
            aload 0 /* this */
            invokevirtual org.junit.runners.BlockJUnit4ClassRunner.getTestClass:()Lorg/junit/runners/model/TestClass;
         1: .line 376
            ldc Lorg/junit/Before;
         2: .line 375
            invokevirtual org.junit.runners.model.TestClass.getAnnotatedMethods:(Ljava/lang/Class;)Ljava/util/List;
            astore 4 /* befores */
        start local 4 // java.util.List befores
         3: .line 377
            aload 4 /* befores */
            invokeinterface java.util.List.isEmpty:()Z
            ifeq 4
            aload 3 /* statement */
            goto 6
      StackMap locals: java.util.List
      StackMap stack:
         4: new org.junit.internal.runners.statements.RunBefores
            dup
            aload 3 /* statement */
         5: .line 378
            aload 4 /* befores */
            aload 2 /* target */
            invokespecial org.junit.internal.runners.statements.RunBefores.<init>:(Lorg/junit/runners/model/Statement;Ljava/util/List;Ljava/lang/Object;)V
         6: .line 377
      StackMap locals:
      StackMap stack: org.junit.runners.model.Statement
            areturn
        end local 4 // java.util.List befores
        end local 3 // org.junit.runners.model.Statement statement
        end local 2 // java.lang.Object target
        end local 1 // org.junit.runners.model.FrameworkMethod method
        end local 0 // org.junit.runners.BlockJUnit4ClassRunner this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    7     0       this  Lorg/junit/runners/BlockJUnit4ClassRunner;
            0    7     1     method  Lorg/junit/runners/model/FrameworkMethod;
            0    7     2     target  Ljava/lang/Object;
            0    7     3  statement  Lorg/junit/runners/model/Statement;
            3    7     4    befores  Ljava/util/List<Lorg/junit/runners/model/FrameworkMethod;>;
    MethodParameters:
           Name  Flags
      method     
      target     
      statement  

  protected org.junit.runners.model.Statement withAfters(org.junit.runners.model.FrameworkMethod, java.lang.Object, org.junit.runners.model.Statement);
    descriptor: (Lorg/junit/runners/model/FrameworkMethod;Ljava/lang/Object;Lorg/junit/runners/model/Statement;)Lorg/junit/runners/model/Statement;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=5, args_size=4
        start local 0 // org.junit.runners.BlockJUnit4ClassRunner this
        start local 1 // org.junit.runners.model.FrameworkMethod method
        start local 2 // java.lang.Object target
        start local 3 // org.junit.runners.model.Statement statement
         0: .line 390
            aload 0 /* this */
            invokevirtual org.junit.runners.BlockJUnit4ClassRunner.getTestClass:()Lorg/junit/runners/model/TestClass;
         1: .line 391
            ldc Lorg/junit/After;
         2: .line 390
            invokevirtual org.junit.runners.model.TestClass.getAnnotatedMethods:(Ljava/lang/Class;)Ljava/util/List;
            astore 4 /* afters */
        start local 4 // java.util.List afters
         3: .line 392
            aload 4 /* afters */
            invokeinterface java.util.List.isEmpty:()Z
            ifeq 4
            aload 3 /* statement */
            goto 6
      StackMap locals: java.util.List
      StackMap stack:
         4: new org.junit.internal.runners.statements.RunAfters
            dup
            aload 3 /* statement */
            aload 4 /* afters */
         5: .line 393
            aload 2 /* target */
            invokespecial org.junit.internal.runners.statements.RunAfters.<init>:(Lorg/junit/runners/model/Statement;Ljava/util/List;Ljava/lang/Object;)V
         6: .line 392
      StackMap locals:
      StackMap stack: org.junit.runners.model.Statement
            areturn
        end local 4 // java.util.List afters
        end local 3 // org.junit.runners.model.Statement statement
        end local 2 // java.lang.Object target
        end local 1 // org.junit.runners.model.FrameworkMethod method
        end local 0 // org.junit.runners.BlockJUnit4ClassRunner this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    7     0       this  Lorg/junit/runners/BlockJUnit4ClassRunner;
            0    7     1     method  Lorg/junit/runners/model/FrameworkMethod;
            0    7     2     target  Ljava/lang/Object;
            0    7     3  statement  Lorg/junit/runners/model/Statement;
            3    7     4     afters  Ljava/util/List<Lorg/junit/runners/model/FrameworkMethod;>;
    MethodParameters:
           Name  Flags
      method     
      target     
      statement  

  private org.junit.runners.model.Statement withRules(org.junit.runners.model.FrameworkMethod, java.lang.Object, org.junit.runners.model.Statement);
    descriptor: (Lorg/junit/runners/model/FrameworkMethod;Ljava/lang/Object;Lorg/junit/runners/model/Statement;)Lorg/junit/runners/model/Statement;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=9, args_size=4
        start local 0 // org.junit.runners.BlockJUnit4ClassRunner this
        start local 1 // org.junit.runners.model.FrameworkMethod method
        start local 2 // java.lang.Object target
        start local 3 // org.junit.runners.model.Statement statement
         0: .line 397
            new org.junit.runners.RuleContainer
            dup
            invokespecial org.junit.runners.RuleContainer.<init>:()V
            astore 4 /* ruleContainer */
        start local 4 // org.junit.runners.RuleContainer ruleContainer
         1: .line 398
            getstatic org.junit.runners.BlockJUnit4ClassRunner.CURRENT_RULE_CONTAINER:Ljava/lang/ThreadLocal;
            aload 4 /* ruleContainer */
            invokevirtual java.lang.ThreadLocal.set:(Ljava/lang/Object;)V
         2: .line 400
            aload 0 /* this */
            aload 2 /* target */
            invokevirtual org.junit.runners.BlockJUnit4ClassRunner.getTestRules:(Ljava/lang/Object;)Ljava/util/List;
            astore 5 /* testRules */
        start local 5 // java.util.List testRules
         3: .line 401
            aload 0 /* this */
            aload 2 /* target */
            invokevirtual org.junit.runners.BlockJUnit4ClassRunner.rules:(Ljava/lang/Object;)Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 7
            goto 7
      StackMap locals: org.junit.runners.BlockJUnit4ClassRunner org.junit.runners.model.FrameworkMethod java.lang.Object org.junit.runners.model.Statement org.junit.runners.RuleContainer java.util.List top java.util.Iterator
      StackMap stack:
         4: aload 7
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.junit.rules.MethodRule
            astore 6 /* each */
        start local 6 // org.junit.rules.MethodRule each
         5: .line 402
            aload 6 /* each */
            instanceof org.junit.rules.TestRule
            ifeq 6
            aload 5 /* testRules */
            aload 6 /* each */
            invokeinterface java.util.List.contains:(Ljava/lang/Object;)Z
            ifne 7
         6: .line 403
      StackMap locals: org.junit.runners.BlockJUnit4ClassRunner org.junit.runners.model.FrameworkMethod java.lang.Object org.junit.runners.model.Statement org.junit.runners.RuleContainer java.util.List org.junit.rules.MethodRule java.util.Iterator
      StackMap stack:
            aload 4 /* ruleContainer */
            aload 6 /* each */
            invokevirtual org.junit.runners.RuleContainer.add:(Lorg/junit/rules/MethodRule;)V
        end local 6 // org.junit.rules.MethodRule each
         7: .line 401
      StackMap locals: org.junit.runners.BlockJUnit4ClassRunner org.junit.runners.model.FrameworkMethod java.lang.Object org.junit.runners.model.Statement org.junit.runners.RuleContainer java.util.List top java.util.Iterator
      StackMap stack:
            aload 7
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 4
         8: .line 406
            aload 5 /* testRules */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 7
            goto 11
      StackMap locals:
      StackMap stack:
         9: aload 7
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.junit.rules.TestRule
            astore 6 /* rule */
        start local 6 // org.junit.rules.TestRule rule
        10: .line 407
            aload 4 /* ruleContainer */
            aload 6 /* rule */
            invokevirtual org.junit.runners.RuleContainer.add:(Lorg/junit/rules/TestRule;)V
        end local 6 // org.junit.rules.TestRule rule
        11: .line 406
      StackMap locals:
      StackMap stack:
            aload 7
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 9
        end local 5 // java.util.List testRules
        12: .line 409
            goto 16
      StackMap locals: org.junit.runners.BlockJUnit4ClassRunner org.junit.runners.model.FrameworkMethod java.lang.Object org.junit.runners.model.Statement org.junit.runners.RuleContainer
      StackMap stack: java.lang.Throwable
        13: astore 8
        14: .line 410
            getstatic org.junit.runners.BlockJUnit4ClassRunner.CURRENT_RULE_CONTAINER:Ljava/lang/ThreadLocal;
            invokevirtual java.lang.ThreadLocal.remove:()V
        15: .line 411
            aload 8
            athrow
        16: .line 410
      StackMap locals:
      StackMap stack:
            getstatic org.junit.runners.BlockJUnit4ClassRunner.CURRENT_RULE_CONTAINER:Ljava/lang/ThreadLocal;
            invokevirtual java.lang.ThreadLocal.remove:()V
        17: .line 412
            aload 4 /* ruleContainer */
            aload 1 /* method */
            aload 0 /* this */
            aload 1 /* method */
            invokevirtual org.junit.runners.BlockJUnit4ClassRunner.describeChild:(Lorg/junit/runners/model/FrameworkMethod;)Lorg/junit/runner/Description;
            aload 2 /* target */
            aload 3 /* statement */
            invokevirtual org.junit.runners.RuleContainer.apply:(Lorg/junit/runners/model/FrameworkMethod;Lorg/junit/runner/Description;Ljava/lang/Object;Lorg/junit/runners/model/Statement;)Lorg/junit/runners/model/Statement;
            areturn
        end local 4 // org.junit.runners.RuleContainer ruleContainer
        end local 3 // org.junit.runners.model.Statement statement
        end local 2 // java.lang.Object target
        end local 1 // org.junit.runners.model.FrameworkMethod method
        end local 0 // org.junit.runners.BlockJUnit4ClassRunner this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   18     0           this  Lorg/junit/runners/BlockJUnit4ClassRunner;
            0   18     1         method  Lorg/junit/runners/model/FrameworkMethod;
            0   18     2         target  Ljava/lang/Object;
            0   18     3      statement  Lorg/junit/runners/model/Statement;
            1   18     4  ruleContainer  Lorg/junit/runners/RuleContainer;
            3   12     5      testRules  Ljava/util/List<Lorg/junit/rules/TestRule;>;
            5    7     6           each  Lorg/junit/rules/MethodRule;
           10   11     6           rule  Lorg/junit/rules/TestRule;
      Exception table:
        from    to  target  type
           2    13      13  any
    MethodParameters:
           Name  Flags
      method     
      target     
      statement  

  protected java.util.List<org.junit.rules.MethodRule> rules();
    descriptor: (Ljava/lang/Object;)Ljava/util/List;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // org.junit.runners.BlockJUnit4ClassRunner this
        start local 1 // java.lang.Object target
         0: .line 421
            new org.junit.runners.BlockJUnit4ClassRunner$RuleCollector
            dup
            invokespecial org.junit.runners.BlockJUnit4ClassRunner$RuleCollector.<init>:()V
            astore 2 /* collector */
        start local 2 // org.junit.runners.BlockJUnit4ClassRunner$RuleCollector collector
         1: .line 422
            aload 0 /* this */
            invokevirtual org.junit.runners.BlockJUnit4ClassRunner.getTestClass:()Lorg/junit/runners/model/TestClass;
            aload 1 /* target */
            ldc Lorg/junit/Rule;
            ldc Lorg/junit/rules/MethodRule;
         2: .line 423
            aload 2 /* collector */
         3: .line 422
            invokevirtual org.junit.runners.model.TestClass.collectAnnotatedMethodValues:(Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/Class;Lorg/junit/runners/model/MemberValueConsumer;)V
         4: .line 424
            aload 0 /* this */
            invokevirtual org.junit.runners.BlockJUnit4ClassRunner.getTestClass:()Lorg/junit/runners/model/TestClass;
            aload 1 /* target */
            ldc Lorg/junit/Rule;
            ldc Lorg/junit/rules/MethodRule;
         5: .line 425
            aload 2 /* collector */
         6: .line 424
            invokevirtual org.junit.runners.model.TestClass.collectAnnotatedFieldValues:(Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/Class;Lorg/junit/runners/model/MemberValueConsumer;)V
         7: .line 426
            aload 2 /* collector */
            getfield org.junit.runners.BlockJUnit4ClassRunner$RuleCollector.result:Ljava/util/List;
            areturn
        end local 2 // org.junit.runners.BlockJUnit4ClassRunner$RuleCollector collector
        end local 1 // java.lang.Object target
        end local 0 // org.junit.runners.BlockJUnit4ClassRunner this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    8     0       this  Lorg/junit/runners/BlockJUnit4ClassRunner;
            0    8     1     target  Ljava/lang/Object;
            1    8     2  collector  Lorg/junit/runners/BlockJUnit4ClassRunner$RuleCollector<Lorg/junit/rules/MethodRule;>;
    Signature: (Ljava/lang/Object;)Ljava/util/List<Lorg/junit/rules/MethodRule;>;
    MethodParameters:
        Name  Flags
      target  

  protected java.util.List<org.junit.rules.TestRule> getTestRules();
    descriptor: (Ljava/lang/Object;)Ljava/util/List;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // org.junit.runners.BlockJUnit4ClassRunner this
        start local 1 // java.lang.Object target
         0: .line 435
            new org.junit.runners.BlockJUnit4ClassRunner$RuleCollector
            dup
            invokespecial org.junit.runners.BlockJUnit4ClassRunner$RuleCollector.<init>:()V
            astore 2 /* collector */
        start local 2 // org.junit.runners.BlockJUnit4ClassRunner$RuleCollector collector
         1: .line 436
            aload 0 /* this */
            invokevirtual org.junit.runners.BlockJUnit4ClassRunner.getTestClass:()Lorg/junit/runners/model/TestClass;
            aload 1 /* target */
            ldc Lorg/junit/Rule;
            ldc Lorg/junit/rules/TestRule;
            aload 2 /* collector */
            invokevirtual org.junit.runners.model.TestClass.collectAnnotatedMethodValues:(Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/Class;Lorg/junit/runners/model/MemberValueConsumer;)V
         2: .line 437
            aload 0 /* this */
            invokevirtual org.junit.runners.BlockJUnit4ClassRunner.getTestClass:()Lorg/junit/runners/model/TestClass;
            aload 1 /* target */
            ldc Lorg/junit/Rule;
            ldc Lorg/junit/rules/TestRule;
            aload 2 /* collector */
            invokevirtual org.junit.runners.model.TestClass.collectAnnotatedFieldValues:(Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/Class;Lorg/junit/runners/model/MemberValueConsumer;)V
         3: .line 438
            aload 2 /* collector */
            getfield org.junit.runners.BlockJUnit4ClassRunner$RuleCollector.result:Ljava/util/List;
            areturn
        end local 2 // org.junit.runners.BlockJUnit4ClassRunner$RuleCollector collector
        end local 1 // java.lang.Object target
        end local 0 // org.junit.runners.BlockJUnit4ClassRunner this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    4     0       this  Lorg/junit/runners/BlockJUnit4ClassRunner;
            0    4     1     target  Ljava/lang/Object;
            1    4     2  collector  Lorg/junit/runners/BlockJUnit4ClassRunner$RuleCollector<Lorg/junit/rules/TestRule;>;
    Signature: (Ljava/lang/Object;)Ljava/util/List<Lorg/junit/rules/TestRule;>;
    MethodParameters:
        Name  Flags
      target  

  private java.lang.Class<? extends java.lang.Throwable> getExpectedException(org.junit.Test);
    descriptor: (Lorg/junit/Test;)Ljava/lang/Class;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.junit.runners.BlockJUnit4ClassRunner this
        start local 1 // org.junit.Test annotation
         0: .line 442
            aload 1 /* annotation */
            ifnull 1
            aload 1 /* annotation */
            invokeinterface org.junit.Test.expected:()Ljava/lang/Class;
            ldc Lorg/junit/Test$None;
            if_acmpne 2
         1: .line 443
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
         2: .line 445
      StackMap locals:
      StackMap stack:
            aload 1 /* annotation */
            invokeinterface org.junit.Test.expected:()Ljava/lang/Class;
            areturn
        end local 1 // org.junit.Test annotation
        end local 0 // org.junit.runners.BlockJUnit4ClassRunner this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    3     0        this  Lorg/junit/runners/BlockJUnit4ClassRunner;
            0    3     1  annotation  Lorg/junit/Test;
    Signature: (Lorg/junit/Test;)Ljava/lang/Class<+Ljava/lang/Throwable;>;
    MethodParameters:
            Name  Flags
      annotation  

  private long getTimeout(org.junit.Test);
    descriptor: (Lorg/junit/Test;)J
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.junit.runners.BlockJUnit4ClassRunner this
        start local 1 // org.junit.Test annotation
         0: .line 450
            aload 1 /* annotation */
            ifnonnull 2
         1: .line 451
            lconst_0
            lreturn
         2: .line 453
      StackMap locals:
      StackMap stack:
            aload 1 /* annotation */
            invokeinterface org.junit.Test.timeout:()J
            lreturn
        end local 1 // org.junit.Test annotation
        end local 0 // org.junit.runners.BlockJUnit4ClassRunner this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    3     0        this  Lorg/junit/runners/BlockJUnit4ClassRunner;
            0    3     1  annotation  Lorg/junit/Test;
    MethodParameters:
            Name  Flags
      annotation  

  protected boolean isIgnored(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Z
    flags: (0x1044) ACC_PROTECTED, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
         0: .line 1
            aload 0
            aload 1
            checkcast org.junit.runners.model.FrameworkMethod
            invokevirtual org.junit.runners.BlockJUnit4ClassRunner.isIgnored:(Lorg/junit/runners/model/FrameworkMethod;)Z
            ireturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  protected org.junit.runner.Description describeChild(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Lorg/junit/runner/Description;
    flags: (0x1044) ACC_PROTECTED, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
         0: .line 1
            aload 0
            aload 1
            checkcast org.junit.runners.model.FrameworkMethod
            invokevirtual org.junit.runners.BlockJUnit4ClassRunner.describeChild:(Lorg/junit/runners/model/FrameworkMethod;)Lorg/junit/runner/Description;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  protected void runChild(java.lang.Object, org.junit.runner.notification.RunNotifier);
    descriptor: (Ljava/lang/Object;Lorg/junit/runner/notification/RunNotifier;)V
    flags: (0x1044) ACC_PROTECTED, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=3, locals=3, args_size=3
         0: .line 1
            aload 0
            aload 1
            checkcast org.junit.runners.model.FrameworkMethod
            aload 2
            invokevirtual org.junit.runners.BlockJUnit4ClassRunner.runChild:(Lorg/junit/runners/model/FrameworkMethod;Lorg/junit/runner/notification/RunNotifier;)V
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
Signature: Lorg/junit/runners/ParentRunner<Lorg/junit/runners/model/FrameworkMethod;>;
SourceFile: "BlockJUnit4ClassRunner.java"
NestMembers:
  org.junit.runners.BlockJUnit4ClassRunner$1  org.junit.runners.BlockJUnit4ClassRunner$2  org.junit.runners.BlockJUnit4ClassRunner$RuleCollector
InnerClasses:
  public None = org.junit.Test$None of org.junit.Test
  public Builder = org.junit.internal.runners.statements.FailOnTimeout$Builder of org.junit.internal.runners.statements.FailOnTimeout
  org.junit.runners.BlockJUnit4ClassRunner$1
  org.junit.runners.BlockJUnit4ClassRunner$2
  private RuleCollector = org.junit.runners.BlockJUnit4ClassRunner$RuleCollector of org.junit.runners.BlockJUnit4ClassRunner