final class com.google.common.util.concurrent.CycleDetectingLockFactory$CycleDetectingReentrantReadWriteLock extends java.util.concurrent.locks.ReentrantReadWriteLock implements com.google.common.util.concurrent.CycleDetectingLockFactory$CycleDetectingLock
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: com.google.common.util.concurrent.CycleDetectingLockFactory$CycleDetectingReentrantReadWriteLock
  super_class: java.util.concurrent.locks.ReentrantReadWriteLock
{
  private final com.google.common.util.concurrent.CycleDetectingLockFactory$CycleDetectingReentrantReadLock readLock;
    descriptor: Lcom/google/common/util/concurrent/CycleDetectingLockFactory$CycleDetectingReentrantReadLock;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final com.google.common.util.concurrent.CycleDetectingLockFactory$CycleDetectingReentrantWriteLock writeLock;
    descriptor: Lcom/google/common/util/concurrent/CycleDetectingLockFactory$CycleDetectingReentrantWriteLock;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final com.google.common.util.concurrent.CycleDetectingLockFactory$LockGraphNode lockGraphNode;
    descriptor: Lcom/google/common/util/concurrent/CycleDetectingLockFactory$LockGraphNode;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  final com.google.common.util.concurrent.CycleDetectingLockFactory this$0;
    descriptor: Lcom/google/common/util/concurrent/CycleDetectingLockFactory;
    flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC

  private void <init>(com.google.common.util.concurrent.CycleDetectingLockFactory, com.google.common.util.concurrent.CycleDetectingLockFactory$LockGraphNode, boolean);
    descriptor: (Lcom/google/common/util/concurrent/CycleDetectingLockFactory;Lcom/google/common/util/concurrent/CycleDetectingLockFactory$LockGraphNode;Z)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=4, args_size=4
        start local 0 // com.google.common.util.concurrent.CycleDetectingLockFactory$CycleDetectingReentrantReadWriteLock this
        start local 2 // com.google.common.util.concurrent.CycleDetectingLockFactory$LockGraphNode lockGraphNode
        start local 3 // boolean fair
         0: .line 820
            aload 0 /* this */
            aload 1
            putfield com.google.common.util.concurrent.CycleDetectingLockFactory$CycleDetectingReentrantReadWriteLock.this$0:Lcom/google/common/util/concurrent/CycleDetectingLockFactory;
         1: .line 821
            aload 0 /* this */
            iload 3 /* fair */
            invokespecial java.util.concurrent.locks.ReentrantReadWriteLock.<init>:(Z)V
         2: .line 822
            aload 0 /* this */
            new com.google.common.util.concurrent.CycleDetectingLockFactory$CycleDetectingReentrantReadLock
            dup
            aload 1
            aload 0 /* this */
            invokespecial com.google.common.util.concurrent.CycleDetectingLockFactory$CycleDetectingReentrantReadLock.<init>:(Lcom/google/common/util/concurrent/CycleDetectingLockFactory;Lcom/google/common/util/concurrent/CycleDetectingLockFactory$CycleDetectingReentrantReadWriteLock;)V
            putfield com.google.common.util.concurrent.CycleDetectingLockFactory$CycleDetectingReentrantReadWriteLock.readLock:Lcom/google/common/util/concurrent/CycleDetectingLockFactory$CycleDetectingReentrantReadLock;
         3: .line 823
            aload 0 /* this */
            new com.google.common.util.concurrent.CycleDetectingLockFactory$CycleDetectingReentrantWriteLock
            dup
            aload 1
            aload 0 /* this */
            invokespecial com.google.common.util.concurrent.CycleDetectingLockFactory$CycleDetectingReentrantWriteLock.<init>:(Lcom/google/common/util/concurrent/CycleDetectingLockFactory;Lcom/google/common/util/concurrent/CycleDetectingLockFactory$CycleDetectingReentrantReadWriteLock;)V
            putfield com.google.common.util.concurrent.CycleDetectingLockFactory$CycleDetectingReentrantReadWriteLock.writeLock:Lcom/google/common/util/concurrent/CycleDetectingLockFactory$CycleDetectingReentrantWriteLock;
         4: .line 824
            aload 0 /* this */
            aload 2 /* lockGraphNode */
            invokestatic com.google.common.base.Preconditions.checkNotNull:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.google.common.util.concurrent.CycleDetectingLockFactory$LockGraphNode
            putfield com.google.common.util.concurrent.CycleDetectingLockFactory$CycleDetectingReentrantReadWriteLock.lockGraphNode:Lcom/google/common/util/concurrent/CycleDetectingLockFactory$LockGraphNode;
         5: .line 825
            return
        end local 3 // boolean fair
        end local 2 // com.google.common.util.concurrent.CycleDetectingLockFactory$LockGraphNode lockGraphNode
        end local 0 // com.google.common.util.concurrent.CycleDetectingLockFactory$CycleDetectingReentrantReadWriteLock this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    6     0           this  Lcom/google/common/util/concurrent/CycleDetectingLockFactory$CycleDetectingReentrantReadWriteLock;
            0    6     2  lockGraphNode  Lcom/google/common/util/concurrent/CycleDetectingLockFactory$LockGraphNode;
            0    6     3           fair  Z
    MethodParameters:
               Name  Flags
      this$0         final
      lockGraphNode  
      fair           

  public java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock readLock();
    descriptor: ()Ljava/util/concurrent/locks/ReentrantReadWriteLock$ReadLock;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.google.common.util.concurrent.CycleDetectingLockFactory$CycleDetectingReentrantReadWriteLock this
         0: .line 831
            aload 0 /* this */
            getfield com.google.common.util.concurrent.CycleDetectingLockFactory$CycleDetectingReentrantReadWriteLock.readLock:Lcom/google/common/util/concurrent/CycleDetectingLockFactory$CycleDetectingReentrantReadLock;
            areturn
        end local 0 // com.google.common.util.concurrent.CycleDetectingLockFactory$CycleDetectingReentrantReadWriteLock this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/google/common/util/concurrent/CycleDetectingLockFactory$CycleDetectingReentrantReadWriteLock;

  public java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock writeLock();
    descriptor: ()Ljava/util/concurrent/locks/ReentrantReadWriteLock$WriteLock;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.google.common.util.concurrent.CycleDetectingLockFactory$CycleDetectingReentrantReadWriteLock this
         0: .line 836
            aload 0 /* this */
            getfield com.google.common.util.concurrent.CycleDetectingLockFactory$CycleDetectingReentrantReadWriteLock.writeLock:Lcom/google/common/util/concurrent/CycleDetectingLockFactory$CycleDetectingReentrantWriteLock;
            areturn
        end local 0 // com.google.common.util.concurrent.CycleDetectingLockFactory$CycleDetectingReentrantReadWriteLock this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/google/common/util/concurrent/CycleDetectingLockFactory$CycleDetectingReentrantReadWriteLock;

  public com.google.common.util.concurrent.CycleDetectingLockFactory$LockGraphNode getLockGraphNode();
    descriptor: ()Lcom/google/common/util/concurrent/CycleDetectingLockFactory$LockGraphNode;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.google.common.util.concurrent.CycleDetectingLockFactory$CycleDetectingReentrantReadWriteLock this
         0: .line 843
            aload 0 /* this */
            getfield com.google.common.util.concurrent.CycleDetectingLockFactory$CycleDetectingReentrantReadWriteLock.lockGraphNode:Lcom/google/common/util/concurrent/CycleDetectingLockFactory$LockGraphNode;
            areturn
        end local 0 // com.google.common.util.concurrent.CycleDetectingLockFactory$CycleDetectingReentrantReadWriteLock this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/google/common/util/concurrent/CycleDetectingLockFactory$CycleDetectingReentrantReadWriteLock;

  public boolean isAcquiredByCurrentThread();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.google.common.util.concurrent.CycleDetectingLockFactory$CycleDetectingReentrantReadWriteLock this
         0: .line 848
            aload 0 /* this */
            invokevirtual com.google.common.util.concurrent.CycleDetectingLockFactory$CycleDetectingReentrantReadWriteLock.isWriteLockedByCurrentThread:()Z
            ifne 1
            aload 0 /* this */
            invokevirtual com.google.common.util.concurrent.CycleDetectingLockFactory$CycleDetectingReentrantReadWriteLock.getReadHoldCount:()I
            ifgt 1
            iconst_0
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_1
            ireturn
        end local 0 // com.google.common.util.concurrent.CycleDetectingLockFactory$CycleDetectingReentrantReadWriteLock this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/google/common/util/concurrent/CycleDetectingLockFactory$CycleDetectingReentrantReadWriteLock;

  public java.util.concurrent.locks.Lock writeLock();
    descriptor: ()Ljava/util/concurrent/locks/Lock;
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
         0: .line 1
            aload 0
            invokevirtual com.google.common.util.concurrent.CycleDetectingLockFactory$CycleDetectingReentrantReadWriteLock.writeLock:()Ljava/util/concurrent/locks/ReentrantReadWriteLock$WriteLock;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public java.util.concurrent.locks.Lock readLock();
    descriptor: ()Ljava/util/concurrent/locks/Lock;
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
         0: .line 1
            aload 0
            invokevirtual com.google.common.util.concurrent.CycleDetectingLockFactory$CycleDetectingReentrantReadWriteLock.readLock:()Ljava/util/concurrent/locks/ReentrantReadWriteLock$ReadLock;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
SourceFile: "CycleDetectingLockFactory.java"
NestHost: com.google.common.util.concurrent.CycleDetectingLockFactory
InnerClasses:
  private abstract CycleDetectingLock = com.google.common.util.concurrent.CycleDetectingLockFactory$CycleDetectingLock of com.google.common.util.concurrent.CycleDetectingLockFactory
  private CycleDetectingReentrantReadLock = com.google.common.util.concurrent.CycleDetectingLockFactory$CycleDetectingReentrantReadLock of com.google.common.util.concurrent.CycleDetectingLockFactory
  final CycleDetectingReentrantReadWriteLock = com.google.common.util.concurrent.CycleDetectingLockFactory$CycleDetectingReentrantReadWriteLock of com.google.common.util.concurrent.CycleDetectingLockFactory
  private CycleDetectingReentrantWriteLock = com.google.common.util.concurrent.CycleDetectingLockFactory$CycleDetectingReentrantWriteLock of com.google.common.util.concurrent.CycleDetectingLockFactory
  private LockGraphNode = com.google.common.util.concurrent.CycleDetectingLockFactory$LockGraphNode of com.google.common.util.concurrent.CycleDetectingLockFactory
  public ReadLock = java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock of java.util.concurrent.locks.ReentrantReadWriteLock
  public WriteLock = java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock of java.util.concurrent.locks.ReentrantReadWriteLock