public class org.apache.commons.lang3.ThreadUtils
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.apache.commons.lang3.ThreadUtils
  super_class: java.lang.Object
{
  public static final org.apache.commons.lang3.ThreadUtils$AlwaysTruePredicate ALWAYS_TRUE_PREDICATE;
    descriptor: Lorg/apache/commons/lang3/ThreadUtils$AlwaysTruePredicate;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 270
            new org.apache.commons.lang3.ThreadUtils$AlwaysTruePredicate
            dup
            invokespecial org.apache.commons.lang3.ThreadUtils$AlwaysTruePredicate.<init>:()V
            putstatic org.apache.commons.lang3.ThreadUtils.ALWAYS_TRUE_PREDICATE:Lorg/apache/commons/lang3/ThreadUtils$AlwaysTruePredicate;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public static java.lang.Thread findThreadById(long, java.lang.ThreadGroup);
    descriptor: (JLjava/lang/ThreadGroup;)Ljava/lang/Thread;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // long threadId
        start local 2 // java.lang.ThreadGroup threadGroup
         0: .line 53
            aload 2 /* threadGroup */
            ifnull 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: ldc "The thread group must not be null"
            iconst_0
            anewarray java.lang.Object
            invokestatic org.apache.commons.lang3.Validate.isTrue:(ZLjava/lang/String;[Ljava/lang/Object;)V
         3: .line 54
            lload 0 /* threadId */
            invokestatic org.apache.commons.lang3.ThreadUtils.findThreadById:(J)Ljava/lang/Thread;
            astore 3 /* thread */
        start local 3 // java.lang.Thread thread
         4: .line 55
            aload 3 /* thread */
            ifnull 6
            aload 2 /* threadGroup */
            aload 3 /* thread */
            invokevirtual java.lang.Thread.getThreadGroup:()Ljava/lang/ThreadGroup;
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 6
         5: .line 56
            aload 3 /* thread */
            areturn
         6: .line 58
      StackMap locals: java.lang.Thread
      StackMap stack:
            aconst_null
            areturn
        end local 3 // java.lang.Thread thread
        end local 2 // java.lang.ThreadGroup threadGroup
        end local 0 // long threadId
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    7     0     threadId  J
            0    7     2  threadGroup  Ljava/lang/ThreadGroup;
            4    7     3       thread  Ljava/lang/Thread;
    MethodParameters:
             Name  Flags
      threadId     final
      threadGroup  final

  public static java.lang.Thread findThreadById(long, java.lang.String);
    descriptor: (JLjava/lang/String;)Ljava/lang/Thread;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // long threadId
        start local 2 // java.lang.String threadGroupName
         0: .line 76
            aload 2 /* threadGroupName */
            ifnull 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: ldc "The thread group name must not be null"
            iconst_0
            anewarray java.lang.Object
            invokestatic org.apache.commons.lang3.Validate.isTrue:(ZLjava/lang/String;[Ljava/lang/Object;)V
         3: .line 77
            lload 0 /* threadId */
            invokestatic org.apache.commons.lang3.ThreadUtils.findThreadById:(J)Ljava/lang/Thread;
            astore 3 /* thread */
        start local 3 // java.lang.Thread thread
         4: .line 78
            aload 3 /* thread */
            ifnull 6
            aload 3 /* thread */
            invokevirtual java.lang.Thread.getThreadGroup:()Ljava/lang/ThreadGroup;
            ifnull 6
            aload 3 /* thread */
            invokevirtual java.lang.Thread.getThreadGroup:()Ljava/lang/ThreadGroup;
            invokevirtual java.lang.ThreadGroup.getName:()Ljava/lang/String;
            aload 2 /* threadGroupName */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 6
         5: .line 79
            aload 3 /* thread */
            areturn
         6: .line 81
      StackMap locals: java.lang.Thread
      StackMap stack:
            aconst_null
            areturn
        end local 3 // java.lang.Thread thread
        end local 2 // java.lang.String threadGroupName
        end local 0 // long threadId
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    7     0         threadId  J
            0    7     2  threadGroupName  Ljava/lang/String;
            4    7     3           thread  Ljava/lang/Thread;
    MethodParameters:
                 Name  Flags
      threadId         final
      threadGroupName  final

  public static java.util.Collection<java.lang.Thread> findThreadsByName(java.lang.String, java.lang.ThreadGroup);
    descriptor: (Ljava/lang/String;Ljava/lang/ThreadGroup;)Ljava/util/Collection;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // java.lang.String threadName
        start local 1 // java.lang.ThreadGroup threadGroup
         0: .line 99
            aload 1 /* threadGroup */
            iconst_0
            new org.apache.commons.lang3.ThreadUtils$NamePredicate
            dup
            aload 0 /* threadName */
            invokespecial org.apache.commons.lang3.ThreadUtils$NamePredicate.<init>:(Ljava/lang/String;)V
            invokestatic org.apache.commons.lang3.ThreadUtils.findThreads:(Ljava/lang/ThreadGroup;ZLorg/apache/commons/lang3/ThreadUtils$ThreadPredicate;)Ljava/util/Collection;
            areturn
        end local 1 // java.lang.ThreadGroup threadGroup
        end local 0 // java.lang.String threadName
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    1     0   threadName  Ljava/lang/String;
            0    1     1  threadGroup  Ljava/lang/ThreadGroup;
    Signature: (Ljava/lang/String;Ljava/lang/ThreadGroup;)Ljava/util/Collection<Ljava/lang/Thread;>;
    MethodParameters:
             Name  Flags
      threadName   final
      threadGroup  final

  public static java.util.Collection<java.lang.Thread> findThreadsByName(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)Ljava/util/Collection;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=7, args_size=2
        start local 0 // java.lang.String threadName
        start local 1 // java.lang.String threadGroupName
         0: .line 117
            aload 0 /* threadName */
            ifnull 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: ldc "The thread name must not be null"
            iconst_0
            anewarray java.lang.Object
            invokestatic org.apache.commons.lang3.Validate.isTrue:(ZLjava/lang/String;[Ljava/lang/Object;)V
         3: .line 118
            aload 1 /* threadGroupName */
            ifnull 4
            iconst_1
            goto 5
      StackMap locals:
      StackMap stack:
         4: iconst_0
      StackMap locals:
      StackMap stack: int
         5: ldc "The thread group name must not be null"
            iconst_0
            anewarray java.lang.Object
            invokestatic org.apache.commons.lang3.Validate.isTrue:(ZLjava/lang/String;[Ljava/lang/Object;)V
         6: .line 120
            new org.apache.commons.lang3.ThreadUtils$NamePredicate
            dup
            aload 1 /* threadGroupName */
            invokespecial org.apache.commons.lang3.ThreadUtils$NamePredicate.<init>:(Ljava/lang/String;)V
            invokestatic org.apache.commons.lang3.ThreadUtils.findThreadGroups:(Lorg/apache/commons/lang3/ThreadUtils$ThreadGroupPredicate;)Ljava/util/Collection;
            astore 2 /* threadGroups */
        start local 2 // java.util.Collection threadGroups
         7: .line 122
            aload 2 /* threadGroups */
            invokeinterface java.util.Collection.isEmpty:()Z
            ifeq 9
         8: .line 123
            invokestatic java.util.Collections.emptyList:()Ljava/util/List;
            areturn
         9: .line 126
      StackMap locals: java.util.Collection
      StackMap stack:
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 3 /* result */
        start local 3 // java.util.Collection result
        10: .line 127
            new org.apache.commons.lang3.ThreadUtils$NamePredicate
            dup
            aload 0 /* threadName */
            invokespecial org.apache.commons.lang3.ThreadUtils$NamePredicate.<init>:(Ljava/lang/String;)V
            astore 4 /* threadNamePredicate */
        start local 4 // org.apache.commons.lang3.ThreadUtils$NamePredicate threadNamePredicate
        11: .line 128
            aload 2 /* threadGroups */
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 6
            goto 14
      StackMap locals: java.lang.String java.lang.String java.util.Collection java.util.Collection org.apache.commons.lang3.ThreadUtils$NamePredicate top java.util.Iterator
      StackMap stack:
        12: aload 6
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.ThreadGroup
            astore 5 /* group */
        start local 5 // java.lang.ThreadGroup group
        13: .line 129
            aload 3 /* result */
            aload 5 /* group */
            iconst_0
            aload 4 /* threadNamePredicate */
            invokestatic org.apache.commons.lang3.ThreadUtils.findThreads:(Ljava/lang/ThreadGroup;ZLorg/apache/commons/lang3/ThreadUtils$ThreadPredicate;)Ljava/util/Collection;
            invokeinterface java.util.Collection.addAll:(Ljava/util/Collection;)Z
            pop
        end local 5 // java.lang.ThreadGroup group
        14: .line 128
      StackMap locals:
      StackMap stack:
            aload 6
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 12
        15: .line 131
            aload 3 /* result */
            invokestatic java.util.Collections.unmodifiableCollection:(Ljava/util/Collection;)Ljava/util/Collection;
            areturn
        end local 4 // org.apache.commons.lang3.ThreadUtils$NamePredicate threadNamePredicate
        end local 3 // java.util.Collection result
        end local 2 // java.util.Collection threadGroups
        end local 1 // java.lang.String threadGroupName
        end local 0 // java.lang.String threadName
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0   16     0           threadName  Ljava/lang/String;
            0   16     1      threadGroupName  Ljava/lang/String;
            7   16     2         threadGroups  Ljava/util/Collection<Ljava/lang/ThreadGroup;>;
           10   16     3               result  Ljava/util/Collection<Ljava/lang/Thread;>;
           11   16     4  threadNamePredicate  Lorg/apache/commons/lang3/ThreadUtils$NamePredicate;
           13   14     5                group  Ljava/lang/ThreadGroup;
    Signature: (Ljava/lang/String;Ljava/lang/String;)Ljava/util/Collection<Ljava/lang/Thread;>;
    MethodParameters:
                 Name  Flags
      threadName       final
      threadGroupName  final

  public static java.util.Collection<java.lang.ThreadGroup> findThreadGroupsByName(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/util/Collection;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.lang.String threadGroupName
         0: .line 147
            new org.apache.commons.lang3.ThreadUtils$NamePredicate
            dup
            aload 0 /* threadGroupName */
            invokespecial org.apache.commons.lang3.ThreadUtils$NamePredicate.<init>:(Ljava/lang/String;)V
            invokestatic org.apache.commons.lang3.ThreadUtils.findThreadGroups:(Lorg/apache/commons/lang3/ThreadUtils$ThreadGroupPredicate;)Ljava/util/Collection;
            areturn
        end local 0 // java.lang.String threadGroupName
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    1     0  threadGroupName  Ljava/lang/String;
    Signature: (Ljava/lang/String;)Ljava/util/Collection<Ljava/lang/ThreadGroup;>;
    MethodParameters:
                 Name  Flags
      threadGroupName  final

  public static java.util.Collection<java.lang.ThreadGroup> getAllThreadGroups();
    descriptor: ()Ljava/util/Collection;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 161
            getstatic org.apache.commons.lang3.ThreadUtils.ALWAYS_TRUE_PREDICATE:Lorg/apache/commons/lang3/ThreadUtils$AlwaysTruePredicate;
            invokestatic org.apache.commons.lang3.ThreadUtils.findThreadGroups:(Lorg/apache/commons/lang3/ThreadUtils$ThreadGroupPredicate;)Ljava/util/Collection;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    Signature: ()Ljava/util/Collection<Ljava/lang/ThreadGroup;>;

  public static java.lang.ThreadGroup getSystemThreadGroup();
    descriptor: ()Ljava/lang/ThreadGroup;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=0
         0: .line 172
            invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
            invokevirtual java.lang.Thread.getThreadGroup:()Ljava/lang/ThreadGroup;
            astore 0 /* threadGroup */
        start local 0 // java.lang.ThreadGroup threadGroup
         1: .line 173
            goto 3
         2: .line 174
      StackMap locals: java.lang.ThreadGroup
      StackMap stack:
            aload 0 /* threadGroup */
            invokevirtual java.lang.ThreadGroup.getParent:()Ljava/lang/ThreadGroup;
            astore 0 /* threadGroup */
         3: .line 173
      StackMap locals:
      StackMap stack:
            aload 0 /* threadGroup */
            invokevirtual java.lang.ThreadGroup.getParent:()Ljava/lang/ThreadGroup;
            ifnonnull 2
         4: .line 176
            aload 0 /* threadGroup */
            areturn
        end local 0 // java.lang.ThreadGroup threadGroup
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            1    5     0  threadGroup  Ljava/lang/ThreadGroup;

  public static java.util.Collection<java.lang.Thread> getAllThreads();
    descriptor: ()Ljava/util/Collection;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 190
            getstatic org.apache.commons.lang3.ThreadUtils.ALWAYS_TRUE_PREDICATE:Lorg/apache/commons/lang3/ThreadUtils$AlwaysTruePredicate;
            invokestatic org.apache.commons.lang3.ThreadUtils.findThreads:(Lorg/apache/commons/lang3/ThreadUtils$ThreadPredicate;)Ljava/util/Collection;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    Signature: ()Ljava/util/Collection<Ljava/lang/Thread;>;

  public static java.util.Collection<java.lang.Thread> findThreadsByName(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/util/Collection;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.lang.String threadName
         0: .line 206
            new org.apache.commons.lang3.ThreadUtils$NamePredicate
            dup
            aload 0 /* threadName */
            invokespecial org.apache.commons.lang3.ThreadUtils$NamePredicate.<init>:(Ljava/lang/String;)V
            invokestatic org.apache.commons.lang3.ThreadUtils.findThreads:(Lorg/apache/commons/lang3/ThreadUtils$ThreadPredicate;)Ljava/util/Collection;
            areturn
        end local 0 // java.lang.String threadName
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0  threadName  Ljava/lang/String;
    Signature: (Ljava/lang/String;)Ljava/util/Collection<Ljava/lang/Thread;>;
    MethodParameters:
            Name  Flags
      threadName  final

  public static java.lang.Thread findThreadById(long);
    descriptor: (J)Ljava/lang/Thread;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=3, args_size=1
        start local 0 // long threadId
         0: .line 222
            new org.apache.commons.lang3.ThreadUtils$ThreadIdPredicate
            dup
            lload 0 /* threadId */
            invokespecial org.apache.commons.lang3.ThreadUtils$ThreadIdPredicate.<init>:(J)V
            invokestatic org.apache.commons.lang3.ThreadUtils.findThreads:(Lorg/apache/commons/lang3/ThreadUtils$ThreadPredicate;)Ljava/util/Collection;
            astore 2 /* result */
        start local 2 // java.util.Collection result
         1: .line 223
            aload 2 /* result */
            invokeinterface java.util.Collection.isEmpty:()Z
            ifeq 2
            aconst_null
            goto 3
      StackMap locals: java.util.Collection
      StackMap stack:
         2: aload 2 /* result */
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.Thread
      StackMap locals:
      StackMap stack: java.lang.Thread
         3: areturn
        end local 2 // java.util.Collection result
        end local 0 // long threadId
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    4     0  threadId  J
            1    4     2    result  Ljava/util/Collection<Ljava/lang/Thread;>;
    MethodParameters:
          Name  Flags
      threadId  final

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.commons.lang3.ThreadUtils this
         0: .line 236
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 237
            return
        end local 0 // org.apache.commons.lang3.ThreadUtils this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/apache/commons/lang3/ThreadUtils;

  public static java.util.Collection<java.lang.Thread> findThreads(org.apache.commons.lang3.ThreadUtils$ThreadPredicate);
    descriptor: (Lorg/apache/commons/lang3/ThreadUtils$ThreadPredicate;)Ljava/util/Collection;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.apache.commons.lang3.ThreadUtils$ThreadPredicate predicate
         0: .line 361
            invokestatic org.apache.commons.lang3.ThreadUtils.getSystemThreadGroup:()Ljava/lang/ThreadGroup;
            iconst_1
            aload 0 /* predicate */
            invokestatic org.apache.commons.lang3.ThreadUtils.findThreads:(Ljava/lang/ThreadGroup;ZLorg/apache/commons/lang3/ThreadUtils$ThreadPredicate;)Ljava/util/Collection;
            areturn
        end local 0 // org.apache.commons.lang3.ThreadUtils$ThreadPredicate predicate
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    1     0  predicate  Lorg/apache/commons/lang3/ThreadUtils$ThreadPredicate;
    Signature: (Lorg/apache/commons/lang3/ThreadUtils$ThreadPredicate;)Ljava/util/Collection<Ljava/lang/Thread;>;
    MethodParameters:
           Name  Flags
      predicate  final

  public static java.util.Collection<java.lang.ThreadGroup> findThreadGroups(org.apache.commons.lang3.ThreadUtils$ThreadGroupPredicate);
    descriptor: (Lorg/apache/commons/lang3/ThreadUtils$ThreadGroupPredicate;)Ljava/util/Collection;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.apache.commons.lang3.ThreadUtils$ThreadGroupPredicate predicate
         0: .line 376
            invokestatic org.apache.commons.lang3.ThreadUtils.getSystemThreadGroup:()Ljava/lang/ThreadGroup;
            iconst_1
            aload 0 /* predicate */
            invokestatic org.apache.commons.lang3.ThreadUtils.findThreadGroups:(Ljava/lang/ThreadGroup;ZLorg/apache/commons/lang3/ThreadUtils$ThreadGroupPredicate;)Ljava/util/Collection;
            areturn
        end local 0 // org.apache.commons.lang3.ThreadUtils$ThreadGroupPredicate predicate
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    1     0  predicate  Lorg/apache/commons/lang3/ThreadUtils$ThreadGroupPredicate;
    Signature: (Lorg/apache/commons/lang3/ThreadUtils$ThreadGroupPredicate;)Ljava/util/Collection<Ljava/lang/ThreadGroup;>;
    MethodParameters:
           Name  Flags
      predicate  final

  public static java.util.Collection<java.lang.Thread> findThreads(java.lang.ThreadGroup, boolean, org.apache.commons.lang3.ThreadUtils$ThreadPredicate);
    descriptor: (Ljava/lang/ThreadGroup;ZLorg/apache/commons/lang3/ThreadUtils$ThreadPredicate;)Ljava/util/Collection;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=7, args_size=3
        start local 0 // java.lang.ThreadGroup group
        start local 1 // boolean recurse
        start local 2 // org.apache.commons.lang3.ThreadUtils$ThreadPredicate predicate
         0: .line 391
            aload 0 /* group */
            ifnull 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: ldc "The group must not be null"
            iconst_0
            anewarray java.lang.Object
            invokestatic org.apache.commons.lang3.Validate.isTrue:(ZLjava/lang/String;[Ljava/lang/Object;)V
         3: .line 392
            aload 2 /* predicate */
            ifnull 4
            iconst_1
            goto 5
      StackMap locals:
      StackMap stack:
         4: iconst_0
      StackMap locals:
      StackMap stack: int
         5: ldc "The predicate must not be null"
            iconst_0
            anewarray java.lang.Object
            invokestatic org.apache.commons.lang3.Validate.isTrue:(ZLjava/lang/String;[Ljava/lang/Object;)V
         6: .line 394
            aload 0 /* group */
            invokevirtual java.lang.ThreadGroup.activeCount:()I
            istore 3 /* count */
        start local 3 // int count
         7: .line 397
      StackMap locals: int
      StackMap stack:
            iload 3 /* count */
            iload 3 /* count */
            iconst_2
            idiv
            iadd
            iconst_1
            iadd
            anewarray java.lang.Thread
            astore 4 /* threads */
        start local 4 // java.lang.Thread[] threads
         8: .line 398
            aload 0 /* group */
            aload 4 /* threads */
            iload 1 /* recurse */
            invokevirtual java.lang.ThreadGroup.enumerate:([Ljava/lang/Thread;Z)I
            istore 3 /* count */
         9: .line 400
            iload 3 /* count */
            aload 4 /* threads */
            arraylength
        10: .line 396
            if_icmpge 7
        11: .line 402
            new java.util.ArrayList
            dup
            iload 3 /* count */
            invokespecial java.util.ArrayList.<init>:(I)V
            astore 5 /* result */
        start local 5 // java.util.List result
        12: .line 403
            iconst_0
            istore 6 /* i */
        start local 6 // int i
        13: goto 17
        14: .line 404
      StackMap locals: java.lang.Thread[] java.util.List int
      StackMap stack:
            aload 2 /* predicate */
            aload 4 /* threads */
            iload 6 /* i */
            aaload
            invokeinterface org.apache.commons.lang3.ThreadUtils$ThreadPredicate.test:(Ljava/lang/Thread;)Z
            ifeq 16
        15: .line 405
            aload 5 /* result */
            aload 4 /* threads */
            iload 6 /* i */
            aaload
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        16: .line 403
      StackMap locals:
      StackMap stack:
            iinc 6 /* i */ 1
      StackMap locals:
      StackMap stack:
        17: iload 6 /* i */
            iload 3 /* count */
            if_icmplt 14
        end local 6 // int i
        18: .line 408
            aload 5 /* result */
            invokestatic java.util.Collections.unmodifiableCollection:(Ljava/util/Collection;)Ljava/util/Collection;
            areturn
        end local 5 // java.util.List result
        end local 4 // java.lang.Thread[] threads
        end local 3 // int count
        end local 2 // org.apache.commons.lang3.ThreadUtils$ThreadPredicate predicate
        end local 1 // boolean recurse
        end local 0 // java.lang.ThreadGroup group
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   19     0      group  Ljava/lang/ThreadGroup;
            0   19     1    recurse  Z
            0   19     2  predicate  Lorg/apache/commons/lang3/ThreadUtils$ThreadPredicate;
            7   19     3      count  I
            8   19     4    threads  [Ljava/lang/Thread;
           12   19     5     result  Ljava/util/List<Ljava/lang/Thread;>;
           13   18     6          i  I
    Signature: (Ljava/lang/ThreadGroup;ZLorg/apache/commons/lang3/ThreadUtils$ThreadPredicate;)Ljava/util/Collection<Ljava/lang/Thread;>;
    MethodParameters:
           Name  Flags
      group      final
      recurse    final
      predicate  final

  public static java.util.Collection<java.lang.ThreadGroup> findThreadGroups(java.lang.ThreadGroup, boolean, org.apache.commons.lang3.ThreadUtils$ThreadGroupPredicate);
    descriptor: (Ljava/lang/ThreadGroup;ZLorg/apache/commons/lang3/ThreadUtils$ThreadGroupPredicate;)Ljava/util/Collection;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=7, args_size=3
        start local 0 // java.lang.ThreadGroup group
        start local 1 // boolean recurse
        start local 2 // org.apache.commons.lang3.ThreadUtils$ThreadGroupPredicate predicate
         0: .line 423
            aload 0 /* group */
            ifnull 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: ldc "The group must not be null"
            iconst_0
            anewarray java.lang.Object
            invokestatic org.apache.commons.lang3.Validate.isTrue:(ZLjava/lang/String;[Ljava/lang/Object;)V
         3: .line 424
            aload 2 /* predicate */
            ifnull 4
            iconst_1
            goto 5
      StackMap locals:
      StackMap stack:
         4: iconst_0
      StackMap locals:
      StackMap stack: int
         5: ldc "The predicate must not be null"
            iconst_0
            anewarray java.lang.Object
            invokestatic org.apache.commons.lang3.Validate.isTrue:(ZLjava/lang/String;[Ljava/lang/Object;)V
         6: .line 426
            aload 0 /* group */
            invokevirtual java.lang.ThreadGroup.activeGroupCount:()I
            istore 3 /* count */
        start local 3 // int count
         7: .line 429
      StackMap locals: int
      StackMap stack:
            iload 3 /* count */
            iload 3 /* count */
            iconst_2
            idiv
            iadd
            iconst_1
            iadd
            anewarray java.lang.ThreadGroup
            astore 4 /* threadGroups */
        start local 4 // java.lang.ThreadGroup[] threadGroups
         8: .line 430
            aload 0 /* group */
            aload 4 /* threadGroups */
            iload 1 /* recurse */
            invokevirtual java.lang.ThreadGroup.enumerate:([Ljava/lang/ThreadGroup;Z)I
            istore 3 /* count */
         9: .line 432
            iload 3 /* count */
            aload 4 /* threadGroups */
            arraylength
        10: .line 428
            if_icmpge 7
        11: .line 434
            new java.util.ArrayList
            dup
            iload 3 /* count */
            invokespecial java.util.ArrayList.<init>:(I)V
            astore 5 /* result */
        start local 5 // java.util.List result
        12: .line 435
            iconst_0
            istore 6 /* i */
        start local 6 // int i
        13: goto 17
        14: .line 436
      StackMap locals: java.lang.ThreadGroup[] java.util.List int
      StackMap stack:
            aload 2 /* predicate */
            aload 4 /* threadGroups */
            iload 6 /* i */
            aaload
            invokeinterface org.apache.commons.lang3.ThreadUtils$ThreadGroupPredicate.test:(Ljava/lang/ThreadGroup;)Z
            ifeq 16
        15: .line 437
            aload 5 /* result */
            aload 4 /* threadGroups */
            iload 6 /* i */
            aaload
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        16: .line 435
      StackMap locals:
      StackMap stack:
            iinc 6 /* i */ 1
      StackMap locals:
      StackMap stack:
        17: iload 6 /* i */
            iload 3 /* count */
            if_icmplt 14
        end local 6 // int i
        18: .line 440
            aload 5 /* result */
            invokestatic java.util.Collections.unmodifiableCollection:(Ljava/util/Collection;)Ljava/util/Collection;
            areturn
        end local 5 // java.util.List result
        end local 4 // java.lang.ThreadGroup[] threadGroups
        end local 3 // int count
        end local 2 // org.apache.commons.lang3.ThreadUtils$ThreadGroupPredicate predicate
        end local 1 // boolean recurse
        end local 0 // java.lang.ThreadGroup group
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   19     0         group  Ljava/lang/ThreadGroup;
            0   19     1       recurse  Z
            0   19     2     predicate  Lorg/apache/commons/lang3/ThreadUtils$ThreadGroupPredicate;
            7   19     3         count  I
            8   19     4  threadGroups  [Ljava/lang/ThreadGroup;
           12   19     5        result  Ljava/util/List<Ljava/lang/ThreadGroup;>;
           13   18     6             i  I
    Signature: (Ljava/lang/ThreadGroup;ZLorg/apache/commons/lang3/ThreadUtils$ThreadGroupPredicate;)Ljava/util/Collection<Ljava/lang/ThreadGroup;>;
    MethodParameters:
           Name  Flags
      group      final
      recurse    final
      predicate  final
}
SourceFile: "ThreadUtils.java"
NestMembers:
  org.apache.commons.lang3.ThreadUtils$AlwaysTruePredicate  org.apache.commons.lang3.ThreadUtils$NamePredicate  org.apache.commons.lang3.ThreadUtils$ThreadGroupPredicate  org.apache.commons.lang3.ThreadUtils$ThreadIdPredicate  org.apache.commons.lang3.ThreadUtils$ThreadPredicate
InnerClasses:
  private final AlwaysTruePredicate = org.apache.commons.lang3.ThreadUtils$AlwaysTruePredicate of org.apache.commons.lang3.ThreadUtils
  public NamePredicate = org.apache.commons.lang3.ThreadUtils$NamePredicate of org.apache.commons.lang3.ThreadUtils
  public abstract ThreadGroupPredicate = org.apache.commons.lang3.ThreadUtils$ThreadGroupPredicate of org.apache.commons.lang3.ThreadUtils
  public ThreadIdPredicate = org.apache.commons.lang3.ThreadUtils$ThreadIdPredicate of org.apache.commons.lang3.ThreadUtils
  public abstract ThreadPredicate = org.apache.commons.lang3.ThreadUtils$ThreadPredicate of org.apache.commons.lang3.ThreadUtils