public class org.apache.tomcat.util.net.ContainerThreadMarker
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.apache.tomcat.util.net.ContainerThreadMarker
  super_class: java.lang.Object
{
  private static final java.lang.ThreadLocal<java.lang.Boolean> marker;
    descriptor: Ljava/lang/ThreadLocal;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/lang/ThreadLocal<Ljava/lang/Boolean;>;

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 27
            new java.lang.ThreadLocal
            dup
            invokespecial java.lang.ThreadLocal.<init>:()V
            putstatic org.apache.tomcat.util.net.ContainerThreadMarker.marker:Ljava/lang/ThreadLocal;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

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

  public static boolean isContainerThread();
    descriptor: ()Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=0
         0: .line 30
            getstatic org.apache.tomcat.util.net.ContainerThreadMarker.marker:Ljava/lang/ThreadLocal;
            invokevirtual java.lang.ThreadLocal.get:()Ljava/lang/Object;
            checkcast java.lang.Boolean
            astore 0 /* flag */
        start local 0 // java.lang.Boolean flag
         1: .line 31
            aload 0 /* flag */
            ifnonnull 3
         2: .line 32
            iconst_0
            ireturn
         3: .line 34
      StackMap locals: java.lang.Boolean
      StackMap stack:
            aload 0 /* flag */
            invokevirtual java.lang.Boolean.booleanValue:()Z
            ireturn
        end local 0 // java.lang.Boolean flag
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            1    4     0  flag  Ljava/lang/Boolean;

  public static void set();
    descriptor: ()V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 39
            getstatic org.apache.tomcat.util.net.ContainerThreadMarker.marker:Ljava/lang/ThreadLocal;
            getstatic java.lang.Boolean.TRUE:Ljava/lang/Boolean;
            invokevirtual java.lang.ThreadLocal.set:(Ljava/lang/Object;)V
         1: .line 40
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public static void clear();
    descriptor: ()V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 43
            getstatic org.apache.tomcat.util.net.ContainerThreadMarker.marker:Ljava/lang/ThreadLocal;
            getstatic java.lang.Boolean.FALSE:Ljava/lang/Boolean;
            invokevirtual java.lang.ThreadLocal.set:(Ljava/lang/Object;)V
         1: .line 44
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
SourceFile: "ContainerThreadMarker.java"